diff --git a/Content.Client/_CP14/JoinQueue/QueueState.cs b/Content.Client/_CP14/JoinQueue/QueueState.cs index 75a6d17a48..e466abf2bd 100644 --- a/Content.Client/_CP14/JoinQueue/QueueState.cs +++ b/Content.Client/_CP14/JoinQueue/QueueState.cs @@ -1,4 +1,3 @@ -using Content.Client._CP14.JoinQueue; using Content.Shared._CP14.JoinQueue; using Robust.Client.Audio; using Robust.Client.Console; diff --git a/Content.Client/_CP14/Localization/CP14LocalizationVisualsComponent.cs b/Content.Client/_CP14/Localization/CP14LocalizationVisualsComponent.cs index c7d1089035..4dd50ca314 100644 --- a/Content.Client/_CP14/Localization/CP14LocalizationVisualsComponent.cs +++ b/Content.Client/_CP14/Localization/CP14LocalizationVisualsComponent.cs @@ -27,5 +27,5 @@ public sealed partial class CP14LocalizationVisualsComponent : Component /// /// [DataField] - public Dictionary> MapStates; + public Dictionary> MapStates = new(); } diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml b/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml new file mode 100644 index 0000000000..de13384bfd --- /dev/null +++ b/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml @@ -0,0 +1,14 @@ + + + diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs b/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs new file mode 100644 index 0000000000..99b9de4a7d --- /dev/null +++ b/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs @@ -0,0 +1,60 @@ +using Content.Shared._CP14.Skill; +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Client.AutoGenerated; +using Robust.Client.GameObjects; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; + +namespace Content.Client._CP14.ResearchTable; + +[GenerateTypedNameReferences] +public sealed partial class CP14ResearchRecipeControl : Control +{ + [Dependency] private readonly IEntityManager _entity = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + + public event Action? OnResearch; + + private readonly SpriteSystem _sprite; + private readonly CP14SharedSkillSystem _skillSystem; + + private readonly CP14SkillPrototype _skillPrototype; + private readonly bool _craftable; + + public CP14ResearchRecipeControl(CP14ResearchUiEntry entry) + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + _sprite = _entity.System(); + _skillSystem = _entity.System(); + + _skillPrototype = _prototype.Index(entry.ProtoId); + _craftable = entry.Craftable; + + Button.OnPressed += _ => OnResearch?.Invoke(entry, _skillPrototype); + + UpdateColor(); + UpdateName(); + UpdateView(); + } + + private void UpdateColor() + { + if (_craftable) + return; + + Button.ModulateSelfOverride = Color.FromHex("#302622"); + } + + private void UpdateName() + { + Name.Text = $"{Loc.GetString(_skillSystem.GetSkillName(_skillPrototype))}" ; + } + + private void UpdateView() + { + View.Texture =_sprite.Frame0(_skillPrototype.Icon); + } +} diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs b/Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs new file mode 100644 index 0000000000..119e5d6063 --- /dev/null +++ b/Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs @@ -0,0 +1,34 @@ +using Content.Shared._CP14.Skill; +using Robust.Client.UserInterface; + +namespace Content.Client._CP14.ResearchTable; + +public sealed class CP14ResearchTableBoundUserInterface : BoundUserInterface +{ + private CP14ResearchTableWindow? _window; + + public CP14ResearchTableBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + + _window = this.CreateWindow(); + + _window.OnResearch += entry => SendMessage(new CP14ResearchMessage(entry.ProtoId)); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + switch (state) + { + case CP14ResearchTableUiState recipesState: + _window?.UpdateState(recipesState); + break; + } + } +} diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml b/Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml new file mode 100644 index 0000000000..59a2e789bb --- /dev/null +++ b/Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -76,10 +78,6 @@ - - - - diff --git a/Content.Client/_CP14/Workbench/CP14WorkbenchRecipeControl.xaml.cs b/Content.Client/_CP14/Workbench/CP14WorkbenchRecipeControl.xaml.cs index 8adf468ace..ec35e29b35 100644 --- a/Content.Client/_CP14/Workbench/CP14WorkbenchRecipeControl.xaml.cs +++ b/Content.Client/_CP14/Workbench/CP14WorkbenchRecipeControl.xaml.cs @@ -4,6 +4,7 @@ */ using Content.Shared._CP14.Workbench; +using Content.Shared._CP14.Workbench.Prototypes; using Robust.Client.AutoGenerated; using Robust.Client.GameObjects; using Robust.Client.UserInterface; @@ -13,37 +14,52 @@ using Robust.Shared.Prototypes; namespace Content.Client._CP14.Workbench; [GenerateTypedNameReferences] -public sealed partial class CP14WorkbenchRequirementControl : Control +public sealed partial class CP14WorkbenchRecipeControl : Control { [Dependency] private readonly IEntityManager _entity = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + + public event Action? OnSelect; private readonly SpriteSystem _sprite; - public CP14WorkbenchRequirementControl() + private readonly CP14WorkbenchRecipePrototype _recipePrototype; + private readonly bool _craftable; + + public CP14WorkbenchRecipeControl(CP14WorkbenchUiRecipesEntry entry) { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); _sprite = _entity.System(); + + _recipePrototype = _prototype.Index(entry.ProtoId); + _craftable = entry.Craftable; + + Button.OnPressed += _ => OnSelect?.Invoke(entry, _recipePrototype); + + UpdateColor(); + UpdateName(); + UpdateView(); } - public CP14WorkbenchRequirementControl(CP14WorkbenchCraftRequirement requirement) : this() + private void UpdateColor() { - Name.Text = requirement.GetRequirementTitle(_proto); + if (_craftable) + return; - var texture = requirement.GetRequirementTexture(_proto); - if (texture is not null) - { - View.Visible = true; - View.Texture = _sprite.Frame0(texture); - } + Button.ModulateSelfOverride = Color.FromHex("#302622"); + } - var entityView = requirement.GetRequirementEntityView(_proto); - if (entityView is not null) - { - EntityView.Visible = true; - EntityView.SetPrototype(entityView); - } + private void UpdateName() + { + var result = _prototype.Index(_recipePrototype.Result); + var counter = _recipePrototype.ResultCount > 1 ? $" x{_recipePrototype.ResultCount}" : ""; + Name.Text = $"{Loc.GetString(result.Name)} {counter}" ; + } + + private void UpdateView() + { + View.SetPrototype(_recipePrototype.Result); } } diff --git a/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.cs b/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.cs new file mode 100644 index 0000000000..8adf468ace --- /dev/null +++ b/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.cs @@ -0,0 +1,49 @@ +/* + * This file is sublicensed under MIT License + * https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT + */ + +using Content.Shared._CP14.Workbench; +using Robust.Client.AutoGenerated; +using Robust.Client.GameObjects; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; + +namespace Content.Client._CP14.Workbench; + +[GenerateTypedNameReferences] +public sealed partial class CP14WorkbenchRequirementControl : Control +{ + [Dependency] private readonly IEntityManager _entity = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + + private readonly SpriteSystem _sprite; + + public CP14WorkbenchRequirementControl() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + _sprite = _entity.System(); + } + + public CP14WorkbenchRequirementControl(CP14WorkbenchCraftRequirement requirement) : this() + { + Name.Text = requirement.GetRequirementTitle(_proto); + + var texture = requirement.GetRequirementTexture(_proto); + if (texture is not null) + { + View.Visible = true; + View.Texture = _sprite.Frame0(texture); + } + + var entityView = requirement.GetRequirementEntityView(_proto); + if (entityView is not null) + { + EntityView.Visible = true; + EntityView.SetPrototype(entityView); + } + } +} diff --git a/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.xaml.cs b/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.xaml.cs deleted file mode 100644 index ec35e29b35..0000000000 --- a/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.xaml.cs +++ /dev/null @@ -1,65 +0,0 @@ -/* - * This file is sublicensed under MIT License - * https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT - */ - -using Content.Shared._CP14.Workbench; -using Content.Shared._CP14.Workbench.Prototypes; -using Robust.Client.AutoGenerated; -using Robust.Client.GameObjects; -using Robust.Client.UserInterface; -using Robust.Client.UserInterface.XAML; -using Robust.Shared.Prototypes; - -namespace Content.Client._CP14.Workbench; - -[GenerateTypedNameReferences] -public sealed partial class CP14WorkbenchRecipeControl : Control -{ - [Dependency] private readonly IEntityManager _entity = default!; - [Dependency] private readonly IPrototypeManager _prototype = default!; - - public event Action? OnSelect; - - private readonly SpriteSystem _sprite; - - private readonly CP14WorkbenchRecipePrototype _recipePrototype; - private readonly bool _craftable; - - public CP14WorkbenchRecipeControl(CP14WorkbenchUiRecipesEntry entry) - { - RobustXamlLoader.Load(this); - IoCManager.InjectDependencies(this); - - _sprite = _entity.System(); - - _recipePrototype = _prototype.Index(entry.ProtoId); - _craftable = entry.Craftable; - - Button.OnPressed += _ => OnSelect?.Invoke(entry, _recipePrototype); - - UpdateColor(); - UpdateName(); - UpdateView(); - } - - private void UpdateColor() - { - if (_craftable) - return; - - Button.ModulateSelfOverride = Color.FromHex("#302622"); - } - - private void UpdateName() - { - var result = _prototype.Index(_recipePrototype.Result); - var counter = _recipePrototype.ResultCount > 1 ? $" x{_recipePrototype.ResultCount}" : ""; - Name.Text = $"{Loc.GetString(result.Name)} {counter}" ; - } - - private void UpdateView() - { - View.SetPrototype(_recipePrototype.Result); - } -} diff --git a/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml b/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml index 619d3c8436..edaffe0a33 100644 --- a/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml +++ b/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml @@ -35,9 +35,9 @@ diff --git a/Content.Client/_CP14/WorldSprite/CP14WorldSpriteComponent.cs b/Content.Client/_CP14/WorldSprite/CP14WorldSpriteComponent.cs deleted file mode 100644 index 135f27591b..0000000000 --- a/Content.Client/_CP14/WorldSprite/CP14WorldSpriteComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Content.Client._CP14.WorldSprite; - -/// -/// RUN, IF YOU SEE THE CODE TO THIS FUCKING THING, YOU'LL DIE ON THE SPOT. -/// -[RegisterComponent] -public sealed partial class CP14WorldSpriteComponent : Component -{ - public bool Inited; -} diff --git a/Content.Client/_CP14/WorldSprite/CP14WorldSpriteSystem.cs b/Content.Client/_CP14/WorldSprite/CP14WorldSpriteSystem.cs deleted file mode 100644 index e995ab7a93..0000000000 --- a/Content.Client/_CP14/WorldSprite/CP14WorldSpriteSystem.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Content.Shared._CP14.WorldSprite; -using Content.Shared.Throwing; -using Robust.Client.GameObjects; -using Robust.Shared.Map.Components; - -namespace Content.Client._CP14.WorldSprite; - -public sealed class CP14WorldSpriteSystem : EntitySystem -{ - [Dependency] private readonly AppearanceSystem _appearance = default!; - - public override void Initialize() - { - base.Initialize(); - -#if DEBUG - SubscribeLocalEvent(OnComponentInit); -#endif - - SubscribeLocalEvent(OnParentChanged); - SubscribeLocalEvent(OnThrown); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var worldSpriteComponent)) - { - if (worldSpriteComponent.Inited) - continue; - - Update(uid); - } - } - -#if DEBUG - private void OnComponentInit(Entity entity, ref ComponentInit args) - { - if (!HasComp(entity)) - Log.Error($"Requires an {nameof(AppearanceComponent)} for {entity}"); - } -#endif - - private void OnParentChanged(Entity entity, ref EntParentChangedMessage args) - { - Update(entity); - } - - private void OnThrown(Entity entity, ref ThrownEvent args) - { - // Idk, but throw don't call reparent - Update(entity, args.User); - } - - private void Update(EntityUid entity, EntityUid? parent = null) - { - parent ??= Transform(entity).ParentUid; - - var inWorld = HasComp(parent) || HasComp(parent); - - _appearance.SetData(entity, WorldSpriteVisualLayers.Layer, inWorld); - } -} diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index c5f389c8d9..fd8c1b9d5c 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -64,7 +64,7 @@ public sealed partial class ChatSystem : SharedChatSystem public const int VoiceRange = 10; // how far voice goes in world units public const int WhisperClearRange = 2; // how far whisper goes while still being understandable, in world units public const int WhisperMuffledRange = 5; // how far whisper goes at all, in world units - public const string DefaultAnnouncementSound = "/Audio/Announcements/announce.ogg"; + public const string DefaultAnnouncementSound = "/Audio/_CP14/Announce/event_boom.ogg"; //CP14 replaced default sound private bool _loocEnabled = true; private bool _deadLoocEnabled; diff --git a/Content.Server/Entry/IgnoredComponents.cs b/Content.Server/Entry/IgnoredComponents.cs index 5f18c5472a..c3cde76370 100644 --- a/Content.Server/Entry/IgnoredComponents.cs +++ b/Content.Server/Entry/IgnoredComponents.cs @@ -5,7 +5,6 @@ namespace Content.Server.Entry { public static string[] List => new[] { "CP14WaveShader", // CP14 Wave shader - "CP14WorldSprite", // CP14 World Sprite "ConstructionGhost", "IconSmooth", "InteractionOutline", diff --git a/Content.Server/Objectives/Components/StealAreaComponent.cs b/Content.Server/Objectives/Components/StealAreaComponent.cs index 6139171753..4d7798f150 100644 --- a/Content.Server/Objectives/Components/StealAreaComponent.cs +++ b/Content.Server/Objectives/Components/StealAreaComponent.cs @@ -1,5 +1,4 @@ using Content.Server._CP14.Objectives.Systems; -using Content.Server._CP14.StealArea; using Content.Server.Objectives.Systems; using Content.Server.Thief.Systems; @@ -8,7 +7,7 @@ namespace Content.Server.Objectives.Components; /// /// An abstract component that allows other systems to count adjacent objects as "stolen" when controlling other systems /// -[RegisterComponent, Access(typeof(StealConditionSystem), typeof(ThiefBeaconSystem), typeof(CP14CurrencyCollectConditionSystem), typeof(CP14StealAreaAutoJobConnectSystem))] //CP14 add currency condition access +[RegisterComponent, Access(typeof(StealConditionSystem), typeof(ThiefBeaconSystem), typeof(CP14CurrencyCollectConditionSystem))] public sealed partial class StealAreaComponent : Component { [DataField] diff --git a/Content.Server/Parallax/BiomeSystem.cs b/Content.Server/Parallax/BiomeSystem.cs index 8dac0bbb75..30ece7b4a6 100644 --- a/Content.Server/Parallax/BiomeSystem.cs +++ b/Content.Server/Parallax/BiomeSystem.cs @@ -324,7 +324,7 @@ public sealed partial class BiomeSystem : SharedBiomeSystem private bool CanLoad(EntityUid uid) { - return !_ghostQuery.HasComp(uid) || _tags.HasTag(uid, AllowBiomeLoadingTag); + return !_ghostQuery.HasComp(uid);// CP14 - Admin biome loading break mapping || _tags.HasTag(uid, AllowBiomeLoadingTag); } public override void Update(float frameTime) diff --git a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Generation.cs b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Generation.cs index de76e12a94..06958afa6c 100644 --- a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Generation.cs +++ b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Generation.cs @@ -115,8 +115,6 @@ public sealed partial class CP14DemiplaneSystem demiplane = ev.Demiplane; } - _statistic.TrackAdd(generator.Comp.Statistic, 1); - if (demiplane is null) return; diff --git a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs index 1b3a15a004..6da24aa80b 100644 --- a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs +++ b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs @@ -1,5 +1,4 @@ using Content.Server._CP14.Demiplane.Components; -using Content.Server._CP14.RoundStatistic; using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; using Content.Server.Flash; @@ -33,7 +32,6 @@ 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!; [Dependency] private readonly ChatSystem _chat = default!; [Dependency] private readonly IChatManager _chatManager = default!; diff --git a/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneDataComponent.cs b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneDataComponent.cs index 504677d012..53b0a8a010 100644 --- a/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneDataComponent.cs +++ b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneDataComponent.cs @@ -1,6 +1,5 @@ using Content.Server._CP14.DemiplaneTraveling; using Content.Shared._CP14.Demiplane.Prototypes; -using Content.Shared._CP14.RoundStatistic; using Robust.Shared.Prototypes; namespace Content.Server._CP14.Demiplane.Components; @@ -17,9 +16,6 @@ public sealed partial class CP14DemiplaneDataComponent : Component [DataField] public List> SelectedModifiers = new(); - [DataField] - public ProtoId Statistic = "DemiplaneOpen"; - [DataField] public List AutoRifts = new() { "CP14DemiplaneTimedRadiusPassway", "CP14DemiplanRiftCore" }; } diff --git a/Content.Server/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapSystem.cs b/Content.Server/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapSystem.cs index 8df91fd489..5e3a1252ff 100644 --- a/Content.Server/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapSystem.cs +++ b/Content.Server/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapSystem.cs @@ -236,7 +236,7 @@ public sealed partial class CP14StationDemiplaneMapSystem : CP14SharedStationDem new Vector2(specialPos.X, specialPos.Y), false, locationConfig: special.Location, - modifiers: special.Modifiers + modifiers: [..special.Modifiers] ); grid[specialPos] = specialNode; specialPositions.Add(specialPos); @@ -315,8 +315,9 @@ public sealed partial class CP14StationDemiplaneMapSystem : CP14SharedStationDem var limits = new Dictionary, float> { { "Danger", (node.Level + node.AdditionalLevel) * 0.2f }, - { "GhostRoleDanger", node.Level * 0.2f }, + { "GhostRoleDanger", 1f }, { "Reward", Math.Max(node.Level * 0.2f, 0.5f) }, + { "Ore", Math.Max(node.Level * 0.2f, 0.5f) }, { "Fun", 1f }, { "Weather", 1f }, { "MapLight", 1f }, diff --git a/Content.Server/_CP14/Discord/DiscordAuthManager.cs b/Content.Server/_CP14/Discord/DiscordAuthManager.cs index a1a60deab9..657a246526 100644 --- a/Content.Server/_CP14/Discord/DiscordAuthManager.cs +++ b/Content.Server/_CP14/Discord/DiscordAuthManager.cs @@ -42,6 +42,7 @@ public sealed class DiscordAuthManager "1294276016117911594", "1278755078315970620", "1330772249644630157", + "1274951101464051846", }; public event EventHandler? PlayerVerified; diff --git a/Content.Server/_CP14/Farming/CP14FarmingSystem.Resourse.cs b/Content.Server/_CP14/Farming/CP14FarmingSystem.Resourse.cs index 74de9da51e..88a51510f7 100644 --- a/Content.Server/_CP14/Farming/CP14FarmingSystem.Resourse.cs +++ b/Content.Server/_CP14/Farming/CP14FarmingSystem.Resourse.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.DayCycle; using Content.Shared._CP14.Farming.Components; using Content.Shared.Chemistry.Components.SolutionManager; @@ -5,6 +6,7 @@ namespace Content.Server._CP14.Farming; public sealed partial class CP14FarmingSystem { + [Dependency] private readonly CP14DayCycleSystem _dayCycle = default!; private void InitializeResources() { SubscribeLocalEvent(OnTakeEnergyFromLight); @@ -16,7 +18,7 @@ public sealed partial class CP14FarmingSystem private void OnTakeEnergyFromLight(Entity regeneration, ref CP14PlantUpdateEvent args) { var gainEnergy = false; - var daylight = true;//_dayCycle.UnderSunlight(regeneration); + var daylight = _dayCycle.UnderSunlight(regeneration); if (regeneration.Comp.Daytime && daylight) gainEnergy = true; diff --git a/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonCurseRule.cs b/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonCurseRule.cs new file mode 100644 index 0000000000..36903c356e --- /dev/null +++ b/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonCurseRule.cs @@ -0,0 +1,114 @@ +using System.Linq; +using Content.Server._CP14.GameTicking.Rules.Components; +using Content.Server.Antag; +using Content.Server.Chat.Systems; +using Content.Server.GameTicking.Rules; +using Content.Server.Popups; +using Content.Server.Station.Components; +using Content.Server.Stunnable; +using Content.Shared._CP14.BloodMoon; +using Content.Shared._CP14.DayCycle; +using Content.Shared.Actions; +using Content.Shared.Examine; +using Content.Shared.GameTicking.Components; +using Content.Shared.Mobs; +using Content.Shared.Popups; +using Robust.Server.GameObjects; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Player; + +namespace Content.Server._CP14.GameTicking.Rules; + +public sealed class CP14BloodMoonCurseRule : GameRuleSystem +{ + [Dependency] private readonly AntagSelectionSystem _antag = default!; + [Dependency] private readonly StunSystem _stun = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly ChatSystem _chatSystem = default!; + [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedActionsSystem _action = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnStartDay); + SubscribeLocalEvent(AfterAntagEntitySelected); + SubscribeLocalEvent(CurseExamined); + } + + private void CurseExamined(Entity ent, ref ExaminedEvent args) + { + args.PushMarkup(Loc.GetString("cp14-bloodmoon-curse-examined")); + } + + private void AfterAntagEntitySelected(Entity ent, ref AfterAntagEntitySelectedEvent args) + { + SpawnAttachedTo(ent.Comp.CurseEffect, Transform(args.EntityUid).Coordinates); + var curseComp = EnsureComp(args.EntityUid); + var effect = SpawnAttachedTo(curseComp.CurseEffect, Transform(args.EntityUid).Coordinates); + curseComp.SpawnedEffect = effect; + curseComp.CurseRule = ent; + _transform.SetParent(effect, args.EntityUid); + _action.AddAction(args.EntityUid, ref curseComp.ActionEntity, curseComp.Action); + } + + protected override void Started(EntityUid uid, + CP14BloodMoonCurseRuleComponent component, + GameRuleComponent gameRule, + GameRuleStartedEvent args) + { + Filter allPlayersInGame = Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame); + _chatSystem.DispatchFilteredAnnouncement(allPlayersInGame, Loc.GetString(component.StartAnnouncement), colorOverride: component.AnnouncementColor); + + _audio.PlayGlobal(component.GlobalSound, allPlayersInGame, true); + } + + protected override void Ended(EntityUid uid, + CP14BloodMoonCurseRuleComponent component, + GameRuleComponent gameRule, + GameRuleEndedEvent args) + { + Filter allPlayersInGame = Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame); + _chatSystem.DispatchFilteredAnnouncement(allPlayersInGame, Loc.GetString(component.EndAnnouncement), colorOverride: component.AnnouncementColor); + + var aliveAntags = _antag.GetAliveAntags(uid); + + foreach (var antag in aliveAntags) + { + SpawnAttachedTo(component.CurseEffect, Transform(antag).Coordinates); + ClearCurse(antag); + } + + GameTicker.EndRound(); + } + + private void OnStartDay(CP14StartDayEvent ev) + { + if (!HasComp(ev.Map)) + return; + + var query = QueryActiveRules(); + while (query.MoveNext(out var uid, out _, out var comp, out _)) + { + ForceEndSelf(uid); + } + } + + private void ClearCurse(Entity ent) + { + if (!Resolve(ent.Owner, ref ent.Comp, false)) + return; + + _stun.TryParalyze(ent, ent.Comp.EndStunDuration, true); + _popup.PopupEntity(Loc.GetString("cp14-bloodmoon-curse-removed"), ent, PopupType.SmallCaution); + if (TryComp(ent, out var curseComp)) + { + QueueDel(curseComp.SpawnedEffect); + RemCompDeferred(ent); + } + + _action.RemoveAction(ent.Comp.ActionEntity); + } +} diff --git a/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonRule.cs b/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonRule.cs new file mode 100644 index 0000000000..b65b0983bf --- /dev/null +++ b/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonRule.cs @@ -0,0 +1,54 @@ +using Content.Server._CP14.GameTicking.Rules.Components; +using Content.Server.Chat.Systems; +using Content.Server.GameTicking.Rules; +using Content.Server.Station.Components; +using Content.Server.StationEvents.Events; +using Content.Shared._CP14.DayCycle; +using Content.Shared.GameTicking.Components; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Player; + +namespace Content.Server._CP14.GameTicking.Rules; + +public sealed class CP14BloodMoonRule : GameRuleSystem +{ + [Dependency] private readonly ChatSystem _chatSystem = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnStartNight); + } + + protected override void Started(EntityUid uid, + CP14BloodMoonRuleComponent component, + GameRuleComponent gameRule, + GameRuleStartedEvent args) + { + base.Started(uid, component, gameRule, args); + + Filter allPlayersInGame = Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame); + _chatSystem.DispatchFilteredAnnouncement( + allPlayersInGame, + message: Loc.GetString(component.StartAnnouncement), + colorOverride: component.AnnouncementColor); + + _audio.PlayGlobal(component.AnnounceSound, allPlayersInGame, true); + } + + private void OnStartNight(CP14StartNightEvent ev) + { + if (!HasComp(ev.Map)) + return; + + var query = QueryActiveRules(); + while (query.MoveNext(out var uid, out _, out var comp, out _)) + { + var ruleEnt = GameTicker.AddGameRule(comp.CurseRule); + GameTicker.StartGameRule(ruleEnt); + ForceEndSelf(uid); + } + } +} diff --git a/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonCurseRuleComponent.cs b/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonCurseRuleComponent.cs new file mode 100644 index 0000000000..663017d1b1 --- /dev/null +++ b/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonCurseRuleComponent.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.GameTicking.Rules.Components; + +[RegisterComponent, Access(typeof(CP14BloodMoonCurseRule))] +public sealed partial class CP14BloodMoonCurseRuleComponent : Component +{ + [DataField] + public LocId StartAnnouncement = "cp14-bloodmoon-start"; + + [DataField] + public LocId EndAnnouncement = "cp14-bloodmoon-end"; + + [DataField] + public Color? AnnouncementColor; + + [DataField] + public EntProtoId CurseEffect = "CP14ImpactEffectMagicSplitting"; + + [DataField] + public SoundSpecifier GlobalSound = new SoundPathSpecifier("/Audio/_CP14/Ambience/blood_moon_raise.ogg") + { + Params = AudioParams.Default.WithVolume(-2f) + }; +} diff --git a/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonRuleComponent.cs b/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonRuleComponent.cs new file mode 100644 index 0000000000..933465da07 --- /dev/null +++ b/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonRuleComponent.cs @@ -0,0 +1,20 @@ +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.GameTicking.Rules.Components; + +[RegisterComponent, Access(typeof(CP14BloodMoonRule))] +public sealed partial class CP14BloodMoonRuleComponent : Component +{ + [DataField] + public EntProtoId CurseRule = "CP14BloodMoonCurseRule"; + + [DataField] + public LocId StartAnnouncement = "cp14-bloodmoon-raising"; + + [DataField] + public Color? AnnouncementColor = Color.FromHex("#e32759"); + + [DataField] + public SoundSpecifier? AnnounceSound; +} diff --git a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs index b4dc1f04b2..61a377e14c 100644 --- a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs +++ b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs @@ -1,15 +1,16 @@ using Content.Server._CP14.MagicEnergy.Components; +using Content.Shared._CP14.DayCycle; using Content.Shared._CP14.MagicEnergy.Components; using Content.Shared.Damage; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; -using Robust.Shared.Map.Components; namespace Content.Server._CP14.MagicEnergy; public partial class CP14MagicEnergySystem { [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly CP14DayCycleSystem _dayCycle = default!; private void InitializeDraw() { @@ -75,16 +76,7 @@ public partial class CP14MagicEnergySystem draw.NextUpdateTime = _gameTiming.CurTime + TimeSpan.FromSeconds(draw.Delay); - var daylight = false; - - //if (TryComp(Transform(uid).MapUid, out var mapLight)) - //{ - // var color = mapLight.AmbientLightColor; - // var medium = (color.R + color.G + color.B) / 3f; - // - // if (medium > draw.LightThreshold) - // daylight = true; - //} + var daylight = _dayCycle.UnderSunlight(uid); ChangeEnergy((uid, magicContainer), daylight ? draw.DaylightEnergy : draw.DarknessEnergy, out _, out _, true); } diff --git a/Content.Server/_CP14/Objectives/Components/CP14RichestJobConditionComponent.cs b/Content.Server/_CP14/Objectives/Components/CP14RichestJobConditionComponent.cs deleted file mode 100644 index 6c8b81296f..0000000000 --- a/Content.Server/_CP14/Objectives/Components/CP14RichestJobConditionComponent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Content.Server._CP14.Objectives.Systems; -using Content.Shared.Roles; -using Robust.Shared.Prototypes; -using Robust.Shared.Utility; - -namespace Content.Server._CP14.Objectives.Components; - -/// -/// The player must be the richest among the players among the specified list of roles -/// -[RegisterComponent, Access(typeof(CP14RichestJobConditionSystem))] -public sealed partial class CP14RichestJobConditionComponent : Component -{ - [DataField(required: true)] - public ProtoId Job; - - [DataField(required: true)] - public LocId ObjectiveText; - - [DataField(required: true)] - public LocId ObjectiveDescription; - - [DataField(required: true)] - public SpriteSpecifier ObjectiveSprite; -} diff --git a/Content.Server/_CP14/Objectives/Components/CP14StatisticRangeConditionComponent.cs b/Content.Server/_CP14/Objectives/Components/CP14StatisticRangeConditionComponent.cs deleted file mode 100644 index d5d372b683..0000000000 --- a/Content.Server/_CP14/Objectives/Components/CP14StatisticRangeConditionComponent.cs +++ /dev/null @@ -1,26 +0,0 @@ -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 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; -} diff --git a/Content.Server/_CP14/Objectives/Systems/CP14RichestJobCondtionSystem.cs b/Content.Server/_CP14/Objectives/Systems/CP14RichestJobCondtionSystem.cs deleted file mode 100644 index 3a62d4293a..0000000000 --- a/Content.Server/_CP14/Objectives/Systems/CP14RichestJobCondtionSystem.cs +++ /dev/null @@ -1,74 +0,0 @@ -using Content.Server._CP14.Objectives.Components; -using Content.Shared._CP14.Currency; -using Content.Shared.Mind; -using Content.Shared.Objectives.Components; -using Content.Shared.Objectives.Systems; -using Content.Shared.Roles.Jobs; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.Objectives.Systems; - -public sealed class CP14RichestJobConditionSystem : EntitySystem -{ - [Dependency] private readonly MetaDataSystem _metaData = default!; - [Dependency] private readonly SharedObjectivesSystem _objectives = default!; - [Dependency] private readonly CP14SharedCurrencySystem _currency = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly SharedMindSystem _mind = default!; - [Dependency] private readonly SharedJobSystem _job = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnCollectAfterAssign); - SubscribeLocalEvent(OnCollectGetProgress); - } - - private void OnCollectAfterAssign(Entity condition, ref ObjectiveAfterAssignEvent args) - { - if (!_proto.TryIndex(condition.Comp.Job, out var indexedJob)) - return; - - _metaData.SetEntityName(condition.Owner, Loc.GetString(condition.Comp.ObjectiveText), args.Meta); - _metaData.SetEntityDescription(condition.Owner, Loc.GetString(condition.Comp.ObjectiveDescription), args.Meta); - _objectives.SetIcon(condition.Owner, condition.Comp.ObjectiveSprite); - } - - private void OnCollectGetProgress(Entity condition, ref ObjectiveGetProgressEvent args) - { - args.Progress = GetProgress(args.MindId, args.Mind, condition); - } - - private float GetProgress(EntityUid mindId, MindComponent mind, CP14RichestJobConditionComponent condition) - { - if (mind.OwnedEntity is null) - return 0; - - var ourValue = _currency.GetTotalCurrencyRecursive(mind.OwnedEntity.Value); - var otherMaxValue = 0; - - var allHumans = _mind.GetAliveHumans(mindId); - if (allHumans.Count == 0) - return 1; // No one to compare to, so we're the richest. - - foreach (var otherHuman in allHumans) - { - if (!_job.MindTryGetJob(otherHuman, out var otherJob)) - continue; - - if (otherJob != condition.Job) - continue; - - if (otherHuman.Comp.OwnedEntity is null) - continue; - - var otherValue = _currency.GetTotalCurrencyRecursive(otherHuman.Comp.OwnedEntity.Value); - if (otherValue > otherMaxValue) - otherMaxValue = otherValue; - } - - // if several players have the same amount of money, no one wins. - return ourValue == otherMaxValue ? 0.99f : Math.Clamp(ourValue / (float)otherMaxValue, 0, 1); - } -} diff --git a/Content.Server/_CP14/Objectives/Systems/CP14StatisticRangeConditionStstem.cs b/Content.Server/_CP14/Objectives/Systems/CP14StatisticRangeConditionStstem.cs deleted file mode 100644 index ceac079e2f..0000000000 --- a/Content.Server/_CP14/Objectives/Systems/CP14StatisticRangeConditionStstem.cs +++ /dev/null @@ -1,54 +0,0 @@ -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(OnAfterAssign); - SubscribeLocalEvent(OnGetProgress); - } - - private void OnAfterAssign(Entity 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 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; - } -} diff --git a/Content.Server/_CP14/ResearchTable/CP14ResearchSystem.cs b/Content.Server/_CP14/ResearchTable/CP14ResearchSystem.cs new file mode 100644 index 0000000000..3646a2c0d3 --- /dev/null +++ b/Content.Server/_CP14/ResearchTable/CP14ResearchSystem.cs @@ -0,0 +1,199 @@ +using Content.Server.DoAfter; +using Content.Shared._CP14.ResearchTable; +using Content.Shared._CP14.Skill; +using Content.Shared._CP14.Skill.Components; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared._CP14.Skill.Restrictions; +using Content.Shared.DoAfter; +using Content.Shared.UserInterface; +using Robust.Server.Audio; +using Robust.Server.GameObjects; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.ResearchTable; + +public sealed class CP14ResearchSystem : CP14SharedResearchSystem +{ + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly UserInterfaceSystem _userInterface = default!; + [Dependency] private readonly DoAfterSystem _doAfter = default!; + [Dependency] private readonly AudioSystem _audio = default!; + + private IEnumerable _allSkills = []; + + public override void Initialize() + { + base.Initialize(); + + _allSkills = _proto.EnumeratePrototypes(); + + SubscribeLocalEvent(OnBeforeUIOpen); + SubscribeLocalEvent(OnResearch); + SubscribeLocalEvent(OnResearchEnd); + + SubscribeLocalEvent(OnReloadPrototypes); + } + + private void OnReloadPrototypes(PrototypesReloadedEventArgs ev) + { + _allSkills = _proto.EnumeratePrototypes(); + } + + private void OnResearchEnd(Entity table, ref CP14ResearchDoAfterEvent args) + { + if (args.Cancelled || args.Handled) + return; + + if (!_proto.TryIndex(args.Skill, out var indexedSkill)) + return; + + var placedEntities = _lookup.GetEntitiesInRange(Transform(table).Coordinates, + table.Comp.ResearchRadius, + LookupFlags.Uncontained); + + if (!CanResearch(indexedSkill, placedEntities, args.User)) + return; + + if (!TryComp(args.User, out var storage)) + return; + if (storage.ResearchedSkills.Contains(args.Skill) || storage.LearnedSkills.Contains(args.Skill)) + return; + storage.ResearchedSkills.Add(args.Skill); + Dirty(args.User, storage); + + foreach (var restriction in indexedSkill.Restrictions) + { + switch (restriction) + { + case Researched researched: + foreach (var req in researched.Requirements) + { + req.PostCraft(EntityManager, _proto, placedEntities, args.User); + } + break; + } + } + + _audio.PlayPvs(table.Comp.ResearchSound, table); + UpdateUI(table, args.User); + args.Handled = true; + } + + private void OnResearch(Entity ent, ref CP14ResearchMessage args) + { + if (!TryComp(args.Actor, out var storage)) + return; + + if (storage.ResearchedSkills.Contains(args.Skill) || storage.LearnedSkills.Contains(args.Skill)) + return; + + if (!_proto.TryIndex(args.Skill, out var indexedSkill)) + return; + + StartResearch(ent, args.Actor, indexedSkill); + } + + private void OnBeforeUIOpen(Entity ent, ref BeforeActivatableUIOpenEvent args) + { + UpdateUI(ent, args.User); + } + + private void UpdateUI(Entity entity, EntityUid user) + { + var placedEntities = _lookup.GetEntitiesInRange(Transform(entity).Coordinates, entity.Comp.ResearchRadius); + + if (!TryComp(user, out var storage)) + return; + + var researches = new List(); + foreach (var skill in _allSkills) + { + var researchable = false; + var canCraft = true; + var hidden = false; + + foreach (var restriction in skill.Restrictions) + { + if (storage.ResearchedSkills.Contains(skill) || storage.LearnedSkills.Contains(skill)) + continue; + + switch (restriction) + { + case SpeciesWhitelist speciesWhitelist: //We cant change species of our character, so hide it + if (!speciesWhitelist.Check(EntityManager, user, skill)) + hidden = true; + break; + + case NeedPrerequisite prerequisite: + if (!storage.ResearchedSkills.Contains(prerequisite.Prerequisite)) + hidden = true; + break; + + case Researched researched: + researchable = true; + + foreach (var req in researched.Requirements) + { + if (!req.CheckRequirement(EntityManager, _proto, placedEntities, user)) + { + canCraft = false; + } + } + break; + } + } + + if (!researchable || hidden) + continue; + + var entry = new CP14ResearchUiEntry(skill, canCraft); + + researches.Add(entry); + } + + _userInterface.SetUiState(entity.Owner, CP14ResearchTableUiKey.Key, new CP14ResearchTableUiState(researches)); + } + + private void StartResearch(Entity table, EntityUid user, CP14SkillPrototype skill) + { + var researchDoAfter = new CP14ResearchDoAfterEvent() + { + Skill = skill + }; + + var doAfterArgs = new DoAfterArgs(EntityManager, + user, + TimeSpan.FromSeconds(table.Comp.ResearchSpeed), + researchDoAfter, + table, + table) + { + BreakOnMove = true, + BreakOnDamage = true, + NeedHand = true, + }; + + _doAfter.TryStartDoAfter(doAfterArgs); + _audio.PlayPvs(table.Comp.ResearchSound, table); + } + + private bool CanResearch(CP14SkillPrototype skill, HashSet entities, EntityUid user) + { + foreach (var restriction in skill.Restrictions) + { + switch (restriction) + { + case Researched researched: + foreach (var req in researched.Requirements) + { + if (!req.CheckRequirement(EntityManager, _proto, entities, user)) + return false; + } + break; + } + } + + return true; + } +} diff --git a/Content.Server/_CP14/RoleSalary/CP14SalarySpawnerComponent.cs b/Content.Server/_CP14/RoleSalary/CP14SalarySpawnerComponent.cs deleted file mode 100644 index 525a51f6d1..0000000000 --- a/Content.Server/_CP14/RoleSalary/CP14SalarySpawnerComponent.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Content.Server._CP14.RoleSalary; - -[RegisterComponent, Access(typeof(CP14SalarySystem))] -public sealed partial class CP14SalarySpawnerComponent : Component -{ -} diff --git a/Content.Server/_CP14/RoleSalary/CP14SalarySystem.cs b/Content.Server/_CP14/RoleSalary/CP14SalarySystem.cs deleted file mode 100644 index f5eb7e2938..0000000000 --- a/Content.Server/_CP14/RoleSalary/CP14SalarySystem.cs +++ /dev/null @@ -1,118 +0,0 @@ -using System.Text; -using Content.Server._CP14.Cargo; -using Content.Server._CP14.Currency; -using Content.Server.Station.Events; -using Content.Shared.Paper; -using Content.Shared.Station.Components; -using Content.Shared.Storage.EntitySystems; -using Robust.Server.GameObjects; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; - -namespace Content.Server._CP14.RoleSalary; - -/// -/// A system that periodically sends paychecks to certain roles through the cargo ship system -/// -public sealed partial class CP14SalarySystem : EntitySystem -{ - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly CP14CargoSystem _cargo = default!; - [Dependency] private readonly TransformSystem _transform = default!; - [Dependency] private readonly PaperSystem _paper = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly CP14CurrencySystem _currency = default!; - [Dependency] private readonly SharedStorageSystem _storage = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnStationPostInit); - SubscribeLocalEvent(OnSalaryInit); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - //var query = EntityQueryEnumerator(); - //while (query.MoveNext(out var uid, out var salary, out var store)) - //{ - // if (_timing.CurTime < salary.NextSalaryTime) - // continue; -// - // salary.NextSalaryTime = _timing.CurTime + salary.SalaryFrequency; - // _cargo.AddBuyQueue((uid, store), new List {salary.SalaryProto}); - //} - } - - private void OnSalaryInit(Entity ent, ref MapInitEvent args) - { - GenerateSalary(ent); - QueueDel(ent); - } - - private void GenerateSalary(Entity ent) - { - //Hardcode warning! ^-^ - var xform = Transform(ent); - - //First we need found a station - if (!TryComp(xform.GridUid, out var member)) - return; - - if (!TryComp(member.Station, out var stationSalaryComponent)) - return; - - var paper = Spawn("CP14Paper"); //TODO Special named paper - _transform.PlaceNextTo(paper, (ent, xform)); - if (TryComp(paper, out var paperComp)) - { - paperComp.Content = GenerateSalaryText((member.Station, stationSalaryComponent)) ?? ""; - _paper.TryStamp((paper, paperComp), - new StampDisplayInfo - { - StampedColor = Color.Red, - StampedName = Loc.GetString("cp14-stamp-salary"), - }, - "red_on_paper"); - } - - var wallet = Spawn("CP14Wallet"); - _transform.PlaceNextTo(wallet, (ent, xform)); - - foreach (var salary in stationSalaryComponent.Salary) - { - var coins = _currency.GenerateMoney(salary.Value, xform.Coordinates); - foreach (var coin in coins) - { - _storage.Insert(wallet, coin, out _); - } - } - } - - private string? GenerateSalaryText(Entity station) - { - var sb = new StringBuilder(); - - sb.Append(Loc.GetString("cp14-salary-title") + "\n"); - foreach (var salary in station.Comp.Salary) - { - sb.Append("\n"); - if (!_proto.TryIndex(salary.Key, out var indexedDep)) - continue; - - var name = Loc.GetString(indexedDep.Name); - sb.Append(Loc.GetString("cp14-salary-entry", - ("dep", name), - ("total", _currency.GetCurrencyPrettyString(salary.Value)))); - } - return sb.ToString(); - } - - private void OnStationPostInit(Entity ent, ref StationPostInitEvent args) - { - ent.Comp.NextSalaryTime = _timing.CurTime + ent.Comp.SalaryFrequency; - } -} diff --git a/Content.Server/_CP14/RoleSalary/CP14StationSalaryComponent.cs b/Content.Server/_CP14/RoleSalary/CP14StationSalaryComponent.cs deleted file mode 100644 index 8ae05d0fe1..0000000000 --- a/Content.Server/_CP14/RoleSalary/CP14StationSalaryComponent.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Content.Shared.Roles; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.RoleSalary; - -[RegisterComponent, Access(typeof(CP14SalarySystem)), AutoGenerateComponentPause] -public sealed partial class CP14StationSalaryComponent : Component -{ - /// - /// listing all the departments and their salaries - /// - [DataField] - public Dictionary, int> Salary = new(); - - [DataField, AutoPausedField] - public TimeSpan NextSalaryTime = TimeSpan.Zero; - - [DataField] - public TimeSpan SalaryFrequency = TimeSpan.FromMinutes(18); - - [DataField] - public EntProtoId SalaryProto = "CP14SalarySpawner"; -} diff --git a/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.CBT.cs b/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.CBT.cs index e1313d9008..06bd40f8c1 100644 --- a/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.CBT.cs +++ b/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.CBT.cs @@ -1,5 +1,6 @@ using Content.Server.GameTicking; using Content.Shared.CCVar; +using Robust.Server; using Robust.Shared.Audio; using Robust.Shared.Console; @@ -9,9 +10,10 @@ public sealed partial class CP14RoundEndSystem { [Dependency] private readonly IConsoleHost _consoleHost = default!; [Dependency] private readonly GameTicker _ticker = default!; + [Dependency] private readonly IBaseServer _baseServer = default!; private TimeSpan _nextUpdateTime = TimeSpan.Zero; - private readonly TimeSpan _updateFrequency = TimeSpan.FromSeconds(60f); + private readonly TimeSpan _updateFrequency = TimeSpan.FromSeconds(50f); private bool _enabled; @@ -24,7 +26,8 @@ public sealed partial class CP14RoundEndSystem } // Вы можете сказать: Эд, ты ебанулся? Это же лютый щиткод! - // И я вам отвечу: Да. Но сама система ограничения времени работы сервера - временная штука на этап разработки, которая будет удалена. Мне просто лень каждый раз запускать и выключать сервер ручками. + // И я вам отвечу: Да. Но сама система ограничения времени работы сервера - временная штука на этап разработки, которая будет удалена. + // Мне просто лень каждый раз запускать и выключать сервер ручками. private void UpdateCbt(float _) { if (!_enabled || _timing.CurTime < _nextUpdateTime) @@ -33,16 +36,16 @@ public sealed partial class CP14RoundEndSystem _nextUpdateTime = _timing.CurTime + _updateFrequency; var now = DateTime.UtcNow.AddHours(3); // Moscow time - OpenWeekendRule(now); - EnglishDayRule(now); + OpenSaturdayRule(now); + LanguageRule(now); LimitPlaytimeRule(now); ApplyAnnouncements(now); } - private void OpenWeekendRule(DateTime now) + private void OpenSaturdayRule(DateTime now) { var curWhitelist = _cfg.GetCVar(CCVars.WhitelistEnabled); - var isOpenWeened = now.DayOfWeek is DayOfWeek.Saturday or DayOfWeek.Sunday; + var isOpenWeened = now.DayOfWeek is DayOfWeek.Saturday; if (isOpenWeened && curWhitelist) { @@ -54,22 +57,14 @@ public sealed partial class CP14RoundEndSystem } } - private void EnglishDayRule(DateTime now) + private void LanguageRule(DateTime now) { var curLang = _cfg.GetCVar(CCVars.Language); - var englishDay = now.DayOfWeek == DayOfWeek.Saturday; - if (englishDay && curLang != "en-US") - { - _cfg.SetCVar(CCVars.Language, "en-US"); + var ruHalfDay = now.Hour < 19 && now.Hour >= 9; - _chatSystem.DispatchGlobalAnnouncement( - "WARNING: The server changes its language to English. For the changes to apply to your device, reconnect to the server.", - announcementSound: new SoundPathSpecifier("/Audio/Effects/beep1.ogg"), - sender: "Server" - ); - } - else if (!englishDay && curLang != "ru-RU") + + if (ruHalfDay && curLang != "ru-RU") { _cfg.SetCVar(CCVars.Language, "ru-RU"); @@ -79,11 +74,21 @@ public sealed partial class CP14RoundEndSystem sender: "Server" ); } + else if (!ruHalfDay && curLang != "en-US") + { + _cfg.SetCVar(CCVars.Language, "en-US"); + + _chatSystem.DispatchGlobalAnnouncement( + "WARNING: The server changes its language to English. For the changes to apply to your device, reconnect to the server.", + announcementSound: new SoundPathSpecifier("/Audio/Effects/beep1.ogg"), + sender: "Server" + ); + } } private void LimitPlaytimeRule(DateTime now) { - var playtime = now.Hour is >= 18 and < 21; + var playtime = (now.Hour is >= 15 and < 19) || (now.Hour is >= 20 and < 24); if (playtime) { @@ -104,7 +109,7 @@ public sealed partial class CP14RoundEndSystem { var timeMap = new (int Hour, int Minute, Action Action)[] { - (20, 45, () => + (18, 45, () => { _chatSystem.DispatchGlobalAnnouncement( Loc.GetString("cp14-cbt-close-15m"), @@ -112,7 +117,19 @@ public sealed partial class CP14RoundEndSystem sender: "Server" ); }), - (21, 2, () => + (19, 2, () => + { + _baseServer.Shutdown("Русский ОБТ подошел к концу. Следующие 3 часа будет английский ОБТ. Просьба не мешать англоязычным ребятам играть в свое время :)"); + }), + (23, 45, () => + { + _chatSystem.DispatchGlobalAnnouncement( + Loc.GetString("cp14-cbt-close-15m"), + announcementSound: new SoundPathSpecifier("/Audio/Effects/beep1.ogg"), + sender: "Server" + ); + }), + (00, 2, () => { _consoleHost.ExecuteCommand("golobby"); }), diff --git a/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.cs b/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.cs index 39c52fc200..a628d91f74 100644 --- a/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.cs +++ b/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.cs @@ -51,7 +51,7 @@ public sealed partial class CP14RoundEndSystem : EntitySystem _demiplane.DeleteAllDemiplanes(safe: false); _chatSystem.DispatchGlobalAnnouncement(Loc.GetString("cp14-round-end"), - announcementSound: new SoundPathSpecifier("/Audio/_CP14/Ambience/event_boom.ogg")); + announcementSound: new SoundPathSpecifier("/Audio/_CP14/Announce/event_boom.ogg")); _roundEnd.EndRound(); } @@ -63,7 +63,7 @@ public sealed partial class CP14RoundEndSystem : EntitySystem { _chatSystem.DispatchGlobalAnnouncement( Loc.GetString("cp14-round-end-monolith-50"), - announcementSound: new SoundPathSpecifier("/Audio/_CP14/Ambience/event_boom.ogg")); + announcementSound: new SoundPathSpecifier("/Audio/_CP14/Announce/event_boom.ogg")); } //We initiate round end timer @@ -99,7 +99,7 @@ public sealed partial class CP14RoundEndSystem : EntitySystem "cp14-round-end-monolith-discharged", ("time", time), ("units", Loc.GetString(unitsLocString))), - announcementSound: new SoundPathSpecifier("/Audio/_CP14/Ambience/event_boom.ogg")); + announcementSound: new SoundPathSpecifier("/Audio/_CP14/Announce/event_boom.ogg")); } private void CancelRoundEndTimer() @@ -107,6 +107,6 @@ public sealed partial class CP14RoundEndSystem : EntitySystem _roundEndMoment = TimeSpan.Zero; _chatSystem.DispatchGlobalAnnouncement(Loc.GetString("cp14-round-end-monolith-recharged"), - announcementSound: new SoundPathSpecifier("/Audio/_CP14/Ambience/event_boom.ogg")); + announcementSound: new SoundPathSpecifier("/Audio/_CP14/Announce/event_boom.ogg")); } } diff --git a/Content.Server/_CP14/RoundLeave/CP14RoundLeaveSystem.cs b/Content.Server/_CP14/RoundLeave/CP14RoundLeaveSystem.cs index 4ed1e6366d..ba99d64911 100644 --- a/Content.Server/_CP14/RoundLeave/CP14RoundLeaveSystem.cs +++ b/Content.Server/_CP14/RoundLeave/CP14RoundLeaveSystem.cs @@ -94,7 +94,7 @@ public sealed class CP14RoundLeaveSystem : EntitySystem _adminLog.Add(LogType.Action, LogImpact.High, - $"{ToPrettyString(ent):player} was leave the round by ghosting into mist"); + $"{ToPrettyString(ent):player} left the round by ghosting into mist"); LeaveRound(ent, userId.Value, args.Mind); } diff --git a/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleComponent.cs b/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleComponent.cs deleted file mode 100644 index ce3199097a..0000000000 --- a/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Server._CP14.RoundRemoveShuttle; - -[RegisterComponent] -public sealed partial class CP14RoundRemoveShuttleComponent : Component -{ - [DataField] - public EntityUid Station; -} diff --git a/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleSystem.cs b/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleSystem.cs deleted file mode 100644 index 6b7e32a949..0000000000 --- a/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleSystem.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System.Globalization; -using System.Linq; -using Content.Server.Chat.Systems; -using Content.Server.Mind; -using Content.Server.Shuttles.Events; -using Content.Server.Station.Systems; -using Content.Server.StationRecords; -using Content.Server.StationRecords.Systems; -using Content.Shared.Administration.Logs; -using Content.Shared.Database; -using Content.Shared.Mind.Components; -using Content.Shared.Mobs.Systems; -using Content.Shared.StationRecords; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.RoundRemoveShuttle; - -public sealed partial class CP14RoundRemoveShuttleSystem : EntitySystem -{ - [Dependency] private readonly ISharedAdminLogManager _adminLog = default!; - [Dependency] private readonly ChatSystem _chatSystem = default!; - [Dependency] private readonly MindSystem _mind = default!; - [Dependency] private readonly StationJobsSystem _stationJobs = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly StationRecordsSystem _stationRecords = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - - private readonly HashSet> _mindSet = new(); - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnFTL); - } - - private void OnFTL(Entity ent, ref FTLStartedEvent args) - { - _mindSet.Clear(); - _lookup.GetChildEntities(ent, _mindSet); - - if (!TryComp(ent.Comp.Station, out var stationRecords)) - return; - - HashSet toDelete = new(); - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var mindContainer)) - { - if (Transform(uid).GridUid != ent) - continue; - - if (!_mind.TryGetMind(uid, out _, out var mindComp, container: mindContainer)) - continue; - - var name = Name(uid); - var recordId = _stationRecords.GetRecordByName(ent.Comp.Station, name); - - if (recordId is null) - return; - - var key = new StationRecordKey(recordId.Value, ent.Comp.Station); - if (!_stationRecords.TryGetRecord(key, out var entry, stationRecords)) - return; - - _stationRecords.RemoveRecord(key, stationRecords); - //Trying return all jobs roles - var userId = mindComp.UserId; - string? jobName = entry.JobTitle; - if (userId is not null) - { - _stationJobs.TryAdjustJobSlot(ent.Comp.Station, entry.JobPrototype, 1, clamp: true); - if (_proto.TryIndex(entry.JobPrototype, out var indexedJob)) - { - jobName = Loc.GetString(indexedJob.Name); - } - } - - _adminLog.Add(LogType.Action, - LogImpact.High, - $"{ToPrettyString(uid):player} was leave the round on traveling merchant ship"); - - _chatSystem.DispatchStationAnnouncement(ent.Comp.Station, - Loc.GetString( - _mobState.IsDead(uid) ? "cp14-earlyleave-ship-announcement-dead" : "cp14-earlyleave-ship-announcement", - ("character", mindComp.CharacterName ?? "Unknown"), - ("job", CultureInfo.CurrentCulture.TextInfo.ToTitleCase(jobName ?? "Unknown")) - ), - Loc.GetString("cp14-ship-sender"), - playDefaultSound: false - ); - toDelete.Add(uid); - } - - while (toDelete.Count > 0) - { - var r = toDelete.First(); - toDelete.Remove(r); - QueueDel(r); - } - } -} diff --git a/Content.Server/_CP14/RoundStatistic/CP14RoundStatTrackerSystem.cs b/Content.Server/_CP14/RoundStatistic/CP14RoundStatTrackerSystem.cs deleted file mode 100644 index ced62e5461..0000000000 --- a/Content.Server/_CP14/RoundStatistic/CP14RoundStatTrackerSystem.cs +++ /dev/null @@ -1,71 +0,0 @@ -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, int> _tracking = new(); - - public override void Initialize() - { - base.Initialize(); - InitializeDemiplaneDeath(); - - SubscribeLocalEvent(OnRoundReset); - SubscribeLocalEvent(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()) - { - _tracking.Add(statTracker.ID, 0); - } - } - - public void TrackAdd(ProtoId proto, int dif) - { - _tracking[proto] += Math.Max(dif, 0); - } - - public int? GetTrack(ProtoId proto) - { - if (!_tracking.TryGetValue(proto, out var stat)) - { - Log.Error($"Failed to get round statistic: {proto}"); - return null; - } - - return stat; - } -} diff --git a/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14DeathDemiplaneStatisticComponent.cs b/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14DeathDemiplaneStatisticComponent.cs deleted file mode 100644 index df155ac9b1..0000000000 --- a/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14DeathDemiplaneStatisticComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Content.Shared._CP14.RoundStatistic; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.RoundStatistic.DemiplaneDeath; - -/// -/// Tracks the destruction or full-blown death of this entity. -/// -[RegisterComponent] -public sealed partial class CP14DeathDemiplaneStatisticComponent : Component -{ - [DataField] - public ProtoId Statistic = "DemiplaneDeaths"; -} diff --git a/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14RoundStatTrackerSystem.DemiplaneDeath.cs b/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14RoundStatTrackerSystem.DemiplaneDeath.cs deleted file mode 100644 index 744b0e1276..0000000000 --- a/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14RoundStatTrackerSystem.DemiplaneDeath.cs +++ /dev/null @@ -1,35 +0,0 @@ -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(OnSpawnComplete); - SubscribeLocalEvent(OnEntityTerminated); - SubscribeLocalEvent(OnDemiplaneUnsafeExit); - } - - private void OnSpawnComplete(PlayerSpawnCompleteEvent ev) - { - EnsureComp(ev.Mob); - } - - private void OnDemiplaneUnsafeExit(Entity ent, ref CP14DemiplaneUnsafeExit args) - { - TrackAdd(ent.Comp.Statistic, 1); - } - - //For round remove variants, like gibs or chasm falls - private void OnEntityTerminated(Entity ent, ref EntityTerminatingEvent args) - { - if (!HasComp(Transform(ent).MapUid)) - return; - - TrackAdd(ent.Comp.Statistic, 1); - } -} diff --git a/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectComponent.cs b/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectComponent.cs deleted file mode 100644 index b79e7f97b0..0000000000 --- a/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectComponent.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Content.Shared.Roles; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.StealArea; - -/// -/// -/// -[RegisterComponent, AutoGenerateComponentPause] -public sealed partial class CP14StealAreaAutoJobConnectComponent : Component -{ - [DataField] - public HashSet> Jobs = new(); - - [DataField] - public HashSet> Departments = new(); - - [DataField] - public bool Stations = true; -} diff --git a/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectSystem.cs b/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectSystem.cs deleted file mode 100644 index 4ef4c277d6..0000000000 --- a/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectSystem.cs +++ /dev/null @@ -1,104 +0,0 @@ -using Content.Server._CP14.StationCommonObjectives; -using Content.Server.Mind; -using Content.Server.Objectives.Components; -using Content.Shared.GameTicking; -using Content.Shared.Roles.Jobs; -using Robust.Server.Player; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.StealArea; - -public sealed class CP14StealAreaAutoJobConnectSystem : EntitySystem -{ - - [Dependency] private readonly MindSystem _mind = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly IPlayerManager _playerManager = default!; - [Dependency] private readonly SharedJobSystem _job = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnPlayerSpawning); - } - - private void OnMapInit(Entity autoConnect, ref MapInitEvent args) - { - if (!TryComp(autoConnect, out var stealArea)) - return; - - if (autoConnect.Comp.Stations) - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out _)) - { - stealArea.Owners.Add(uid); - } - } - - foreach (var player in _playerManager.Sessions) - { - if (!_mind.TryGetMind(player.UserId, out var playerMind)) - continue; - - if (!_job.MindTryGetJob(playerMind, out var playerJob)) - continue; - - if (stealArea.Owners.Contains(playerMind.Value)) - continue; - - if (autoConnect.Comp.Jobs.Contains(playerJob)) - { - stealArea.Owners.Add(playerMind.Value); - break; - } - - foreach (var depObj in autoConnect.Comp.Departments) - { - if (!_proto.TryIndex(depObj, out var indexedDepart)) - continue; - - if (!indexedDepart.Roles.Contains(playerJob)) - continue; - - stealArea.Owners.Add(playerMind.Value); - break; - } - } - } - - private void OnPlayerSpawning(PlayerSpawnCompleteEvent ev) - { - if (!_mind.TryGetMind(ev.Player.UserId, out var mind)) - return; - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var stealArea, out var autoConnect)) - { - if (stealArea.Owners.Contains(mind.Value)) - continue; - - if (ev.JobId is null) - continue; - - if (autoConnect.Jobs.Contains(ev.JobId)) - { - stealArea.Owners.Add(mind.Value); - break; - } - - foreach (var depObj in autoConnect.Departments) - { - if (!_proto.TryIndex(depObj, out var indexedDepart)) - continue; - - if (!indexedDepart.Roles.Contains(ev.JobId)) - continue; - - stealArea.Owners.Add(mind.Value); - break; - } - } - } -} diff --git a/Content.Server/_CP14/Workbench/CP14WorkbenchComponent.cs b/Content.Server/_CP14/Workbench/CP14WorkbenchComponent.cs index f8cbc8b593..2590c9782e 100644 --- a/Content.Server/_CP14/Workbench/CP14WorkbenchComponent.cs +++ b/Content.Server/_CP14/Workbench/CP14WorkbenchComponent.cs @@ -24,7 +24,7 @@ public sealed partial class CP14WorkbenchComponent : Component public float CraftSpeed = 1f; [DataField] - public float WorkbenchRadius = 0.5f; + public float WorkbenchRadius = 1.5f; /// /// List of recipes available for crafting on this type of workbench diff --git a/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs b/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs index d8d88d22f9..f1511805b9 100644 --- a/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs +++ b/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs @@ -35,10 +35,11 @@ public sealed partial class CP14WorkbenchSystem foreach (var requirement in indexedRecipe.Requirements) { - if (!requirement.CheckRequirement(EntityManager, _proto, placedEntities, user, indexedRecipe)) + if (!requirement.CheckRequirement(EntityManager, _proto, placedEntities, user)) { canCraft = false; - hidden = requirement.HideRecipe; + if (requirement.HideRecipe) + hidden = true; } } diff --git a/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.cs b/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.cs index fb84c2d091..4ccc6dc517 100644 --- a/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.cs +++ b/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.cs @@ -20,7 +20,7 @@ using Robust.Shared.Random; namespace Content.Server._CP14.Workbench; -public sealed partial class CP14WorkbenchSystem : SharedCP14WorkbenchSystem +public sealed partial class CP14WorkbenchSystem : CP14SharedWorkbenchSystem { [Dependency] private readonly AudioSystem _audio = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; @@ -139,7 +139,7 @@ public sealed partial class CP14WorkbenchSystem : SharedCP14WorkbenchSystem { foreach (var req in recipe.Requirements) { - if (!req.CheckRequirement(EntityManager, _proto, entities, user, recipe)) + if (!req.CheckRequirement(EntityManager, _proto, entities, user)) return false; } diff --git a/Content.Shared/Light/EntitySystems/SharedLightCycleSystem.cs b/Content.Shared/Light/EntitySystems/SharedLightCycleSystem.cs index 3b3d6d702c..3bd0d5b5fb 100644 --- a/Content.Shared/Light/EntitySystems/SharedLightCycleSystem.cs +++ b/Content.Shared/Light/EntitySystems/SharedLightCycleSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.DayCycle; using Content.Shared.Light.Components; using Robust.Shared.Map.Components; @@ -14,6 +15,10 @@ public abstract class SharedLightCycleSystem : EntitySystem protected virtual void OnCycleMapInit(Entity ent, ref MapInitEvent args) { + //CP14DayCycleSystem + EnsureComp(ent); + //CP14DayCycleSystem end + if (TryComp(ent.Owner, out MapLightComponent? mapLight)) { ent.Comp.OriginalColor = mapLight.AmbientLightColor; diff --git a/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs b/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs index 9aaef487b1..9961a2b911 100644 --- a/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs +++ b/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs @@ -48,14 +48,8 @@ public sealed partial class LoadoutPrototype : IPrototype, IEquipmentLoadout public Dictionary> Storage { get; set; } = new(); /// - /// CP14 - it is possible to give action spells or spells to players who have taken this loadout + /// CP14 - it is possible to give free skills to players /// [DataField] - public List Actions { get; set; } = new(); - - /// - /// CP14 - it is possible to give skill trees to players who have taken this loadout - /// - [DataField] - public Dictionary, FixedPoint2> SkillTree = new(); + public HashSet> Skills = new(); } diff --git a/Content.Shared/Station/SharedStationSpawningSystem.cs b/Content.Shared/Station/SharedStationSpawningSystem.cs index c57e727018..e4bf5802a5 100644 --- a/Content.Shared/Station/SharedStationSpawningSystem.cs +++ b/Content.Shared/Station/SharedStationSpawningSystem.cs @@ -97,14 +97,9 @@ public abstract class SharedStationSpawningSystem : EntitySystem private void CP14EquipStartingActions(EntityUid entity, LoadoutPrototype loadout) { - foreach (var action in loadout.Actions) + foreach (var skill in loadout.Skills) { - _action.AddAction(entity, action); - } - - foreach (var tree in loadout.SkillTree) - { - _skill.TryAddExperience(entity, tree.Key, tree.Value); + _skill.TryAddSkill(entity, skill, free: true); } } diff --git a/Content.Shared/_CP14/BloodMoon/CP14BloodMoonCurseComponent.cs b/Content.Shared/_CP14/BloodMoon/CP14BloodMoonCurseComponent.cs new file mode 100644 index 0000000000..d91ab569bd --- /dev/null +++ b/Content.Shared/_CP14/BloodMoon/CP14BloodMoonCurseComponent.cs @@ -0,0 +1,27 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.BloodMoon; + + +[RegisterComponent, NetworkedComponent] +public sealed partial class CP14BloodMoonCurseComponent : Component +{ + [DataField] + public EntityUid? CurseRule; + + [DataField] + public EntProtoId CurseEffect = "CP14BloodMoonCurseEffect"; + + [DataField] + public EntityUid? SpawnedEffect; + + [DataField] + public TimeSpan EndStunDuration = TimeSpan.FromSeconds(60f); + + [DataField] + public EntProtoId Action = "CP14ActionSpellBloodlust"; + + [DataField] + public EntityUid? ActionEntity; +} diff --git a/Content.Shared/_CP14/DayCycle/CP14DayCycleComponent.cs b/Content.Shared/_CP14/DayCycle/CP14DayCycleComponent.cs new file mode 100644 index 0000000000..24e5d6f85c --- /dev/null +++ b/Content.Shared/_CP14/DayCycle/CP14DayCycleComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Shared._CP14.DayCycle; + + +[RegisterComponent] +public sealed partial class CP14DayCycleComponent : Component +{ + public float LastLightLevel = 0f; + + [DataField] + public float Threshold = 0.6f; +} diff --git a/Content.Shared/_CP14/DayCycle/CP14DayCycleSystem.cs b/Content.Shared/_CP14/DayCycle/CP14DayCycleSystem.cs new file mode 100644 index 0000000000..16d99abc9b --- /dev/null +++ b/Content.Shared/_CP14/DayCycle/CP14DayCycleSystem.cs @@ -0,0 +1,130 @@ +using Content.Shared.GameTicking; +using Content.Shared.Light.Components; +using Content.Shared.Storage.Components; +using Content.Shared.Weather; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Timing; + +namespace Content.Shared._CP14.DayCycle; + +/// +/// This is an add-on to the LightCycle system that helps you determine what time of day it is on the map +/// +public sealed class CP14DayCycleSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly SharedGameTicker _ticker = default!; + [Dependency] private readonly SharedMapSystem _maps = default!; + [Dependency] private readonly SharedWeatherSystem _weather = default!; + + private EntityQuery _mapGridQuery; + private EntityQuery _storageQuery; + + + public override void Initialize() + { + base.Initialize(); + + _mapGridQuery = GetEntityQuery(); + _storageQuery = GetEntityQuery(); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var lightCycle, out var dayCycle, out var map)) + { + var oldLightLevel = dayCycle.LastLightLevel; + var newLightLevel = GetLightLevel((uid, lightCycle)); + + // Going into darkness + if (oldLightLevel > newLightLevel) + { + if (oldLightLevel > dayCycle.Threshold) + { + if (newLightLevel < dayCycle.Threshold) + { + var ev = new CP14StartNightEvent(uid); + RaiseLocalEvent(ev); + } + } + } + + // Going into light + if (oldLightLevel < newLightLevel) + { + if (oldLightLevel < dayCycle.Threshold) + { + if (newLightLevel > dayCycle.Threshold) + { + var ev = new CP14StartDayEvent(uid); + RaiseLocalEvent(ev); + } + } + } + + dayCycle.LastLightLevel = newLightLevel; + } + } + + public float GetLightLevel(Entity map) + { + if (!Resolve(map.Owner, ref map.Comp, false)) + return 0; + + var time = (float)_timing.CurTime + .Add(map.Comp.Offset) + .Subtract(_ticker.RoundStartTimeSpan) + .Subtract(_metaData.GetPauseTime(map)) + .TotalSeconds; + + var normalizedTime = time % map.Comp.Duration.TotalSeconds; + var lightLevel = Math.Sin((normalizedTime / map.Comp.Duration.TotalSeconds) * MathF.PI); + return (float)lightLevel; + } + + /// + /// Checks to see if the specified entity is on the map where it's daytime. + /// + /// An entity being tested to see if it is in daylight + public bool UnderSunlight(EntityUid target) + { + if (_storageQuery.HasComp(target)) + return false; + + var xform = Transform(target); + + if (xform.MapUid is null || xform.GridUid is null) + return false; + + var day = GetLightLevel(xform.MapUid.Value) > 0.5f; + + var grid = xform.GridUid; + if (grid is null) + return day; + + if (!_mapGridQuery.TryComp(grid, out var gridComp)) + return day; + + if (!_weather.CanWeatherAffect(grid.Value, + gridComp, + _maps.GetTileRef(xform.GridUid.Value, gridComp, xform.Coordinates))) + return false; + + return day; + } +} + +public sealed class CP14StartNightEvent(EntityUid map) : EntityEventArgs +{ + public EntityUid Map = map; +} + +public sealed class CP14StartDayEvent(EntityUid map) : EntityEventArgs +{ + public EntityUid Map = map; +} diff --git a/Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs b/Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs deleted file mode 100644 index b2d038fc80..0000000000 --- a/Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Content.Shared.DoAfter; -using Robust.Shared.Map; -using Robust.Shared.Serialization; - -namespace Content.Shared._CP14.Decals; - -[Serializable, NetSerializable] -public sealed partial class CP14DecalCleanerDoAfterEvent : DoAfterEvent -{ - public NetCoordinates ClickLocation; - - public CP14DecalCleanerDoAfterEvent(NetCoordinates click) - { - ClickLocation = click; - } - - public override DoAfterEvent Clone() => this; -} diff --git a/Content.Shared/_CP14/Demiplane/Prototypes/CP14SpecialDemiplanePrototype.cs b/Content.Shared/_CP14/Demiplane/Prototypes/CP14SpecialDemiplanePrototype.cs index fb4a4fa702..a36a040d7f 100644 --- a/Content.Shared/_CP14/Demiplane/Prototypes/CP14SpecialDemiplanePrototype.cs +++ b/Content.Shared/_CP14/Demiplane/Prototypes/CP14SpecialDemiplanePrototype.cs @@ -29,5 +29,5 @@ public sealed partial class CP14SpecialDemiplanePrototype : IPrototype /// Modifiers that will be automatically added to the demiplane when it is generated. /// [DataField] - public List>? Modifiers = new(); + public List> Modifiers = new(); } diff --git a/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningItemComponent.cs b/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningItemComponent.cs deleted file mode 100644 index 918062e73e..0000000000 --- a/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningItemComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Content.Shared._CP14.MagicAttuning; - -/// -/// Reflects the fact that this subject can be focused on (Magical attune as a mechanic from DnD.) -/// -[RegisterComponent, Access(typeof(CP14SharedMagicAttuningSystem))] -public sealed partial class CP14MagicAttuningItemComponent : Component -{ - /// - /// how long it takes to focus on that object - /// - [DataField] - public TimeSpan FocusTime = TimeSpan.FromSeconds(5f); - - public Entity? Link = null; -} diff --git a/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningMindComponent.cs b/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningMindComponent.cs deleted file mode 100644 index a6e04797f0..0000000000 --- a/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningMindComponent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared._CP14.MagicAttuning; - -/// -/// A mind that can focus on objects -/// -[RegisterComponent, NetworkedComponent] -[Access(typeof(CP14SharedMagicAttuningSystem))] -public sealed partial class CP14MagicAttuningMindComponent : Component -{ - [DataField] - public int MaxAttuning = 3; - /// - /// The entities that this being is focused on - /// - [DataField] - public List AttunedTo = new(); - - /// - /// cheat: if added to an entity with MindContainer, automatically copied to the mind, removing it from the body. This is to make it easy to add the component to prototype creatures. - /// - [DataField] - public bool AutoCopyToMind = false; -} diff --git a/Content.Shared/_CP14/MagicAttuning/CP14SharedMagicAttuningSystem.cs b/Content.Shared/_CP14/MagicAttuning/CP14SharedMagicAttuningSystem.cs deleted file mode 100644 index 51e630a3e4..0000000000 --- a/Content.Shared/_CP14/MagicAttuning/CP14SharedMagicAttuningSystem.cs +++ /dev/null @@ -1,238 +0,0 @@ -using Content.Shared.DoAfter; -using Content.Shared.Mind; -using Content.Shared.Mind.Components; -using Content.Shared.Popups; -using Content.Shared.Verbs; -using Robust.Shared.Serialization; - -namespace Content.Shared._CP14.MagicAttuning; - -/// -/// This system controls the customization to magic items by the players. -/// -public sealed partial class CP14SharedMagicAttuningSystem : EntitySystem -{ - [Dependency] private readonly SharedMindSystem _mind = default!; - [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; - [Dependency] private readonly SharedPopupSystem _popup = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent>(OnInteractionVerb); - SubscribeLocalEvent(OnAttuneDoAfter); - SubscribeLocalEvent(OnMindAdded); - } - - private void OnMindAdded(Entity ent, ref MindAddedMessage args) - { - if (!ent.Comp.AutoCopyToMind) - return; - - if (HasComp(ent)) - return; - - if (!_mind.TryGetMind(ent, out var mindId, out var mind)) - return; - - if (!HasComp(mindId)) - { - var attuneMind = AddComp(mindId); - attuneMind.MaxAttuning = ent.Comp.MaxAttuning; - } - } - - public bool IsAttunedTo(EntityUid mind, EntityUid item) - { - if (!TryComp(item, out var attuningItem)) - return false; - - if (!TryComp(mind, out var attuningMind)) - return false; - - return attuningMind.AttunedTo.Contains(item); - } - - private void OnInteractionVerb(Entity attuningItem, ref GetVerbsEvent args) - { - if (!args.CanAccess || !args.CanInteract) - return; - - if (!_mind.TryGetMind(args.User, out var mindId, out var mind)) - return; - - if (!TryComp(mindId, out var attumingMind)) - return; - - var user = args.User; - if (attumingMind.AttunedTo.Contains(args.Target)) - { - args.Verbs.Add(new() - { - Act = () => - { - RemoveAttune((mindId, attumingMind), attuningItem); - }, - Text = Loc.GetString("cp14-magic-deattuning-verb-text"), - Message = Loc.GetString("cp14-magic-attuning-verb-message"), - }); - } - else - { - args.Verbs.Add(new() - { - Act = () => - { - TryStartAttune(user, attuningItem); - }, - Text = Loc.GetString("cp14-magic-attuning-verb-text"), - Message = Loc.GetString("cp14-magic-attuning-verb-message"), - }); - } - } - - public bool TryStartAttune(EntityUid user, Entity item) - { - if (!_mind.TryGetMind(user, out var mindId, out var mind)) - return false; - - if (!TryComp(mindId, out var attuningMind)) - return false; - - if (attuningMind.MaxAttuning <= 0) - return false; - - //if there's an overabundance of ties, we report that the oldest one is torn. - if (attuningMind.AttunedTo.Count >= attuningMind.MaxAttuning) - { - var oldestAttune = attuningMind.AttunedTo[0]; - _popup.PopupEntity(Loc.GetString("cp14-magic-attune-oldest-forgot", ("item", MetaData(oldestAttune).EntityName)), user, user); - } - - //we notify the current owner of the item that someone is cutting ties. - if (item.Comp.Link is not null && - item.Comp.Link.Value.Owner != mindId && - TryComp(item.Comp.Link.Value.Owner, out var ownerMind) && - ownerMind.OwnedEntity is not null) - { - _popup.PopupEntity(Loc.GetString("cp14-magic-attune-oldest-forgot", ("item", MetaData(item).EntityName)), ownerMind.OwnedEntity.Value, ownerMind.OwnedEntity.Value); - } - - var doAfterArgs = new DoAfterArgs(EntityManager, - user, - item.Comp.FocusTime, - new CP14MagicAttuneDoAfterEvent(), - mindId, - item) - { - BreakOnDamage = true, - BreakOnMove = true, - DistanceThreshold = 2f, - BlockDuplicate = true, - }; - - _doAfter.TryStartDoAfter(doAfterArgs); - return true; - } - - private void OnAttuneDoAfter(Entity ent, ref CP14MagicAttuneDoAfterEvent args) - { - if (args.Cancelled || args.Handled || args.Target is null) - return; - - if (ent.Comp.AttunedTo.Count >= ent.Comp.MaxAttuning) - { - var oldestAttune = ent.Comp.AttunedTo[0]; - RemoveAttune(ent, oldestAttune); - } - - AddAttune(ent, args.Target.Value); - } - - private void RemoveAttune(Entity attuningMind, EntityUid item) - { - if (!attuningMind.Comp.AttunedTo.Contains(item)) - return; - - attuningMind.Comp.AttunedTo.Remove(item); - - if (!TryComp(item, out var attuningItem)) - return; - - if (!TryComp(attuningMind, out var mind)) - return; - - attuningItem.Link = null; - - var ev = new RemovedAttuneFromMindEvent(attuningMind, mind.OwnedEntity, item); - RaiseLocalEvent(attuningMind, ev); - RaiseLocalEvent(item, ev); - - if (mind.OwnedEntity is not null) - { - _popup.PopupEntity(Loc.GetString("cp14-magic-attune-oldest-forgot-end", ("item", MetaData(item).EntityName)), mind.OwnedEntity.Value, mind.OwnedEntity.Value); - } - } - - private void AddAttune(Entity attuningMind, EntityUid item) - { - if (attuningMind.Comp.AttunedTo.Contains(item)) - return; - - if (!TryComp(item, out var attuningItem)) - return; - - if (!TryComp(attuningMind, out var mind)) - return; - - if (attuningItem.Link is not null) - RemoveAttune(attuningItem.Link.Value, item); - - attuningMind.Comp.AttunedTo.Add(item); - attuningItem.Link = attuningMind; - - - var ev = new AddedAttuneToMindEvent(attuningMind, mind.OwnedEntity, item); - RaiseLocalEvent(attuningMind, ev); - RaiseLocalEvent(item, ev); - } -} - -[Serializable, NetSerializable] -public sealed partial class CP14MagicAttuneDoAfterEvent : SimpleDoAfterEvent -{ -} - -/// -/// is evoked on both the item and the mind when a new connection between them appears. -/// -public sealed class AddedAttuneToMindEvent : EntityEventArgs -{ - public readonly EntityUid Mind; - public readonly EntityUid? User; - public readonly EntityUid Item; - - public AddedAttuneToMindEvent(EntityUid mind, EntityUid? user, EntityUid item) - { - Mind = mind; - User = user; - Item = item; - } -} -/// -/// is evoked on both the item and the mind when the connection is broken -/// -public sealed class RemovedAttuneFromMindEvent : EntityEventArgs -{ - public readonly EntityUid Mind; - public readonly EntityUid? User; - public readonly EntityUid Item; - - public RemovedAttuneFromMindEvent(EntityUid mind, EntityUid? user, EntityUid item) - { - Mind = mind; - User = user; - Item = item; - } -} diff --git a/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs b/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs index b9ae60492d..fd2c4717d2 100644 --- a/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs +++ b/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs @@ -58,6 +58,19 @@ public abstract class SharedCP14MagicEnergySystem : EntitySystem _ambient.SetAmbience(ent, args.Powered); } + private void UpdateMagicAlert(Entity ent) + { + if (ent.Comp.MagicAlert is null) + return; + + var level = ContentHelpers.RoundToLevels( + MathF.Max(0f, (float) ent.Comp.Energy), + (float) ent.Comp.MaxEnergy, + _alerts.GetMaxSeverity(ent.Comp.MagicAlert.Value)); + + _alerts.ShowAlert(ent, ent.Comp.MagicAlert.Value, (short) level); + } + public void ChangeEnergy(Entity ent, FixedPoint2 energy, out FixedPoint2 deltaEnergy, @@ -154,17 +167,14 @@ public abstract class SharedCP14MagicEnergySystem : EntitySystem ("color", color)); } - private void UpdateMagicAlert(Entity ent) + public void ChangeMaximumEnergy(Entity ent, FixedPoint2 energy) { - if (ent.Comp.MagicAlert is null) + if (!Resolve(ent, ref ent.Comp, false)) return; - var level = ContentHelpers.RoundToLevels( - MathF.Max(0f, (float) ent.Comp.Energy), - (float) ent.Comp.MaxEnergy, - _alerts.GetMaxSeverity(ent.Comp.MagicAlert.Value)); + ent.Comp.MaxEnergy += energy; - _alerts.ShowAlert(ent, ent.Comp.MagicAlert.Value, (short) level); + ChangeEnergy(ent, energy, out _, out _); } } diff --git a/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifyComponent.cs b/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifyComponent.cs index 26c325c8bb..565e98a347 100644 --- a/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifyComponent.cs +++ b/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifyComponent.cs @@ -15,4 +15,7 @@ public sealed partial class CP14MagicManacostModifyComponent : Component [DataField] public FixedPoint2 GlobalModifier = 1f; + + [DataField] + public bool Examinable = false; } diff --git a/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifySystem.cs b/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifySystem.cs index 7bd66fb5b7..648e359dfa 100644 --- a/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifySystem.cs +++ b/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifySystem.cs @@ -2,6 +2,7 @@ using Content.Shared._CP14.MagicRitual.Prototypes; using Content.Shared._CP14.MagicSpell.Events; using Content.Shared.Examine; +using Content.Shared.FixedPoint; using Content.Shared.Inventory; using Content.Shared.Verbs; using Robust.Shared.Prototypes; @@ -24,10 +25,10 @@ public sealed partial class CP14MagicManacostModifySystem : EntitySystem private void OnVerbExamine(Entity ent, ref GetVerbsEvent args) { - if (!args.CanInteract || !args.CanAccess) + if (!args.CanInteract || !args.CanAccess || !ent.Comp.Examinable) return; - var markup = GetMagicClothingExamine(ent.Comp); + var markup = GetManacostModifyMessage(ent.Comp.GlobalModifier, ent.Comp.Modifiers); _examine.AddDetailedExamineVerb( args, ent.Comp, @@ -37,21 +38,21 @@ public sealed partial class CP14MagicManacostModifySystem : EntitySystem Loc.GetString("cp14-magic-examinable-verb-message")); } - private FormattedMessage GetMagicClothingExamine(CP14MagicManacostModifyComponent comp) + public FormattedMessage GetManacostModifyMessage(FixedPoint2 global, Dictionary, FixedPoint2> modifiers) { var msg = new FormattedMessage(); msg.AddMarkupOrThrow(Loc.GetString("cp14-clothing-magic-examine")); - if (comp.GlobalModifier != 1) + if (global != 1) { msg.PushNewline(); - var plus = (float)comp.GlobalModifier > 1 ? "+" : ""; + var plus = (float)global > 1 ? "+" : ""; msg.AddMarkupOrThrow( - $"{Loc.GetString("cp14-clothing-magic-global")}: {plus}{MathF.Round((float)(comp.GlobalModifier - 1) * 100, MidpointRounding.AwayFromZero)}%"); + $"{Loc.GetString("cp14-clothing-magic-global")}: {plus}{MathF.Round((float)(global - 1) * 100, MidpointRounding.AwayFromZero)}%"); } - foreach (var modifier in comp.Modifiers) + foreach (var modifier in modifiers) { if (modifier.Value == 1) continue; diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointer.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointer.cs new file mode 100644 index 0000000000..ec1af34875 --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointer.cs @@ -0,0 +1,52 @@ +using Content.Shared.Whitelist; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellPointer : CP14SpellEffect +{ + [DataField(required: true)] + public EntProtoId PointerEntity; + + [DataField(required: true)] + public EntityWhitelist? Whitelist; + + [DataField] + public EntityWhitelist? Blacklist = null; + + [DataField(required: true)] + public float SearchRange = 30f; + + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (args.User is null) + return; + + var lookup = entManager.System(); + var whitelistSys = entManager.System(); + var transform = entManager.System(); + + var originPosition = transform.GetWorldPosition(args.User.Value); + var originEntPosition = transform.GetMoverCoordinates(args.User.Value); + + var entitiesInRange = lookup.GetEntitiesInRange(originEntPosition, SearchRange); + foreach (var ent in entitiesInRange) + { + if (ent.Owner == args.User.Value) + continue; + + if (!whitelistSys.CheckBoth(ent, Blacklist, Whitelist)) + continue; + + var targetPosition = transform.GetWorldPosition(ent.Comp); + + //Calculate the rotation + Angle angle = new(targetPosition - originPosition); + + var pointer = entManager.Spawn(PointerEntity, new MapCoordinates(originPosition, transform.GetMapId(originEntPosition))); + + transform.SetWorldRotation(pointer, angle + Angle.FromDegrees(90)); + } + } +} diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointerToAlive.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointerToAlive.cs new file mode 100644 index 0000000000..e8aec42e2f --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointerToAlive.cs @@ -0,0 +1,47 @@ +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellPointerToAlive : CP14SpellEffect +{ + [DataField(required: true)] + public EntProtoId PointerEntity; + + [DataField(required: true)] + public float SearchRange = 30f; + + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (args.User is null) + return; + + var lookup = entManager.System(); + var mobStateSys = entManager.System(); + var transform = entManager.System(); + + var originPosition = transform.GetWorldPosition(args.User.Value); + var originEntPosition = transform.GetMoverCoordinates(args.User.Value); + + var entitiesInRange = lookup.GetEntitiesInRange(originEntPosition, SearchRange); + foreach (var ent in entitiesInRange) + { + if (ent.Owner == args.User.Value) + continue; + + if (mobStateSys.IsDead(ent)) + continue; + + var targetPosition = transform.GetWorldPosition(ent); + + //Calculate the rotation + Angle angle = new(targetPosition - originPosition); + + var pointer = entManager.Spawn(PointerEntity, new MapCoordinates(originPosition, transform.GetMapId(originEntPosition))); + + transform.SetWorldRotation(pointer, angle + Angle.FromDegrees(90)); + } + } +} diff --git a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.Access.cs b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.Access.cs index 062811a248..85c859cfc2 100644 --- a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.Access.cs +++ b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.Access.cs @@ -1,7 +1,5 @@ -using Content.Shared._CP14.MagicAttuning; using Content.Shared._CP14.MagicSpellStorage.Components; using Content.Shared.Clothing; -using Content.Shared.Clothing.Components; using Content.Shared.Hands; namespace Content.Shared._CP14.MagicSpellStorage; @@ -11,9 +9,7 @@ public sealed partial class CP14SpellStorageSystem private void InitializeAccess() { SubscribeLocalEvent(OnEquippedHand); - SubscribeLocalEvent(OnHandAddedAttune); - SubscribeLocalEvent(OnClothingAddedAttune); SubscribeLocalEvent(OnClothingEquipped); SubscribeLocalEvent(OnClothingUnequipped); } @@ -26,40 +22,6 @@ public sealed partial class CP14SpellStorageSystem TryGrantAccess((ent, spellStorage), args.User); } - private void OnHandAddedAttune(Entity ent, ref AddedAttuneToMindEvent args) - { - if (!TryComp(ent, out var spellStorage)) - return; - - if (args.User is null) - return; - - if (!_hands.IsHolding(args.User.Value, ent)) - return; - - TryGrantAccess((ent, spellStorage), args.User.Value); - } - - private void OnClothingAddedAttune(Entity ent, ref AddedAttuneToMindEvent args) - { - if (!ent.Comp.Wearing) - return; - - if (!TryComp(ent, out var spellStorage)) - return; - - if (args.User is null) - return; - - if (!TryComp(ent, out var clothing)) - return; - - if (Transform(ent).ParentUid != args.User) - return; - - TryGrantAccess((ent, spellStorage), args.User.Value); - } - private void OnClothingEquipped(Entity ent, ref ClothingGotEquippedEvent args) { ent.Comp.Wearing = true; diff --git a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs index 2aa2ae3b1f..0ec0595de2 100644 --- a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs +++ b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs @@ -1,4 +1,3 @@ -using Content.Shared._CP14.MagicAttuning; using Content.Shared._CP14.MagicSpell.Components; using Content.Shared._CP14.MagicSpell.Events; using Content.Shared._CP14.MagicSpellStorage.Components; @@ -18,7 +17,6 @@ public sealed partial class CP14SpellStorageSystem : EntitySystem [Dependency] private readonly ActionContainerSystem _actionContainer = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedMindSystem _mind = default!; - [Dependency] private readonly CP14SharedMagicAttuningSystem _attuning = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly DamageableSystem _damageable = default!; @@ -31,7 +29,6 @@ public sealed partial class CP14SpellStorageSystem : EntitySystem SubscribeLocalEvent(OnMagicStorageShutdown); SubscribeLocalEvent(OnSpellUsed); - SubscribeLocalEvent(OnRemovedAttune); } private void OnSpellUsed(Entity ent, ref CP14SpellFromSpellStorageUsedEvent args) @@ -81,21 +78,7 @@ public sealed partial class CP14SpellStorageSystem : EntitySystem if (mind.OwnedEntity is null) return false; - if (TryComp(storage, out var reqAttune)) - { - if (!_attuning.IsAttunedTo(mindId, storage)) - return false; - } - _actions.GrantActions(user, storage.Comp.SpellEntities, storage); return true; } - - private void OnRemovedAttune(Entity ent, ref RemovedAttuneFromMindEvent args) - { - if (args.User is null) - return; - - _actions.RemoveProvidedActions(args.User.Value, ent); - } } diff --git a/Content.Shared/_CP14/MagicSpellStorage/Components/CP14SpellStorageRequireAttuneComponent.cs b/Content.Shared/_CP14/MagicSpellStorage/Components/CP14SpellStorageRequireAttuneComponent.cs deleted file mode 100644 index b3af633fae..0000000000 --- a/Content.Shared/_CP14/MagicSpellStorage/Components/CP14SpellStorageRequireAttuneComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Content.Shared._CP14.MagicSpellStorage.Components; - -/// -/// The ability to access spellcasting is limited by the attuning requirement -/// -[RegisterComponent, Access(typeof(CP14SpellStorageSystem))] -public sealed partial class CP14SpellStorageRequireAttuneComponent : Component -{ -} diff --git a/Content.Shared/_CP14/ResearchTable/CP14ResearchTableComponent.cs b/Content.Shared/_CP14/ResearchTable/CP14ResearchTableComponent.cs new file mode 100644 index 0000000000..6cb4016a13 --- /dev/null +++ b/Content.Shared/_CP14/ResearchTable/CP14ResearchTableComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared._CP14.ResearchTable; + +[RegisterComponent, NetworkedComponent] +public sealed partial class CP14ResearchTableComponent : Component +{ + [DataField] + public float ResearchSpeed = 3f; + + [DataField] + public float ResearchRadius = 0.5f; + + [DataField] + public SoundSpecifier ResearchSound = new SoundCollectionSpecifier("PaperScribbles"); +} diff --git a/Content.Shared/_CP14/ResearchTable/CP14SharedResearchSystem.cs b/Content.Shared/_CP14/ResearchTable/CP14SharedResearchSystem.cs new file mode 100644 index 0000000000..04c032a6ea --- /dev/null +++ b/Content.Shared/_CP14/ResearchTable/CP14SharedResearchSystem.cs @@ -0,0 +1,19 @@ +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared.DoAfter; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared._CP14.ResearchTable; + +public abstract class CP14SharedResearchSystem : EntitySystem +{ +} + +[Serializable, NetSerializable] +public sealed partial class CP14ResearchDoAfterEvent : DoAfterEvent +{ + [DataField(required: true)] + public ProtoId Skill = default!; + + public override DoAfterEvent Clone() => this; +} diff --git a/Content.Shared/_CP14/RoundStatistic/CP14RoundStatTrackerPrototype.cs b/Content.Shared/_CP14/RoundStatistic/CP14RoundStatTrackerPrototype.cs deleted file mode 100644 index 9da3be1582..0000000000 --- a/Content.Shared/_CP14/RoundStatistic/CP14RoundStatTrackerPrototype.cs +++ /dev/null @@ -1,12 +0,0 @@ -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; -} diff --git a/Content.Shared/_CP14/Skill/CP14LearnSkillsSpecial.cs b/Content.Shared/_CP14/Skill/CP14LearnSkillsSpecial.cs new file mode 100644 index 0000000000..42ebf9121e --- /dev/null +++ b/Content.Shared/_CP14/Skill/CP14LearnSkillsSpecial.cs @@ -0,0 +1,22 @@ +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared.Roles; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill; + +public sealed partial class CP14LearnSkillsSpecial : JobSpecial +{ + [DataField] + public HashSet> Skills { get; private set; } = new(); + + public override void AfterEquip(EntityUid mob) + { + var entMan = IoCManager.Resolve(); + var skillSys = entMan.System(); + + foreach (var skill in Skills) + { + skillSys.TryAddSkill(mob, skill, free: true); + } + } +} diff --git a/Content.Shared/_CP14/Skill/CP14ResearchTableUI.cs b/Content.Shared/_CP14/Skill/CP14ResearchTableUI.cs new file mode 100644 index 0000000000..e3f41a59bc --- /dev/null +++ b/Content.Shared/_CP14/Skill/CP14ResearchTableUI.cs @@ -0,0 +1,61 @@ +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared._CP14.Skill; + +[Serializable, NetSerializable] +public enum CP14ResearchTableUiKey +{ + Key, +} + +[Serializable, NetSerializable] +public sealed class CP14ResearchMessage(ProtoId skill) : BoundUserInterfaceMessage +{ + public readonly ProtoId Skill = skill; +} + + +[Serializable, NetSerializable] +public sealed class CP14ResearchTableUiState(List skills) : BoundUserInterfaceState +{ + public readonly List Skills = skills; +} + +[Serializable, NetSerializable] +public readonly struct CP14ResearchUiEntry(ProtoId protoId, bool craftable) : IEquatable +{ + public readonly ProtoId ProtoId = protoId; + public readonly bool Craftable = craftable; + + public int CompareTo(CP14ResearchUiEntry other) + { + return Craftable.CompareTo(other.Craftable); + } + + public override bool Equals(object? obj) + { + return obj is CP14ResearchUiEntry other && Equals(other); + } + + public bool Equals(CP14ResearchUiEntry other) + { + return ProtoId.Id == other.ProtoId.Id; + } + + public override int GetHashCode() + { + return HashCode.Combine(ProtoId, Craftable); + } + + public override string ToString() + { + return $"{ProtoId} ({Craftable})"; + } + + public static int CompareTo(CP14ResearchUiEntry left, CP14ResearchUiEntry right) + { + return right.CompareTo(left); + } +} diff --git a/Content.Shared/_CP14/Skill/CP14SharedSkillSystem.cs b/Content.Shared/_CP14/Skill/CP14SharedSkillSystem.cs index 6f5af04582..cbe8cb04d9 100644 --- a/Content.Shared/_CP14/Skill/CP14SharedSkillSystem.cs +++ b/Content.Shared/_CP14/Skill/CP14SharedSkillSystem.cs @@ -1,3 +1,5 @@ +using System.Linq; +using System.Text; using Content.Shared._CP14.Skill.Components; using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.FixedPoint; @@ -7,12 +9,39 @@ namespace Content.Shared._CP14.Skill; public abstract partial class CP14SharedSkillSystem : EntitySystem { + private EntityQuery _skillStorageQuery = default!; public override void Initialize() { base.Initialize(); + _skillStorageQuery = GetEntityQuery(); + + SubscribeLocalEvent(OnMapInit); + InitializeAdmin(); + InitializeChecks(); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + //If at initialization we have any skill records, we automatically give them to this entity + + var free = ent.Comp.FreeLearnedSkills.ToList(); + var learned = ent.Comp.LearnedSkills.ToList(); + + ent.Comp.FreeLearnedSkills.Clear(); + ent.Comp.LearnedSkills.Clear(); + + foreach (var skill in free) + { + TryAddSkill(ent.Owner, skill, ent.Comp, true); + } + + foreach (var skill in learned) + { + TryAddSkill(ent.Owner, skill, ent.Comp); + } } /// @@ -20,7 +49,8 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem /// public bool TryAddSkill(EntityUid target, ProtoId skill, - CP14SkillStorageComponent? component = null) + CP14SkillStorageComponent? component = null, + bool free = false) { if (!Resolve(target, ref component, false)) return false; @@ -31,15 +61,22 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!_proto.TryIndex(skill, out var indexedSkill)) return false; - if (indexedSkill.Effect is not null) + foreach (var effect in indexedSkill.Effects) { - indexedSkill.Effect.AddSkill(EntityManager, target); + effect.AddSkill(EntityManager, target); } - component.SkillsSumExperience += indexedSkill.LearnCost; + if (free) + component.FreeLearnedSkills.Add(skill); + else + component.SkillsSumExperience += indexedSkill.LearnCost; component.LearnedSkills.Add(skill); Dirty(target, component); + + var learnEv = new CP14SkillLearnedEvent(skill, target); + RaiseLocalEvent(target, ref learnEv); + return true; } @@ -59,12 +96,13 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!_proto.TryIndex(skill, out var indexedSkill)) return false; - if (indexedSkill.Effect is not null) + foreach (var effect in indexedSkill.Effects) { - indexedSkill.Effect.RemoveSkill(EntityManager, target); + effect.RemoveSkill(EntityManager, target); } - component.SkillsSumExperience -= indexedSkill.LearnCost; + if (!component.FreeLearnedSkills.Remove(skill)) + component.SkillsSumExperience -= indexedSkill.LearnCost; Dirty(target, component); return true; @@ -83,53 +121,14 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem return component.LearnedSkills.Contains(skill); } - /// - /// Adds experience to the specified skill tree for the player. - /// - public bool TryAddExperience(EntityUid target, - ProtoId tree, - FixedPoint2 exp, + public bool HaveFreeSkill(EntityUid target, + ProtoId skill, CP14SkillStorageComponent? component = null) { if (!Resolve(target, ref component, false)) return false; - if (component.Progress.TryGetValue(tree, out var currentExp)) - { - // If the tree already exists, add experience to it - component.Progress[tree] = currentExp + exp; - } - else - { - // If the tree doesn't exist, initialize it with the experience - component.Progress[tree] = exp; - } - - Dirty(target, component); - return true; - } - - /// - /// Removes experience from the specified skill tree for the player. - /// - public bool TryRemoveExperience(EntityUid target, - ProtoId tree, - FixedPoint2 exp, - CP14SkillStorageComponent? component = null) - { - if (!Resolve(target, ref component, false)) - return false; - - if (!component.Progress.TryGetValue(tree, out var currentExp)) - return false; - - if (currentExp < exp) - return false; - - component.Progress[tree] = FixedPoint2.Max(0, component.Progress[tree] - exp); - - Dirty(target, component); - return true; + return component.FreeLearnedSkills.Contains(skill); } /// @@ -158,12 +157,6 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!AllowedToLearn(target, skill, component)) return false; - //Experience check - if (!component.Progress.TryGetValue(skill.Tree, out var currentExp)) - return false; - if (currentExp < skill.LearnCost) - return false; - return true; } @@ -182,13 +175,13 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem return false; //Check max cap - if (component.SkillsSumExperience + skill.LearnCost >= component.ExperienceMaxCap) + if (component.SkillsSumExperience + skill.LearnCost > component.ExperienceMaxCap) return false; //Restrictions check foreach (var req in skill.Restrictions) { - if (!req.Check(EntityManager, target)) + if (!req.Check(EntityManager, target, skill)) return false; } @@ -205,15 +198,9 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!Resolve(target, ref component, false)) return false; - if (!_proto.TryIndex(skill, out var indexedSkill)) - return false; - if (!CanLearnSkill(target, skill, component)) return false; - if (!TryRemoveExperience(target, indexedSkill.Tree, indexedSkill.LearnCost, component)) - return false; - if (!TryAddSkill(target, skill, component)) return false; @@ -228,11 +215,11 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!_proto.TryIndex(skill, out var indexedSkill)) return string.Empty; - if (indexedSkill.Name != null) + if (indexedSkill.Name is not null) return Loc.GetString(indexedSkill.Name); - if (indexedSkill.Effect != null) - return indexedSkill.Effect.GetName(EntityManager, _proto) ?? string.Empty; + if (indexedSkill.Effects.Count > 0) + return indexedSkill.Effects.First().GetName(EntityManager, _proto) ?? string.Empty; return string.Empty; } @@ -245,12 +232,19 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!_proto.TryIndex(skill, out var indexedSkill)) return string.Empty; - if (indexedSkill.Desc != null) + if (indexedSkill.Desc is not null) return Loc.GetString(indexedSkill.Desc); - if (indexedSkill.Effect != null) - return indexedSkill.Effect.GetDescription(EntityManager, _proto) ?? string.Empty; + var sb = new StringBuilder(); - return string.Empty; + foreach (var effect in indexedSkill.Effects) + { + sb.Append(effect.GetDescription(EntityManager, _proto, skill) + "\n"); + } + + return sb.ToString(); } } + +[ByRefEvent] +public record struct CP14SkillLearnedEvent(ProtoId Skill, EntityUid User); diff --git a/Content.Shared/_CP14/Skill/CP14SkillSystem.Admin.cs b/Content.Shared/_CP14/Skill/CP14SkillSystem.Admin.cs index 3b0813371d..dd49da8b2b 100644 --- a/Content.Shared/_CP14/Skill/CP14SkillSystem.Admin.cs +++ b/Content.Shared/_CP14/Skill/CP14SkillSystem.Admin.cs @@ -50,27 +50,6 @@ public abstract partial class CP14SharedSkillSystem var target = args.Target; - //Add skill points - foreach (var tree in _allTrees) - { - FixedPoint2 current = 0; - ent.Comp.Progress.TryGetValue(tree, out current); - - var name = Loc.GetString(tree.Name); - args.Verbs.Add(new Verb - { - Text = name, - Message = $"{name} EXP {current} -> {current + 1}", - Category = VerbCategory.CP14AdminSkillAdd, - Icon = tree.Icon, - Act = () => - { - TryAddExperience(target, tree.ID, 1); - }, - Priority = 2, - }); - } - //Add Skill foreach (var skill in _allSkills) { @@ -91,30 +70,6 @@ public abstract partial class CP14SharedSkillSystem }); } - //Remove skill points - foreach (var tree in _allTrees) - { - FixedPoint2 current = 0; - ent.Comp.Progress.TryGetValue(tree, out current); - - if (current < 1) - continue; - - var name = Loc.GetString(tree.Name); - args.Verbs.Add(new Verb - { - Text = name, - Message = $"{name} EXP {current} -> {current - 1}", - Category = VerbCategory.CP14AdminSkillRemove, - Icon = tree.Icon, - Act = () => - { - TryRemoveExperience(target, tree.ID, 1); - }, - Priority = 2, - }); - } - //Remove Skill foreach (var skill in ent.Comp.LearnedSkills) { diff --git a/Content.Shared/_CP14/Skill/CP14SkillSystem.Checks.cs b/Content.Shared/_CP14/Skill/CP14SkillSystem.Checks.cs new file mode 100644 index 0000000000..dbfa66e89e --- /dev/null +++ b/Content.Shared/_CP14/Skill/CP14SkillSystem.Checks.cs @@ -0,0 +1,75 @@ +using System.Text; +using Content.Shared._CP14.Skill.Components; +using Content.Shared.Damage; +using Content.Shared.Examine; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Popups; +using Content.Shared.Throwing; +using Content.Shared.Weapons.Melee.Events; +using Robust.Shared.Network; +using Robust.Shared.Random; + +namespace Content.Shared._CP14.Skill; + +public abstract partial class CP14SharedSkillSystem +{ + [Dependency] private readonly ThrowingSystem _throwing = default!; + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedHandsSystem _hands = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + private void InitializeChecks() + { + SubscribeLocalEvent(OnMeleeAttack); + SubscribeLocalEvent(OnExamined); + } + + private void OnExamined(Entity ent, ref ExaminedEvent args) + { + var sb = new StringBuilder(); + sb.Append(Loc.GetString("cp14-skill-issue-title") + "\n"); + + foreach (var skill in ent.Comp.Skills) + { + if (!_proto.TryIndex(skill, out var indexedSkill)) + continue; + + if (indexedSkill.Name is null) + continue; + + var color = HaveSkill(args.Examiner, skill) ? Color.LimeGreen.ToHex() : Color.Red.ToHex(); + sb.Append($"[color={color}] - {Loc.GetString(indexedSkill.Name)} [/color]\n"); + } + args.PushMarkup(sb.ToString()); + } + + private void OnMeleeAttack(Entity ent, ref MeleeHitEvent args) + { + if (!_skillStorageQuery.TryComp(args.User, out var skillStorage)) + return; + + var passed = true; + foreach (var reqSkill in ent.Comp.Skills) + { + if (!skillStorage.LearnedSkills.Contains(reqSkill)) + { + passed = false; + break; + } + } + + args.BonusDamage *= ent.Comp.DamageMultiplier; + + if (_net.IsClient) + return; + + if (passed || !_random.Prob(ent.Comp.DropProbability)) + return; + + _hands.TryDrop(args.User, ent); + _throwing.TryThrow(ent, _random.NextAngle().ToWorldVec() * 2, 2f, args.User); + _damageable.TryChangeDamage(args.User, args.BaseDamage); + _popup.PopupEntity(Loc.GetString("cp14-skill-issue"), args.User, args.User, PopupType.Medium); + } +} diff --git a/Content.Shared/_CP14/Skill/CP14SkillSystem.Learning.cs b/Content.Shared/_CP14/Skill/CP14SkillSystem.Learning.cs deleted file mode 100644 index 68bf7d4970..0000000000 --- a/Content.Shared/_CP14/Skill/CP14SkillSystem.Learning.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Content.Shared._CP14.Skill.Components; -using Content.Shared._CP14.Skill.Prototypes; -using Content.Shared.Bed.Sleep; -using Content.Shared.Examine; -using Content.Shared.FixedPoint; -using Content.Shared.Mobs.Components; -using Content.Shared.Mobs.Systems; -using Robust.Shared.Map; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.Skill; - -public abstract partial class CP14SharedSkillSystem -{ - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly ExamineSystemShared _examine = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; - - public void GiveExperienceInRadius(EntityCoordinates position, ProtoId tree, FixedPoint2 points, float radius = 5) - { - var entities = _lookup.GetEntitiesInRange(position, radius, LookupFlags.Uncontained); - - foreach (var ent in entities) - { - //Cant learn if the position is not in range or obstructed - if (!_examine.InRangeUnOccluded(ent, position, radius)) - continue; - - //Cant learn when dead - if (TryComp(ent, out var mobState) && !_mobState.IsAlive(ent, mobState)) - continue; - - //Cant learn if the entity is sleeping - if (HasComp(ent)) - continue; - - TryAddExperience(ent, tree, points); - } - } - - public void GiveExperienceInRadius(EntityUid uid, - ProtoId tree, - FixedPoint2 points, - float radius = 5) - { - GiveExperienceInRadius(Transform(uid).Coordinates, tree, points, radius); - } -} diff --git a/Content.Shared/_CP14/Skill/Components/CP14MeleeWeaponSkillRequiredComponent.cs b/Content.Shared/_CP14/Skill/Components/CP14MeleeWeaponSkillRequiredComponent.cs new file mode 100644 index 0000000000..3f4557dc79 --- /dev/null +++ b/Content.Shared/_CP14/Skill/Components/CP14MeleeWeaponSkillRequiredComponent.cs @@ -0,0 +1,31 @@ +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Components; + +/// +/// Component that stores the skills learned by a player and their progress in the skill trees. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +[Access(typeof(CP14SharedSkillSystem))] +public sealed partial class CP14MeleeWeaponSkillRequiredComponent : Component +{ + /// + /// What skills does a character have to have to use this weapon? + /// + [DataField, AutoNetworkedField] + public HashSet> Skills = new(); + + /// + /// The chances of dropping a weapon from your hands if the required skills are not learned by the character. + /// + [DataField, AutoNetworkedField] + public float DropProbability = 0.5f; + + /// + /// Reduces outgoing damage if the required skills are not learned by the character + /// + [DataField, AutoNetworkedField] + public float DamageMultiplier = 0.5f; +} diff --git a/Content.Shared/_CP14/Skill/Components/CP14SkillStorageComponent.cs b/Content.Shared/_CP14/Skill/Components/CP14SkillStorageComponent.cs index cd0f783885..bfb11e4776 100644 --- a/Content.Shared/_CP14/Skill/Components/CP14SkillStorageComponent.cs +++ b/Content.Shared/_CP14/Skill/Components/CP14SkillStorageComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.ResearchTable; using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.FixedPoint; using Robust.Shared.GameStates; @@ -10,29 +11,36 @@ namespace Content.Shared._CP14.Skill.Components; /// Component that stores the skills learned by a player and their progress in the skill trees. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] -[Access(typeof(CP14SharedSkillSystem))] +[Access(typeof(CP14SharedSkillSystem), typeof(CP14SharedResearchSystem))] public sealed partial class CP14SkillStorageComponent : Component { + /// + /// Tracks skills that are learned without spending memory points. + /// the skills that are here are DUBLED in the LearnedSkills, + /// + [DataField, AutoNetworkedField] + public List> FreeLearnedSkills = new(); + [DataField, AutoNetworkedField] public List> LearnedSkills = new(); + /// + /// skills that the player has learned on the research table, but has not yet learned in the skill tree. + /// + [DataField, AutoNetworkedField] + public List> ResearchedSkills = new(); + /// /// The number of experience points spent on skills. Technically this could be calculated via LearnedSkills, but this is a cached value for optimization. /// [DataField, AutoNetworkedField] public FixedPoint2 SkillsSumExperience = 0; - /// - /// Keeps track of progress points in the knowledge areas available to the player. Important: The absence of a specific area means that the player CANNOT progress in that area. - /// - [DataField, AutoNetworkedField] - public Dictionary, FixedPoint2> Progress = new(); - /// /// The maximum ceiling of experience points that can be spent on learning skills. Not tied to a category. /// [DataField, AutoNetworkedField] - public FixedPoint2 ExperienceMaxCap = 10; + public FixedPoint2 ExperienceMaxCap = 5; } /// diff --git a/Content.Shared/_CP14/Skill/Effects/AddAction.cs b/Content.Shared/_CP14/Skill/Effects/AddAction.cs index 1272ff51a4..76aaec59cb 100644 --- a/Content.Shared/_CP14/Skill/Effects/AddAction.cs +++ b/Content.Shared/_CP14/Skill/Effects/AddAction.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.Actions; using Robust.Shared.Prototypes; @@ -39,7 +40,7 @@ public sealed partial class AddAction : CP14SkillEffect return !protoManager.TryIndex(Action, out var indexedAction) ? string.Empty : indexedAction.Name; } - public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager) + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) { return !protoManager.TryIndex(Action, out var indexedAction) ? string.Empty : indexedAction.Description; } diff --git a/Content.Shared/_CP14/Skill/Effects/AddComponents.cs b/Content.Shared/_CP14/Skill/Effects/AddComponents.cs new file mode 100644 index 0000000000..851a5dda7d --- /dev/null +++ b/Content.Shared/_CP14/Skill/Effects/AddComponents.cs @@ -0,0 +1,31 @@ + +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Effects; + +public sealed partial class AddComponents : CP14SkillEffect +{ + [DataField(required: true)] + public ComponentRegistry Components = new(); + + public override void AddSkill(IEntityManager entManager, EntityUid target) + { + entManager.AddComponents(target, Components); + } + + public override void RemoveSkill(IEntityManager entManager, EntityUid target) + { + entManager.RemoveComponents(target, Components); + } + + public override string? GetName(IEntityManager entMagager, IPrototypeManager protoManager) + { + return null; + } + + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) + { + return null; + } +} diff --git a/Content.Shared/_CP14/Skill/Effects/AddMaxMana.cs b/Content.Shared/_CP14/Skill/Effects/AddMaxMana.cs new file mode 100644 index 0000000000..7fc05e438c --- /dev/null +++ b/Content.Shared/_CP14/Skill/Effects/AddMaxMana.cs @@ -0,0 +1,33 @@ +using Content.Shared._CP14.MagicEnergy; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared.FixedPoint; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Effects; + +public sealed partial class AddManaMax : CP14SkillEffect +{ + [DataField] + public FixedPoint2 AdditionalMana = 0; + public override void AddSkill(IEntityManager entManager, EntityUid target) + { + var magicSystem = entManager.System(); + magicSystem.ChangeMaximumEnergy(target, AdditionalMana); + } + + public override void RemoveSkill(IEntityManager entManager, EntityUid target) + { + var magicSystem = entManager.System(); + magicSystem.ChangeMaximumEnergy(target, -AdditionalMana); + } + + public override string? GetName(IEntityManager entMagager, IPrototypeManager protoManager) + { + return null; + } + + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) + { + return Loc.GetString("cp14-skill-desc-add-mana", ("mana", AdditionalMana.ToString())); + } +} diff --git a/Content.Shared/_CP14/Skill/Effects/CP14SkillEffect.cs b/Content.Shared/_CP14/Skill/Effects/CP14SkillEffect.cs index 63e4a617c6..0bcf0719ff 100644 --- a/Content.Shared/_CP14/Skill/Effects/CP14SkillEffect.cs +++ b/Content.Shared/_CP14/Skill/Effects/CP14SkillEffect.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using JetBrains.Annotations; using Robust.Shared.Prototypes; @@ -13,5 +14,5 @@ public abstract partial class CP14SkillEffect public abstract string? GetName(IEntityManager entMagager, IPrototypeManager protoManager); - public abstract string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager); + public abstract string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill); } diff --git a/Content.Shared/_CP14/Skill/Effects/ModifyManacost.cs b/Content.Shared/_CP14/Skill/Effects/ModifyManacost.cs new file mode 100644 index 0000000000..dc684d1ae0 --- /dev/null +++ b/Content.Shared/_CP14/Skill/Effects/ModifyManacost.cs @@ -0,0 +1,78 @@ +using System.Text; +using Content.Shared._CP14.MagicManacostModify; +using Content.Shared._CP14.MagicRitual.Prototypes; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared.FixedPoint; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Effects; + +public sealed partial class ModifyManacost : CP14SkillEffect +{ + [DataField] + public FixedPoint2 Global = 0f; + + [DataField] + public Dictionary, FixedPoint2> Modifiers = new(); + + public override void AddSkill(IEntityManager entManager, EntityUid target) + { + entManager.EnsureComponent(target, out var magicEffectManaCost); + + foreach (var (magicType, modifier) in Modifiers) + { + if (!magicEffectManaCost.Modifiers.ContainsKey(magicType)) + magicEffectManaCost.Modifiers.Add(magicType, 1 + modifier); + else + magicEffectManaCost.Modifiers[magicType] += modifier; + } + magicEffectManaCost.GlobalModifier += Global; + } + + public override void RemoveSkill(IEntityManager entManager, EntityUid target) + { + entManager.EnsureComponent(target, out var magicEffectManaCost); + + foreach (var (magicType, modifier) in Modifiers) + { + if (!magicEffectManaCost.Modifiers.ContainsKey(magicType)) + continue; + + magicEffectManaCost.Modifiers[magicType] -= modifier; + if (magicEffectManaCost.Modifiers[magicType] <= 0) + magicEffectManaCost.Modifiers.Remove(magicType); + } + magicEffectManaCost.GlobalModifier -= Global; + } + + public override string? GetName(IEntityManager entMagager, IPrototypeManager protoManager) + { + return null; + } + + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) + { + var sb = new StringBuilder(); + sb.Append(Loc.GetString("cp14-clothing-magic-examine")+"\n"); + + if (Global != 0) + { + + var plus = (float)Global > 0 ? "+" : ""; + sb.Append( + $"{Loc.GetString("cp14-clothing-magic-global")}: {plus}{MathF.Round((float)Global * 100, MidpointRounding.AwayFromZero)}%\n"); + } + + foreach (var modifier in Modifiers) + { + if (modifier.Value == 0) + continue; + + var plus = modifier.Value > 1 ? "+" : ""; + var indexedType = protoManager.Index(modifier.Key); + sb.Append($"- [color={indexedType.Color.ToHex()}]{Loc.GetString(indexedType.Name)}[/color]: {plus}{modifier.Value*100}%"); + } + + return sb.ToString(); + } +} diff --git a/Content.Shared/_CP14/Skill/Effects/ReplaceAction.cs b/Content.Shared/_CP14/Skill/Effects/ReplaceAction.cs index 75cc01192b..5b6b1253e6 100644 --- a/Content.Shared/_CP14/Skill/Effects/ReplaceAction.cs +++ b/Content.Shared/_CP14/Skill/Effects/ReplaceAction.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.Actions; using Robust.Shared.Prototypes; @@ -62,7 +63,7 @@ public sealed partial class ReplaceAction : CP14SkillEffect return !protoManager.TryIndex(NewAction, out var indexedAction) ? string.Empty : indexedAction.Name; } - public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager) + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) { return !protoManager.TryIndex(NewAction, out var indexedAction) ? string.Empty : indexedAction.Description; } diff --git a/Content.Shared/_CP14/Skill/Effects/UnlockRecipes.cs b/Content.Shared/_CP14/Skill/Effects/UnlockRecipes.cs new file mode 100644 index 0000000000..0d77836b49 --- /dev/null +++ b/Content.Shared/_CP14/Skill/Effects/UnlockRecipes.cs @@ -0,0 +1,65 @@ +using System.Text; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared._CP14.Workbench.Prototypes; +using Content.Shared._CP14.Workbench.Requirements; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Effects; + +/// +/// This effect only exists for parsing the description. +/// +public sealed partial class UnlockRecipes : CP14SkillEffect +{ + public override void AddSkill(IEntityManager entManager, EntityUid target) + { + // + } + + public override void RemoveSkill(IEntityManager entManager, EntityUid target) + { + // + } + + public override string? GetName(IEntityManager entMagager, IPrototypeManager protoManager) + { + return null; + } + + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) + { + var allRecipes = protoManager.EnumeratePrototypes(); + + var sb = new StringBuilder(); + sb.Append(Loc.GetString("cp14-skill-desc-unlock-recipes") + "\n"); + + var affectedRecipes = new List(); + foreach (var recipe in allRecipes) + { + foreach (var req in recipe.Requirements) + { + switch (req) + { + case SkillRequired skillReq: + foreach (var skillReqSkill in skillReq.Skills) + { + if (skillReqSkill == skill) + { + affectedRecipes.Add(recipe); + break; + } + } + break; + } + } + } + foreach (var recipe in affectedRecipes) + { + if (!protoManager.TryIndex(recipe.Result, out var indexedResult)) + continue; + sb.Append("- " + indexedResult.Name + "\n"); + } + + return sb.ToString(); + } +} diff --git a/Content.Shared/_CP14/Skill/Prototypes/CP14SkillPrototype.cs b/Content.Shared/_CP14/Skill/Prototypes/CP14SkillPrototype.cs index e7903889f3..19290a36c0 100644 --- a/Content.Shared/_CP14/Skill/Prototypes/CP14SkillPrototype.cs +++ b/Content.Shared/_CP14/Skill/Prototypes/CP14SkillPrototype.cs @@ -18,13 +18,13 @@ public sealed partial class CP14SkillPrototype : IPrototype /// Skill Title. If you leave null, the name will try to generate from Effect.GetName() /// [DataField] - public LocId? Name; + public LocId? Name = null; /// /// Skill Description. If you leave null, the description will try to generate from Effect.GetDescription() /// [DataField] - public LocId? Desc; + public LocId? Desc = null; /// /// The tree this skill belongs to. This is used to group skills together in the UI. @@ -55,7 +55,7 @@ public sealed partial class CP14SkillPrototype : IPrototype /// But the presence of the skill itself can affect some systems that check for the presence of certain skills. /// [DataField] - public CP14SkillEffect? Effect; + public List Effects = new(); /// /// Skill restriction. Limiters on learning. Any reason why a player cannot learn this skill. diff --git a/Content.Shared/_CP14/Skill/Restrictions/CP14SkillRestriction.cs b/Content.Shared/_CP14/Skill/Restrictions/CP14SkillRestriction.cs index 01dda44d74..17907343aa 100644 --- a/Content.Shared/_CP14/Skill/Restrictions/CP14SkillRestriction.cs +++ b/Content.Shared/_CP14/Skill/Restrictions/CP14SkillRestriction.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using JetBrains.Annotations; using Robust.Shared.Prototypes; @@ -7,7 +8,7 @@ namespace Content.Shared._CP14.Skill.Restrictions; [MeansImplicitUse] public abstract partial class CP14SkillRestriction { - public abstract bool Check(IEntityManager entManager, EntityUid target); + public abstract bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill); public abstract string GetDescription(IEntityManager entManager, IPrototypeManager protoManager); } diff --git a/Content.Shared/_CP14/Skill/Restrictions/Impossible.cs b/Content.Shared/_CP14/Skill/Restrictions/Impossible.cs new file mode 100644 index 0000000000..38707056c4 --- /dev/null +++ b/Content.Shared/_CP14/Skill/Restrictions/Impossible.cs @@ -0,0 +1,18 @@ +using Content.Shared._CP14.Skill.Components; +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Restrictions; + +public sealed partial class Impossible : CP14SkillRestriction +{ + public override bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill) + { + return false; + } + + public override string GetDescription(IEntityManager entManager, IPrototypeManager protoManager) + { + return Loc.GetString("cp14-skill-req-impossible"); + } +} diff --git a/Content.Shared/_CP14/Skill/Restrictions/NeedPrerequisite.cs b/Content.Shared/_CP14/Skill/Restrictions/NeedPrerequisite.cs index 629706b8f1..3f68e78899 100644 --- a/Content.Shared/_CP14/Skill/Restrictions/NeedPrerequisite.cs +++ b/Content.Shared/_CP14/Skill/Restrictions/NeedPrerequisite.cs @@ -9,7 +9,7 @@ public sealed partial class NeedPrerequisite : CP14SkillRestriction [DataField(required: true)] public ProtoId Prerequisite = new(); - public override bool Check(IEntityManager entManager, EntityUid target) + public override bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill) { if (!entManager.TryGetComponent(target, out var skillStorage)) return false; diff --git a/Content.Shared/_CP14/Skill/Restrictions/Researched.cs b/Content.Shared/_CP14/Skill/Restrictions/Researched.cs new file mode 100644 index 0000000000..db1ee222bc --- /dev/null +++ b/Content.Shared/_CP14/Skill/Restrictions/Researched.cs @@ -0,0 +1,26 @@ +using Content.Shared._CP14.Skill.Components; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared._CP14.Workbench; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Restrictions; + +public sealed partial class Researched : CP14SkillRestriction +{ + [DataField(required: true)] + public List Requirements = new(); + + public override bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill) + { + if (!entManager.TryGetComponent(target, out var skillStorage)) + return false; + + var learned = skillStorage.ResearchedSkills; + return learned.Contains(skill); + } + + public override string GetDescription(IEntityManager entManager, IPrototypeManager protoManager) + { + return Loc.GetString("cp14-skill-req-researched"); + } +} diff --git a/Content.Shared/_CP14/Skill/Restrictions/SpeciesWhitelist.cs b/Content.Shared/_CP14/Skill/Restrictions/SpeciesWhitelist.cs index cc8b21a404..d46b8c2b36 100644 --- a/Content.Shared/_CP14/Skill/Restrictions/SpeciesWhitelist.cs +++ b/Content.Shared/_CP14/Skill/Restrictions/SpeciesWhitelist.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Prototypes; using Robust.Shared.Prototypes; @@ -9,7 +10,7 @@ public sealed partial class SpeciesWhitelist : CP14SkillRestriction [DataField(required: true)] public ProtoId Species = new(); - public override bool Check(IEntityManager entManager, EntityUid target) + public override bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill) { if (!entManager.TryGetComponent(target, out var appearance)) return false; diff --git a/Content.Shared/_CP14/Workbench/SharedCP14WorkbenchSystem.cs b/Content.Shared/_CP14/Workbench/CP14SharedWorkbenchSystem.cs similarity index 90% rename from Content.Shared/_CP14/Workbench/SharedCP14WorkbenchSystem.cs rename to Content.Shared/_CP14/Workbench/CP14SharedWorkbenchSystem.cs index 639d42cc10..cc9e7d2ec5 100644 --- a/Content.Shared/_CP14/Workbench/SharedCP14WorkbenchSystem.cs +++ b/Content.Shared/_CP14/Workbench/CP14SharedWorkbenchSystem.cs @@ -10,7 +10,7 @@ using Robust.Shared.Serialization; namespace Content.Shared._CP14.Workbench; -public abstract class SharedCP14WorkbenchSystem : EntitySystem +public abstract class CP14SharedWorkbenchSystem : EntitySystem { } diff --git a/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs b/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs index d0b96a0c14..302d17e928 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs @@ -26,8 +26,7 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var count = 0; foreach (var ent in placedEntities) @@ -76,12 +75,14 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement if (mat.Key != Material) continue; + if (requiredCount <= 0) + return; + if (stack is null) { var value = (int)MathF.Min(requiredCount, mat.Value); requiredCount -= value; entManager.DeleteEntity(placedEntity); - continue; } else { diff --git a/Content.Shared/_CP14/Workbench/Requirements/ProtoIdResource.cs b/Content.Shared/_CP14/Workbench/Requirements/ProtoIdResource.cs index 6c714ace0a..02bf018204 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/ProtoIdResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/ProtoIdResource.cs @@ -22,8 +22,7 @@ public sealed partial class ProtoIdResource : CP14WorkbenchCraftRequirement public override bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var indexedIngredients = IndexIngredients(entManager, placedEntities); diff --git a/Content.Shared/_CP14/Workbench/Requirements/KnowledgeRequired.cs b/Content.Shared/_CP14/Workbench/Requirements/SkillRequired.cs similarity index 95% rename from Content.Shared/_CP14/Workbench/Requirements/KnowledgeRequired.cs rename to Content.Shared/_CP14/Workbench/Requirements/SkillRequired.cs index c814e6535d..4da4b2c9ca 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/KnowledgeRequired.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/SkillRequired.cs @@ -16,8 +16,7 @@ public sealed partial class SkillRequired : CP14WorkbenchCraftRequirement public override bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var knowledgeSystem = entManager.System(); diff --git a/Content.Shared/_CP14/Workbench/Requirements/StackGroupResource.cs b/Content.Shared/_CP14/Workbench/Requirements/StackGroupResource.cs index a6ed0e43b8..1f1b52d7fa 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/StackGroupResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/StackGroupResource.cs @@ -23,8 +23,7 @@ public sealed partial class StackGroupResource : CP14WorkbenchCraftRequirement public override bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { if (!protoManager.TryIndex(Group, out var indexedGroup)) return false; diff --git a/Content.Shared/_CP14/Workbench/Requirements/StackResource.cs b/Content.Shared/_CP14/Workbench/Requirements/StackResource.cs index ce67cff95a..80ead44718 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/StackResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/StackResource.cs @@ -23,8 +23,7 @@ public sealed partial class StackResource : CP14WorkbenchCraftRequirement public override bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var count = 0; foreach (var ent in placedEntities) diff --git a/Content.Shared/_CP14/Workbench/Requirements/TagResource.cs b/Content.Shared/_CP14/Workbench/Requirements/TagResource.cs index 549a2e7756..e8849a9253 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/TagResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/TagResource.cs @@ -30,8 +30,7 @@ public sealed partial class TagResource : CP14WorkbenchCraftRequirement EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var tagSystem = entManager.System(); diff --git a/Content.Shared/_CP14/Workbench/WorkbenchCraftRequirement.cs b/Content.Shared/_CP14/Workbench/WorkbenchCraftRequirement.cs index f17d610071..6fe852e7c1 100644 --- a/Content.Shared/_CP14/Workbench/WorkbenchCraftRequirement.cs +++ b/Content.Shared/_CP14/Workbench/WorkbenchCraftRequirement.cs @@ -26,8 +26,7 @@ public abstract partial class CP14WorkbenchCraftRequirement public abstract bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe); + EntityUid user); /// /// An event that is triggered after crafting. This is the place to put important things like removing items, spending stacks or other things. diff --git a/Content.Shared/_CP14/WorldSprite/WorldSpriteVisualLayer.cs b/Content.Shared/_CP14/WorldSprite/WorldSpriteVisualLayer.cs deleted file mode 100644 index 058adaf133..0000000000 --- a/Content.Shared/_CP14/WorldSprite/WorldSpriteVisualLayer.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Content.Shared._CP14.WorldSprite; - -public enum WorldSpriteVisualLayers : byte -{ - Layer, -} diff --git a/README.md b/README.md index f9389ef6ff..3701b25b5a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

CrystallEdge

+![image](https://github.com/user-attachments/assets/8b564d44-66c8-4c97-a3fe-99c2554a6cbf) CrystallEdge is a build running on the [RobustToolbox](https://github.com/space-wizards/RobustToolbox), engine, developed by [Space Wizard Federation](https://github.com/space-wizards). It is based on the original build of [Space Station 14](https://github.com/space-wizards/space-station-14), and rewritten into a new game. diff --git a/Resources/Audio/_CP14/Ambience/attributions.yml b/Resources/Audio/_CP14/Ambience/attributions.yml index 9f10b2d1c8..9ac94c838c 100644 --- a/Resources/Audio/_CP14/Ambience/attributions.yml +++ b/Resources/Audio/_CP14/Ambience/attributions.yml @@ -23,6 +23,11 @@ copyright: 'by be-steele of Freesound.org.' source: "https://freesound.org/people/be-steele/sounds/130753/" +- files: ["blood_moon_raise.ogg"] + license: "CC-BY-4.0" + copyright: 'by xkeril of Freesound.org.' + source: "https://freesound.org/people/xkeril/sounds/639585/" + - files: ["ambimagic1.ogg", "ambimagic2.ogg", "ambimagic3.ogg", "ambimagic4.ogg"] license: "CC-BY-4.0" copyright: 'by EminYILDIRIM of Freesound.org.' @@ -31,9 +36,4 @@ - files: ["ambimagic5.ogg", "ambimagic6.ogg"] license: "CC0-1.0" copyright: 'by xkeril of Freesound.org.' - source: "https://freesound.org/people/xkeril/sounds/706092/" - -- files: ["event_boom.ogg"] - license: "CC-BY-4.0" - copyright: 'by juskiddink of Freesound.org.' - source: "https://freesound.org/people/juskiddink/sounds/130890/" \ No newline at end of file + source: "https://freesound.org/people/xkeril/sounds/706092/" \ No newline at end of file diff --git a/Resources/Audio/_CP14/Ambience/blood_moon_raise.ogg b/Resources/Audio/_CP14/Ambience/blood_moon_raise.ogg new file mode 100644 index 0000000000..88ff92a235 Binary files /dev/null and b/Resources/Audio/_CP14/Ambience/blood_moon_raise.ogg differ diff --git a/Resources/Audio/_CP14/Announce/attributions.yml b/Resources/Audio/_CP14/Announce/attributions.yml new file mode 100644 index 0000000000..c76701945d --- /dev/null +++ b/Resources/Audio/_CP14/Announce/attributions.yml @@ -0,0 +1,9 @@ +- files: ["event_boom.ogg"] + license: "CC-BY-4.0" + copyright: 'by juskiddink of Freesound.org.' + source: "https://freesound.org/people/juskiddink/sounds/130890/" + +- files: ["darkness_boom.ogg", "darkness_boom_2.ogg"] + license: "CC-BY-4.0" + copyright: 'by Uzbazur of Freesound.org.' + source: "https://freesound.org/people/Uzbazur/sounds/442241/" \ No newline at end of file diff --git a/Resources/Audio/_CP14/Announce/darkness_boom.ogg b/Resources/Audio/_CP14/Announce/darkness_boom.ogg new file mode 100644 index 0000000000..829878a365 Binary files /dev/null and b/Resources/Audio/_CP14/Announce/darkness_boom.ogg differ diff --git a/Resources/Audio/_CP14/Announce/darkness_boom_2.ogg b/Resources/Audio/_CP14/Announce/darkness_boom_2.ogg new file mode 100644 index 0000000000..b48aad10b0 Binary files /dev/null and b/Resources/Audio/_CP14/Announce/darkness_boom_2.ogg differ diff --git a/Resources/Audio/_CP14/Ambience/event_boom.ogg b/Resources/Audio/_CP14/Announce/event_boom.ogg similarity index 100% rename from Resources/Audio/_CP14/Ambience/event_boom.ogg rename to Resources/Audio/_CP14/Announce/event_boom.ogg diff --git a/Resources/ConfigPresets/_CP14/Dev.toml b/Resources/ConfigPresets/_CP14/Dev.toml index 57906e7ab3..9646d81363 100644 --- a/Resources/ConfigPresets/_CP14/Dev.toml +++ b/Resources/ConfigPresets/_CP14/Dev.toml @@ -2,7 +2,7 @@ enabled = true [localization] -language = "ru-RU" +language = "en-US" [log] path = "logs" @@ -16,6 +16,9 @@ port = 1212 bindto = "::,0.0.0.0" max_connections = 100 +[status] +max_connections = 10 + [game] hostname = "⚔️ CrystallEdge ⚔️" desc = "History of the City of Sword and Magic. A social economic sandbox reinventing the Space Station 14 concept in fantasy style" @@ -36,6 +39,8 @@ hub_urls = "https://hub.spacestation14.com/" [infolinks] discord = "https://discord.gg/8BEPa9JbZ6" +patreon = "https://boosty.to/theshued" +github = "https://github.com/crystallpunk-14/crystall-punk-14" [procgen] preload = false diff --git a/Resources/Locale/en-US/_CP14/antag/antags.ftl b/Resources/Locale/en-US/_CP14/antag/antags.ftl index f6fcffaf3d..9207f1b0f8 100644 --- a/Resources/Locale/en-US/_CP14/antag/antags.ftl +++ b/Resources/Locale/en-US/_CP14/antag/antags.ftl @@ -1,3 +1,7 @@ cp14-roles-antag-vampire-name = Vampire cp14-roles-antag-vampire-objective = You are a parasite on the body of society, hated by those around you, burned by the sun, and eternally hungry. You need to feed on the blood of the sentient to survive. And finding those who will volunteer to be your feeder is not easy... -cp14-roles-antag-vampire-briefing = You are a parasite on society. It hates and fears you, but the blood of the living is your only food. Nature destroys you with sunlight, so you have to hide in the shadows. It's like the whole world is trying to destroy you, but your will to live is stronger than all of that. SURVIVE. That's all you have to do. \ No newline at end of file +cp14-roles-antag-vampire-briefing = You are a parasite on society. It hates and fears you, but the blood of the living is your only food. Nature destroys you with sunlight, so you have to hide in the shadows. It's like the whole world is trying to destroy you, but your will to live is stronger than all of that. SURVIVE. That's all you have to do. + +cp14-roles-antag-blood-moon-cursed-name = Cursed by the blood moon +cp14-roles-antag-blood-moon-cursed-objective = Some creatures lose their minds, and can commit unthinkable atrocities when a bloody blood moon rises from behind the horizon ... +cp14-roles-antag-blood-moon-cursed-briefing = The blood moon takes control of your thoughts. Your bloodlust awakens and the voices in your head say only one thing: Kill, kill, kill... kill while the moon is in its prime. Kill before the sun restores your sanity. \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/discord/queue.ftl b/Resources/Locale/en-US/_CP14/discord/queue.ftl index ea332ad7ca..24b4f443ee 100644 --- a/Resources/Locale/en-US/_CP14/discord/queue.ftl +++ b/Resources/Locale/en-US/_CP14/discord/queue.ftl @@ -2,4 +2,4 @@ queue-title = Queue queue-quit = Disconnect queue-position = Position queue-total = Total -queue-priority-join = Priority join \ No newline at end of file +queue-priority-join = About priority join \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/gameTicking/game-preserts.ftl b/Resources/Locale/en-US/_CP14/gameTicking/game-preserts.ftl index a3cb69bbb9..44b3fdf9b5 100644 --- a/Resources/Locale/en-US/_CP14/gameTicking/game-preserts.ftl +++ b/Resources/Locale/en-US/_CP14/gameTicking/game-preserts.ftl @@ -1,2 +1,5 @@ cp14-gamepreset-resource-harvest = Resource Collection -cp14-gamepreset-resource-harvest-desc = Your expedition has been sent to a dangerous place to collect valuable natural resources. Get the necessary materials and return. \ No newline at end of file +cp14-gamepreset-resource-harvest-desc = Your expedition has been sent to a dangerous place to collect valuable natural resources. Get the necessary materials and return. + +cp14-judge-night-title = Judgment Night +cp14-judge-night-desc = Once a decade, a blood moon rises in the heavens, twisting minds and blackening hearts. On this night, brother goes against brother, blood is shed and terrible crimes are committed. Will the curse of the moon consume you tonight? Will you survive this night of judgment? \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/gameTicking/gameRules/blood-moon.ftl b/Resources/Locale/en-US/_CP14/gameTicking/gameRules/blood-moon.ftl new file mode 100644 index 0000000000..30683c7f6a --- /dev/null +++ b/Resources/Locale/en-US/_CP14/gameTicking/gameRules/blood-moon.ftl @@ -0,0 +1,6 @@ +cp14-bloodmoon-raising = The moon in the sky is stained with blood. The next night will be terrible. +cp14-bloodmoon-start = The blood moon shines in full force, enslaving minds. +cp14-bloodmoon-end = The blood moon sets over the horizon, losing its power. + +cp14-bloodmoon-curse-removed = The curse of the blood moon is dispelled. +cp14-bloodmoon-curse-examined = [color=red]The aura of the blood moon hovers around this creature. Be careful, for his mind is unstable.[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl b/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl index fefcd53578..c2efdd1686 100644 --- a/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl +++ b/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl @@ -15,6 +15,10 @@ cp14-loadout-general-spells = Spells cp14-loadout-skill-tree = Specialization cp14-loadout-general-keys = Keys +# Adventurer + +cp14-loadout-adventurers-equip = Advenrurer weapons + # Apprentice cp14-loadout-apprentice-bundle = Apprentice bundle diff --git a/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl b/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl index 5b05ec61d5..aeeb5c0b53 100644 --- a/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl +++ b/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl @@ -35,10 +35,9 @@ 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-shaper-guard-city-gate = city gate +cp14-lock-shaper-guard-barracks = barracks +cp14-lock-shaper-guard-commander = guard commander house cp14-lock-shape-guildmaster = guildmaster cp14-lock-shape-demiplane-crystal = demiplane crystal \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/recipe/title.ftl b/Resources/Locale/en-US/_CP14/recipe/title.ftl index 521dc40e6d..c68c080969 100644 --- a/Resources/Locale/en-US/_CP14/recipe/title.ftl +++ b/Resources/Locale/en-US/_CP14/recipe/title.ftl @@ -1 +1,2 @@ cp14-recipe-title-meat = various pieces of raw meat +cp14-recipe-title-energy-crystal = energycrystals diff --git a/Resources/Locale/en-US/_CP14/skill/requirements.ftl b/Resources/Locale/en-US/_CP14/skill/requirements.ftl index c627b45b0e..e9756629bf 100644 --- a/Resources/Locale/en-US/_CP14/skill/requirements.ftl +++ b/Resources/Locale/en-US/_CP14/skill/requirements.ftl @@ -1,2 +1,4 @@ -cp14-skill-req-prerequisite = Skill "{$name}" must be learned. -cp14-skill-req-species = Available only to species "{$name}" \ No newline at end of file +cp14-skill-req-prerequisite = Skill "{$name}" must be learned +cp14-skill-req-species = You must be the race of “{$name}” +cp14-skill-req-researched = A study needs to be done on the research table +cp14-skill-req-impossible = Unable to explore during a round at the current moment \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/skill/skill_issue.ftl b/Resources/Locale/en-US/_CP14/skill/skill_issue.ftl new file mode 100644 index 0000000000..b9c6cb1c8c --- /dev/null +++ b/Resources/Locale/en-US/_CP14/skill/skill_issue.ftl @@ -0,0 +1,3 @@ +cp14-skill-issue-title = In order to use these weapons effectively, you need to have skill: + +cp14-skill-issue = Skill issue! \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/skill/skill_meta.ftl b/Resources/Locale/en-US/_CP14/skill/skill_meta.ftl new file mode 100644 index 0000000000..50644b7e6e --- /dev/null +++ b/Resources/Locale/en-US/_CP14/skill/skill_meta.ftl @@ -0,0 +1,34 @@ +cp14-skill-mastery-desc = Mastering the art of this weapon, you will no longer clumsily drop it or cut yourself. + +cp14-skill-sword-mastery-name = Sword mastery +cp14-skill-parier-mastery-name = Rapier mastery +cp14-skill-skimitar-mastery-name = Skimitar mastery + +cp14-skill-pyro-t1-name = Basic pyrokinetics +cp14-skill-pyro-t2-name = Advanced pyrokinetics +cp14-skill-pyro-t3-name = Expert pyrokinetics + +cp14-skill-illusion-t1-name = Basic illusion +cp14-skill-illusion-t2-name = Advanced illusion +cp14-skill-illusion-t3-name = Expert illusion + +cp14-skill-water-t1-name = Basic hydrosophistry +cp14-skill-water-t2-name = Advanced hydrosophistry +cp14-skill-water-t3-name = Expert hydrosophistry + +cp14-skill-life-t1-name = Basic lifecation +cp14-skill-life-t2-name = Advanced lifecation +cp14-skill-life-t3-name = Expert lifecation + +cp14-skill-meta-t1-name = Basic metamagic +cp14-skill-meta-t2-name = Advanced metamagic +cp14-skill-meta-t3-name = Expert metamagic + +cp14-skill-alchemy-vision-name = Alchemist's Vision +cp14-skill-alchemy-vision-desc = You are able to understand what liquids are in containers by visually analyzing them. + +cp14-skill-copper-melt-name = Copper melting +cp14-skill-iron-melt-name = Iron melting +cp14-skill-gold-melt-name = Gold melting +cp14-skill-mithril-melt-name = Mithril melting +cp14-skill-glass-melt-name = Glasswork \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/skill/skill_tree.ftl b/Resources/Locale/en-US/_CP14/skill/skill_tree.ftl index 77a958a554..a29e6edd76 100644 --- a/Resources/Locale/en-US/_CP14/skill/skill_tree.ftl +++ b/Resources/Locale/en-US/_CP14/skill/skill_tree.ftl @@ -1,25 +1,36 @@ cp14-skill-tree-blaksmithing-name = Blacksmithing cp14-skill-tree-blaksmithing-desc = Explore and create new items from metal. -cp14-skill-tree-pyrokinetic-name = Pyrokinetic +cp14-skill-tree-pyrokinetic-name = Pyrokinesis cp14-skill-tree-pyrokinetic-desc = Master the magic of fire, allowing you to warm, illuminate, and destroy. -cp14-skill-tree-hydrosophistry-name = Hydrosophistry +cp14-skill-tree-hydrosophistry-name = Hydrosophy cp14-skill-tree-hydrosophistry-desc = Master the magic of water and frost to create items from water and ice, and freeze enemies. cp14-skill-tree-metamagic-name = Metamagic cp14-skill-tree-metamagic-desc = Explore ways to subtly manipulate magic to affect spells and items. -cp14-skill-tree-illusion-name = Illusoriness +cp14-skill-tree-illusion-name = Illusion cp14-skill-tree-illusion-desc = Explore the nature of light to create illusions, light sources and shadows. -cp14-skill-tree-healing-name = Lifecation +cp14-skill-tree-healing-name = Vivification cp14-skill-tree-healing-desc = Explore the ways in which magic affects living creatures. -cp14-skill-tree-dimension-name = Dimensium +cp14-skill-tree-dimension-name = Dimensionomy cp14-skill-tree-dimension-desc = Immerse yourself in the nature of space and void. # Body -cp14-skill-tree-atlethic-name = Atlethic +cp14-skill-tree-atlethic-name = Athletic cp14-skill-tree-atlethic-desc = Develop your body by pushing the boundaries of what is available. + +cp14-skill-tree-martial-name = Martial arts +cp14-skill-tree-martial-desc = Master the secrets of deadly weapons, or make your own body a weapon. + +# Job + +cp14-skill-tree-thaumaturgy-name = Alchemy +cp14-skill-tree-thaumaturgy-desc = The art of creating magical potions that can kill, raise from the dead, or turn creatures into sheep. + +cp14-skill-tree-blacksmithing-name = Blacksmithing +cp14-skill-tree-blacksmithing-desc = The art of turning metal into various useful things. \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/skill/ui.ftl b/Resources/Locale/en-US/_CP14/skill/ui.ftl index 2ab599bc22..c7a86baaa5 100644 --- a/Resources/Locale/en-US/_CP14/skill/ui.ftl +++ b/Resources/Locale/en-US/_CP14/skill/ui.ftl @@ -5,6 +5,13 @@ cp14-skill-info-title = Skills cp14-game-hud-open-skill-menu-button-tooltip = Skill tree cp14-skill-menu-learn-button = Learn skill -cp14-skill-menu-learncost = [color=yellow]Points required:[/color] -cp14-skill-menu-skillpoints = Experience points: -cp14-skill-menu-level = Level: \ No newline at end of file +cp14-skill-menu-learncost = [color=yellow]Memory required:[/color] +cp14-skill-menu-level = Memory: +cp14-skill-menu-free = [color=green]This skill is innate to your character, and wastes no memory points![/color] + +cp14-research-table-title = Research table +cp14-research-recipe-list = Research costs: +cp14-research-craft = Research + +cp14-skill-desc-add-mana = Increases your character's mana amount by {$mana}. +cp14-skill-desc-unlock-recipes = Opens up the possibility of crafting: \ 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 b7cb004060..b1fad9d61b 100644 --- a/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl +++ b/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl @@ -152,17 +152,17 @@ ent-CP14BaseSpellScrollNecromancy = { ent-CP14BaseSpellScroll } ent-CP14BaseSpellScrollWater = { ent-CP14BaseSpellScroll } .desc = { ent-CP14BaseSpellScroll.desc } -ent-CP14ActionSpellResurrection = Воскрешение - .desc = Вы пытаетесь вернуть душу обратно в искалеченное тело. +ent-CP14ActionSpellCureFromDeath = Исцеление мёртвых + .desc = Вы исцеляете цель от всех видов урона. -ent-CP14RuneResurrection = { ent-CP14BaseMagicRune } - .desc = { ent-CP14BaseMagicRune.desc } +ent-CP14ActionSpellHealFromDeathBallade = Исцеляющая мёртвых баллада + .desc = Ваша музыка наполнена целительной магией, быстро исцеляющей всех существ вокруг вас. -ent-CP14ImpactEffectResurrection = { ent-CP14BaseMagicImpact } +ent-CP14ImpactEffectDeadHealBallade = { ent-CP14BaseMagicImpact } .desc = { ent-CP14BaseMagicImpact.desc } -ent-CP14SpellScrollResurrection = свиток заклинания воскрешения - .desc = { ent-CP14BaseSpellScrollNecromancy.desc } +ent-CP14RuneDeadHealBallade = { ent-CP14BaseMagicRune } + .desc = { ent-CP14BaseMagicRune.desc } ent-CP14ActionSpellDemiplaneInfiltration = Проникновение в демиплан .desc = Вы проникаете в выбранный ваши демиплан. @@ -192,6 +192,9 @@ ent-CP14ImpactEffectShadowGrab = { ent-CP14BaseMagicImpact } ent-CP14SpellScrollShadowGrab = свиток заклинания теневого захвата .desc = { ent-CP14BaseSpellScrollDimension.desc } +ent-CP14ActionSpellShadowSwap = Теневой обмен + .desc = Искривление пространства между двумя живыми существами. + ent-CP14ActionSpellShadowStep = Теневой шаг .desc = Шаг сквозь прореху реальности, позволяющий быстро преодолеть небольшое расстояние. @@ -233,18 +236,6 @@ ent-CP14Fireball = огненный шар ent-CP14SpellScrollFireball = свиток заклинания огненного шара .desc = { ent-CP14BaseSpellScrollFire.desc } -ent-CP14ActionSpellFireRune = Руна огня - .desc = Вы создаете зону, в которой обжигающий поток огня возникает практически мгновенно. - -ent-CP14TelegraphyFireRune = { ent-CP14BaseMagicImpact } - .desc = { ent-CP14BaseMagicImpact.desc } - -ent-CP14AreaEntityEffectFireRune = { ent-CP14BaseMagicImpact } - .desc = { ent-CP14BaseMagicImpact.desc } - -ent-CP14SpellScrollFireRune = свиток заклинаний руны огня - .desc = { ent-CP14BaseSpellScrollFire.desc } - ent-CP14ActionSpellFlameCreation = Создание пламени .desc = В вашей руке образуется искусственное пламя, освещающее окружающее пространство. Вы можете бросить его, чтобы использовать в качестве одноразового оружия. @@ -257,6 +248,18 @@ ent-CP14ImpactEffectFlameCreation = { ent-CP14BaseMagicImpact } ent-CP14SpellScrollFlameCreation = свиток заклинания создания пламени .desc = { ent-CP14BaseSpellScrollFire.desc } +ent-CP14ActionSpellHeat = Нагрев + .desc = Вы начинаете сильно нагревать цель, прожигая ее изнутри. + +ent-CP14ImpactEffectHeat = { ent-CP14BaseMagicImpact } + .desc = { ent-CP14BaseMagicImpact.desc } + +ent-CP14RuneHeat = { ent-CP14BaseMagicRune } + .desc = { ent-CP14BaseMagicRune.desc } + +ent-CP14SpellScrollHeat = свиток заклинания нагрева + .desc = { ent-CP14BaseSpellScrollFire.desc } + ent-CP14ActionSpellHellBallade = Адская баллада .desc = Ваша музыка наполняется силой огня и буквально сжигает вас и ваших врагов. @@ -275,21 +278,6 @@ ent-CP14ImpactEffectTieflingRevenge = { ent-CP14BaseMagicImpact } ent-CP14RuneTieflingRevenge = { ent-CP14BaseMagicRune } .desc = { ent-CP14BaseMagicRune.desc } -ent-CP14ActionSpellMagicalAcceleration = Магическое ускорение - .desc = Затрачивая магическую энергию, вы значительно ускоряете скорость передвижения. - -ent-CP14SpellScrollMagicalAcceleration = Свиток заклинания магического ускорения - .desc = { ent-CP14BaseSpellScrollHealing.desc } - -ent-CP14ActionSpellSheepPolymorph = Полиморф в овечку - .desc = Вы проклинаете цель, превращая ее на короткое время в глупую овцу. - -ent-CP14RuneSheepPolymorph = { ent-CP14BaseMagicRune } - .desc = { ent-CP14BaseMagicRune.desc } - -ent-CP14ImpactEffectSheepPolymorph = { ent-CP14BaseMagicImpact } - .desc = { ent-CP14BaseMagicImpact.desc } - ent-CP14ActionSpellCureBurn = Лечение ожогов .desc = Вы излечиваете кожные повреждения, вызванные крайне высокой или низкой температурой. @@ -335,6 +323,12 @@ ent-CP14ImpactEffectHealthBallade = { ent-CP14BaseMagicImpact } ent-CP14RuneHealBallade = { ent-CP14BaseMagicRune } .desc = { ent-CP14BaseMagicRune.desc } +ent-CP14ActionSpellMagicalAcceleration = Магическое ускорение + .desc = Затрачивая магическую энергию, вы значительно ускоряете скорость передвижения. + +ent-CP14SpellScrollMagicalAcceleration = Свиток заклинания магического ускорения + .desc = { ent-CP14BaseSpellScrollHealing.desc } + ent-CP14ActionSpellPeaceBallade = Умиротворяющая баллада .desc = Ваша музыка наполняется магией, запрещающей всем, кто находится рядом с вами, сражаться. @@ -359,6 +353,27 @@ ent-CP14ImpactEffectPlantGrowth = { ent-CP14BaseMagicImpact } ent-CP14RunePlantGrowth = { ent-CP14BaseMagicRune } .desc = { ent-CP14BaseMagicRune.desc } +ent-CP14ActionSpellResurrection = Воскрешение + .desc = Вы пытаетесь вернуть душу обратно в искалеченное тело. + +ent-CP14RuneResurrection = { ent-CP14BaseMagicRune } + .desc = { ent-CP14BaseMagicRune.desc } + +ent-CP14ImpactEffectResurrection = { ent-CP14BaseMagicImpact } + .desc = { ent-CP14BaseMagicImpact.desc } + +ent-CP14SpellScrollResurrection = свиток заклинания воскрешения + .desc = { ent-CP14BaseSpellScrollNecromancy.desc } + +ent-CP14ActionSpellSheepPolymorph = Овечкофикация + .desc = Вы проклинаете цель, превращая ее на короткое время в глупую овцу. + +ent-CP14RuneSheepPolymorph = { ent-CP14BaseMagicRune } + .desc = { ent-CP14BaseMagicRune.desc } + +ent-CP14ImpactEffectSheepPolymorph = { ent-CP14BaseMagicImpact } + .desc = { ent-CP14BaseMagicImpact.desc } + ent-CP14ActionSpellSpeedBallade = Баллада скорости .desc = Ваша музыка наполняется магией, ускоряющей движение всех существ поблизости. @@ -368,21 +383,6 @@ ent-CP14ImpactEffectSpeedBallade = { ent-CP14BaseMagicImpact } ent-CP14RuneSpeedBallade = { ent-CP14BaseMagicRune } .desc = { ent-CP14BaseMagicRune.desc } -ent-CP14ActionSpellSphereOfLight = Сфера света - .desc = Материализация яркого и безопасного источника света. - -ent-CP14RuneSphereOfLight = { ent-CP14BaseMagicRune } - .desc = { ent-CP14BaseMagicRune.desc } - -ent-CP14ImpactEffectSphereOfLight = { ent-CP14BaseMagicImpact } - .desc = { ent-CP14BaseMagicImpact.desc } - -ent-CP14SphereOfLight = сфера света - .desc = Сгусток яркого света в форме сферы. - -ent-CP14SpellScrollSphereOfLight = свиток заклинания сферы света - .desc = { ent-CP14BaseSpellScrollLight.desc } - ent-CP14ActionSpellFlashLight = Вспышка света .desc = Создает вспышку яркого, ослепительного света. @@ -395,6 +395,17 @@ ent-CP14ImpactEffectFlashLight = { ent-CP14BaseMagicImpact } ent-CP14SpellScrollFlashLight = свиток заклинания ослепляющей вспышки .desc = { ent-CP14BaseSpellScrollLight.desc } +ent-CP14ActionSpellSearchOfLife = Поиск жизни + .desc = Обнаруживает всех живых существ в большом радиусе вокруг вас. + +ent-CP14ImpactEffectSearchOfLife = { ent-CP14BaseMagicImpact } + .desc = { ent-CP14BaseMagicImpact.desc } + +ent-CP14RuneSearchOfLife = { ent-CP14BaseMagicRune } + .desc = { ent-CP14BaseMagicRune.desc } + +ent-CP14SearchOfLifePointer = указатель + ent-CP14ActionSpellSignalLightRed = Красный сигнальный свет .desc = Вы запускаете парящий шар света, на короткое время излучающий яркое красное свечение. Это свечение способно проникать в реальный мир даже из демиплана. @@ -437,6 +448,21 @@ ent-CP14SignalLightBlue = { ent-CP14SignalLightBase } .desc = { ent-CP14SignalLightBase.desc } .suffix = Синий +ent-CP14ActionSpellSphereOfLight = Сфера света + .desc = Материализация яркого и безопасного источника света. + +ent-CP14RuneSphereOfLight = { ent-CP14BaseMagicRune } + .desc = { ent-CP14BaseMagicRune.desc } + +ent-CP14ImpactEffectSphereOfLight = { ent-CP14BaseMagicImpact } + .desc = { ent-CP14BaseMagicImpact.desc } + +ent-CP14SphereOfLight = сфера света + .desc = Сгусток яркого света в форме сферы. + +ent-CP14SpellScrollSphereOfLight = свиток заклинания сферы света + .desc = { ent-CP14BaseSpellScrollLight.desc } + ent-CP14ActionSpellLurkerFear = Первобытный ужас .desc = Вы погружаете цель в первобытный ужас, лишая её способности сражаться и говорить. @@ -506,15 +532,32 @@ ent-CP14ImpactEffectMagicSplitting = { ent-CP14BaseMagicImpact } ent-CP14SpellScrollMagicSplitting = свиток магического заклинания расщепления .desc = { ent-CP14BaseSpellScrollMeta.desc } +ent-CP14ActionSpellManaTrance = Мана-транс + .desc = На некоторое время вы погружаетесь в транс, восстанавливая ману. + +ent-CP14RuneManaTrance = { ent-CP14BaseMagicRune } + .desc = { ent-CP14BaseMagicRune.desc } + ent-CP14ActionSpellKick = Пинок .desc = Вы наносите эпический удар ногой по выбранному объекту, отталкивая его от себя. +ent-CP14ActionSpellKickSkeleton = Пинок + .desc = Вы наносите эпический удар ногой по выбранному объекту, отталкивая его от себя. + ent-CP14ActionSpellSprint = Спринт .desc = Затрачивая много выносливости, вы значительно ускоряетесь в движении. ent-CP14ActionSpellSprintGoblin = Проворство гоблина .desc = { ent-CP14ActionSpellSprint.desc } +ent-CP14ActionSpellSprintSkeleton = Спринт + .desc = Затрачивая много выносливости, вы значительно ускоряетесь в движении. + +ent-CP14ActionSpellBloodlust = Жажда крови + .desc = Вы чувствуете всех живых существ в большом радиусе вокруг себя, которых желаете убить. + +ent-CP14BloodlustPointer = указатель + ent-CP14ActionVampireBite = Укус вампира .desc = Вы вонзаете клыки в свою жертву, высасывая из нее большую часть крови. @@ -633,6 +676,12 @@ ent-CP14ClothingBeltQuiverCrossbolt = { ent-CP14ClothingBeltQuiver } .desc = { ent-CP14ClothingBeltQuiver.desc } .suffix = Полный. Железо. Болты +ent-CP14ClothingCloakBone = костяной плащ + .desc = Брутальный плащ для брутальных скелетов. + +ent-CP14ClothingCloakBoneMage = костяная броня с плащом + .desc = Плащ лидера для скелета лидера! + ent-CP14ClothingCloakFurcapeBlack = меховая накидка .desc = Брутальная, выделанная из шерсти, накидка на плечи. @@ -678,6 +727,9 @@ ent-CP14ClothingCloakWhiteSyurko = белый сюртук ent-CP14ClothingCloakYellowSyurko = жёлтый сюртук .desc = Длинный и просторный сюртук, который служит для защиты доспехов. +ent-CP14ClothingCloakAristocraticCloak = аристократический плащ + .desc = Аристократическое красное пальто с меховым воротником, очень дорогое, очень крутое, немного неудобное. + ent-CP14ClothingCloakGuardBase = накидка стражи .desc = Наплечная накидка в стандартных цветах Имперской гвардии. @@ -714,6 +766,9 @@ ent-CP14ClothingGlovesJagermeister = перчатки егермейстера ent-CP14ClothingGlovesBlacksmith = кузнечные перчатки .desc = Говорят, в них можно взять в руки только что отлитый слиток. Но проверять это все равно не стоит. +ent-CP14ClothingHeadSlimeCrown = корона слаймов + .desc = Граф Слизи. Великий герцог Амёбы. Повелитель Слаймов. + ent-CP14ModularAventailIronChainmail = железный кольчужный воротник .desc = Воротник из кольчуги для защиты шеи от ударов и проколов в жизненно важных точках. @@ -784,7 +839,7 @@ ent-CP14ModularVisorCopperPlate = медная латная личина .desc = Медная латная личина, который защищает лицо от неприятных повреждений и оставляя ему привлекательный вид. Не так удобно. ent-CP14ModularVisorMithrilPlate = мифриловая латная личина - .desc = Мифриловая латная личина, который защищает лицо от неприятных повреждений и оставляя ему привлекательный вид. + .desc = Мифриловая латная личина, который защищает лицо от неприятных повреждений и оставляя ему привлекательный вид. ent-CP14ClothingHeadBascinet = бацинет .desc = Защищает большую часть головы, но все равно не спасет от удара в лицо. @@ -893,6 +948,9 @@ ent-CP14ClothingOuterClothingCopperArmor = медная броня ent-CP14ClothingOuterClothingBoneArmor = костяная броня .desc = Костяная броня... не самая лучшая и не самая привлекательная защита. +ent-CP14ClothingOuterClothingBoneArmorUpgrade = усиленная костяная броня + .desc = Костяная броня... не самая лучшая и не самая привлекательная защита. + ent-CP14ArmorIronChainmail = железная кольчуга .desc = Кольчужная броня из множества маленьких железных колец. @@ -977,10 +1035,10 @@ ent-CP14ModularGreaveCopperPlate = медные поножи ent-CP14ModularGreaveMithrilPlate = мифриловые поножи .desc = { ent-CP14ModularGreaveIronPlate.desc } -ent-CP14ClothingPantsBase = None +ent-CP14ClothingPantsBase = штаны .desc = Штаны, защищающие ваши бедра от холода. -ent-CP14ClothingPantsDress = None +ent-CP14ClothingPantsDress = платье .desc = Просторное, женственное платье. ent-CP14ClothingPantsTrouserWhite = белые панталоны @@ -1124,6 +1182,45 @@ ent-CP14ClothingWarriorsGarbDress = воинское одеяние ent-CP14ClothinShirtMaidDress = платье горничной .desc = { ent-CP14ClothingShirtBase.desc } +ent-CP14ClothinShirtBlueYellowDress = сине-жёлтое платье + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtWhiteBlueDress = бело-голубое платье + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtWhiteBlue2Dress = бело-голубое платье + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtBrown2Dress = коричневое платье + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtBrown3Dress = коричневое платье + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtWhiteGreenDress = зелёное платье + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtwhiteGreenYellowDress = зелёно-жёлтое платье + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtRedBlueDress = красно-синее платье + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtYellowBlueDress = жёлто-голубое платье + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtBlueGreen = сине-зелёная рубашка + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtGray = серая рубашка + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtGreenYellow = зелёно-жёлтая рубашка + .desc = { ent-CP14ClothingShirtBase.desc } + +ent-CP14ClothinShirtWhiteBrown = бело-коричневая рубашка + .desc = { ent-CP14ClothingShirtBase.desc } + ent-CP14ClothingShirtGuardBase = кольчуга стражника .desc = Рубашка с вшитой подкладкой из кольчуги, окрашенная в стандартные цвета униформы Имперской гвардии. @@ -1165,12 +1262,13 @@ ent-CP14ClothingShoesArtifactFrogs = жаботапы ent-CP14Mist = облако -ent-CP14SkyLightning = освещение неба +ent-CP14SkyLightning = молния с небес + +ent-CP14SkyLightningPurple = { ent-CP14SkyLightning } + .suffix = Фиолетовая ent-CP14DemiplaneEntryPointMarker = точка входа в демиплан -ent-CP14SalarySpawner = спавнер зарплаты - ent-CP14VentCritterMarker = Маркер спавна мобов .desc = случайные существа, вырвавшиеся из демиплана, будут появляться в этом месте @@ -1341,6 +1439,7 @@ ent-CP14MobPig = свинья ent-CP14MobBoar = кабан .desc = Дальний родственник свиней, но, в отличие от своих мирных сородичей, обязательно попытается подцепить вас на клыки, если вы проявите к нему агрессию. + .suffix = AI ent-CP14MobFrog = лягушка .desc = Зеленая и постоянно прыгающая лягушка. Возможно, только благодаря ей комары еще не полностью заполнили болота. @@ -1355,9 +1454,11 @@ ent-CP14MobDino = дино ent-CP14MobDinoYumkaraptor = юмкараптор .desc = Крупная чешуйчатая ящерица, явный хищник, любивший полакомиться мясом. + .suffix = AI ent-CP14MobDinoSmallHydra = малая гидра .desc = Небольшая двухголовая ящерица, несмотря на свои размеры, может быть довольно опасной. + .suffix = AI ent-CP14ActionSpellIceShardsGhost = { ent-CP14ActionSpellIceShards } .desc = { ent-CP14ActionSpellIceShards.desc } @@ -1370,11 +1471,21 @@ ent-CP14MobMonsterMole = хищный крот .desc = Охотится в темноте и любит вкус мяса и крови во рту. .suffix = AI +ent-CP14MobMonsterMyconideFlyagaric = миконид мухоморный + .desc = Бегающий мухомор на ножках, странное явление даже для нашего безумного мира. + .suffix = AI + +ent-CP14MobMonsterMyconideLumish = миконид люмидовый + .desc = Это гриб со светящейся шляпкой, и он может сильно ударить по голове. + .suffix = AI + ent-CP14MobWatcherIce = ледяной наблюдатель .desc = { ent-CP14MobWatcherBase.desc } + .suffix = AI ent-CP14MobWatcherMagma = магмовый наблюдатель .desc = { ent-CP14MobWatcherBase.desc } + .suffix = AI ent-CP14MobUndeadZombie = ходячий труп .desc = Ожившее гниющее тело мертвеца, желающее пожрать живых. @@ -1400,18 +1511,21 @@ ent-CP14ActionSpellSlimeJump = Слаймопрыжок ent-CP14MobSlimeElectric = электрослайм .desc = { ent-CP14MobSlimeBase.desc } + .suffix = AI ent-CP14AreaEntityEffectSlimeShock = { ent-CP14BaseMagicImpact } .desc = { ent-CP14BaseMagicImpact.desc } ent-CP14MobSlimeFire = огненный слайм .desc = { ent-CP14MobSlimeBase.desc } + .suffix = AI ent-CP14AreaEntityEffectSlimeIgnite = { ent-CP14BaseMagicImpact } .desc = { ent-CP14BaseMagicImpact.desc } ent-CP14MobSlimeIce = морозный слайм .desc = { ent-CP14MobSlimeBase.desc } + .suffix = AI ent-CP14AreaEntityEffectSlimeFroze = { ent-CP14BaseMagicImpact } .desc = { ent-CP14BaseMagicImpact.desc } @@ -1440,66 +1554,93 @@ ent-SpawnPointGhostDemiplaneLurker = точка спавна роли призр .desc = Роль призрака луркера .suffix = Луркер -ent-CP14MobUndeadSkeletonDemiplane = скелет - .desc = Оживленный темной магией хрупкий скелет. Обычно скелеты - чрезвычайно разумные существа, управляемые недавно умершей душой. +ent-CP14MobUndeadSkeletonDemiplaneT1 = скелет -ent-CP14MobUndeadSkeletonHalberd = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Алебардщик +ent-CP14MobUndeadSkeletonHalberdT1 = { ent-CP14MobUndeadSkeletonDemiplaneT1 } + .suffix = Алебардщик T1 -ent-CP14MobUndeadSkeletonSword = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Мечник +ent-CP14MobUndeadSkeletonSwordT1 = { ent-CP14MobUndeadSkeletonDemiplaneT1 } + .suffix = Мечник T1 -ent-CP14MobUndeadSkeletonDodger = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Кинжал +ent-CP14MobUndeadSkeletonDodgerT1 = { ent-CP14MobUndeadSkeletonDemiplaneT1 } + .suffix = Кинжальщик T1 -ent-CP14MobUndeadSkeletonArcher = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Лучник +ent-CP14MobUndeadSkeletonArcherT1 = { ent-CP14MobUndeadSkeletonDemiplaneT1 } + .suffix = Лучник T1 -ent-CP14MobUndeadSkeletonWizard = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Маг - -ent-CP14MobUndeadSkeletonBard = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Бард - -ent-CP14SpawnPointGhostDemiplaneSkeleton = точка спавна роли призрака +ent-CP14SpawnPointGhostDemiplaneSkeletonT1 = точка спавна роли .desc = Роль призрака для кровожадного и хитрого скелета. - .suffix = случайный скелет + .suffix = Случайный скелет T1 -ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd = точка спавна роли призрака +ent-SpawnPointGhostDemiplaneSkeletonHalberdT1 = точка спавна роли + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT1.desc } + .suffix = Скелет Алебардщик T1 + +ent-SpawnPointGhostDemiplaneSkeletonSwordT1 = точка спавна роли + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT1.desc } + .suffix = Скелет Мечник T1 + +ent-SpawnPointGhostDemiplaneSkeletonDodgerT1 = точка спавна роли + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT1.desc } + .suffix = Скелет Кинжальщик T1 + +ent-SpawnPointGhostDemiplaneSkeletonArcherT1 = точка спавна роли + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT1.desc } + .suffix = Скелет Лучник T1 + +ent-CP14MobUndeadSkeletonDemiplaneT2 = скелет + +ent-CP14MobUndeadSkeletonHalberdT2 = { ent-CP14MobUndeadSkeletonDemiplaneT2 } + .suffix = Алебардщик T2 + +ent-CP14MobUndeadSkeletonSwordT2 = { ent-CP14MobUndeadSkeletonDemiplaneT2 } + .suffix = Мечник T2 + +ent-CP14MobUndeadSkeletonDodgerT2 = { ent-CP14MobUndeadSkeletonDemiplaneT2 } + .suffix = Кинжальщик T2 + +ent-CP14MobUndeadSkeletonArcherT2 = { ent-CP14MobUndeadSkeletonDemiplaneT2 } + .suffix = Лучник T2 + +ent-CP14MobUndeadSkeletonWizardT2 = { ent-CP14MobUndeadSkeletonDemiplaneT2 } + .suffix = Маг T2 + +ent-CP14MobUndeadSkeletonBardT2 = { ent-CP14MobUndeadSkeletonDemiplaneT2 } + .suffix = Бард T2 + +ent-CP14SpawnPointGhostDemiplaneSkeletonT2 = { ent-CP14SpawnPointGhostDemiplaneSkeletonT1 } .desc = Роль призрака для кровожадного и хитрого скелета. - .suffix = скелет Алебардщик + .suffix = Случайный скелет T2 -ent-CP14SpawnPointGhostDemiplaneSkeletonSword = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } - .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } - .suffix = скелет Мечник +ent-CP14SpawnPointGhostDemiplaneSkeletonHalberdT2 = { ent-SpawnPointGhostDemiplaneSkeletonHalberdT1 } + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT2.desc } + .suffix = Скелет Алебардщик T2 -ent-CP14SpawnPointGhostDemiplaneSkeletonDodger = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } - .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } - .suffix = скелет Кинжальщик +ent-CP14SpawnPointGhostDemiplaneSkeletonSwordT2 = { ent-SpawnPointGhostDemiplaneSkeletonSwordT1 } + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT2.desc } + .suffix = Скелет Мечник T2 -ent-CP14SpawnPointGhostDemiplaneSkeletonArcher = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } - .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } - .suffix = скелет Лучник +ent-CP14SpawnPointGhostDemiplaneSkeletonDodgerT2 = { ent-SpawnPointGhostDemiplaneSkeletonDodgerT1 } + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT2.desc } + .suffix = Скелет Кинжальщик T2 -ent-CP14SpawnPointGhostDemiplaneSkeletonWizard = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } - .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } - .suffix = скелет Маг +ent-CP14SpawnPointGhostDemiplaneSkeletonArcherT2 = { ent-SpawnPointGhostDemiplaneSkeletonArcherT1 } + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT2.desc } + .suffix = Скелет Лучник T2 -ent-CP14SpawnPointGhostDemiplaneSkeletonBard = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } - .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } - .suffix = скелет Бард +ent-CP14SpawnPointGhostDemiplaneSkeletonWizardT2 = точка спавна роли + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT2.desc } + .suffix = Скелет Маг T2 + +ent-CP14SpawnPointGhostDemiplaneSkeletonBardT2 = точка спавна роли + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonT2.desc } + .suffix = Скелет Бард T2 ent-CP14SpawnPointTownRaid = городской рейд точка спавна роли призрака .suffix = Городской рейд -ent-CP14MobUndeadSkeletonWizardTownRaid = { ent-CP14MobUndeadSkeletonWizard } - .desc = { ent-CP14MobUndeadSkeletonWizard.desc } +ent-CP14MobUndeadSkeletonWizardTownRaid = { ent-CP14MobUndeadSkeletonWizardT2 } + .desc = { ent-CP14MobUndeadSkeletonWizardT2.desc } .suffix = Маг ent-CP14SpawnPointTownRaidUndeadEasy = { ent-CP14SpawnPointTownRaid } @@ -1519,9 +1660,6 @@ ent-CP14BaseMobSilva = мистер Сильва ent-CP14BaseMobTiefling = мистер Тифлинг -ent-CP14RitualGrimoire = гримуар ритуалиста - .desc = Книга, в которой собраны знания сотен ритуалистов. Используйте ее на активном ритуале, чтобы получить всю информацию о его текущем состоянии. - ent-CP14PaperFolderBase = папка .desc = Папка с какими-то бумагами. @@ -1905,6 +2043,9 @@ ent-CP14WalletFilledTest = { ent-CP14Wallet } ent-CP14Wheat = сноп пшеницы .desc = У вас есть выбор: посадить семена обратно в землю, либо пустить их в муку. +ent-CP14Cotton = хлопок + .desc = Растительное волокно, из которого изготавливают хлопковую ткань. + ent-CP14BloodFlower = кровавая роза .desc = Алые цветы растут там, где пролилась кровь. @@ -2290,6 +2431,12 @@ ent-CP14CompostMaterial10 = { ent-CP14CompostMaterial1 } .desc = { ent-CP14CompostMaterial1.desc } .suffix = 10 +ent-CP14CrystalShardQuartz = кварцевый осколок + .desc = Природные кристаллы кварца, способные впитывать магическую энергию окружающего мира. + +ent-CP14DimensitCrystal = дименситовый осколок + .desc = Фрагмент ткани реальности. Чрезвычайно ценный ресурс для тех, кто знает, что с ним делать. + ent-CP14OreCopper1 = медная руда .desc = Кусок бледной, тяжелой меди. @@ -2537,7 +2684,7 @@ ent-CP14CrayonPurple = фиолетовый мелок ent-CP14PartsMonsterGlands = ядовитые железы .desc = Ядовитые железы опасного монстра, возможно, в них что-то осталось. -ent-CP14FloorTileBase = None +ent-CP14FloorTileBase = плитка .desc = Сделайте пол более приятным для ваших ног. И для ваших глаз. ent-CP14FloorTileFoundation = напольная плитка для фундамента @@ -2585,10 +2732,10 @@ ent-CP14FloorTileBirchWoodplanksCruciform = берёзовые крестооб ent-CP14FloorTileBirchWoodplanksStairs = берёзовая лестница .desc = { ent-CP14FloorTileBase.desc } -ent-CP14ModularGripShort = None +ent-CP14ModularGripShort = рукоять .desc = Инструмент для ваших целей! -ent-CP14ModularGripLong = None +ent-CP14ModularGripLong = длинная рукоять .desc = Инструмент для ваших целей! Теперь достаточно длинный, чтобы держать двумя руками. ent-CP14ModularGripWooden = деревянная рукоять @@ -2633,7 +2780,7 @@ ent-CP14ModularGripCopperLong = длинная медная рукоять ent-CP14ModularGripMithrilLong = длинная мифриловая рукоять .desc = { ent-CP14ModularGripLong.desc } -ent-CP14ModularRod = None +ent-CP14ModularRod = древко .desc = Тонкое древко из дерева, самая важная часть будущей стрелы. ent-CP14ModularRodWooden = деревянное древко @@ -2642,7 +2789,7 @@ ent-CP14ModularRodWooden = деревянное древко ent-CP14ModularRodLucens = люценовое древко .desc = { ent-CP14ModularRod.desc } -ent-CP14ModularBladeAxeBase = None +ent-CP14ModularBladeAxeBase = головка топора .desc = Лезвие топора без рукояти. Кузнец может использовать его как запасную часть для создания оружия. ent-CP14ModularBladeIronAxe = железная головка топора @@ -2657,7 +2804,7 @@ ent-CP14ModularBladeCopperAxe = медная головка топора ent-CP14ModularBladeMithrilAxe = мифриловая головка топора .desc = { ent-CP14ModularBladeAxeBase.desc } -ent-CP14ModularBladeDaggerBase = None +ent-CP14ModularBladeDaggerBase = лезвие кинжала .desc = Лезвие кинжала. Кузнец может использовать это, чтобы сделать оружие. ent-CP14ModularBladeIronDagger = железное лезвие кинжала @@ -2672,7 +2819,7 @@ ent-CP14ModularBladeCopperDagger = медное лезвие кинжала ent-CP14ModularBladeMithrilDagger = мифриловое лезвие кинжала .desc = { ent-CP14ModularBladeDaggerBase.desc } -ent-CP14ModularBladeHammerBase = None +ent-CP14ModularBladeHammerBase = наболдашник молота .desc = Молот без рукояти. Кузнец может использовать его как запасную часть для создания инструмента. ent-CP14ModularBladeIronHammer = железный наболдашник молота @@ -2687,7 +2834,7 @@ ent-CP14ModularBladeCopperHammer = медный наболдашник моло ent-CP14ModularBladeMithrilHammer = мифриловый наболдашник молота .desc = { ent-CP14ModularBladeHammerBase.desc } -ent-CP14ModularBladeHoeBase = None +ent-CP14ModularBladeHoeBase = лезвие мотыги .desc = Лезвие мотыги без рукояти. Кузнец может использовать его как запасную часть для создания инструмента. ent-CP14ModularBladeIronHoe = железное лезвие мотыги @@ -2702,7 +2849,7 @@ ent-CP14ModularBladeGoldHoe = золотое лезвие мотыги ent-CP14ModularBladeMithrilHoe = мифриловое лезвие мотыги .desc = { ent-CP14ModularBladeSickleBase.desc } -ent-CP14ModularBladeMaceBase = None +ent-CP14ModularBladeMaceBase = шар булавы .desc = Булава-шар без рукояти. Кузнец может использовать его как запасную часть для создания оружия. ent-CP14ModularBladeIronMace = железный шар булавы @@ -2717,7 +2864,7 @@ ent-CP14ModularBladeCopperMace = медный шар булавы ent-CP14ModularBladeMithrilMace = мифриловый шар булавы .desc = { ent-CP14ModularBladeMaceBase.desc } -ent-CP14ModularBladePickaxeBase = None +ent-CP14ModularBladePickaxeBase = головка кирки .desc = Массивная острая головка кирки без рукояти. Кузнец может использовать это, чтобы сделать инструмент. ent-CP14ModularBladeIronPickaxe = железная головка кирки @@ -2732,7 +2879,7 @@ ent-CP14ModularBladeCopperPickaxe = медная головка кирки ent-CP14ModularBladeMithrilPickaxe = мифриловая головка кирки .desc = { ent-CP14ModularBladePickaxeBase.desc } -ent-CP14ModularBladeRapierBase = None +ent-CP14ModularBladeRapierBase = лезвие рапиры .desc = Лезвие рапиры без рукояти. Кузнец может использовать это, чтобы сделать оружие. ent-CP14ModularBladeIronRapier = железное лезвие рапиры @@ -2747,7 +2894,7 @@ ent-CP14ModularBladeCopperRapier = медное лезвие рапиры ent-CP14ModularBladeMithrilRapier = мифриловое лезвие рапиры .desc = { ent-CP14ModularBladeRapierBase.desc } -ent-CP14ModularBladeShovelBase = None +ent-CP14ModularBladeShovelBase = лезвие лопаты .desc = Лезвие лопаты без рукояти. Кузнец может использовать его как запасную часть для создания инструмента. ent-CP14ModularBladeIronShovel = железное лезвие лопаты @@ -2762,7 +2909,7 @@ ent-CP14ModularBladeCopperShovel = медное лезвие лопаты ent-CP14ModularBladeMithrilShovel = мифриловое лезвие лопаты .desc = { ent-CP14ModularBladeShovelBase.desc } -ent-CP14ModularBladeSickleBase = None +ent-CP14ModularBladeSickleBase = лезвие серпа .desc = Серповидный клинок без рукояти. Кузнец может использовать его как запасную часть для создания оружия. ent-CP14ModularBladeIronSickle = железное лезвие серпа @@ -2777,7 +2924,22 @@ ent-CP14ModularBladeGoldSickle = золотое лезвие серпа ent-CP14ModularBladeMithrilSickle = мифриловое лезвие серпа .desc = { ent-CP14ModularBladeSickleBase.desc } -ent-CP14ModularBladeSpearBase = None +ent-CP14ModularBladeSkimitarBase = клинок скимитара + .desc = Клинок скимитара без рукояти. Кузнец может использовать его как запасную часть для создания оружия. + +ent-CP14ModularBladeIronSkimitar = железное лезвие скимитара + .desc = { ent-CP14ModularBladeSkimitarBase.desc } + +ent-CP14ModularBladeGoldSkimitar = золотое лезвие скимитара + .desc = { ent-CP14ModularBladeSkimitarBase.desc } + +ent-CP14ModularBladeCopperSkimitar = медное лезвие скимитара + .desc = { ent-CP14ModularBladeSkimitarBase.desc } + +ent-CP14ModularBladeMithrilSkimitar = мифриловое лезвие скимитара + .desc = { ent-CP14ModularBladeSkimitarBase.desc } + +ent-CP14ModularBladeSpearBase = наконечник копья .desc = Наконечник копья. Кузнец может использовать его как запасную часть для создания оружия. ent-CP14ModularBladeIronSpear = железный наконечник копья @@ -2792,7 +2954,7 @@ ent-CP14ModularBladeCopperSpear = медный наконечник копья ent-CP14ModularBladeMithrilSpear = мифриловый наконечник копья .desc = { ent-CP14ModularBladeSpearBase.desc } -ent-CP14ModularBladeSwordBase = None +ent-CP14ModularBladeSwordBase = лезвие меча .desc = Лезвие меча без рукояти. Кузнец может использовать это, чтобы сделать оружие. ent-CP14ModularBladeIronSword = железное лезвие меча @@ -2810,7 +2972,7 @@ ent-CP14ModularBladeMithrilSword = мифриловое лезвие меча ent-CP14ModularBladeBoneSword = костяное лезвие меча .desc = { ent-CP14ModularBladeSwordBase.desc } -ent-CP14ModularGardeBase = None +ent-CP14ModularGardeBase = гарда .desc = Гарда? Гарда! ent-CP14ModularGardeGuildmaster = гарда рапиры гильдмастера @@ -2840,10 +3002,10 @@ ent-CP14ModularGardeSturdyCopper = прочная медная гарда ent-CP14ModularGardeSturdyMithril = прочная мифриловая гарда .desc = { ent-CP14ModularGardeBase.desc } -ent-CP14ModularInlayBase = None +ent-CP14ModularInlayBase = кварцевая инкрустация .desc = Небольшая деталь, которую можно вставить в оружие или инструмент. -ent-CP14ModularInlayQuartzBase = None +ent-CP14ModularInlayQuartzBase = кварцевая инкрустация .desc = { ent-CP14ModularInlayBase.desc } ent-CP14ModularInlayQuartzWater = водная кварцевая инкрустация @@ -2864,7 +3026,7 @@ ent-CP14ModularInlayQuartzElectric = электрическая кварцева ent-CP14ModularInlayQuartzDarkness = пространственная кварцевая инкрустация .desc = { ent-CP14ModularInlayQuartzBase.desc } -ent-CP14ModularBladeTipBase = None +ent-CP14ModularBladeTipBase = наконечник стрелы .desc = Наконечник на древке стрелы, хорошо обработанный кусочек металла. ent-CP14ModularTipIronArrow = железный наконечник стрелы @@ -2995,6 +3157,13 @@ ent-CP14SackFarmingWheat = { ent-CP14SackFarming } .desc = { ent-CP14SackFarming.desc } .suffix = Пшеница +ent-CP14SackFarmingSeed = мешочек для семян + .desc = Мешочек для хранения семян растений. + +ent-CP14SackFarmingSeedFull = { ent-CP14SackFarmingSeed } + .desc = { ent-CP14SackFarmingSeed.desc } + .suffix = Полный + ent-CP14SeedWheat = семена пшеницы .desc = Маленькие семена пшеницы. Что вы будете с ними делать? Размолоть в муку или посадить снова? @@ -3016,6 +3185,12 @@ ent-CP14SeedPepper = семена перца ent-CP14SeedSage = семена шалфея .desc = Семена шалфея. Пришло время выращивать интересные травы! +ent-CP14SeedCotton = семена хлопка + .desc = Семена хлопка. Пора выращивать брюки! + +ent-CP14GuardBell = сторожевой колокол + .desc = Мощный колокол, сообщающий на всё поселение о возможной угрозе. + ent-CP14HerbalBandage = травяной бинт .desc = Бинт для перевязки, сплетенный из травы. Не самая надежная и полезная вещь, но лучше, чем ничего. .suffix = 5 @@ -3032,17 +3207,9 @@ ent-CP14Gauze1 = { ent-CP14Gauze } .desc = { ent-CP14Gauze.desc } .suffix = 1 -ent-CP14EnergyCrystalBase = None +ent-CP14EnergyCrystalBase = энергокристалл .desc = Осколок кристалла, способный накапливать магическую энергию. -ent-CP14EnergyCrystalSmall = небольшой энергокристалл - .desc = { ent-CP14EnergyCrystalBase.desc } - .suffix = Полный - -ent-CP14EnergyCrystalSmallEmpty = { ent-CP14EnergyCrystalSmall } - .desc = { ent-CP14EnergyCrystalSmall.desc } - .suffix = Пустой - ent-CP14EnergyCrystalMedium = энергокристалл .desc = { ent-CP14EnergyCrystalBase.desc } .suffix = Полный @@ -3108,16 +3275,8 @@ ent-CP14RitualChalk = ритуальный мелок ent-CP14Bucket = ведро .desc = Старое скучное ведро -ent-CP14BaseSubdimensionalKey = ключ демиплана - .desc = Ядро, соединяющее реальный мир с демипланом. Используйте его, чтобы открыть временный проход в другой мир. - -ent-CP14DemiplaneKeyT1 = { ent-CP14BaseSubdimensionalKey } - .desc = { ent-CP14BaseSubdimensionalKey.desc } - .suffix = Уровень 3 - -ent-CP14DemiplaneKeyT2 = { ent-CP14BaseSubdimensionalKey } - .desc = { ent-CP14BaseSubdimensionalKey.desc } - .suffix = Уровень 6 +ent-CP14BaseDemiplaneKey = ключ координат демиплана + .desc = Временный сгусток энергии, соединяющий реальный мир и демипланетный. Используйте его, пока он не рассеялся. ent-CP14CrystalLampBlueEmpty = голубая кристалльная лампа .desc = { ent-CP14CrystalLamp.desc } @@ -3134,12 +3293,12 @@ ent-CP14Rope = веревка ent-CP14Scissors = ножницы .desc = Инструмент для измельчения шерсти, волос, одежды и, при неосторожном обращении, даже пальцев. +ent-CP14Screwdriver = отвёртка + .desc = Крутящий момент промышленного уровня в небольшом корпусе для завинчивания. + ent-CP14BaseSharpeningStone = точильный камень .desc = Позволит заточить притупленное оружие. Если перестараться, вы вполне можете сточить оружие полностью. -ent-CP14Torch = факел - .desc = В основе - палка, горящая с одной стороны. Используется для освещения территории. - ent-CP14TorchIgnited = { ent-CP14Torch } .desc = { ent-CP14Torch.desc } .suffix = Подожженный @@ -3150,7 +3309,7 @@ ent-CP14WallpaperBank = обои "честность банкира" ent-CP14WallpaperBank2 = обои "богатство банкира" .desc = { ent-CP14BaseWallpaper.desc } -ent-CP14BaseWallpaper = None +ent-CP14BaseWallpaper = обои .desc = Обои из тонкой бумаги. Их можно наклеить на стены с любых сторон или содрать любым острым предметом. ent-CP14WallpaperBlack = обои "чернильная тьма" @@ -3193,6 +3352,12 @@ ent-CP14ModularIronAxe = железный топор ent-CP14ModularIronDagger = железный кинжал .desc = Маленький, многофункциональный, острый клинок. Им можно резать мясо или бросать в гоблинов. +ent-CP14ModularIronDaggerTundra = кинжал Тундры + .desc = Маленький, многоцелевой, острый клинок. Им можно резать мясо или бросать в гоблина. На нем выгравировано слово «тундра». + +ent-CP14ModularIronDaggerAgony = кинжал Агонии + .desc = Маленький, многоцелевой, острый клинок. Им можно резать мясо или бросать в гоблина. На нем выгравировано слово «агония». + ent-CP14ModularIronHammer = железный молоток .desc = Небольшой молоток. Хорошо подходит для плотницких работ, а также для раскалывания черепов. @@ -3205,6 +3370,9 @@ ent-CP14ModularIronMace = железная булава ent-CP14ModularIronPickaxe = железная кирка .desc = Идеальна для забуривания в камни. +ent-CP14ModularIronRapier = железная рапира + .desc = Золотой стандарт остроконечного оружия. Средняя длина, удобная рукоять. Без излишеств. + ent-CP14ModularGuildmasterRapier = личная рапира гильдмастера .desc = Личное оружие, выдаваемое каждому гильдмастеру. Сочетает в себе надежность и убойную силу. @@ -3214,6 +3382,9 @@ ent-CP14ModularIronShovel = железная лопата ent-CP14ModularIronSickle = железный серп .desc = Серп, изначально созданный как оружие для борьбы с травой, неожиданно оказался хорош и для сбора более кровавого урожая. +ent-CP14ModularIronSkimitar = железный скимитар + .desc = Золотой стандарт остроконечного оружия. Средняя длина, удобная рукоять. Без излишеств. + ent-CP14ModularIronSpear = железное копье .desc = Копье - это оружие, эффективность которого выдержала испытание временем. @@ -3232,6 +3403,14 @@ ent-CP14ModularSkeletonHalberd = костяная алебарда ent-CP14ModularSkeletonSword = костяной меч .desc = Чудовищное оружие из кости. +ent-CP14ModularSkeletonHalberdUpgrade = костяная алебарда + .desc = Чудовищное оружие из кости. + .suffix = Усиленный + +ent-CP14ModularSkeletonSwordUpgrade = костяной меч + .desc = Чудовищное оружие из кости. + .suffix = Усиленный + ent-CP14BowCombat = боевой лук .desc = Стандартный боевой @@ -3257,37 +3436,6 @@ ent-CP14CrossboltMithril = мифриловый арбалетный болт ent-CP14SpikeWhistle = шип .desc = Органический шип с неизвестной жидкостью внутри. -ent-CP14RitualEnd = конец ритуала - -ent-CP14_NeutralCluster_Root = Te-Se-Ra - .desc = Идеальная энергетическая позиция для начала любого ритуала. - -ent-CP14_NeutralCluster_00 = Li-Ra - -ent-CP14WallmountCrystalRubies = { ent-CP14WallmountCrystalBase } - .desc = { ent-CP14WallmountCrystalBase.desc } - .suffix = Красный - -ent-CP14WallmountCrystalTopazes = { ent-CP14WallmountCrystalBase } - .desc = { ent-CP14WallmountCrystalBase.desc } - .suffix = Жёлтый - -ent-CP14WallmountCrystalEmeralds = { ent-CP14WallmountCrystalBase } - .desc = { ent-CP14WallmountCrystalBase.desc } - .suffix = Зеленый - -ent-CP14WallmountCrystalSapphires = { ent-CP14WallmountCrystalBase } - .desc = { ent-CP14WallmountCrystalBase.desc } - .suffix = Голубой - -ent-CP14WallmountCrystalAmethysts = { ent-CP14WallmountCrystalBase } - .desc = { ent-CP14WallmountCrystalBase.desc } - .suffix = Фиолетовый - -ent-CP14WallmountCrystalDiamonds = { ent-CP14WallmountCrystalBase } - .desc = { ent-CP14WallmountCrystalBase.desc } - .suffix = Белый - ent-CP14Lighthouse = маяк .desc = Свет во тьме. @@ -3297,6 +3445,9 @@ ent-CP14DPSMeter = DPS Meter ent-CP14RoundLeaver = дальний туман .desc = Вы достигли края игровой карты. Дальше ничего нет. Вы можете использовать этот туман, чтобы выйти из игры. +ent-CP14StoneWell = колодец + .desc = На дне этого колодца журчит чистая вода. Если у вас есть ведро, вы сможете дотянуться до него. + ent-CP14LaddersDownBase = лестница вниз .desc = Темные глубины подземного мира зовут вас. @@ -3532,17 +3683,20 @@ ent-CP14IronDoorWindowedGuardEntrance = { ent-CP14IronDoorWindowed } .desc = { ent-CP14IronDoorWindowed.desc } .suffix = Стража, Вход -ent-CP14FenceGateBigIronGuard = None +ent-CP14FenceGateBigIronGuard = { ent-CP14FenceGateBigIron } + .desc = { ent-CP14FenceGateBigIron.desc } .suffix = Стража ent-CP14IronDoorGuardGuildmaster = { ent-CP14IronDoor } .desc = { ent-CP14IronDoor.desc } .suffix = Гильдмастер -ent-CP14FenceGateBigIronGuildmaster = None +ent-CP14FenceGateBigIronGuildmaster = { ent-CP14FenceGateBigIron } + .desc = { ent-CP14FenceGateBigIron.desc } .suffix = Гильдмастер -ent-CP14FenceGateBigIronDemiplaneCrystal = None +ent-CP14FenceGateBigIronDemiplaneCrystal = { ent-CP14FenceGateBigIron } + .desc = { ent-CP14FenceGateBigIron.desc } .suffix = Кристалл Демиплана ent-CP14WoodenDoorMerchantShop1 = { ent-CP14WoodenDoor } @@ -3623,22 +3777,23 @@ ent-CP14WoodenDoorPersonalHouse16 = { ent-CP14WoodenDoor } ent-CP14WoodenDoorRandomLocked = { ent-CP14WoodenDoor } .desc = { ent-CP14WoodenDoor.desc } - .suffix = Случайный замок (Комплекс 3) + .suffix = Случайный замок (Сложность 3) ent-CP14WoodenDoorWindowedRandomLocked = { ent-CP14WoodenDoorWindowed } .desc = { ent-CP14WoodenDoorWindowed.desc } - .suffix = Случайный замок (Комплекс 3) + .suffix = Случайный замок (Сложность 3) ent-CP14IronDoorRandomLocked = { ent-CP14IronDoor } .desc = { ent-CP14IronDoor.desc } - .suffix = Случайный замок (Комплекс 5) + .suffix = Случайный замок (Сложность 5) ent-CP14IronDoorWindowedRandomLocked = { ent-CP14IronDoorWindowed } .desc = { ent-CP14IronDoorWindowed.desc } - .suffix = Случайный замок (Комплекс 5) + .suffix = Случайный замок (Сложность 5) -ent-CP14FenceGateBigIronRandomLocked = None - .suffix = Случайный замок (Комплекс 5) +ent-CP14FenceGateBigIronRandomLocked = { ent-CP14FenceGateBigIron } + .desc = { ent-CP14FenceGateBigIron.desc } + .suffix = Случайный замок (Сложность 5) ent-CP14WoodenDoorTavernStaff = { ent-CP14WoodenDoor } .desc = { ent-CP14WoodenDoor.desc } @@ -3671,7 +3826,8 @@ ent-CP14WoodenDoorWindowedTavernHall = { ent-CP14WoodenDoorWindowed } ent-CP14BaseFenceBig = большой забор .desc = Чтобы перебраться на другую сторону, вам обязательно понадобится поленница. -ent-CP14FenceBigWoodenBirch = None +ent-CP14FenceBigWoodenBirch = { ent-CP14BaseFenceBig } + .desc = { ent-CP14BaseFenceBig.desc } .suffix = Дерево. Берёза. ent-CP14FenceBigIron = { ent-CP14BaseFenceBig } @@ -3681,7 +3837,8 @@ ent-CP14FenceBigIron = { ent-CP14BaseFenceBig } ent-CP14BaseFenceGateBig = большие ворота забора .desc = Большие ворота размером с человека. Каков ваш следующий шаг? -ent-CP14FenceGateBigWoodenBirch = None +ent-CP14FenceGateBigWoodenBirch = { ent-CP14BaseFenceGateBig } + .desc = { ent-CP14BaseFenceGateBig.desc } .suffix = Дерево. Берёза. ent-CP14Cliff = обрыв @@ -3707,13 +3864,15 @@ ent-CP14CliffEndRight = { ent-CP14Cliff } ent-CP14BaseFence = забор .desc = Низкий забор, ограничивающий движение чисто номинально. -ent-CP14FenceWoodenBirch = None +ent-CP14FenceWoodenBirch = { ent-CP14BaseFence } + .desc = { ent-CP14BaseFence.desc } .suffix = Дерево. Берёза ent-CP14BaseFenceGate = ворота забора .desc = У вас есть два пути. Вы можете открыть дверь, как обычный человек, или перелезть через неё, как смешной человек. -ent-CP14FenceGateWoodenBirch = None +ent-CP14FenceGateWoodenBirch = { ent-CP14BaseFenceGate } + .desc = { ent-CP14BaseFenceGate.desc } .suffix = Дерево. Берёза. ent-CP14BaseFenceWindow = окно забора @@ -3820,61 +3979,19 @@ ent-CP14FloraTreeBirchLarge = { ent-CP14BaseTree } ent-CP14CrystalBase = кварц .desc = Природные кристаллы кварца, способные впитывать магическую энергию окружающего мира. -ent-CP14CrystalEmpty = { ent-CP14CrystalBase } +ent-CP14CrystalQuartz = { ent-CP14CrystalBase } .desc = { ent-CP14CrystalBase.desc } .suffix = Нормальный -ent-CP14CrystalEarth = { ent-CP14CrystalBase } - .desc = { ent-CP14CrystalBase.desc } - .suffix = Terra - -ent-CP14CrystalFire = { ent-CP14CrystalBase } - .desc = { ent-CP14CrystalBase.desc } - .suffix = Ignis - -ent-CP14CrystalWater = { ent-CP14CrystalBase } - .desc = { ent-CP14CrystalBase.desc } - .suffix = Aqua - -ent-CP14CrystalAir = { ent-CP14CrystalBase } - .desc = { ent-CP14CrystalBase.desc } - .suffix = Aer - -ent-CP14CrystalOrder = { ent-CP14CrystalBase } - .desc = { ent-CP14CrystalBase.desc } - .suffix = Ordo - -ent-CP14CrystalChaos = { ent-CP14CrystalBase } - .desc = { ent-CP14CrystalBase.desc } - .suffix = Perditio - -ent-CP14CrystalShardBase = осколок кварца - .desc = Природные кристаллы кварца, способные впитывать магическую энергию окружающего мира. - -ent-CP14CrystalShardEarth = terra осколок кварца - .desc = { ent-CP14CrystalShardBase.desc } - -ent-CP14CrystalShardFire = ignis осколок кварца - .desc = { ent-CP14CrystalShardBase.desc } - -ent-CP14CrystalShardWater = aqua осколок кварца - .desc = { ent-CP14CrystalShardBase.desc } - -ent-CP14CrystalShardAir = aer осколок кварца - .desc = { ent-CP14CrystalShardBase.desc } - -ent-CP14CrystalShardOrder = ordo осколок кварца - .desc = { ent-CP14CrystalShardBase.desc } - -ent-CP14CrystalShardChaos = perditio осколок кварца - .desc = { ent-CP14CrystalShardBase.desc } - ent-CP14GatherablePlantBase = { ent-CP14GatherableBase } .desc = { ent-CP14GatherableBase.desc } ent-CP14PlantCabbage = капуста .desc = Вы видите перед собой капусту. Возможно, вы родились в такой же. +ent-CP14PlantCotton = хлопок + .desc = В некотором смысле вы выращиваете будущую одежду. + ent-CP14PlantCucumber = огурцы .desc = Не доверяйте людям, которые умеют превращаться в огурцы. @@ -3899,7 +4016,7 @@ ent-CP14PlantTomatoes = помидоры ent-CP14PlantWheat = пшеница .desc = Самая популярная культура. Неприхотливая, она открывает путь к изобилию мучных изделий. -ent-CP14GatherableBloodFlower = кровьцветы +ent-CP14GatherableBloodFlower = кровоцвет .desc = Алые цветы растут там, где пролилась кровь. .suffix = Собираемый @@ -4161,10 +4278,22 @@ ent-CP14TableWoodenCounter = деревянная стойка ent-CP14TableMarble = мраморный стол .desc = Изысканный стол из белого мрамора. -ent-CP14WallmountTorch = настенный факел - .desc = Хороший, надёжный источник света. Жаль, недолговечный. +ent-CP14BaseTorch = факел + .desc = Хороший, надежный источник света. Жаль, что он недолговечен. -ent-CP14WallmountTorchAlwaysPowered = вечногорящий настенный факел +ent-CP14FloorTorchIgnited = { ent-CP14FloorTorch } + .desc = { ent-CP14BaseTorch.desc } + .suffix = Зажжённый + +ent-CP14FloorTorchAlwaysPowered = напольный факел + .suffix = Debug, Бесконечный + +ent-CP14WallmountTorchIgnited = { ent-CP14WallmountTorch } + .desc = { ent-CP14WallmountTorch.desc } + .suffix = Зажжённый + +ent-CP14WallmountTorchAlwaysPowered = настенный факел + .suffix = Debug, Бесконечный ent-CP14WallmountBarShelfA = барная полка .desc = Настенные полки для хранения коллекции вин. @@ -4203,6 +4332,16 @@ ent-CP14DemiplanePassway = разлом демиплана ent-CP14DemiplanePasswayRed = { ent-CP14DemiplanePassway } .desc = { ent-CP14DemiplanePassway.desc } +ent-CP14DemiplaneLinkCrystal = кристалл связи демиплана + .desc = Поддерживает связь с демипланами во время заряда. Вызывает монстров из демипланов атаковать город. Когда он разряжается, игра заканчивается. + .suffix = ОДИН НА КАРТУ + +ent-CP14PortalFrameCrystal = рамка портала + .desc = Структура из теневых кристаллов, используемая для создания стабильного портала в другое место. + +ent-CP14DemiplaneCore = демиплановое ядро + .desc = Сердце демиплана. Ваша задача - вынести его из демиплана в целости и сохранности и передать гильдмастеру. + ent-CP14PressurePlateBase = нажимная пластина .desc = Эта кнопка может активировать что-то! @@ -4271,13 +4410,6 @@ ent-CP14EssenceNodeChaos = { ent-CP14BaseEssenceNode } ent-CP14EssenceSplitterImpactEffect = воздействие разделителя эссенции -ent-CP14DemiplaneLinkCrystal = кристалл связи демиплана - .desc = Поддерживает связь с демипланами во время заряда. Вызывает монстров из демипланов атаковать город. Когда он разряжается, игра заканчивается. - .suffix = ONE TO MAP - -ent-CP14PortalFrameCrystal = рамка портала - .desc = Структура из теневых кристаллов, используемая для создания стабильного портала в другое место. - ent-CP14ChestGeneric = сундук .desc = Сундук. @@ -4307,6 +4439,9 @@ ent-CP14WallDirt = земляная стена ent-CP14WallSnow = снежная стена .desc = Высокая куча снега. Можно ли построить из нее юрту? +ent-CP14WallDimensit = дименситовая стена + .desc = Твердая форма межпространственного континуума. + ent-CP14WallStoneCopperOre = { ent-CP14WallStone } .desc = Природная стена из цельного камня. На ней видны острые вкрапления меди. .suffix = медная руда @@ -4341,12 +4476,14 @@ ent-CP14WallStonebrickOld = старая кирпичная стена ent-CP14BaseWall = стена .desc = Достаточно прочная, чтобы укрыть вас от угрозы или холодного ветра. -ent-CP14BaseWallFrame = None +ent-CP14BaseWallFrame = каркас .desc = Сейчас эта стена находится в неопределенном состоянии между существованием и небытием. ent-CP14WallFrameWoodenBirch = { ent-CP14WallFrameWooden } + .desc = { ent-CP14BaseWallFrame.desc } ent-CP14WallWoodenBirch = { ent-CP14WallWooden } + .desc = { ent-CP14BaseWall.desc } ent-CP14WindowDirectional = направленное окно .desc = Не заляпайте стекло. @@ -4363,20 +4500,10 @@ ent-CP14WindowIceBlock = блок льда ent-CP14AstralCorrosion = астральное заражение .desc = Светящиеся трещины в реальности. Возможно, это нормально. -ent-CP14SkillTreePyrokineticLoadoutDummy = Пирокинетика - -ent-CP14SkillTreeHydrosophistryLoadoutDummy = Гидрософистика - -ent-CP14SkillTreeIllusionLoadoutDummy = Иллюзия - -ent-CP14SkillTreeMetamagicLoadoutDummy = Метамагия - -ent-CP14SkillTreeHealingLoadoutDummy = Животворение - -ent-CP14SkillTreeAtlethicLoadoutDummy = Атлетика - ent-CP14DemiplaneArtifactRoomSpawner = Спавнер комнаты артефактов в демиплане +ent-CP14DemiplanCoreRoomMarker = Спавнер комнаты Демипланового ядра + ent-CP14DemiplanEnterRoomMarker = Спавнер комнаты входа в демиплан ent-CP14DemiplaneRuinsRoomSpawner = Спавнер руин демиплана @@ -4387,6 +4514,8 @@ ent-CP14MindRoleRaidAntag = Роль антага рейда ent-CP14MindRoleVampire = Роль Вампира +ent-CP14MindRoleBloodMoonCursed = Проклятая роль Кровавой луны + ent-CP14SmallWoodenCrateFilled = { ent-CP14SmallWoodenCrate } .desc = { ent-CP14SmallWoodenCrate.desc } .suffix = Заполненный, Инструменты и вещи @@ -4408,6 +4537,9 @@ ent-CP14ClothingCloakMaidArpon = фартук горничной ent-CP14ClothingCloakAlchemist = плащ алхимика .desc = Дорогая ткань, выдерживающая брызги кислоты, - стандарт для экспертов-алхимиков. +ent-CP14ClothingCloakAlchemistMantle = мантия алхимика + .desc = Дорогая ткань, выдерживающая брызги кислоты, - стандарт для экспертов-алхимиков. + ent-CP14ClothingCloakBlacksmithArpon = фартук кузнеца .desc = Свободные кожаные полоски, остающиеся на самом деле одеждой. @@ -4438,6 +4570,12 @@ ent-CP14ClothingOuterClothingBrownVest3 = лёгкий кожаный жилет ent-CP14ClothingOuterClothingJagermeisterWaistcoat = жилетка егермейстера .desc = Не мешает двигаться, выглядит сдержанно. Пора отправляться на охоту. +ent-CP14ClothingOuterClothingGreenVest2 = зелёный жилет + .desc = Стильный зелёный жилет с золотыми пуговицами. + +ent-CP14ClothingOuterClothingPurple = фиолетовый жилет + .desc = Стильный фиолетовый жилет. + ent-CP14ClothingOuterClothingMerchantWaistCoat = купеческий жилет .desc = Стильный жилет из дорогой кожи. Специальная униформа для торговцев, которая заставляет клиентов чувствовать себя нищими. @@ -4465,7 +4603,7 @@ ent-CP14BaseMobSkeleton = Мистер Скелет ent-CP14BaseMobZombie = Мистер Зомби -ent-CP14FoodEggBase = None +ent-CP14FoodEggBase = яйцо .desc = Овальное яйцо! ent-CP14FoodTomatoes = помидор @@ -4480,6 +4618,9 @@ ent-CP14ManaOperationGlove = мана-перчатка ent-CP14CrystalLamp = кристалльная лампа .desc = Устройство, преобразующее энергию кристаллов в источник направленного света. Удобно для путешествий. +ent-CP14Torch = факел + .desc = В основе - палка, горящая с одной стороны. Используется для освещения территории. + ent-CP14MagicHealingStaff = посох исцеления .desc = Длинная, наполовину технологическая, наполовину магическая палка, предназначенная для преобразования магической энергии в целительные заклинания. @@ -4492,9 +4633,6 @@ ent-CP14BaseMop = деревянная швабра ent-CP14BaseWrench = гаечный ключ .desc = Обычный инструмент для сборки и разборки. Помните: левша защелкивается, правша снимается. -ent-CP14WallmountCrystalBase = сверкающий кварц - .desc = Биолюминесцентные кристаллы кварца, которые могут принимать любой цвет, - очень удобный источник света в глубоких пещерах. К сожалению, светящиеся свойства очень трудно сохранить. - ent-CP14AstralHaze = астральная мгла ent-CP14CobwebRight1 = паутина @@ -4523,10 +4661,77 @@ ent-CP14WoodenDoorWindowed = деревянная дверь с окном .desc = Не самая прочная конструкция, но это лучше, чем ничего. .suffix = Открыто +ent-CP14WoodenDoorAlchemyMirrored1 = { ent-CP14WoodenDoorAlchemy1 } + .desc = { ent-CP14WoodenDoorAlchemy1.desc } + .suffix = Алхимия 1, Зеркальная + +ent-CP14WoodenDoorAlchemyMirrored2 = { entCP14WoodenDoorAlchemy2 } + .desc = { ent-CP14WoodenDoorAlchemy2.desc } + .suffix = Алхимия 2, Зеркальная + +ent-CP14WoodenDoorAlchemyMirrored3 = { ent-CP14WoodenDoorAlchemy3 } + .desc = { ent-CP14WoodenDoorAlchemy3.desc } + .suffix = Алхимия 3, Зеркальная + +ent-CP14IronDoorMirroredBlacksmith1 = { ent-CP14IronDoorBlacksmith1 } + .desc = { ent-CP14IronDoorBlacksmith1.desc } + .suffix = Кузница 1, Зеркальная + +ent-CP14IronDoorMirroredBlacksmith2 = { ent-CP14IronDoorBlacksmith2 } + .desc = { ent-CP14IronDoorBlacksmith2.desc } + .suffix = Кузница 2, Зеркальная + +ent-CP14IronDoorMirroredBlacksmith3 = { ent-CP14IronDoorBlacksmith3 } + .desc = { ent-CP14IronDoorBlacksmith3.desc } + .suffix = Кузница 3, Зеркальная + +ent-CP14IronDoorWindowedMirroredGuardEntrance = { ent-CP14IronDoorWindowedGuardEntrance } + .desc = { ent-CP14IronDoorWindowedGuardEntrance.desc } + .suffix = Стража, Вход, Зеркальная + +ent-CP14WoodenDoorMerchantShopMirrored1 = { ent-CP14WoodenDoorMerchantShop1 } + .desc = { ent-CP14WoodenDoorMerchantShop1.desc } + .suffix = Торговый магазин 1, Зеркальная + +ent-CP14WoodenDoorMerchantShopMirrored2 = { ent-CP14WoodenDoorMerchantShop2 } + .desc = { ent-CP14WoodenDoorMerchantShop2.desc } + .suffix = Торговый магазин 2, Зеркальная + +ent-CP14WoodenDoorMerchantShopMirrored3 = { ent-CP14WoodenDoorMerchantShop3 } + .desc = { ent-CP14WoodenDoorMerchantShop3.desc } + .suffix = Торговый магазин 3, Зеркальная + +ent-CP14WoodenDoorTavernStaffMirrored = { ent-CP14WoodenDoorTavernStaff } + .desc = { ent-CP14WoodenDoorTavernStaff.desc } + .suffix = Персонал таверны, Зеркальная + +ent-CP14WoodenDoorTavernHallMirrored = { ent-CP14WoodenDoorWindowedTavernHall } + .desc = { ent-CP14WoodenDoorWindowedTavernHall.desc } + .suffix = Зал таверны, Зеркальная + +ent-CP14FenceBigWooden = { ent-CP14BaseFenceBig } + .desc = { ent-CP14BaseFenceBig.desc } + .suffix = Дерево + +ent-CP14FenceGateBigWooden = { ent-CP14BaseFenceGateBig } + .desc = { ent-CP14BaseFenceGateBig.desc } + .suffix = Дерево + ent-CP14FenceGateBigIron = { ent-CP14BaseFenceGateBig } .desc = { ent-CP14BaseFenceGateBig.desc } .suffix = Железо +ent-CP14FenceWooden = { ent-CP14BaseFence } + .desc = { ent-CP14BaseFence.desc } + .suffix = Дерево + +ent-CP14FenceGateWooden = { ent-CP14BaseFenceGate } + .desc = { ent-CP14BaseFenceGate.desc } + .suffix = Дерево + +ent-CP14GatherablePlantSingleHarvestBase = { ent-CP14BaseFlammableSpreading } + .desc = { ent-CP14BaseFlammableSpreading.desc } + ent-CP14GatherableWaterAirLily = воздушная лилия .desc = Легкий, нежный и воздушный цветок. Говорят, что его особые свойства позволяют людям даже дышать под водой... .suffix = Собираемый @@ -4570,6 +4775,9 @@ ent-CP14Mannequin = манекен ent-CP14WoodenPallet = деревянный поддон .desc = Деревянная подставка для товаров. +ent-CP14ResearchTable = исследовательский стол + .desc = Место для исследований, экспериментов и открытий, позволяющее вам стать умнее. + ent-CP14Safe = сейф .desc = Гигантский железный ящик для хранения самых ценных вещей. Очень тяжелый и очень прочный. @@ -4582,6 +4790,12 @@ ent-CP14TargetStake = стойка под мишень ent-CP14TargetEffigy = чучело-мишень .desc = Мишень - чучело для отработки ударов ближнего боя.... или магии. +ent-CP14FloorTorch = напольный факел + .desc = { ent-CP14BaseTorch.desc } + +ent-CP14WallmountTorch = настенный факел + .desc = { ent-CP14BaseTorch.desc } + ent-CP14WallmountLampEmpty = хрустальный настенный светильник .desc = Простой настенный магический прибор, преобразующий энергию кристаллов в яркий свет. .suffix = Пустой @@ -4647,8 +4861,10 @@ ent-CP14WallWoodenPalisade = частокол .desc = Стена из острых бревен. Не то чтобы это было безопасное убежище. ent-CP14WallFrameWooden = деревянная настенная рама + .desc = { ent-CP14BaseWallFrame.desc } ent-CP14WallWooden = деревянная стена + .desc = { ent-CP14BaseWall.desc } ent-CP14WindowWooden = деревянное окно .desc = Деревянная стена со стеклянным окном в ней. diff --git a/Resources/Locale/ru-RU/_CP14/antag/antags.ftl b/Resources/Locale/ru-RU/_CP14/antag/antags.ftl index d3d87cb8fb..6b7da30104 100644 --- a/Resources/Locale/ru-RU/_CP14/antag/antags.ftl +++ b/Resources/Locale/ru-RU/_CP14/antag/antags.ftl @@ -1,3 +1,7 @@ cp14-roles-antag-vampire-name = Вампир cp14-roles-antag-vampire-objective = Вы - паразит на теле общества, ненавидимый окружающими, сгораемый под солнцем и вечно голодный. Вам необходимо питаться кровью разумных, чтобы выжить. И найти тех, кто добровольно будет готов стать вашей кормушкой непросто... -cp14-roles-antag-vampire-briefing = Вы - паразит на теле общества. Оно вас ненавидит и боится, но кровь живых - ваша единственная пища. Природа уничтожает вас солнечным светом, и вам приходится скрываться в тени. Словно весь мир пытается вас уничтожить, но ваше желание жить сильнее всего этого. ВЫЖИВИТЕ. Это все что от вас требуется. \ No newline at end of file +cp14-roles-antag-vampire-briefing = Вы - паразит на теле общества. Оно вас ненавидит и боится, но кровь живых - ваша единственная пища. Природа уничтожает вас солнечным светом, и вам приходится скрываться в тени. Словно весь мир пытается вас уничтожить, но ваше желание жить сильнее всего этого. ВЫЖИВИТЕ. Это все что от вас требуется. + +cp14-roles-antag-blood-moon-cursed-name = Проклятый кровавой луны +cp14-roles-antag-blood-moon-cursed-objective = Некоторые существа теряют голову, и могут совершать немыслимые зверства, когда из-за горизонта всходит проклятая кровавая луна... +cp14-roles-antag-blood-moon-cursed-briefing = Кровавая луна обретает контроль над вашими помыслами. В вас просыпается жажда крови, и голоса в вашей голове твердят только одно: Убивай, убивай, убивай... убивай, пока луна в расцвете сил. Убивай, пока солнце не восстановило твой рассудок. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/discord/queue.ftl b/Resources/Locale/ru-RU/_CP14/discord/queue.ftl index 6ec384c530..b42fd6fafe 100644 --- a/Resources/Locale/ru-RU/_CP14/discord/queue.ftl +++ b/Resources/Locale/ru-RU/_CP14/discord/queue.ftl @@ -2,4 +2,4 @@ queue-title = Очередь queue-quit = Отключиться queue-position = Позиция queue-total = Всего -queue-priority-join = Приоритетный вход \ No newline at end of file +queue-priority-join = О приоритетном входе \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/gameTicking/game-preserts.ftl b/Resources/Locale/ru-RU/_CP14/gameTicking/game-preserts.ftl index a8758e813a..20fc5f40c4 100644 --- a/Resources/Locale/ru-RU/_CP14/gameTicking/game-preserts.ftl +++ b/Resources/Locale/ru-RU/_CP14/gameTicking/game-preserts.ftl @@ -1,2 +1,5 @@ cp14-gamepreset-resource-harvest = Сбор ресурсов -cp14-gamepreset-resource-harvest-desc = Ваша экспедиция была направлена в опасное место для сбора ценных природных ресурсов. Добудьте необходимые материалы, и возвращайтесь. \ No newline at end of file +cp14-gamepreset-resource-harvest-desc = Ваша экспедиция была направлена в опасное место для сбора ценных природных ресурсов. Добудьте необходимые материалы, и возвращайтесь. + +cp14-judge-night-title = Судная ночь +cp14-judge-night-desc = Раз в десятилетие на небеса восходит кровавая луна, извращая умы и очерняя сердца. В эту ночь брат идет на брата, льется кровь и совершаются ужасные преступления. Поглотит ли вас сегодня проклятье луны? Переживете ли вы эту судную ночь? \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/gameTicking/gameRules/blood-moon.ftl b/Resources/Locale/ru-RU/_CP14/gameTicking/gameRules/blood-moon.ftl new file mode 100644 index 0000000000..8a1f4268b6 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/gameTicking/gameRules/blood-moon.ftl @@ -0,0 +1,6 @@ +cp14-bloodmoon-raising = Луна на небосводе обагривается кровью. Следующая ночь будет ужасной. +cp14-bloodmoon-start = Кровавая луна сияет в полную силу, порабощая разумы. +cp14-bloodmoon-end = Кровавая луна заходит за горизонт, теряя свою силу. + +cp14-bloodmoon-curse-removed = Проклятье кровавой луны развеивается. +cp14-bloodmoon-curse-examined = [color=red]Аура кровавой луны витает вокруг этого существа. Будьте осторожны, ибо его разум нестабилен.[/color] \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl b/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl index abd16bfc7c..285016ce92 100644 --- a/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl +++ b/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl @@ -15,6 +15,10 @@ cp14-loadout-general-spells = Заклинания cp14-loadout-skill-tree = Специализация cp14-loadout-general-keys = Ключи +# Adventurer + +cp14-loadout-adventurers-equip = Оружие авантюриста + # Apprentice cp14-loadout-apprentice-bundle = Набор подмастерья diff --git a/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl b/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl index 9a85abd3cc..59c63ec410 100644 --- a/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl +++ b/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl @@ -35,10 +35,9 @@ 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-city-gate = городские ворота +cp14-lock-shaper-guard-barracks = казармы cp14-lock-shaper-guard-commander = дом главы стражи -cp14-lock-shaper-guard-weapon-storage = хранилище оружия cp14-lock-shape-guildmaster = гильдмастер cp14-lock-shape-demiplane-crystal = кристалл демиплана \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/recipe/title.ftl b/Resources/Locale/ru-RU/_CP14/recipe/title.ftl index cb97c4fa1b..1b7e47053c 100644 --- a/Resources/Locale/ru-RU/_CP14/recipe/title.ftl +++ b/Resources/Locale/ru-RU/_CP14/recipe/title.ftl @@ -1 +1,2 @@ cp14-recipe-title-meat = разные кусочки сырого мяса +cp14-recipe-title-energy-crystal = энергокристаллы \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/requirements.ftl b/Resources/Locale/ru-RU/_CP14/skill/requirements.ftl index 777930e29b..f174639cf1 100644 --- a/Resources/Locale/ru-RU/_CP14/skill/requirements.ftl +++ b/Resources/Locale/ru-RU/_CP14/skill/requirements.ftl @@ -1,2 +1,4 @@ -cp14-skill-req-prerequisite = Навык "{$name}" должен быть изучен. -cp14-skill-req-species = Доступно только расе "{$name}" \ No newline at end of file +cp14-skill-req-prerequisite = Навык "{$name}" должен быть изучен +cp14-skill-req-species = Вы должны быть расы "{$name}" +cp14-skill-req-researched = Необходимо провести исследование на исследовательском столе +cp14-skill-req-impossible = Невозможно изучить во время раунда на текущий момент \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/skill_issue.ftl b/Resources/Locale/ru-RU/_CP14/skill/skill_issue.ftl new file mode 100644 index 0000000000..c95ad8bf01 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/skill/skill_issue.ftl @@ -0,0 +1,3 @@ +cp14-skill-issue-title = Чтобы эффективно пользовать этим оружием, необходимо владеть навыками: + +cp14-skill-issue = Проблемы с навыком! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/skill_meta.ftl b/Resources/Locale/ru-RU/_CP14/skill/skill_meta.ftl new file mode 100644 index 0000000000..c62c84b2e0 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/skill/skill_meta.ftl @@ -0,0 +1,34 @@ +cp14-skill-mastery-desc = Овладев искусством этого оружия, вы больше не будете неуклюже ронять его, или резать сами себя. + +cp14-skill-sword-mastery-name = Владение мечом +cp14-skill-parier-mastery-name = Владение рапирой +cp14-skill-skimitar-mastery-name = Владение скимитаром + +cp14-skill-pyro-t1-name = Базовая пирокинетика +cp14-skill-pyro-t2-name = Продвинутая пирокинетика +cp14-skill-pyro-t3-name = Экспертная пирокинетика + +cp14-skill-illusion-t1-name = Базовая иллюзия +cp14-skill-illusion-t2-name = Продвинутая иллюзия +cp14-skill-illusion-t3-name = Экспертная иллюзия + +cp14-skill-water-t1-name = Базовая гидрософистика +cp14-skill-water-t2-name = Продвинутая гидрософистика +cp14-skill-water-t3-name = Экспертная гидрософистика + +cp14-skill-life-t1-name = Базовое животворение +cp14-skill-life-t2-name = Продвинутое животворение +cp14-skill-life-t3-name = Экспертное животворение + +cp14-skill-meta-t1-name = Базовая метамагия +cp14-skill-meta-t2-name = Продвинутая метамагия +cp14-skill-meta-t3-name = Экспертная метамагия + +cp14-skill-alchemy-vision-name = Взор алхимика +cp14-skill-alchemy-vision-desc = Вы способны понимать какие именно жидкости находятся в емкостях, при помощи визуального анализа. + +cp14-skill-copper-melt-name = Плавка меди +cp14-skill-iron-melt-name = Плавка железа +cp14-skill-gold-melt-name = Плавка золота +cp14-skill-mithril-melt-name = Плавка мифрила +cp14-skill-glass-melt-name = Работа со стеклом \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/skill_tree.ftl b/Resources/Locale/ru-RU/_CP14/skill/skill_tree.ftl index cb8c66c017..fc6e87d21d 100644 --- a/Resources/Locale/ru-RU/_CP14/skill/skill_tree.ftl +++ b/Resources/Locale/ru-RU/_CP14/skill/skill_tree.ftl @@ -25,3 +25,14 @@ cp14-skill-tree-dimension-desc = Погрузитесь в природу про cp14-skill-tree-atlethic-name = Атлетика cp14-skill-tree-atlethic-desc = Развивайте свое тело, расширяя границы доступного. + +cp14-skill-tree-martial-name = Боевые исскуства +cp14-skill-tree-martial-desc = Овладейте секретами смертельного оружия, или сделайте оружием свое собственное тело. + +# Job + +cp14-skill-tree-thaumaturgy-name = Алхимия +cp14-skill-tree-thaumaturgy-desc = Исскуство создания волшебных зелий, способных убивать, воскрешать из мертвых или превращать существ в овечек. + +cp14-skill-tree-blacksmithing-name = Кузнечное дело +cp14-skill-tree-blacksmithing-desc = Исскуство превращения металла в различные полезные вещи. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/ui.ftl b/Resources/Locale/ru-RU/_CP14/skill/ui.ftl index 0720145d88..10933366e6 100644 --- a/Resources/Locale/ru-RU/_CP14/skill/ui.ftl +++ b/Resources/Locale/ru-RU/_CP14/skill/ui.ftl @@ -5,6 +5,13 @@ cp14-skill-info-title = Навыки cp14-game-hud-open-skill-menu-button-tooltip = Деревья навыков cp14-skill-menu-learn-button = Изучить навык -cp14-skill-menu-learncost = [color=yellow]Требуется очков:[/color] -cp14-skill-menu-skillpoints = Очков опыта: -cp14-skill-menu-level = Уровень: +cp14-skill-menu-learncost = [color=yellow]Требуется памяти:[/color] +cp14-skill-menu-level = Память: +cp14-skill-menu-free = [color=green]Этот навык врожденный для вашего персонажа, и не тратит очков памяти![/color] + +cp14-research-table-title = Стол исследований +cp14-research-recipe-list = Затраты на исследование: +cp14-research-craft = Исследовать + +cp14-skill-desc-add-mana = Увеличивает объем маны вашего персонажа на {$mana}. +cp14-skill-desc-unlock-recipes = Открывает возможность создания: \ No newline at end of file diff --git a/Resources/Maps/_CP14/Frigid_Coast.yml b/Resources/Maps/_CP14/Frigid_Coast.yml index 8ab24d4a91..ad9f3d733b 100644 --- a/Resources/Maps/_CP14/Frigid_Coast.yml +++ b/Resources/Maps/_CP14/Frigid_Coast.yml @@ -51511,13 +51511,6 @@ entities: rot: 1.5707963267948966 rad pos: 102.332535,53.33797 parent: 1 -- proto: CP14SpellScrollFireRune - entities: - - uid: 8072 - components: - - type: Transform - pos: -100.13099,21.66595 - parent: 1 - proto: CP14SpellScrollFlameCreation entities: - uid: 8073 diff --git a/Resources/Maps/_CP14/comoss.yml b/Resources/Maps/_CP14/comoss.yml index 0a75e537df..d3babced34 100644 --- a/Resources/Maps/_CP14/comoss.yml +++ b/Resources/Maps/_CP14/comoss.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 251.0.0 + engineVersion: 255.0.0 forkId: "" forkVersion: "" - time: 04/26/2025 08:16:09 - entityCount: 15387 + time: 05/20/2025 19:15:42 + entityCount: 15339 maps: - 1 grids: @@ -76,16 +76,25 @@ entities: - type: SunShadow - type: SunShadowCycle - type: Biome + forcedMarkerLayers: [] + markerLayers: [] + loadedMarkers: {} + pendingMarkers: {} + loadedChunks: [] + entities: {} + decals: {} + modifiedTiles: {} template: CP14SandOceanFill + layers: [] - type: MapGrid chunks: 0,0: ind: 0,0 - tiles: IQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAOAgAAAAABBgAAAAACBgAAAAACBAAAAAAEBgAAAAAABgAAAAAAAgAAAAAPBgAAAAADBwAAAAABBwAAAAACBQAAAAAABgAAAAABIQAAAAAAHgAAAAADHgAAAAAEAgAAAAAFAgAAAAADBgAAAAAABQAAAAABBQAAAAADBQAAAAADBgAAAAACHgAAAAAFBgAAAAACBQAAAAADBQAAAAABBQAAAAACBQAAAAABIQAAAAAAHgAAAAABBgAAAAAABgAAAAACBQAAAAABBAAAAAAFBQAAAAABBQAAAAABBQAAAAADBAAAAAAEHgAAAAABBgAAAAABBwAAAAADBQAAAAACBQAAAAADBwAAAAADIQAAAAAAHgAAAAAABgAAAAAABAAAAAANBAAAAAAIBAAAAAABBAAAAAADBQAAAAAABQAAAAADBAAAAAAJHgAAAAACBgAAAAADBgAAAAACBgAAAAAABQAAAAACBgAAAAACIQAAAAAAHgAAAAAFBAAAAAANBQAAAAADBAAAAAABBAAAAAALBAAAAAAGBAAAAAAKBAAAAAALBAAAAAABHgAAAAABBgAAAAAABwAAAAADBgAAAAABBwAAAAACBQAAAAACIQAAAAAAHgAAAAAABAAAAAANBQAAAAACBQAAAAADBAAAAAAHBAAAAAAJBAAAAAAFBQAAAAABBgAAAAABHgAAAAAFBgAAAAACBwAAAAADBwAAAAACBQAAAAAABQAAAAADIQAAAAAAGAAAAAAFBgAAAAAABgAAAAABBgAAAAADBAAAAAAHBAAAAAAGBQAAAAAABgAAAAADBAAAAAAIHgAAAAAFBgAAAAABBgAAAAACBgAAAAABBgAAAAABBgAAAAABIQAAAAAAHgAAAAACHgAAAAACAgAAAAAKAgAAAAAGAgAAAAAEAgAAAAAAHQAAAAAFHgAAAAACHgAAAAADHgAAAAAAHgAAAAABHgAAAAAEHgAAAAADHgAAAAAAAgAAAAANIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHQAAAAABHgAAAAAFHgAAAAAEHAAAAAAEGAAAAAABAgAAAAAFAgAAAAAMAgAAAAAMAgAAAAAIHgAAAAAAHgAAAAADAgAAAAAMAgAAAAANAgAAAAAOHgAAAAABBwAAAAAABwAAAAADBwAAAAABBwAAAAAABwAAAAACBwAAAAADBwAAAAABAgAAAAAFBgAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAADBQAAAAAABgAAAAABBgAAAAACBQAAAAABBQAAAAACBQAAAAAABQAAAAAABwAAAAABBwAAAAAABwAAAAAAHgAAAAAFBgAAAAACBgAAAAACBgAAAAADBQAAAAACBQAAAAADBwAAAAACBwAAAAAABgAAAAACBQAAAAADBQAAAAACBQAAAAACBQAAAAACBwAAAAACBwAAAAACBwAAAAADGAAAAAACBgAAAAAABgAAAAADBQAAAAAABQAAAAADBgAAAAAABwAAAAADBwAAAAADBgAAAAACBQAAAAABBgAAAAADBQAAAAADBwAAAAABBwAAAAACBwAAAAADBwAAAAACHgAAAAADBgAAAAACBQAAAAACBwAAAAACBQAAAAABBQAAAAAABQAAAAACBgAAAAAABgAAAAABBgAAAAAABQAAAAADBQAAAAABBwAAAAACBwAAAAADBwAAAAABBwAAAAABHgAAAAADBgAAAAABBgAAAAAABgAAAAABBQAAAAACBQAAAAACBQAAAAACBgAAAAAABgAAAAAC + tiles: IQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAOAgAAAAABBgAAAAACBgAAAAACBAAAAAAEBgAAAAAABgAAAAAAAgAAAAAPBgAAAAADBwAAAAABBwAAAAACBQAAAAAABgAAAAABIQAAAAAAHgAAAAADHgAAAAAEAgAAAAAFAgAAAAADBgAAAAAABQAAAAABBQAAAAADBQAAAAADBgAAAAACHgAAAAAFBgAAAAACBQAAAAADBQAAAAABBQAAAAACBQAAAAABIQAAAAAAHgAAAAABBgAAAAAABgAAAAACBQAAAAABBAAAAAAFBQAAAAABBQAAAAABBQAAAAADBAAAAAAEHgAAAAABBgAAAAABBwAAAAADBQAAAAACBQAAAAADBwAAAAADIQAAAAAAHgAAAAAABgAAAAAABAAAAAANBAAAAAAIBAAAAAABBAAAAAADBQAAAAAABQAAAAADBAAAAAAJHgAAAAACBgAAAAADBgAAAAACBgAAAAAABQAAAAACBgAAAAACIQAAAAAAHgAAAAAFBAAAAAANBQAAAAADBAAAAAABBAAAAAALBAAAAAAGBAAAAAAKBAAAAAALBAAAAAABHgAAAAABBgAAAAAABwAAAAADBgAAAAABBwAAAAACBQAAAAACIQAAAAAAHgAAAAAABAAAAAANBQAAAAACBQAAAAADBAAAAAAHBAAAAAAJBAAAAAAFBQAAAAABBgAAAAABHgAAAAAFBgAAAAACBwAAAAADBwAAAAACBQAAAAAABQAAAAADIQAAAAAAHQAAAAAABgAAAAAABgAAAAABBgAAAAADBAAAAAAHBAAAAAAGBQAAAAAABgAAAAADBAAAAAAIHgAAAAAFBgAAAAABBgAAAAACBgAAAAABBgAAAAABBgAAAAABIQAAAAAAHgAAAAACHgAAAAACAgAAAAAKAgAAAAAGAgAAAAAEAgAAAAAAHQAAAAAFHgAAAAACHgAAAAADHgAAAAAAHgAAAAABHgAAAAAEHgAAAAADHgAAAAAAAgAAAAANIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAABgAAAAAAHQAAAAABHgAAAAAFHgAAAAAEHAAAAAAEHQAAAAAAAgAAAAAFAgAAAAAMAgAAAAAMAgAAAAAIHgAAAAAAHgAAAAADAgAAAAAMBgAAAAAAAgAAAAAOHgAAAAABBwAAAAAABwAAAAADBwAAAAABBwAAAAAABwAAAAACBwAAAAADBwAAAAABAgAAAAAFBgAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAADBQAAAAAABgAAAAABBgAAAAACBQAAAAABBQAAAAACBQAAAAAABQAAAAAABwAAAAABBwAAAAAABwAAAAAAHgAAAAAFBgAAAAACBgAAAAACBgAAAAADBQAAAAACBQAAAAADBwAAAAACBwAAAAAABgAAAAACBQAAAAADBQAAAAACBQAAAAACBQAAAAACBwAAAAACBwAAAAACBwAAAAADHQAAAAAABgAAAAAABgAAAAADBQAAAAAABQAAAAADBgAAAAAABwAAAAADBwAAAAADBgAAAAACBQAAAAABBgAAAAADBQAAAAADBwAAAAABBwAAAAACBwAAAAADBwAAAAACHgAAAAADBgAAAAACBQAAAAACBwAAAAACBQAAAAABBQAAAAAABQAAAAACBgAAAAAABgAAAAABBgAAAAAABQAAAAADBQAAAAABBwAAAAACBwAAAAADBwAAAAABBwAAAAABHgAAAAADBgAAAAABBgAAAAAABgAAAAABBQAAAAACBQAAAAACBQAAAAACBgAAAAAABgAAAAAC version: 6 0,-1: ind: 0,-1 - tiles: AgAAAAAOEAAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAEAAAAAAAHgAAAAADIQAAAAAAIQAAAAAAHgAAAAACAwAAAAABBQAAAAABBQAAAAACBQAAAAADBQAAAAACBQAAAAACHgAAAAABEAAAAAAAEAAAAAAAIgAAAAAAEAAAAAAAEAAAAAAAHgAAAAAEIQAAAAAAIQAAAAAAHgAAAAAEAwAAAAABBQAAAAACBQAAAAAABQAAAAAABQAAAAADBQAAAAADHgAAAAACEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAADAwAAAAADAwAAAAADAwAAAAAEAwAAAAADAwAAAAAAAwAAAAAEHgAAAAACAgAAAAAHAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAACHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAABHgAAAAAFHgAAAAAAHgAAAAACHgAAAAABHgAAAAAEAgAAAAAMIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAMAgAAAAAJHgAAAAADHgAAAAAAIQAAAAAAIQAAAAAAHgAAAAABHgAAAAAFAgAAAAAAAgAAAAALAgAAAAACHgAAAAAEHQAAAAAFAgAAAAAKHgAAAAABIQAAAAAAAgAAAAACBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAABBgAAAAABBgAAAAABBgAAAAACBQAAAAADBQAAAAAABQAAAAACHgAAAAADAgAAAAAKHgAAAAADIQAAAAAAHgAAAAABBgAAAAAABQAAAAACBQAAAAACBgAAAAAABgAAAAADBQAAAAABBgAAAAAABQAAAAAABQAAAAADBgAAAAACBQAAAAABAgAAAAAJAgAAAAACAgAAAAAMIQAAAAAAHgAAAAADBgAAAAABBgAAAAABBQAAAAACBgAAAAAABgAAAAADBwAAAAAABgAAAAABBgAAAAAABQAAAAABBQAAAAACBQAAAAAAAgAAAAANAgAAAAAOAgAAAAABIQAAAAAAHQAAAAAABQAAAAABBgAAAAACBQAAAAABBwAAAAADBQAAAAAABwAAAAABBwAAAAAABgAAAAABBQAAAAACBQAAAAADBQAAAAADAgAAAAAHAgAAAAAHAgAAAAAPIQAAAAAAHgAAAAABBgAAAAACBgAAAAADBgAAAAADBgAAAAADBQAAAAABBwAAAAADBQAAAAADBgAAAAADBQAAAAABBQAAAAAABQAAAAADAgAAAAADAgAAAAAHAgAAAAAJIQAAAAAAHgAAAAADHgAAAAAAHgAAAAAEHgAAAAADBgAAAAABBQAAAAABBQAAAAADBQAAAAADBgAAAAABAgAAAAADAgAAAAADAgAAAAACAgAAAAAMAgAAAAAAAgAAAAAKIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAFHgAAAAAFBgAAAAADBQAAAAACBgAAAAADBgAAAAABBgAAAAADAgAAAAAEAgAAAAAEAgAAAAAOAgAAAAAAAgAAAAAMAgAAAAABIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAADBgAAAAACBgAAAAADBgAAAAACBgAAAAADBgAAAAACAgAAAAAPAgAAAAAAAgAAAAAOAgAAAAALAgAAAAAAAgAAAAAEIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAACHgAAAAAFHgAAAAAEHgAAAAADHgAAAAABAgAAAAAHAgAAAAAPBgAAAAABBwAAAAACBgAAAAADBgAAAAADBgAAAAAB + tiles: AgAAAAAOEAAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAEAAAAAAAHgAAAAADIQAAAAAAIQAAAAAAHgAAAAACAwAAAAABBQAAAAABBQAAAAACBQAAAAADBQAAAAACBQAAAAACHgAAAAABEAAAAAAAEAAAAAAAIgAAAAAAEAAAAAAAEAAAAAAAHgAAAAAEIQAAAAAAIQAAAAAAHgAAAAAEAwAAAAABBQAAAAACBQAAAAAABQAAAAAABQAAAAADBQAAAAADHgAAAAACEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAADAwAAAAADAwAAAAADAwAAAAAEAwAAAAADAwAAAAAAAwAAAAAEHgAAAAACAgAAAAAHAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAACHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAABHgAAAAAFHgAAAAAAHgAAAAACHgAAAAABHgAAAAAEAgAAAAAMIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAMAgAAAAAJHgAAAAADHgAAAAAABgAAAAAABgAAAAAAHgAAAAABHgAAAAAFAgAAAAAAAgAAAAALAgAAAAACHgAAAAAEHQAAAAAFAgAAAAAKHgAAAAABIQAAAAAAAgAAAAACBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAABBgAAAAABBgAAAAABBgAAAAACBQAAAAADBQAAAAAABQAAAAACHgAAAAADAgAAAAAKHgAAAAADIQAAAAAAHgAAAAABBgAAAAAABQAAAAACBQAAAAACBgAAAAAABgAAAAADBQAAAAABBgAAAAAABQAAAAAABQAAAAADBgAAAAACBQAAAAABAgAAAAAJAgAAAAACAgAAAAAMIQAAAAAAHgAAAAADBgAAAAABBgAAAAABBQAAAAACBgAAAAAABgAAAAADBwAAAAAABgAAAAABBgAAAAAABQAAAAABBQAAAAACBQAAAAAAAgAAAAANAgAAAAAOAgAAAAABIQAAAAAAHQAAAAAABQAAAAABBgAAAAACBQAAAAABBwAAAAADBQAAAAAABwAAAAABBwAAAAAABgAAAAABBQAAAAACBQAAAAADBQAAAAADAgAAAAAHAgAAAAAHAgAAAAAPIQAAAAAAHgAAAAABBgAAAAACBgAAAAADBgAAAAADBgAAAAADBQAAAAABBwAAAAADBQAAAAADBgAAAAADBQAAAAABBQAAAAAABQAAAAADAgAAAAADAgAAAAAHAgAAAAAJIQAAAAAAHgAAAAADHgAAAAAAHgAAAAAEHgAAAAADBgAAAAABBQAAAAABBQAAAAADBQAAAAADBgAAAAABAgAAAAADAgAAAAADAgAAAAACAgAAAAAMAgAAAAAAAgAAAAAKIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAFHgAAAAAFBgAAAAADBQAAAAACBgAAAAADBgAAAAABBgAAAAADAgAAAAAEAgAAAAAEAgAAAAAOAgAAAAAAAgAAAAAMAgAAAAABIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAADBgAAAAACBgAAAAADBgAAAAACBgAAAAADBgAAAAACAgAAAAAPAgAAAAAAAgAAAAAOAgAAAAALAgAAAAAAAgAAAAAEIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAACHgAAAAAFHgAAAAAEHgAAAAADHgAAAAABAgAAAAAHAgAAAAAPBgAAAAABBwAAAAACBgAAAAADBgAAAAADBgAAAAAB version: 6 -1,-1: ind: -1,-1 @@ -93,15 +102,15 @@ entities: version: 6 -1,0: ind: -1,0 - tiles: BgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAAHgAAAAACBAAAAAAIBgAAAAADBgAAAAABBgAAAAADAgAAAAAMAgAAAAAHAgAAAAAFIQAAAAAAIQAAAAAAIQAAAAAABwAAAAAABQAAAAACBwAAAAACBwAAAAADBgAAAAACHgAAAAADBAAAAAAIBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAAAAgAAAAABAgAAAAALAgAAAAAFIQAAAAAABQAAAAAABAAAAAAIBAAAAAAGBAAAAAAIBgAAAAABHgAAAAAEBAAAAAADBgAAAAACBgAAAAACBAAAAAAHBAAAAAALBgAAAAABBAAAAAAEBAAAAAABAgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAAABQAAAAACBgAAAAABGAAAAAABBAAAAAAGBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAABBgAAAAABBAAAAAAMAgAAAAACIQAAAAAABwAAAAABBgAAAAACBgAAAAABBQAAAAAABgAAAAAAHgAAAAAABAAAAAAGBgAAAAADBgAAAAACBgAAAAAABgAAAAACBgAAAAACBgAAAAADBAAAAAAIHgAAAAACIQAAAAAABQAAAAACBQAAAAABBwAAAAADBwAAAAACBgAAAAADHgAAAAAEBAAAAAAKBgAAAAAABgAAAAADBgAAAAACBgAAAAACBgAAAAACBgAAAAADBAAAAAACGAAAAAAAIQAAAAAABgAAAAAABgAAAAADBgAAAAADBgAAAAAABgAAAAADHgAAAAABBAAAAAAFBAAAAAAGBAAAAAANBAAAAAAIBAAAAAAHBAAAAAAFBAAAAAAIBAAAAAABHgAAAAAFIQAAAAAABgAAAAABHgAAAAADHgAAAAAEHgAAAAAFHgAAAAAEHgAAAAACHgAAAAAFGAAAAAAAGAAAAAAAHgAAAAACHgAAAAAEHgAAAAAFHgAAAAAFHgAAAAAFHgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAEHAAAAAAAHAAAAAAAGAAAAAAFHAAAAAADHgAAAAAFHgAAAAAEHQAAAAADHAAAAAADHAAAAAAAGAAAAAADHgAAAAAEHgAAAAAFHgAAAAADHAAAAAACIQAAAAAAHAAAAAAFHAAAAAABHAAAAAACHAAAAAAFHAAAAAAFBgAAAAABBgAAAAABBgAAAAABBgAAAAACBgAAAAABBgAAAAACBgAAAAACHgAAAAAABwAAAAADBwAAAAABBwAAAAAAHAAAAAACHAAAAAAAHAAAAAACHAAAAAAFHAAAAAAABgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAACBgAAAAADBgAAAAAAHgAAAAABBwAAAAAABgAAAAACBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAAFHAAAAAAEBgAAAAAABgAAAAABBgAAAAAABQAAAAAABQAAAAADBQAAAAADBgAAAAABHgAAAAAFBwAAAAACBwAAAAADBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAABHAAAAAAEBgAAAAAABgAAAAAABgAAAAAABQAAAAABBQAAAAABBQAAAAABBgAAAAACHgAAAAACBwAAAAAABQAAAAAABQAAAAADHAAAAAABHAAAAAADHAAAAAADHAAAAAACHAAAAAACBgAAAAACBQAAAAAABQAAAAAABgAAAAAABgAAAAABBgAAAAAABgAAAAADHgAAAAACBwAAAAACBwAAAAACBgAAAAAA + tiles: BgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAAHgAAAAACBAAAAAAIBgAAAAADBgAAAAABBgAAAAADAgAAAAAMAgAAAAAHAgAAAAAFIQAAAAAAIQAAAAAAIQAAAAAABwAAAAAABQAAAAACBwAAAAACBwAAAAADBgAAAAACHgAAAAADBAAAAAAIBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAAAAgAAAAABAgAAAAALAgAAAAAFIQAAAAAABQAAAAAABAAAAAAIBAAAAAAGBAAAAAAIBgAAAAABHgAAAAAEBAAAAAADBgAAAAACBgAAAAACBAAAAAAHBAAAAAALBgAAAAABBAAAAAAEBAAAAAABAgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAAABQAAAAACBgAAAAABHQAAAAAABAAAAAAGBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAABBgAAAAABBAAAAAAMAgAAAAACIQAAAAAABwAAAAABBgAAAAACBgAAAAABBQAAAAAABgAAAAAAHgAAAAAABAAAAAAGBgAAAAADBgAAAAACBgAAAAAABgAAAAACBgAAAAACBgAAAAADBAAAAAAIHgAAAAACIQAAAAAABQAAAAACBQAAAAABBwAAAAADBwAAAAACBgAAAAADHgAAAAAEBAAAAAAKBgAAAAAABgAAAAADBgAAAAACBgAAAAACBgAAAAACBgAAAAADBAAAAAACHQAAAAAAIQAAAAAABgAAAAAABgAAAAADBgAAAAADBgAAAAAABgAAAAADHgAAAAABBAAAAAAFBAAAAAAGBAAAAAANBAAAAAAIBAAAAAAHBAAAAAAFBAAAAAAIBAAAAAABHgAAAAAFIQAAAAAABgAAAAABHgAAAAADHgAAAAAEHgAAAAAFHgAAAAAEHgAAAAACHgAAAAAFHQAAAAAAHQAAAAAAHgAAAAACHgAAAAAEHgAAAAAFHgAAAAAFHgAAAAAFHgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAEHAAAAAAAHAAAAAAAHQAAAAAAHAAAAAADHgAAAAAFHgAAAAAEHQAAAAADHAAAAAADBgAAAAAAHQAAAAAAHgAAAAAEHgAAAAAFHgAAAAADHAAAAAACBgAAAAAAHAAAAAAFHAAAAAABHAAAAAACHAAAAAAFHAAAAAAFBgAAAAABBgAAAAABBgAAAAABBgAAAAACBgAAAAABBgAAAAACBgAAAAACHgAAAAAABwAAAAADBwAAAAABBwAAAAAAHAAAAAACHAAAAAAAHAAAAAACHAAAAAAFHAAAAAAABgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAACBgAAAAADBgAAAAAAHgAAAAABBwAAAAAABgAAAAACBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAAFHAAAAAAEBgAAAAAABgAAAAABBgAAAAAABQAAAAAABQAAAAADBQAAAAADBgAAAAABHgAAAAAFBwAAAAACBwAAAAADBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAABHAAAAAAEBgAAAAAABgAAAAAABgAAAAAABQAAAAABBQAAAAABBQAAAAABBgAAAAACHgAAAAACBwAAAAAABQAAAAAABQAAAAADHAAAAAABHAAAAAADHAAAAAADHAAAAAACHAAAAAACBgAAAAACBQAAAAAABQAAAAAABgAAAAAABgAAAAABBgAAAAAABgAAAAADHgAAAAACBwAAAAACBwAAAAACBgAAAAAA version: 6 -1,-2: ind: -1,-2 - tiles: BwAAAAADBwAAAAAAAgAAAAAHCQAAAAAFCQAAAAAECQAAAAAJBgAAAAADBQAAAAACBgAAAAABBQAAAAADBgAAAAACBwAAAAAABgAAAAACBgAAAAADHgAAAAABAgAAAAAABQAAAAADBwAAAAACBwAAAAABBwAAAAAABwAAAAABCQAAAAAHBgAAAAABBgAAAAADBQAAAAAABQAAAAADBAAAAAACBgAAAAADBwAAAAAABgAAAAACHgAAAAABIQAAAAAABwAAAAABBwAAAAAABQAAAAADBQAAAAADBwAAAAADCQAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAABgAAAAAABQAAAAAABgAAAAABBgAAAAABHgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAABBQAAAAACBwAAAAAAHgAAAAABHgAAAAABHgAAAAAAHgAAAAABHgAAAAADAgAAAAAKAgAAAAAIAgAAAAAOFgAAAAADHgAAAAADIQAAAAAABwAAAAABBgAAAAAABgAAAAACBQAAAAABBwAAAAADAgAAAAABIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAABwAAAAACBwAAAAABBwAAAAABBwAAAAACBwAAAAABAgAAAAAGIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAACHgAAAAAAHgAAAAAEHgAAAAABHgAAAAAEHgAAAAACHgAAAAADHQAAAAABFgAAAAADHgAAAAAEFgAAAAACHgAAAAAEHgAAAAABAgAAAAACAgAAAAAPHgAAAAADBgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAAABgAAAAABBgAAAAACBgAAAAABBgAAAAADBgAAAAACBgAAAAABBgAAAAABBgAAAAAABgAAAAAABgAAAAACBgAAAAABBQAAAAAABQAAAAACBQAAAAACBQAAAAADBAAAAAADBQAAAAACBQAAAAAABgAAAAADBgAAAAADBgAAAAACBQAAAAACBgAAAAAABgAAAAADBgAAAAADBQAAAAAABgAAAAAABQAAAAACBQAAAAABBQAAAAABBgAAAAAABgAAAAADBgAAAAADBQAAAAADBgAAAAABBgAAAAACBgAAAAACBQAAAAABBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAABBQAAAAAABQAAAAABBQAAAAADBgAAAAACBgAAAAAABgAAAAADBQAAAAADBQAAAAACBQAAAAABBQAAAAADBQAAAAABBQAAAAACBQAAAAADBQAAAAAABgAAAAAABgAAAAAABQAAAAAABQAAAAABBQAAAAABBQAAAAABBwAAAAACBQAAAAABBwAAAAABBwAAAAADBQAAAAAABwAAAAABBwAAAAADBwAAAAABBwAAAAABBQAAAAABBQAAAAABBgAAAAABBQAAAAACBQAAAAAABQAAAAABBQAAAAAABQAAAAACBQAAAAADBwAAAAACBwAAAAACBQAAAAABBwAAAAACBwAAAAADBwAAAAADBwAAAAADBQAAAAADBQAAAAADBgAAAAAABgAAAAACBgAAAAADBgAAAAADBAAAAAACBAAAAAANAwAAAAAEAwAAAAAAAwAAAAAIBQAAAAADBAAAAAALDQAAAAAADQAAAAAABAAAAAAFDQAAAAAABAAAAAAHAwAAAAAGBQAAAAACBQAAAAADBgAAAAACHAAAAAAFHQAAAAAAAwAAAAAAAwAAAAACAwAAAAACBQAAAAABGgAAAAAAGgAAAAADGgAAAAADGgAAAAABGgAAAAACGgAAAAACAwAAAAACBQAAAAABBQAAAAACBgAAAAAAHAAAAAAEHQAAAAACAwAAAAAAAwAAAAAGAwAAAAACAwAAAAAEGgAAAAACGwAAAAACGwAAAAAAGgAAAAACGwAAAAABGwAAAAABAwAAAAAD + tiles: BwAAAAADBwAAAAAAAgAAAAAHCQAAAAAFCQAAAAAECQAAAAAJBgAAAAADBQAAAAACBgAAAAABBQAAAAADBgAAAAACBwAAAAAABgAAAAACBgAAAAADHgAAAAABAgAAAAAABQAAAAADBwAAAAACBwAAAAABBwAAAAAABwAAAAABCQAAAAAHBgAAAAABBgAAAAADBQAAAAAABQAAAAADBAAAAAACBgAAAAADBwAAAAAABgAAAAACHgAAAAABIQAAAAAABwAAAAABBwAAAAAABQAAAAADBQAAAAADBwAAAAADCQAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAABgAAAAAABQAAAAAABgAAAAABBgAAAAABHgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAABBQAAAAACBwAAAAAAHgAAAAABHgAAAAABHgAAAAAAHgAAAAABHgAAAAADAgAAAAAKBgAAAAAAAgAAAAAOHAAAAAAAHgAAAAADIQAAAAAABwAAAAABBgAAAAAABgAAAAACBQAAAAABBwAAAAADBgAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAABwAAAAACBwAAAAABBwAAAAABBwAAAAACBwAAAAABAgAAAAAGIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAACHgAAAAAAHgAAAAAEHgAAAAABHgAAAAAEHgAAAAACHgAAAAADHQAAAAABHAAAAAAAHgAAAAAEHAAAAAAAHgAAAAAEHgAAAAABAgAAAAACAgAAAAAPHgAAAAADBgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAAABgAAAAABBgAAAAACBgAAAAABBgAAAAADBgAAAAACBgAAAAABBgAAAAABBgAAAAAABgAAAAAABgAAAAACBgAAAAABBQAAAAAABQAAAAACBQAAAAACBQAAAAADBAAAAAADBQAAAAACBQAAAAAABgAAAAADBgAAAAADBgAAAAACBQAAAAACBgAAAAAABgAAAAADBgAAAAADBQAAAAAABgAAAAAABQAAAAACBQAAAAABBQAAAAABBgAAAAAABgAAAAADBgAAAAADBQAAAAADBgAAAAABBgAAAAACBgAAAAACBQAAAAABBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAABBQAAAAAABQAAAAABBQAAAAADBgAAAAACBgAAAAAABgAAAAADBQAAAAADBQAAAAACBQAAAAABBQAAAAADBQAAAAABBQAAAAACBQAAAAADBQAAAAAABgAAAAAABgAAAAAABQAAAAAABQAAAAABBQAAAAABBQAAAAABBwAAAAACBQAAAAABBwAAAAABBwAAAAADBQAAAAAABwAAAAABBwAAAAADBwAAAAABBwAAAAABBQAAAAABBQAAAAABBgAAAAABBQAAAAACBQAAAAAABQAAAAABBQAAAAAABQAAAAACBQAAAAADBwAAAAACBwAAAAACBQAAAAABBwAAAAACBwAAAAADBwAAAAADBwAAAAADBQAAAAADBQAAAAADBgAAAAAABgAAAAACBgAAAAADBgAAAAADBAAAAAACBAAAAAANAwAAAAAEAwAAAAAAAwAAAAAIBQAAAAADBAAAAAALDQAAAAAADQAAAAAABAAAAAAFDQAAAAAABAAAAAAHAwAAAAAGBQAAAAACBQAAAAADBgAAAAACHAAAAAAFHQAAAAAAAwAAAAAAAwAAAAACAwAAAAACBQAAAAABGgAAAAAAGgAAAAADGgAAAAADGgAAAAABGgAAAAACGgAAAAACAwAAAAACBQAAAAABBQAAAAACBgAAAAAAHAAAAAAEHQAAAAACAwAAAAAAAwAAAAAGAwAAAAACAwAAAAAEGgAAAAACGwAAAAACGwAAAAAAGgAAAAACGwAAAAABGwAAAAABAwAAAAAD version: 6 0,-2: ind: 0,-2 - tiles: IQAAAAAAAgAAAAANBgAAAAABBQAAAAADBQAAAAADBQAAAAABBQAAAAAABQAAAAADBgAAAAACHgAAAAAFAwAAAAAFAwAAAAAAAwAAAAAFAwAAAAAAAwAAAAAEAwAAAAAEIQAAAAAAFgAAAAADBgAAAAADBQAAAAADBQAAAAADBQAAAAABBQAAAAADBQAAAAABBgAAAAAAHgAAAAAAAwAAAAAAAwAAAAAHAwAAAAAEAwAAAAAGAwAAAAAHAwAAAAAHAgAAAAAAAgAAAAAABgAAAAADBQAAAAADBgAAAAAABgAAAAACBgAAAAABBgAAAAADBgAAAAADHgAAAAAEAwAAAAAHAwAAAAAEAwAAAAABAwAAAAADAwAAAAAEAwAAAAAHIQAAAAAAAgAAAAAAAgAAAAABIQAAAAAAAgAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAOAwAAAAAIAwAAAAAHAwAAAAAABQAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAAwAAAAABAwAAAAAGAwAAAAABAwAAAAAFAwAAAAAIAwAAAAABIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAwAAAAAGAwAAAAAHAwAAAAAEAwAAAAAGAwAAAAAGAwAAAAAIHgAAAAADFgAAAAACAgAAAAAAHgAAAAABHgAAAAAFAgAAAAAAAgAAAAAAIQAAAAAAAgAAAAAAHgAAAAAAAwAAAAAGAwAAAAACAwAAAAAFAwAAAAAAAwAAAAAAAwAAAAAHHgAAAAACHgAAAAAAAgAAAAAIHgAAAAAFHgAAAAACHgAAAAAEHgAAAAAEAgAAAAAAAgAAAAAAHgAAAAAAAwAAAAAAAwAAAAAHAwAAAAACAwAAAAACAwAAAAAEAwAAAAAGHgAAAAABAgAAAAAFAgAAAAALAgAAAAAEHgAAAAAAHgAAAAABHgAAAAACAgAAAAAAIQAAAAAAHgAAAAAAAwAAAAAHAwAAAAADAwAAAAAAAwAAAAAEAwAAAAABAwAAAAADBgAAAAADIQAAAAAAAgAAAAAMAgAAAAABAgAAAAACIQAAAAAAAgAAAAAPIQAAAAAAIQAAAAAAAgAAAAAAAwAAAAADAwAAAAAHAwAAAAAHAwAAAAAGAwAAAAAIAwAAAAAABgAAAAACIQAAAAAAAgAAAAAJAgAAAAAFIQAAAAAAAgAAAAACAgAAAAACIQAAAAAAIQAAAAAAHgAAAAAEAwAAAAADAwAAAAAGAwAAAAACAwAAAAAEAwAAAAABAwAAAAAAHgAAAAADHgAAAAADAgAAAAAOAgAAAAAIAgAAAAAKHAAAAAACHQAAAAAFIQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAHBQAAAAACBQAAAAABBQAAAAADBQAAAAACBQAAAAACHgAAAAAFAgAAAAADAwAAAAAAAwAAAAAAAwAAAAAAHgAAAAADHAAAAAAEIQAAAAAAIQAAAAAAAgAAAAAAAwAAAAAABQAAAAAABQAAAAABBQAAAAAABQAAAAADBQAAAAABHgAAAAAAAgAAAAAMEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAABHQAAAAAEAgAAAAAAIQAAAAAAAgAAAAAEAwAAAAAIBQAAAAACBQAAAAAABQAAAAABBQAAAAABBQAAAAACAgAAAAAJEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAAAAgAAAAAAIQAAAAAAAgAAAAACAwAAAAACAwAAAAACAwAAAAADAwAAAAAFAwAAAAABBQAAAAACHgAAAAABEAAAAAAAEAAAAAAAIgAAAAAAEAAAAAAAEAAAAAAAHgAAAAAEIQAAAAAAIQAAAAAAAgAAAAACAwAAAAAIBQAAAAABBQAAAAACBQAAAAAABQAAAAACBQAAAAAC + tiles: IQAAAAAAAgAAAAANBgAAAAABBQAAAAADBQAAAAADBQAAAAABBQAAAAAABQAAAAADBgAAAAACHgAAAAAFAwAAAAAFAwAAAAAAAwAAAAAFAwAAAAAAAwAAAAAEAwAAAAAEIQAAAAAAHAAAAAAABgAAAAADBQAAAAADBQAAAAADBQAAAAABBQAAAAADBQAAAAABBgAAAAAAHgAAAAAAAwAAAAAAAwAAAAAHAwAAAAAEAwAAAAAGAwAAAAAHAwAAAAAHAgAAAAAAAgAAAAAABgAAAAADBQAAAAADBgAAAAAABgAAAAACBgAAAAABBgAAAAADBgAAAAADHgAAAAAEAwAAAAAHAwAAAAAEAwAAAAABAwAAAAADAwAAAAAEAwAAAAAHIQAAAAAAAgAAAAAAAgAAAAABBgAAAAAAAgAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAOAwAAAAAIAwAAAAAHAwAAAAAABQAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAAwAAAAABAwAAAAAGAwAAAAABAwAAAAAFAwAAAAAIAwAAAAABIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAwAAAAAGAwAAAAAHAwAAAAAEAwAAAAAGAwAAAAAGAwAAAAAIHgAAAAADHAAAAAAAAgAAAAAAHgAAAAABHgAAAAAFAgAAAAAAAgAAAAAAIQAAAAAAAgAAAAAAHgAAAAAAAwAAAAAGAwAAAAACAwAAAAAFAwAAAAAAAwAAAAAAAwAAAAAHHgAAAAACHgAAAAAAAgAAAAAIHgAAAAAFHgAAAAACHgAAAAAEHgAAAAAEAgAAAAAAAgAAAAAAHgAAAAAAAwAAAAAAAwAAAAAHAwAAAAACAwAAAAACAwAAAAAEAwAAAAAGHgAAAAABAgAAAAAFAgAAAAALAgAAAAAEHgAAAAAAHgAAAAABHgAAAAACAgAAAAAAIQAAAAAAHgAAAAAAAwAAAAAHAwAAAAADAwAAAAAAAwAAAAAEAwAAAAABAwAAAAADBgAAAAADIQAAAAAAAgAAAAAMAgAAAAABAgAAAAACIQAAAAAAAgAAAAAPIQAAAAAAIQAAAAAAAgAAAAAAAwAAAAADAwAAAAAHAwAAAAAHAwAAAAAGAwAAAAAIAwAAAAAABgAAAAACIQAAAAAAAgAAAAAJAgAAAAAFIQAAAAAAAgAAAAACAgAAAAACIQAAAAAAIQAAAAAAHgAAAAAEAwAAAAADAwAAAAAGAwAAAAACAwAAAAAEAwAAAAABAwAAAAAAHgAAAAADHgAAAAADAgAAAAAOAgAAAAAIAgAAAAAKHAAAAAACHQAAAAAFIQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAHBQAAAAACBQAAAAABBQAAAAADBQAAAAACBQAAAAACHgAAAAAFAgAAAAADAwAAAAAAAwAAAAAAAwAAAAAAHgAAAAADHAAAAAAEIQAAAAAAIQAAAAAAAgAAAAAAAwAAAAAABQAAAAAABQAAAAABBQAAAAAABQAAAAADBQAAAAABHgAAAAAAAgAAAAAMEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAABHQAAAAAEAgAAAAAAIQAAAAAAAgAAAAAEAwAAAAAIBQAAAAACBQAAAAAABQAAAAABBQAAAAABBQAAAAACAgAAAAAJEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAAAAgAAAAAAIQAAAAAAAgAAAAACAwAAAAACAwAAAAACAwAAAAADAwAAAAAFAwAAAAABBQAAAAACHgAAAAABEAAAAAAAEAAAAAAAIgAAAAAAEAAAAAAAEAAAAAAAHgAAAAAEIQAAAAAAIQAAAAAAAgAAAAACAwAAAAAIBQAAAAABBQAAAAACBQAAAAAABQAAAAACBQAAAAAC version: 6 -2,-2: ind: -2,-2 @@ -117,11 +126,11 @@ entities: version: 6 1,0: ind: 1,0 - tiles: BQAAAAABBwAAAAABBgAAAAADAgAAAAAAAgAAAAAAIQAAAAAAHgAAAAAAAwAAAAAGBQAAAAABDQAAAAAADQAAAAAADQAAAAAAAwAAAAABHAAAAAAAHAAAAAAEHAAAAAACBQAAAAAABQAAAAACBgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAHgAAAAAEAwAAAAAEDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHAwAAAAADAwAAAAADAwAAAAAEBwAAAAAABgAAAAABBgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAGAAAAAAEAwAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAABAwAAAAADAwAAAAAIBwAAAAABBQAAAAABBgAAAAADAgAAAAAAIQAAAAAAAgAAAAAAAgAAAAANAwAAAAACAwAAAAACAwAAAAAABQAAAAABDQAAAAAADQAAAAAAAwAAAAADAwAAAAAFAwAAAAADBgAAAAACBgAAAAAABgAAAAAAHgAAAAABIQAAAAAAAgAAAAAAAgAAAAADAwAAAAAHAwAAAAABAwAAAAAGBQAAAAADDQAAAAAADQAAAAAAAwAAAAAFAwAAAAACAwAAAAAEBgAAAAADBgAAAAABBgAAAAABHgAAAAACIQAAAAAAAgAAAAAAAgAAAAAOAwAAAAABAwAAAAABAwAAAAAHAwAAAAAHDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHBQAAAAADBgAAAAADBgAAAAADHgAAAAAEIQAAAAAAIQAAAAAAGAAAAAADAwAAAAADAwAAAAAEAwAAAAAFAwAAAAAHAwAAAAACAwAAAAAGAwAAAAAEAwAAAAABAwAAAAACAgAAAAAAAgAAAAAJAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAGAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAACHgAAAAAFAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAGAAAAAAEAgAAAAAJAgAAAAAGAgAAAAAOHgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAEHQAAAAACHgAAAAABHgAAAAAFAgAAAAAGAgAAAAAJAgAAAAAAHgAAAAACHgAAAAAFBgAAAAACBwAAAAADBgAAAAABBgAAAAACBgAAAAAABgAAAAACBgAAAAAAHgAAAAAAAwAAAAADAwAAAAAHAwAAAAAIAwAAAAACAwAAAAAHAwAAAAAIAwAAAAADHgAAAAAFBgAAAAAABwAAAAADBgAAAAAABQAAAAABBgAAAAAABwAAAAABBQAAAAABGAAAAAAEAwAAAAADDQAAAAAADQAAAAAAAwAAAAAAAwAAAAABAwAAAAAHAwAAAAAHHQAAAAAEBgAAAAADBQAAAAADBQAAAAABBgAAAAAABwAAAAADBwAAAAABBQAAAAABGAAAAAABAwAAAAABDQAAAAAADQAAAAAAAwAAAAAHAwAAAAAAAwAAAAAEAwAAAAADHQAAAAAEBgAAAAADBgAAAAAABgAAAAADBgAAAAAABwAAAAAABwAAAAAABgAAAAAAHAAAAAADAwAAAAAEDQAAAAAADQAAAAAAAwAAAAAEAwAAAAAAAwAAAAAFAwAAAAADHQAAAAAEBgAAAAAABgAAAAADBgAAAAACBQAAAAADBQAAAAAABQAAAAAABgAAAAACHAAAAAACAwAAAAAIDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAA + tiles: BQAAAAABBwAAAAABBgAAAAADAgAAAAAAAgAAAAAAIQAAAAAAHgAAAAAAAwAAAAAGBQAAAAABDQAAAAAADQAAAAAADQAAAAAAAwAAAAABHAAAAAAAHAAAAAAEHAAAAAACBQAAAAAABQAAAAACBgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAHgAAAAAEAwAAAAAEDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHAwAAAAADAwAAAAADAwAAAAAEBwAAAAAABgAAAAABBgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAHQAAAAAAAwAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAABAwAAAAADAwAAAAAIBwAAAAABBQAAAAABBgAAAAADAgAAAAAAIQAAAAAAAgAAAAAAAgAAAAANAwAAAAACAwAAAAACAwAAAAAABQAAAAABDQAAAAAADQAAAAAAAwAAAAADAwAAAAAFAwAAAAADBgAAAAACBgAAAAAABgAAAAAAHgAAAAABIQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAHAwAAAAABAwAAAAAGBQAAAAADDQAAAAAADQAAAAAAAwAAAAAFAwAAAAACAwAAAAAEBgAAAAADBgAAAAABBgAAAAABHgAAAAACIQAAAAAAAgAAAAAAAgAAAAAOAwAAAAABAwAAAAABAwAAAAAHAwAAAAAHDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHBQAAAAADBgAAAAADBgAAAAADHgAAAAAEIQAAAAAAIQAAAAAAHQAAAAAAAwAAAAADAwAAAAAEAwAAAAAFAwAAAAAHAwAAAAACAwAAAAAGAwAAAAAEAwAAAAABAwAAAAACBgAAAAAAAgAAAAAJAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAACHgAAAAAFAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHQAAAAAAAgAAAAAJBgAAAAAAAgAAAAAOHgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAEHQAAAAACHgAAAAABHgAAAAAFAgAAAAAGAgAAAAAJAgAAAAAAHgAAAAACHgAAAAAFBgAAAAACBwAAAAADBgAAAAABBgAAAAACBgAAAAAABgAAAAACBgAAAAAAHgAAAAAAAwAAAAADAwAAAAAHAwAAAAAIAwAAAAACAwAAAAAHAwAAAAAIAwAAAAADHgAAAAAFBgAAAAAABwAAAAADBgAAAAAABQAAAAABBgAAAAAABwAAAAABBQAAAAABHQAAAAAAAwAAAAADDQAAAAAADQAAAAAAAwAAAAAAAwAAAAABAwAAAAAHAwAAAAAHHQAAAAAEBgAAAAADBQAAAAADBQAAAAABBgAAAAAABwAAAAADBwAAAAABBQAAAAABHQAAAAAAAwAAAAABDQAAAAAADQAAAAAAAwAAAAAHAwAAAAAAAwAAAAAEAwAAAAADHQAAAAAEBgAAAAADBgAAAAAABgAAAAADBgAAAAAABwAAAAAABwAAAAAABgAAAAAAHAAAAAADAwAAAAAEDQAAAAAADQAAAAAAAwAAAAAEAwAAAAAAAwAAAAAFAwAAAAADHQAAAAAEBgAAAAAABgAAAAADBgAAAAACBQAAAAADBQAAAAAABQAAAAAABgAAAAACHAAAAAACAwAAAAAIDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAA version: 6 1,-1: ind: 1,-1 - tiles: BQAAAAABBQAAAAABAwAAAAAHAwAAAAAHAwAAAAAGAwAAAAAFAwAAAAAIAwAAAAAEDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAABQAAAAAABQAAAAADAwAAAAAHAwAAAAAHAwAAAAAHAwAAAAAFAwAAAAAGAwAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHAwAAAAAGAwAAAAAEAgAAAAAKAgAAAAABAgAAAAAMHgAAAAABAwAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAgAAAAAAAgAAAAAOAgAAAAAJAgAAAAAEIQAAAAAAIQAAAAAAAgAAAAAGHgAAAAABHgAAAAAAHgAAAAACHgAAAAAEHgAAAAACHgAAAAAEHgAAAAAFDQAAAAAADQAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAABgAAAAABBgAAAAADBgAAAAADBgAAAAADBgAAAAADBgAAAAACHgAAAAADDQAAAAAADQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAHgAAAAACBgAAAAAABQAAAAAABgAAAAADBgAAAAABBQAAAAADBgAAAAAAHgAAAAADDQAAAAAADQAAAAAAHgAAAAAAHgAAAAAFHgAAAAAAHgAAAAAFIQAAAAAAAgAAAAAABgAAAAADBgAAAAADBQAAAAADBgAAAAAABgAAAAAABwAAAAACBgAAAAADHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAMAgAAAAAEHgAAAAABHgAAAAAAIQAAAAAAAgAAAAAABgAAAAACBgAAAAACBQAAAAADBQAAAAACBwAAAAABBwAAAAACBgAAAAABHgAAAAACDQAAAAAADQAAAAAAAgAAAAALHgAAAAAEAgAAAAAOHgAAAAABIQAAAAAAAgAAAAAAAgAAAAAPBgAAAAADBQAAAAADBQAAAAACBgAAAAABBgAAAAAABgAAAAAAHgAAAAABDQAAAAAADQAAAAAAAgAAAAAKAgAAAAAEAgAAAAAEHgAAAAAAIQAAAAAAIQAAAAAAHgAAAAADBwAAAAADBgAAAAACBQAAAAADBgAAAAACAwAAAAAIAwAAAAAEHgAAAAAFDQAAAAAADQAAAAAAAgAAAAAHAgAAAAADHgAAAAAAHgAAAAADIQAAAAAAIQAAAAAAGAAAAAAFBwAAAAABBwAAAAAABwAAAAACBgAAAAABHgAAAAAFFgAAAAAFHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAIAgAAAAAOAgAAAAAKHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAAEBgAAAAADBwAAAAABBwAAAAABBgAAAAABBgAAAAABHgAAAAAFFgAAAAADDQAAAAAADQAAAAAAAgAAAAAMAgAAAAAHAgAAAAAKAgAAAAABAgAAAAAAIQAAAAAAHgAAAAAABgAAAAAABgAAAAADBgAAAAAABgAAAAAAHgAAAAAAHgAAAAACHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAHAgAAAAAAAgAAAAAIHgAAAAACAgAAAAAAIQAAAAAAHgAAAAABHgAAAAABHgAAAAACHgAAAAACHgAAAAACHgAAAAAFHgAAAAACHgAAAAAFHAAAAAABHAAAAAAEAgAAAAAHAgAAAAAJHgAAAAADHgAAAAACAgAAAAAAIQAAAAAAHgAAAAAEAwAAAAAAAwAAAAAHAwAAAAAIAwAAAAAIDQAAAAAAAwAAAAAHHgAAAAAEHAAAAAACHAAAAAACBgAAAAACBgAAAAAABgAAAAABAgAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAAwAAAAAHDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAABHgAAAAAEHAAAAAAEHAAAAAAD + tiles: BQAAAAABBQAAAAABAwAAAAAHAwAAAAAHAwAAAAAGAwAAAAAFAwAAAAAIAwAAAAAEDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAABQAAAAAABQAAAAADAwAAAAAHAwAAAAAHAwAAAAAHAwAAAAAFAwAAAAAGAwAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHAwAAAAAGAwAAAAAEAgAAAAAKAgAAAAABAgAAAAAMHgAAAAABAwAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAgAAAAAAAgAAAAAOAgAAAAAJAgAAAAAEIQAAAAAAIQAAAAAAAgAAAAAGHgAAAAABHgAAAAAAHgAAAAACHgAAAAAEHgAAAAACHgAAAAAEHgAAAAAFDQAAAAAADQAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAABgAAAAABBgAAAAADBgAAAAADBgAAAAADBgAAAAADBgAAAAACHgAAAAADDQAAAAAADQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAHgAAAAACBgAAAAAABQAAAAAABgAAAAADBgAAAAABBQAAAAADBgAAAAAAHgAAAAADDQAAAAAADQAAAAAAHgAAAAAAHgAAAAAFHgAAAAAAHgAAAAAFIQAAAAAAAgAAAAAABgAAAAADBgAAAAADBQAAAAADBgAAAAAABgAAAAAABwAAAAACBgAAAAADHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAMAgAAAAAEHgAAAAABHgAAAAAAIQAAAAAAAgAAAAAABgAAAAACBgAAAAACBQAAAAADBQAAAAACBwAAAAABBwAAAAACBgAAAAABHgAAAAACDQAAAAAADQAAAAAAAgAAAAALHgAAAAAEAgAAAAAOHgAAAAABIQAAAAAAAgAAAAAAAgAAAAAPBgAAAAADBQAAAAADBQAAAAACBgAAAAABBgAAAAAABgAAAAAAHgAAAAABDQAAAAAADQAAAAAAAgAAAAAKAgAAAAAEAgAAAAAEHgAAAAAAIQAAAAAAIQAAAAAAHgAAAAADBwAAAAADBgAAAAACBQAAAAADBgAAAAACAwAAAAAIAwAAAAAEHgAAAAAFDQAAAAAADQAAAAAAAgAAAAAHAgAAAAADHgAAAAAAHgAAAAADIQAAAAAAIQAAAAAAHQAAAAAABwAAAAABBwAAAAAABwAAAAACBgAAAAABHgAAAAAFHAAAAAAAHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAIAgAAAAAOAgAAAAAKHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAAEBgAAAAADBwAAAAABBwAAAAABBgAAAAABBgAAAAABHgAAAAAFHAAAAAAADQAAAAAADQAAAAAAAgAAAAAMAgAAAAAHAgAAAAAKAgAAAAABAgAAAAAAIQAAAAAAHgAAAAAABgAAAAAABgAAAAADBgAAAAAABgAAAAAAHgAAAAAAHgAAAAACHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAHAgAAAAAAAgAAAAAIHgAAAAACAgAAAAAAIQAAAAAAHgAAAAABHgAAAAABHgAAAAACHgAAAAACHgAAAAACHgAAAAAFHgAAAAACHgAAAAAFHAAAAAABHAAAAAAEAgAAAAAHAgAAAAAJHgAAAAADHgAAAAACAgAAAAAAIQAAAAAAHgAAAAAEAwAAAAAAAwAAAAAHAwAAAAAIAwAAAAAIDQAAAAAAAwAAAAAHHgAAAAAEHAAAAAACHAAAAAACBgAAAAACBgAAAAAABgAAAAABAgAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAAwAAAAAHDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAABHgAAAAAEHAAAAAAEHAAAAAAD version: 6 1,-2: ind: 1,-2 @@ -129,11 +138,11 @@ entities: version: 6 1,1: ind: 1,1 - tiles: HQAAAAACBgAAAAADBgAAAAABBgAAAAABBwAAAAADBQAAAAAABQAAAAABBgAAAAACHAAAAAABAwAAAAACAwAAAAABAwAAAAAGAwAAAAABDQAAAAAADQAAAAAADQAAAAAAHgAAAAAEBgAAAAAABwAAAAADBwAAAAAABwAAAAADBQAAAAACBgAAAAADBgAAAAAAHAAAAAACAwAAAAAFAwAAAAACAwAAAAAEAwAAAAAHAwAAAAAHAwAAAAACAwAAAAAAFgAAAAABBgAAAAABBwAAAAAABwAAAAACBwAAAAADBgAAAAACBgAAAAABBgAAAAACHAAAAAACAwAAAAAGAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACHgAAAAAAHgAAAAAFHgAAAAAABgAAAAAABwAAAAABBwAAAAABBwAAAAAABwAAAAADHgAAAAACHgAAAAABHgAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHgAAAAADBgAAAAABBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHgAAAAABHgAAAAAACQAAAAAJDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHQAAAAAAHgAAAAADHgAAAAABAgAAAAALAgAAAAAFHgAAAAABHgAAAAACHgAAAAACCQAAAAANDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHQAAAAAAHQAAAAAFAgAAAAAHAgAAAAAMAgAAAAABAgAAAAAGHgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAMCQAAAAALCQAAAAAICQAAAAAAHQAAAAADAgAAAAAPAgAAAAACAgAAAAANAgAAAAACAgAAAAAIHgAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAICQAAAAANCQAAAAALCQAAAAANHQAAAAABHQAAAAABAgAAAAABAgAAAAACAgAAAAACAgAAAAAAAgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAECQAAAAAMCQAAAAALCQAAAAACHgAAAAACHQAAAAADHQAAAAAEAgAAAAADAgAAAAAKAgAAAAAHHgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAHCQAAAAANCQAAAAAFCQAAAAABCQAAAAAHHQAAAAABHQAAAAAAHgAAAAABHgAAAAADHgAAAAACHQAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAKCQAAAAAECQAAAAAKCQAAAAABCQAAAAAKCQAAAAAACQAAAAALCQAAAAAEHgAAAAABHQAAAAADHQAAAAAACQAAAAAGCQAAAAAACQAAAAAHCQAAAAAGCQAAAAAJCQAAAAANCQAAAAAMCQAAAAAACQAAAAAKCQAAAAANCQAAAAANCQAAAAAHCQAAAAACCQAAAAAJHgAAAAADHAAAAAAECQAAAAADCQAAAAALCQAAAAACCQAAAAAFCQAAAAAKCQAAAAAICQAAAAADCQAAAAAJCQAAAAAGCQAAAAABCQAAAAAHCQAAAAANCQAAAAAMCQAAAAAACQAAAAAHHgAAAAABCQAAAAAHCQAAAAAKCQAAAAAACQAAAAAGCQAAAAAECQAAAAACCQAAAAAHCQAAAAANCQAAAAAECQAAAAADCQAAAAAGCQAAAAAJCQAAAAAMCQAAAAADCQAAAAAMCQAAAAADCQAAAAABCQAAAAAGCQAAAAADCQAAAAAACQAAAAAACQAAAAAECQAAAAAFCQAAAAAGCQAAAAAFCQAAAAAFCQAAAAALCQAAAAABCQAAAAAACQAAAAAKCQAAAAAGCQAAAAAHCQAAAAAHCQAAAAADCQAAAAAMCQAAAAABCQAAAAAJCQAAAAANCQAAAAAACQAAAAAHCQAAAAAE + tiles: HQAAAAACBgAAAAADBgAAAAABBgAAAAABBwAAAAADBQAAAAAABQAAAAABBgAAAAACHAAAAAABAwAAAAACAwAAAAABAwAAAAAGAwAAAAABDQAAAAAADQAAAAAADQAAAAAAHgAAAAAEBgAAAAAABwAAAAADBwAAAAAABwAAAAADBQAAAAACBgAAAAADBgAAAAAAHAAAAAACAwAAAAAFAwAAAAACAwAAAAAEAwAAAAAHAwAAAAAHAwAAAAACAwAAAAAAHAAAAAAABgAAAAABBwAAAAAABwAAAAACBwAAAAADBgAAAAACBgAAAAABBgAAAAACHAAAAAACAwAAAAAGAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACHgAAAAAAHgAAAAAFHgAAAAAABgAAAAAABwAAAAABBwAAAAABBwAAAAAABwAAAAADHgAAAAACHgAAAAABHgAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHgAAAAADBgAAAAABBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHgAAAAABHgAAAAAACQAAAAAJDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHQAAAAAAHgAAAAADHgAAAAABAgAAAAALAgAAAAAFHgAAAAABHgAAAAACHgAAAAACCQAAAAANDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHQAAAAAAHQAAAAAFAgAAAAAHAgAAAAAMAgAAAAABAgAAAAAGHgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAMCQAAAAALCQAAAAAICQAAAAAAHQAAAAADAgAAAAAPAgAAAAACAgAAAAANAgAAAAACAgAAAAAIHgAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAICQAAAAANCQAAAAALCQAAAAANHQAAAAABHQAAAAABAgAAAAABAgAAAAACAgAAAAACAgAAAAAAAgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAECQAAAAAMCQAAAAALCQAAAAACHgAAAAACHQAAAAADHQAAAAAEAgAAAAADAgAAAAAKAgAAAAAHHgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAHCQAAAAANCQAAAAAFCQAAAAABCQAAAAAHHQAAAAABHQAAAAAAHgAAAAABHgAAAAADHgAAAAACHQAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAKCQAAAAAECQAAAAAKCQAAAAABCQAAAAAKCQAAAAAACQAAAAALCQAAAAAEHgAAAAABHQAAAAADHQAAAAAACQAAAAAGCQAAAAAACQAAAAAHCQAAAAAGCQAAAAAJCQAAAAANCQAAAAAMCQAAAAAACQAAAAAKCQAAAAANCQAAAAANCQAAAAAHCQAAAAACCQAAAAAJHgAAAAADHAAAAAAECQAAAAADCQAAAAALCQAAAAACCQAAAAAFCQAAAAAKCQAAAAAICQAAAAADCQAAAAAJCQAAAAAGCQAAAAABCQAAAAAHCQAAAAANCQAAAAAMCQAAAAAACQAAAAAHHgAAAAABCQAAAAAHCQAAAAAKCQAAAAAACQAAAAAGCQAAAAAECQAAAAACCQAAAAAHCQAAAAANCQAAAAAECQAAAAADCQAAAAAGCQAAAAAJCQAAAAAMCQAAAAADCQAAAAAMCQAAAAADCQAAAAABCQAAAAAGCQAAAAADCQAAAAAACQAAAAAACQAAAAAECQAAAAAFCQAAAAAGCQAAAAAFCQAAAAAFCQAAAAALCQAAAAABCQAAAAAACQAAAAAKCQAAAAAGCQAAAAAHCQAAAAAHCQAAAAADCQAAAAAMCQAAAAABCQAAAAAJCQAAAAANCQAAAAAACQAAAAAHCQAAAAAE version: 6 0,1: ind: 0,1 - tiles: BgAAAAADBwAAAAABBQAAAAACBQAAAAABBQAAAAABBQAAAAADBQAAAAABHgAAAAAFBgAAAAADBwAAAAADBwAAAAAABwAAAAADBwAAAAAABQAAAAAABgAAAAADHQAAAAAABwAAAAABBwAAAAABBQAAAAABBQAAAAADBQAAAAACBQAAAAADBQAAAAACHgAAAAABBgAAAAABBgAAAAABBgAAAAADBwAAAAABBgAAAAABBgAAAAADBgAAAAABHQAAAAACBwAAAAAABwAAAAADBwAAAAADBQAAAAAABQAAAAADBQAAAAACBQAAAAADHgAAAAABHgAAAAABHgAAAAABHgAAAAADHQAAAAABHQAAAAACHQAAAAACHQAAAAABHQAAAAACHgAAAAACHgAAAAABHgAAAAAFHgAAAAACGAAAAAADFgAAAAABAgAAAAACFgAAAAADHgAAAAAAHgAAAAADHgAAAAAEHgAAAAABHgAAAAAAHQAAAAADHgAAAAAEHgAAAAAAHgAAAAADHgAAAAAFGAAAAAAAAgAAAAANAgAAAAAIGAAAAAAAFgAAAAADGAAAAAAEBgAAAAABCwAAAAAACwAAAAAACwAAAAAABgAAAAAACwAAAAAABAAAAAAKBgAAAAACHAAAAAAAHAAAAAADFgAAAAAEAgAAAAAAAgAAAAAIAgAAAAABGAAAAAAEHQAAAAAABgAAAAADCwAAAAAACwAAAAAADAAAAAAACwAAAAAABQAAAAACBQAAAAAABgAAAAABHAAAAAAAHAAAAAACHAAAAAACFgAAAAADAgAAAAAFAgAAAAALAgAAAAAMHQAAAAAFBgAAAAAACwAAAAAADAAAAAAADAAAAAAABgAAAAADBQAAAAADCwAAAAAABgAAAAAAHAAAAAAEHAAAAAABHAAAAAADHgAAAAABGAAAAAADHgAAAAACCQAAAAAHCQAAAAAIBgAAAAACBQAAAAABCwAAAAAABgAAAAADBQAAAAABCwAAAAAACwAAAAAABgAAAAACHAAAAAAFHAAAAAABHAAAAAACCQAAAAACCQAAAAANCQAAAAAMCQAAAAALCQAAAAAHBgAAAAABCwAAAAAACwAAAAAACwAAAAAABQAAAAABCwAAAAAACwAAAAAABgAAAAAACQAAAAACCQAAAAAMCQAAAAAECQAAAAACCQAAAAAFCQAAAAACCQAAAAAECQAAAAAHBgAAAAABDAAAAAAADAAAAAAACwAAAAAABgAAAAABCwAAAAAABAAAAAABBgAAAAADCQAAAAAICQAAAAADCQAAAAAJCQAAAAACCQAAAAAFCQAAAAAGCQAAAAABCQAAAAABBgAAAAAADAAAAAAADAAAAAAACwAAAAAADAAAAAAADAAAAAAABAAAAAAGBgAAAAACCQAAAAALCQAAAAAKCQAAAAANCQAAAAAGCQAAAAACCQAAAAAICQAAAAAICQAAAAAHBgAAAAADDAAAAAAADAAAAAAACwAAAAAACwAAAAAACwAAAAAACwAAAAAABgAAAAABCQAAAAAKCQAAAAALCQAAAAAACQAAAAAMCQAAAAAMCQAAAAAICQAAAAAFCQAAAAAHBgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAACBgAAAAABBgAAAAAABgAAAAAACQAAAAALCQAAAAACCQAAAAALCQAAAAAFCQAAAAAHCQAAAAALCQAAAAACCQAAAAACCQAAAAAFCQAAAAANCQAAAAAFCQAAAAAICQAAAAAICQAAAAABCQAAAAABCQAAAAAKCQAAAAAFCQAAAAAKCQAAAAAECQAAAAAECQAAAAAKCQAAAAAMCQAAAAABCQAAAAAMCQAAAAADCQAAAAAKCQAAAAACCQAAAAALCQAAAAADCQAAAAABCQAAAAAICQAAAAAKCQAAAAAGCQAAAAAMCQAAAAAHCQAAAAACCQAAAAALCQAAAAAICQAAAAANCQAAAAAHCQAAAAADCQAAAAALCQAAAAABCQAAAAANCQAAAAACCQAAAAAJCQAAAAABCQAAAAAN + tiles: BgAAAAADBwAAAAABBQAAAAACBQAAAAABBQAAAAABBQAAAAADBQAAAAABHgAAAAAFBgAAAAADBwAAAAADBwAAAAAABwAAAAADBwAAAAAABQAAAAAABgAAAAADHQAAAAAABwAAAAABBwAAAAABBQAAAAABBQAAAAADBQAAAAACBQAAAAADBQAAAAACHgAAAAABBgAAAAABBgAAAAABBgAAAAADBwAAAAABBgAAAAABBgAAAAADBgAAAAABHQAAAAACBwAAAAAABwAAAAADBwAAAAADBQAAAAAABQAAAAADBQAAAAACBQAAAAADHgAAAAABHgAAAAABHgAAAAABHgAAAAADHQAAAAABHQAAAAACHQAAAAACHQAAAAABHQAAAAACHgAAAAACHgAAAAABHgAAAAAFHgAAAAACHQAAAAAAHAAAAAAAAgAAAAACHAAAAAAAHgAAAAAAHgAAAAADHgAAAAAEHgAAAAABHgAAAAAAHQAAAAADHgAAAAAEHgAAAAAAHgAAAAADHgAAAAAFHQAAAAAAAgAAAAANAgAAAAAIHQAAAAAAHAAAAAAAHQAAAAAABgAAAAABCwAAAAAACwAAAAAACwAAAAAABgAAAAAACwAAAAAABAAAAAAKBgAAAAACHAAAAAAAHAAAAAADHAAAAAAAAgAAAAAAAgAAAAAIAgAAAAABHQAAAAAAHQAAAAAABgAAAAADCwAAAAAACwAAAAAADAAAAAAACwAAAAAABQAAAAACBQAAAAAABgAAAAABHAAAAAAAHAAAAAACHAAAAAACHAAAAAAAAgAAAAAFAgAAAAALAgAAAAAMHQAAAAAFBgAAAAAACwAAAAAADAAAAAAADAAAAAAABgAAAAADBQAAAAADCwAAAAAABgAAAAAAHAAAAAAEHAAAAAABHAAAAAADHgAAAAABHQAAAAAAHgAAAAACCQAAAAAHCQAAAAAIBgAAAAACBQAAAAABCwAAAAAABgAAAAADBQAAAAABCwAAAAAACwAAAAAABgAAAAACHAAAAAAFHAAAAAABHAAAAAACCQAAAAACCQAAAAANCQAAAAAMCQAAAAALCQAAAAAHBgAAAAABCwAAAAAACwAAAAAACwAAAAAABQAAAAABCwAAAAAACwAAAAAABgAAAAAACQAAAAACCQAAAAAMCQAAAAAECQAAAAACCQAAAAAFCQAAAAACCQAAAAAECQAAAAAHBgAAAAABDAAAAAAADAAAAAAACwAAAAAABgAAAAABCwAAAAAABAAAAAABBgAAAAADCQAAAAAICQAAAAADCQAAAAAJCQAAAAACCQAAAAAFCQAAAAAGCQAAAAABCQAAAAABBgAAAAAADAAAAAAADAAAAAAACwAAAAAADAAAAAAADAAAAAAABAAAAAAGBgAAAAACCQAAAAALCQAAAAAKCQAAAAANCQAAAAAGCQAAAAACCQAAAAAICQAAAAAICQAAAAAHBgAAAAADDAAAAAAADAAAAAAACwAAAAAACwAAAAAACwAAAAAACwAAAAAABgAAAAABCQAAAAAKCQAAAAALCQAAAAAACQAAAAAMCQAAAAAMCQAAAAAICQAAAAAFCQAAAAAHBgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAACBgAAAAABBgAAAAAABgAAAAAACQAAAAALCQAAAAACCQAAAAALCQAAAAAFCQAAAAAHCQAAAAALCQAAAAACCQAAAAACCQAAAAAFCQAAAAANCQAAAAAFCQAAAAAICQAAAAAICQAAAAABCQAAAAABCQAAAAAKCQAAAAAFCQAAAAAKCQAAAAAECQAAAAAECQAAAAAKCQAAAAAMCQAAAAABCQAAAAAMCQAAAAADCQAAAAAKCQAAAAACCQAAAAALCQAAAAADCQAAAAABCQAAAAAICQAAAAAKCQAAAAAGCQAAAAAMCQAAAAAHCQAAAAACCQAAAAALCQAAAAAICQAAAAANCQAAAAAHCQAAAAADCQAAAAALCQAAAAABCQAAAAANCQAAAAACCQAAAAAJCQAAAAABCQAAAAAN version: 6 1,2: ind: 1,2 @@ -145,7 +154,7 @@ entities: version: 6 -1,1: ind: -1,1 - tiles: HAAAAAABHAAAAAAAHAAAAAAFHAAAAAAEGAAAAAADBgAAAAADBQAAAAAABQAAAAAABgAAAAABBgAAAAADHgAAAAADHgAAAAACHgAAAAAABwAAAAADBQAAAAADBgAAAAACHAAAAAAFHAAAAAAEHAAAAAAAHAAAAAAFHAAAAAADBgAAAAADBQAAAAAABQAAAAACBgAAAAADBgAAAAACHgAAAAADHgAAAAADHgAAAAAFBwAAAAACBQAAAAACBQAAAAABHAAAAAAFHAAAAAABHAAAAAAEHAAAAAAEHAAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHQAAAAACHgAAAAAFHgAAAAAFBwAAAAADBwAAAAACBwAAAAABHAAAAAAFHAAAAAACHAAAAAAEHAAAAAAEHAAAAAAAHgAAAAAAHgAAAAADHgAAAAACHgAAAAAAHQAAAAABGAAAAAAEHAAAAAAEHAAAAAABHAAAAAAEHgAAAAACHgAAAAAFAgAAAAAMHAAAAAACHAAAAAAEAgAAAAACAgAAAAACAgAAAAANGAAAAAADHAAAAAAAGAAAAAACGAAAAAAEAgAAAAACAgAAAAAFAgAAAAAGHAAAAAAAHgAAAAADHgAAAAAFAgAAAAAKAgAAAAAFCQAAAAAIAgAAAAAIAgAAAAAMAgAAAAADAgAAAAAOGAAAAAAEAgAAAAALAgAAAAAEAgAAAAAEHAAAAAAFGAAAAAADHgAAAAACHgAAAAAFHgAAAAABCQAAAAADCQAAAAANCQAAAAAFAgAAAAAMAgAAAAADAgAAAAANAgAAAAAHAgAAAAAIAgAAAAAAAgAAAAANAgAAAAABAgAAAAACHAAAAAADHgAAAAADHgAAAAAEHAAAAAABCQAAAAABCQAAAAAACQAAAAALCQAAAAAHCQAAAAAIAgAAAAALAgAAAAAKAgAAAAACAgAAAAADAgAAAAAIGAAAAAAFAgAAAAAPCQAAAAACHgAAAAAEHgAAAAAEHAAAAAACCQAAAAAGCQAAAAAKCQAAAAAGCQAAAAAMCQAAAAABCQAAAAAFCQAAAAACAgAAAAAJAgAAAAAKAgAAAAAIAgAAAAAJAgAAAAAICQAAAAADCQAAAAACHgAAAAADHAAAAAADCQAAAAAECQAAAAAMCQAAAAANCQAAAAAHCQAAAAAKCQAAAAAMCQAAAAANCQAAAAAACQAAAAADCQAAAAACCQAAAAAECQAAAAAFCQAAAAADCQAAAAAMCQAAAAAACQAAAAAICQAAAAADCQAAAAANCQAAAAALCQAAAAALCQAAAAABCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAADCQAAAAAKCQAAAAALCQAAAAACCQAAAAANCQAAAAALCQAAAAAFCQAAAAAMCQAAAAAFCQAAAAAACQAAAAAECQAAAAACCQAAAAAKCQAAAAABCQAAAAABCQAAAAAFCQAAAAAICQAAAAACCQAAAAAFCQAAAAAACQAAAAAJCQAAAAAHCQAAAAAFCQAAAAAFCQAAAAABCQAAAAALCQAAAAAICQAAAAAKCQAAAAAHCQAAAAADCQAAAAAKCQAAAAABCQAAAAADCQAAAAABCQAAAAAICQAAAAAJCQAAAAANCQAAAAANCQAAAAABCQAAAAAHCQAAAAAICQAAAAAKCQAAAAAJCQAAAAAACQAAAAAHCQAAAAANCQAAAAAACQAAAAADCQAAAAAJCQAAAAAHCQAAAAACCQAAAAAICQAAAAAHCQAAAAAJCQAAAAABCQAAAAAICQAAAAAGCQAAAAAMCQAAAAACCQAAAAADCQAAAAAHCQAAAAAICQAAAAANCQAAAAAMCQAAAAAFCQAAAAAGCQAAAAAGCQAAAAADCQAAAAAECQAAAAAACQAAAAACCQAAAAAKCQAAAAAACQAAAAADCQAAAAAMCQAAAAAJCQAAAAAFCQAAAAAFCQAAAAAACQAAAAAACQAAAAAICQAAAAALCQAAAAAACQAAAAALCQAAAAAHCQAAAAAFCQAAAAAJCQAAAAAM + tiles: HAAAAAABHAAAAAAAHAAAAAAFHAAAAAAEHQAAAAAABgAAAAADBQAAAAAABQAAAAAABgAAAAABBgAAAAADHgAAAAADHgAAAAACHgAAAAAABwAAAAADBQAAAAADBgAAAAACHAAAAAAFHAAAAAAEHAAAAAAAHAAAAAAFHAAAAAADBgAAAAADBQAAAAAABQAAAAACBgAAAAADBgAAAAACHgAAAAADHgAAAAADHgAAAAAFBwAAAAACBQAAAAACBQAAAAABHAAAAAAFHAAAAAABHAAAAAAEHAAAAAAEHAAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHQAAAAACHgAAAAAFHgAAAAAFBwAAAAADBwAAAAACBwAAAAABHAAAAAAFHAAAAAACHAAAAAAEHAAAAAAEHAAAAAAAHgAAAAAAHgAAAAADHgAAAAACHgAAAAAAHQAAAAABHQAAAAAAHAAAAAAEHAAAAAABHAAAAAAEHgAAAAACHgAAAAAFAgAAAAAMHAAAAAACHAAAAAAEAgAAAAACAgAAAAACAgAAAAANHQAAAAAAHAAAAAAAHQAAAAAAHQAAAAAAAgAAAAACAgAAAAAFAgAAAAAGHAAAAAAAHgAAAAADHgAAAAAFAgAAAAAKAgAAAAAFCQAAAAAIAgAAAAAIAgAAAAAMAgAAAAADAgAAAAAOHQAAAAAAAgAAAAALAgAAAAAEAgAAAAAEHAAAAAAFHQAAAAAAHgAAAAACHgAAAAAFHgAAAAABCQAAAAADCQAAAAANCQAAAAAFAgAAAAAMAgAAAAADAgAAAAANAgAAAAAHAgAAAAAIAgAAAAAAAgAAAAANAgAAAAABAgAAAAACHAAAAAADHgAAAAADHgAAAAAEHAAAAAABCQAAAAABCQAAAAAACQAAAAALCQAAAAAHCQAAAAAIAgAAAAALAgAAAAAKAgAAAAACAgAAAAADAgAAAAAIHQAAAAAAAgAAAAAPCQAAAAACHgAAAAAEHgAAAAAEHAAAAAACCQAAAAAGCQAAAAAKCQAAAAAGCQAAAAAMCQAAAAABCQAAAAAFCQAAAAACAgAAAAAJAgAAAAAKAgAAAAAIAgAAAAAJAgAAAAAICQAAAAADCQAAAAACHgAAAAADHAAAAAADCQAAAAAECQAAAAAMCQAAAAANCQAAAAAHCQAAAAAKCQAAAAAMCQAAAAANCQAAAAAACQAAAAADCQAAAAACCQAAAAAECQAAAAAFCQAAAAADCQAAAAAMCQAAAAAACQAAAAAICQAAAAADCQAAAAANCQAAAAALCQAAAAALCQAAAAABCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAADCQAAAAAKCQAAAAALCQAAAAACCQAAAAANCQAAAAALCQAAAAAFCQAAAAAMCQAAAAAFCQAAAAAACQAAAAAECQAAAAACCQAAAAAKCQAAAAABCQAAAAABCQAAAAAFCQAAAAAICQAAAAACCQAAAAAFCQAAAAAACQAAAAAJCQAAAAAHCQAAAAAFCQAAAAAFCQAAAAABCQAAAAALCQAAAAAICQAAAAAKCQAAAAAHCQAAAAADCQAAAAAKCQAAAAABCQAAAAADCQAAAAABCQAAAAAICQAAAAAJCQAAAAANCQAAAAANCQAAAAABCQAAAAAHCQAAAAAICQAAAAAKCQAAAAAJCQAAAAAACQAAAAAHCQAAAAANCQAAAAAACQAAAAADCQAAAAAJCQAAAAAHCQAAAAACCQAAAAAICQAAAAAHCQAAAAAJCQAAAAABCQAAAAAICQAAAAAGCQAAAAAMCQAAAAACCQAAAAADCQAAAAAHCQAAAAAICQAAAAANCQAAAAAMCQAAAAAFCQAAAAAGCQAAAAAGCQAAAAADCQAAAAAECQAAAAAACQAAAAACCQAAAAAKCQAAAAAACQAAAAADCQAAAAAMCQAAAAAJCQAAAAAFCQAAAAAFCQAAAAAACQAAAAAACQAAAAAICQAAAAALCQAAAAAACQAAAAALCQAAAAAHCQAAAAAFCQAAAAAJCQAAAAAM version: 6 -1,2: ind: -1,2 @@ -177,11 +186,11 @@ entities: version: 6 -1,-3: ind: -1,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHgAAAAAEHgAAAAAAHgAAAAAFAgAAAAALIQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAEAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAACHQAAAAAAHgAAAAAEAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAADHQAAAAAAHgAAAAACHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAAAAAAAAAQAAAAADHgAAAAABHgAAAAAEHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHAAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAQAAAAADAQAAAAAEHgAAAAAFAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAACIQAAAAAAAQAAAAACAgAAAAAEAgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHgAAAAACHgAAAAADHgAAAAAFHgAAAAAEFgAAAAAEHgAAAAABIQAAAAAAAgAAAAAGAgAAAAAPAgAAAAAIAgAAAAAKBgAAAAADBgAAAAADBgAAAAAABgAAAAABBgAAAAACBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAAAHgAAAAAAIQAAAAAAHgAAAAADHgAAAAACCQAAAAAIAgAAAAAOBQAAAAACBQAAAAABBQAAAAABBgAAAAADBgAAAAAABQAAAAAABQAAAAADBgAAAAACBQAAAAACBgAAAAACHgAAAAABIQAAAAAABwAAAAABBwAAAAAAAgAAAAANAgAAAAABBgAAAAADBQAAAAABBQAAAAABBgAAAAAABgAAAAADBQAAAAADBgAAAAAABQAAAAACBQAAAAADBgAAAAADHgAAAAADIQAAAAAABgAAAAAABQAAAAAAAgAAAAACAgAAAAAFBgAAAAADBgAAAAABBgAAAAABBQAAAAADBQAAAAAABQAAAAABBAAAAAAGBgAAAAAABwAAAAADBgAAAAACHgAAAAAAIQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHgAAAAAEHgAAAAAAHgAAAAAFAgAAAAALIQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAEAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAACHQAAAAAAHgAAAAAEAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAADHQAAAAAAHgAAAAACHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAAAAAAAAAQAAAAADHgAAAAABHgAAAAAEHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHAAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAQAAAAADAQAAAAAEHgAAAAAFAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAACIQAAAAAAAQAAAAACAgAAAAAEAgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHgAAAAACHgAAAAADHgAAAAAFHgAAAAAEHAAAAAAAHgAAAAABIQAAAAAAAgAAAAAGAgAAAAAPAgAAAAAIAgAAAAAKBgAAAAADBgAAAAADBgAAAAAABgAAAAABBgAAAAACBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAAAHgAAAAAAIQAAAAAAHgAAAAADHgAAAAACCQAAAAAIAgAAAAAOBQAAAAACBQAAAAABBQAAAAABBgAAAAADBgAAAAAABQAAAAAABQAAAAADBgAAAAACBQAAAAACBgAAAAACHgAAAAABIQAAAAAABwAAAAABBwAAAAAAAgAAAAANAgAAAAABBgAAAAADBQAAAAABBQAAAAABBgAAAAAABgAAAAADBQAAAAADBgAAAAAABQAAAAACBQAAAAADBgAAAAADHgAAAAADIQAAAAAABgAAAAAABQAAAAAAAgAAAAACAgAAAAAFBgAAAAADBgAAAAABBgAAAAABBQAAAAADBQAAAAAABQAAAAABBAAAAAAGBgAAAAAABwAAAAADBgAAAAACHgAAAAAAIQAAAAAA version: 6 0,-3: ind: 0,-3 - tiles: AgAAAAAAAgAAAAAAFgAAAAAAAgAAAAABAgAAAAAPHAAAAAAFAgAAAAAHAgAAAAAKAgAAAAACHAAAAAAEHAAAAAAFHAAAAAABHAAAAAABHAAAAAABHgAAAAABHgAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAIAwAAAAAAAwAAAAAAAwAAAAAEAwAAAAAAAwAAAAAAEAAAAAAAEAAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAEAQAAAAACAQAAAAADAQAAAAACDQAAAAAAHgAAAAAAIQAAAAAAAgAAAAAGHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHgAAAAACAwAAAAAAAQAAAAACHgAAAAAAAQAAAAAEAQAAAAABAQAAAAADIQAAAAAAAgAAAAANHgAAAAAAHAAAAAAAHAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAACAwAAAAAAHgAAAAADAQAAAAAEAQAAAAADAQAAAAABAQAAAAAEIQAAAAAAAgAAAAAEHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHgAAAAAFAwAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAAEHgAAAAAEIQAAAAAAHgAAAAAFHAAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAFAwAAAAAAAQAAAAADAQAAAAAAAQAAAAABAQAAAAACAQAAAAACIQAAAAAAHgAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAHgAAAAAAHgAAAAAAHgAAAAADAwAAAAAAAQAAAAABAQAAAAAEAQAAAAAEAQAAAAACAQAAAAAAIQAAAAAAHgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAwAAAAAAAQAAAAABAQAAAAACAQAAAAABAQAAAAAEAQAAAAAAIQAAAAAAAgAAAAANHAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAABAwAAAAAAAQAAAAACAQAAAAACAQAAAAAEAQAAAAADAQAAAAACIQAAAAAAFgAAAAAAHgAAAAABHgAAAAAAHgAAAAACHgAAAAAEHgAAAAACHQAAAAAAAgAAAAAGHgAAAAABAwAAAAAAAQAAAAADAQAAAAAAAQAAAAADAQAAAAADAQAAAAABIQAAAAAAHgAAAAAFBgAAAAACBgAAAAAABgAAAAACBgAAAAAABgAAAAAABgAAAAAABgAAAAACHgAAAAABAwAAAAACHgAAAAAFAQAAAAADAQAAAAAEAQAAAAAAAQAAAAACIQAAAAAAHgAAAAABBgAAAAACBQAAAAADBQAAAAADBQAAAAADBQAAAAACBQAAAAACBgAAAAADHgAAAAAEAwAAAAAAHgAAAAAAHgAAAAACHgAAAAAEHgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAEBgAAAAACBQAAAAADBQAAAAABBQAAAAABBgAAAAABBgAAAAADBgAAAAABHgAAAAABAwAAAAAAHgAAAAAFHgAAAAACHgAAAAABHgAAAAADHgAAAAAFAgAAAAAAAgAAAAAKBgAAAAABBQAAAAACBQAAAAAABQAAAAAABQAAAAABBQAAAAACBgAAAAABHgAAAAAFAwAAAAAGAwAAAAAEAwAAAAADAwAAAAAEAwAAAAADAwAAAAAB + tiles: AgAAAAAAAgAAAAAAHAAAAAAAAgAAAAABAgAAAAAPHAAAAAAFAgAAAAAHAgAAAAAKAgAAAAACHAAAAAAEHAAAAAAFHAAAAAABHAAAAAABHAAAAAABHgAAAAABHgAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAIAwAAAAAAAwAAAAAAAwAAAAAEAwAAAAAAAwAAAAAAEAAAAAAAEAAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAEAQAAAAACAQAAAAADAQAAAAACDQAAAAAAHgAAAAAAIQAAAAAAAgAAAAAGHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHgAAAAACAwAAAAAAAQAAAAACHgAAAAAAAQAAAAAEAQAAAAABAQAAAAADIQAAAAAAAgAAAAANHgAAAAAAHAAAAAAAHAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAACAwAAAAAAHgAAAAADAQAAAAAEAQAAAAADAQAAAAABAQAAAAAEIQAAAAAAAgAAAAAEHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHgAAAAAFAwAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAAEHgAAAAAEIQAAAAAAHgAAAAAFHAAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAFAwAAAAAAAQAAAAADAQAAAAAAAQAAAAABAQAAAAACAQAAAAACIQAAAAAAHgAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAHgAAAAAAHgAAAAAAHgAAAAADAwAAAAAAAQAAAAABAQAAAAAEAQAAAAAEAQAAAAACAQAAAAAAIQAAAAAAHgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAwAAAAAAAQAAAAABAQAAAAACAQAAAAABAQAAAAAEAQAAAAAAIQAAAAAAAgAAAAANHAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAABAwAAAAAAAQAAAAACAQAAAAACAQAAAAAEAQAAAAADAQAAAAACIQAAAAAAHAAAAAAAHgAAAAABHgAAAAAAHgAAAAACHgAAAAAEHgAAAAACHQAAAAAAAgAAAAAGHgAAAAABAwAAAAAAAQAAAAADAQAAAAAAAQAAAAADAQAAAAADAQAAAAABIQAAAAAAHgAAAAAFBgAAAAACBgAAAAAABgAAAAACBgAAAAAABgAAAAAABgAAAAAABgAAAAACHgAAAAABAwAAAAACHgAAAAAFAQAAAAADAQAAAAAEAQAAAAAAAQAAAAACIQAAAAAAHgAAAAABBgAAAAACBQAAAAADBQAAAAADBQAAAAADBQAAAAACBQAAAAACBgAAAAADHgAAAAAEAwAAAAAAHgAAAAAAHgAAAAACHgAAAAAEHgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAEBgAAAAACBQAAAAADBQAAAAABBQAAAAABBgAAAAABBgAAAAADBgAAAAABHgAAAAABAwAAAAAAHgAAAAAFHgAAAAACHgAAAAABHgAAAAADHgAAAAAFAgAAAAAAAgAAAAAKBgAAAAABBQAAAAACBQAAAAAABQAAAAAABQAAAAABBQAAAAACBgAAAAABHgAAAAAFAwAAAAAGAwAAAAAEAwAAAAADAwAAAAAEAwAAAAADAwAAAAAB version: 6 1,-3: ind: 1,-3 @@ -449,7 +458,7 @@ entities: version: 6 7,4: ind: 7,4 - tiles: AQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAQAAAAADAQAAAAABAQAAAAACAQAAAAABAQAAAAAEAQAAAAACAQAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAABAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAEAQAAAAAAAQAAAAABAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQAAAAADAQAAAAAEAQAAAAAEAQAAAAABAQAAAAABAQAAAAABAQAAAAAAAQAAAAABAQAAAAABAQAAAAACAQAAAAACAQAAAAAEAQAAAAABAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAABAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAACAQAAAAAEAQAAAAACAQAAAAADAQAAAAABAQAAAAABAAAAAAAAAQAAAAABAQAAAAADAQAAAAAAAQAAAAAEAQAAAAADAQAAAAADAQAAAAADAQAAAAACAQAAAAADAQAAAAAEAQAAAAABAQAAAAADAQAAAAADAQAAAAABAQAAAAABAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAEAQAAAAACAQAAAAADAQAAAAACAQAAAAABAQAAAAAEAQAAAAAEAQAAAAABAQAAAAAAAQAAAAABAQAAAAAEAQAAAAADAAAAAAAAAQAAAAACAQAAAAACAQAAAAACAQAAAAACAQAAAAADAQAAAAACAQAAAAAEAQAAAAAEAQAAAAACAQAAAAABAQAAAAACAQAAAAABAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAADAQAAAAACAQAAAAACAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAADAQAAAAABAQAAAAABAQAAAAABAQAAAAADAQAAAAABAQAAAAACAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAABAQAAAAACAQAAAAACAQAAAAAAAQAAAAADAQAAAAAEAQAAAAACAQAAAAAEAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAABAQAAAAAAAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAADAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAACAQAAAAABAQAAAAADAQAAAAAAAQAAAAABAQAAAAACAQAAAAADAQAAAAADAQAAAAADAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAQAAAAABAQAAAAAEAQAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAAAQAAAAABAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAQAAAAABAQAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAEAQAAAAADAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAQAAAAADAQAAAAABAQAAAAACAQAAAAABAQAAAAAEAQAAAAACAQAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAABAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAEAQAAAAAAAQAAAAABAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQAAAAADAQAAAAAEAQAAAAAEAQAAAAABAQAAAAABAQAAAAABAQAAAAAAAQAAAAABAQAAAAABAQAAAAACAQAAAAACAQAAAAAEAQAAAAABAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAABAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAACAQAAAAAEAQAAAAACAQAAAAADAQAAAAABAQAAAAABAAAAAAAAAQAAAAABAQAAAAADAQAAAAAAAQAAAAAEAQAAAAADAQAAAAADAQAAAAADAQAAAAACAQAAAAADAQAAAAAEAQAAAAABAQAAAAADAQAAAAADAQAAAAABAQAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAEAQAAAAACAQAAAAADAQAAAAACAQAAAAABAQAAAAAEAQAAAAAEAQAAAAABAQAAAAAAAQAAAAABAQAAAAAEAQAAAAADAQAAAAAAAQAAAAACAQAAAAACAQAAAAACAQAAAAACAQAAAAADAQAAAAACAQAAAAAEAQAAAAAEAQAAAAACAQAAAAABAQAAAAACAQAAAAABAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAADAQAAAAACAQAAAAACAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAADAQAAAAABAQAAAAABAQAAAAABAQAAAAADAQAAAAABAQAAAAACAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAABAQAAAAACAQAAAAACAQAAAAAAAQAAAAADAQAAAAAEAQAAAAACAQAAAAAEAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAABAQAAAAAAAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAADAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAACAQAAAAABAQAAAAADAQAAAAAAAQAAAAABAQAAAAACAQAAAAADAQAAAAADAQAAAAADAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAQAAAAABAQAAAAAEAQAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAAAQAAAAABAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAQAAAAABAQAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAEAQAAAAADAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -3,-1: ind: -3,-1 @@ -479,6 +488,18 @@ entities: ind: -3,-3 tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 + -3,-2: + ind: -3,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -6,-5: + ind: -6,-5 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 8,4: + ind: 8,4 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 - type: Physics bodyStatus: InAir angularDamping: 0.05 @@ -832,14 +853,6 @@ entities: 217: -15.227991,41.357822 - type: GasTileOverlay - type: RadiationGridResistance -- proto: ChessBoard - entities: - - uid: 2104 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5103,-40.338512 - parent: 1 - proto: CP14AlchemyFurnace entities: - uid: 2 @@ -902,7 +915,7 @@ entities: - uid: 12 components: - type: Transform - pos: 6.386755,19.645937 + pos: 5.8588877,22.397306 parent: 1 - uid: 15 components: @@ -1079,8 +1092,7 @@ entities: - uid: 50 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 22.489698,16.453072 + pos: 18.484926,19.120111 parent: 1 - proto: CP14BaseSharpeningStone entities: @@ -1271,6 +1283,17 @@ entities: parent: 1 - proto: CP14Bell entities: + - uid: 7678 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.295984,-22.20922 + parent: 1 + - uid: 7679 + components: + - type: Transform + pos: -8.50448,1.1592681 + parent: 1 - uid: 14307 components: - type: Transform @@ -38270,26 +38293,6 @@ entities: rot: 1.5707963267948966 rad pos: -4.5,4.5 parent: 1 - - uid: 7184 - components: - - type: Transform - pos: -23.5,10.5 - parent: 1 - - uid: 7185 - components: - - type: Transform - pos: -24.5,10.5 - parent: 1 - - uid: 7186 - components: - - type: Transform - pos: -23.5,8.5 - parent: 1 - - uid: 7187 - components: - - type: Transform - pos: -24.5,8.5 - parent: 1 - uid: 7188 components: - type: Transform @@ -40256,7 +40259,7 @@ entities: rot: -1.5707963267948966 rad pos: -1.751207,-15.858576 parent: 1 -- proto: CP14CrystalAir +- proto: CP14CrystalQuartz entities: - uid: 7552 components: @@ -40287,8 +40290,6 @@ entities: rot: -1.5707963267948966 rad pos: 5.5089397,23.222403 parent: 1 -- proto: CP14CrystalChaos - entities: - uid: 7557 components: - type: Transform @@ -40313,8 +40314,6 @@ entities: rot: 3.141592653589793 rad pos: -28.061974,-10.1861515 parent: 1 -- proto: CP14CrystalEmpty - entities: - uid: 7561 components: - type: Transform @@ -40333,8 +40332,6 @@ entities: rot: 3.141592653589793 rad pos: -25.89728,1.3308579 parent: 1 -- proto: CP14CrystalOrder - entities: - uid: 7564 components: - type: Transform @@ -40361,8 +40358,6 @@ entities: rot: 3.141592653589793 rad pos: -26.403711,-7.618255 parent: 1 -- proto: CP14CrystalWater - entities: - uid: 7569 components: - type: Transform @@ -40935,58 +40930,6 @@ entities: - type: Transform pos: 17.630857,-2.5448456 parent: 1 -- proto: CP14DemiplaneKeyT1 - entities: - - uid: 7674 - components: - - type: Transform - pos: -5.841518,-14.157722 - parent: 1 - - uid: 7675 - components: - - type: Transform - pos: -5.5601673,-14.180212 - parent: 1 - - uid: 7676 - components: - - type: Transform - pos: -5.2563095,-14.180212 - parent: 1 - - uid: 7677 - components: - - type: Transform - pos: -5.6839614,-14.337633 - parent: 1 - - uid: 7678 - components: - - type: Transform - pos: -5.3688498,-14.348878 - parent: 1 - - uid: 7679 - components: - - type: Transform - pos: -5.8527718,-14.472566 - parent: 1 - - uid: 7680 - components: - - type: Transform - pos: -5.4701347,-14.495055 - parent: 1 - - uid: 7681 - components: - - type: Transform - pos: -5.1662765,-14.517543 - parent: 1 - - uid: 7682 - components: - - type: Transform - pos: -5.1100073,-14.360122 - parent: 1 - - uid: 7683 - components: - - type: Transform - pos: -5.9540577,-14.337633 - parent: 1 - proto: CP14DemiplaneLinkCrystal entities: - uid: 9228 @@ -41037,16 +40980,17 @@ entities: parent: 1 - proto: CP14EssenceCollector entities: + - uid: 7674 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,16.5 + parent: 1 - uid: 7690 components: - type: Transform pos: 17.5,0.5 parent: 1 - - uid: 7691 - components: - - type: Transform - pos: 22.5,16.5 - parent: 1 - proto: CP14FenceBigIron entities: - uid: 7583 @@ -41107,18 +41051,6 @@ entities: rot: 1.5707963267948966 rad pos: 10.5,-37.5 parent: 1 - - uid: 7703 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-33.5 - parent: 1 - - uid: 7704 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-34.5 - parent: 1 - uid: 7705 components: - type: Transform @@ -41693,6 +41625,31 @@ entities: rot: 3.141592653589793 rad pos: 105.5,58.5 parent: 1 +- proto: CP14FenceGateBigIronCityGate + entities: + - uid: 7184 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 37.5,8.5 + parent: 1 + - uid: 7185 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-45.5 + parent: 1 + - uid: 7186 + components: + - type: Transform + pos: -0.5,-45.5 + parent: 1 + - uid: 7187 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 37.5,9.5 + parent: 1 - proto: CP14FenceGateBigIronDemiplaneCrystal entities: - uid: 7693 @@ -41706,14 +41663,8 @@ entities: rot: 3.141592653589793 rad pos: 3.5,-17.5 parent: 1 -- proto: CP14FenceGateBigIronGuard +- proto: CP14FenceGateBigIronGuardBarracks entities: - - uid: 4483 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,8.5 - parent: 1 - uid: 7694 components: - type: Transform @@ -41726,22 +41677,6 @@ entities: rot: -1.5707963267948966 rad pos: 15.5,-27.5 parent: 1 - - uid: 11124 - components: - - type: Transform - pos: -0.5,-45.5 - parent: 1 - - uid: 11131 - components: - - type: Transform - pos: 0.5,-45.5 - parent: 1 - - uid: 11628 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,9.5 - parent: 1 - uid: 13871 components: - type: Transform @@ -42126,12 +42061,6 @@ entities: rot: 3.141592653589793 rad pos: -14.5,-2.5 parent: 1 - - uid: 7805 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,4.5 - parent: 1 - uid: 7806 components: - type: Transform @@ -42150,12 +42079,6 @@ entities: rot: -1.5707963267948966 rad pos: 6.5,-24.5 parent: 1 - - uid: 7815 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 22.5,16.5 - parent: 1 - uid: 7816 components: - type: Transform @@ -42305,6 +42228,16 @@ entities: parent: 1 - proto: CP14FloorWater entities: + - uid: 7680 + components: + - type: Transform + pos: -32.5,-18.5 + parent: 1 + - uid: 7681 + components: + - type: Transform + pos: -80.5,-70.5 + parent: 1 - uid: 7822 components: - type: Transform @@ -42340,12 +42273,6 @@ entities: - type: Transform pos: 20.5,23.5 parent: 1 - - uid: 7897 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -19.5,-11.5 - parent: 1 - uid: 7898 components: - type: Transform @@ -42520,24 +42447,6 @@ entities: - type: Transform pos: 21.5,22.5 parent: 1 - - uid: 7940 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -20.5,-12.5 - parent: 1 - - uid: 7941 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -20.5,-11.5 - parent: 1 - - uid: 7942 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -21.5,-11.5 - parent: 1 - uid: 7943 components: - type: Transform @@ -42580,12 +42489,6 @@ entities: rot: 1.5707963267948966 rad pos: -25.5,39.5 parent: 1 - - uid: 7950 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -19.5,-12.5 - parent: 1 - uid: 7951 components: - type: Transform @@ -47293,7 +47196,7 @@ entities: rot: -1.5707963267948966 rad pos: -22.5,-69.5 parent: 1 -- proto: CP14IronDoorGuard +- proto: CP14IronDoorGuardBarracks entities: - uid: 11 components: @@ -47473,34 +47376,32 @@ entities: rot: 3.141592653589793 rad pos: 30.5,14.5 parent: 1 -- proto: CP14IronDoorWindowedGuardEntrance +- proto: CP14IronDoorWindowedCityGate entities: - - uid: 8843 + - uid: 7682 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,-26.5 - parent: 1 - - uid: 8844 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 21.5,-14.5 - parent: 1 -- proto: CP14IronDoorWindowedMirroredGuardEntrance - entities: - - uid: 8845 - components: - - type: Transform - rot: 3.141592653589793 rad pos: 20.5,-14.5 parent: 1 - - uid: 8846 + - uid: 7683 components: - type: Transform - rot: -1.5707963267948966 rad + rot: 1.5707963267948966 rad pos: 10.5,-27.5 parent: 1 +- proto: CP14IronDoorWindowedMirroredCityGate + entities: + - uid: 7691 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-26.5 + parent: 1 + - uid: 7703 + components: + - type: Transform + pos: 21.5,-14.5 + parent: 1 - proto: CP14JewelryTopaz entities: - uid: 8847 @@ -48619,13 +48520,6 @@ entities: - type: Transform pos: -6.3940024,-47.417915 parent: 1 -- proto: CP14Nail20 - entities: - - uid: 8998 - components: - - type: Transform - pos: 7.829065,1.7326093 - parent: 1 - proto: CP14Paper entities: - uid: 9001 @@ -48893,13 +48787,6 @@ entities: - type: Transform pos: -23.5,-17.5 parent: 1 -- proto: CP14PlantPotato - entities: - - uid: 9047 - components: - - type: Transform - pos: -20.5,-21.5 - parent: 1 - proto: CP14PlantTomatoes entities: - uid: 9048 @@ -49127,12 +49014,6 @@ entities: - type: Transform pos: 19.5,-1.5 parent: 1 - - uid: 9091 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -20.5,-15.5 - parent: 1 - uid: 9092 components: - type: Transform @@ -67168,6 +67049,26 @@ entities: - type: Transform pos: 8.661774,3.3517995 parent: 1 +- proto: CP14StoneWell + entities: + - uid: 7675 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 34.5,5.5 + parent: 1 + - uid: 7676 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,-8.5 + parent: 1 + - uid: 7677 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-15.5 + parent: 1 - proto: CP14String entities: - uid: 11431 @@ -69040,139 +68941,6 @@ entities: parent: 1 - type: Fixtures fixtures: {} -- proto: CP14WallmountCrystalAmethysts - entities: - - uid: 11754 - components: - - type: Transform - pos: 20.5,27.5 - parent: 1 - - uid: 11755 - components: - - type: Transform - pos: 21.5,28.5 - parent: 1 -- proto: CP14WallmountCrystalEmeralds - entities: - - uid: 11756 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 22.5,23.5 - parent: 1 - - uid: 11757 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 22.5,27.5 - parent: 1 - - uid: 11758 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 22.5,28.5 - parent: 1 - - uid: 11759 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 22.5,19.5 - parent: 1 -- proto: CP14WallmountCrystalRubies - entities: - - uid: 11761 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,0.5 - parent: 1 - - uid: 11762 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,1.5 - parent: 1 - - uid: 11763 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,3.5 - parent: 1 -- proto: CP14WallmountCrystalSapphires - entities: - - uid: 11764 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -25.5,38.5 - parent: 1 - - uid: 11765 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -23.5,40.5 - parent: 1 - - uid: 11766 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -23.5,41.5 - parent: 1 - - uid: 11767 - components: - - type: Transform - pos: -28.5,43.5 - parent: 1 - - uid: 11768 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -26.5,38.5 - parent: 1 - - uid: 11769 - components: - - type: Transform - pos: -25.5,43.5 - parent: 1 - - uid: 11770 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -28.5,41.5 - parent: 1 -- proto: CP14WallmountCrystalTopazes - entities: - - uid: 11771 - components: - - type: Transform - pos: 0.5,24.5 - parent: 1 - - uid: 11772 - components: - - type: Transform - pos: 1.5,24.5 - parent: 1 - - uid: 11773 - components: - - type: Transform - pos: -0.5,24.5 - parent: 1 - - uid: 11774 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,24.5 - parent: 1 - - uid: 11775 - components: - - type: Transform - pos: -1.5,23.5 - parent: 1 - - uid: 11776 - components: - - type: Transform - pos: -3.5,22.5 - parent: 1 - proto: CP14WallmountFlagAlchemist entities: - uid: 11777 @@ -70311,184 +70079,6 @@ entities: - type: Transform pos: -5.4832573,12.711022 parent: 1 -- proto: CP14WallSkulls - entities: - - uid: 11915 - components: - - type: Transform - pos: -23.5,-66.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: top - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: left - - uid: 11916 - components: - - type: Transform - pos: -26.5,-73.5 - parent: 1 - - uid: 11917 - components: - - type: Transform - pos: -22.5,-67.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: top - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: left - - uid: 11918 - components: - - type: Transform - pos: -22.5,-70.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: left - - uid: 11919 - components: - - type: Transform - pos: -22.5,-68.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: left - - uid: 11920 - components: - - type: Transform - pos: -27.5,-73.5 - parent: 1 - - uid: 11921 - components: - - type: Transform - pos: -28.5,-71.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: bottom - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: right - - uid: 11922 - components: - - type: Transform - pos: -22.5,-71.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: left - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: bottom - - uid: 11923 - components: - - type: Transform - pos: -23.5,-67.5 - parent: 1 - - uid: 11924 - components: - - type: Transform - pos: -27.5,-71.5 - parent: 1 - - uid: 11925 - components: - - type: Transform - pos: -28.5,-70.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: right - - uid: 11926 - components: - - type: Transform - pos: -27.5,-67.5 - parent: 1 - - uid: 11927 - components: - - type: Transform - pos: -28.5,-68.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: right - - uid: 11928 - components: - - type: Transform - pos: -28.5,-67.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: top - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: right - - uid: 11929 - components: - - type: Transform - pos: -27.5,-66.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: top - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: right - - uid: 11930 - components: - - type: Transform - pos: -23.5,-71.5 - parent: 1 - - uid: 11931 - components: - - type: Transform - pos: -28.5,-69.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: right - - uid: 11932 - components: - - type: Transform - pos: -24.5,-73.5 - parent: 1 - - uid: 11933 - components: - - type: Transform - pos: -23.5,-73.5 - parent: 1 - - uid: 11934 - components: - - type: Transform - pos: -27.5,-72.5 - parent: 1 - - uid: 11935 - components: - - type: Transform - pos: -23.5,-72.5 - parent: 1 - - uid: 11936 - components: - - type: Transform - pos: -26.5,-72.5 - parent: 1 - - uid: 11937 - components: - - type: Transform - pos: -24.5,-72.5 - parent: 1 - - uid: 11938 - components: - - type: Transform - pos: -25.5,-72.5 - parent: 1 - proto: CP14WallStone entities: - uid: 7834 @@ -81348,6 +80938,11 @@ entities: - type: Transform pos: 9.5,-46.5 parent: 1 + - uid: 2104 + components: + - type: Transform + pos: 10.5,-33.5 + parent: 1 - uid: 2924 components: - type: Transform @@ -81423,6 +81018,11 @@ entities: - type: Transform pos: 34.5,-5.5 parent: 1 + - uid: 4483 + components: + - type: Transform + pos: 10.5,-34.5 + parent: 1 - uid: 4589 components: - type: Transform @@ -83288,6 +82888,184 @@ entities: - type: Transform pos: -32.5,-45.5 parent: 1 +- proto: CP14WallStonebrickOld + entities: + - uid: 11915 + components: + - type: Transform + pos: -23.5,-66.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: top + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: left + - uid: 11916 + components: + - type: Transform + pos: -26.5,-73.5 + parent: 1 + - uid: 11917 + components: + - type: Transform + pos: -22.5,-67.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: top + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: left + - uid: 11918 + components: + - type: Transform + pos: -22.5,-70.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: left + - uid: 11919 + components: + - type: Transform + pos: -22.5,-68.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: left + - uid: 11920 + components: + - type: Transform + pos: -27.5,-73.5 + parent: 1 + - uid: 11921 + components: + - type: Transform + pos: -28.5,-71.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: bottom + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: right + - uid: 11922 + components: + - type: Transform + pos: -22.5,-71.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: left + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: bottom + - uid: 11923 + components: + - type: Transform + pos: -23.5,-67.5 + parent: 1 + - uid: 11924 + components: + - type: Transform + pos: -27.5,-71.5 + parent: 1 + - uid: 11925 + components: + - type: Transform + pos: -28.5,-70.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: right + - uid: 11926 + components: + - type: Transform + pos: -27.5,-67.5 + parent: 1 + - uid: 11927 + components: + - type: Transform + pos: -28.5,-68.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: right + - uid: 11928 + components: + - type: Transform + pos: -28.5,-67.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: top + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: right + - uid: 11929 + components: + - type: Transform + pos: -27.5,-66.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: top + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: right + - uid: 11930 + components: + - type: Transform + pos: -23.5,-71.5 + parent: 1 + - uid: 11931 + components: + - type: Transform + pos: -28.5,-69.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: right + - uid: 11932 + components: + - type: Transform + pos: -24.5,-73.5 + parent: 1 + - uid: 11933 + components: + - type: Transform + pos: -23.5,-73.5 + parent: 1 + - uid: 11934 + components: + - type: Transform + pos: -27.5,-72.5 + parent: 1 + - uid: 11935 + components: + - type: Transform + pos: -23.5,-72.5 + parent: 1 + - uid: 11936 + components: + - type: Transform + pos: -26.5,-72.5 + parent: 1 + - uid: 11937 + components: + - type: Transform + pos: -24.5,-72.5 + parent: 1 + - uid: 11938 + components: + - type: Transform + pos: -25.5,-72.5 + parent: 1 - proto: CP14WallStoneCopperOre entities: - uid: 14301 @@ -87811,23 +87589,6 @@ entities: - type: Transform pos: 27.5,17.5 parent: 1 -- proto: DeskBell - entities: - - uid: 15178 - components: - - type: Transform - pos: 11.297916,-28.345606 - parent: 1 - - uid: 15179 - components: - - type: Transform - pos: -8.50448,1.1592681 - parent: 1 - - uid: 15180 - components: - - type: Transform - pos: -11.280857,-22.228916 - parent: 1 - proto: SpawnPointLatejoin entities: - uid: 11353 @@ -87859,44 +87620,4 @@ entities: - type: Transform pos: 0.5,-0.5 parent: 1 -- proto: WarpPoint - entities: - - uid: 15187 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-1.5 - parent: 1 - - type: WarpPoint - location: Island center - - uid: 15188 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 18.5,-22.5 - parent: 1 - - type: WarpPoint - location: Guard - - uid: 15189 - components: - - type: Transform - pos: 29.5,15.5 - parent: 1 - - type: WarpPoint - location: Blacksmith - - uid: 15190 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 14.5,3.5 - parent: 1 - - type: WarpPoint - location: Alchemist - - uid: 15191 - components: - - type: Transform - pos: 81.5,41.5 - parent: 1 - - type: WarpPoint - location: Dungeon ... diff --git a/Resources/Prototypes/_CP14/Catalog/Fills/dresser.yml b/Resources/Prototypes/_CP14/Catalog/Fills/dresser.yml index 9784a8a61f..29d58fbd72 100644 --- a/Resources/Prototypes/_CP14/Catalog/Fills/dresser.yml +++ b/Resources/Prototypes/_CP14/Catalog/Fills/dresser.yml @@ -6,10 +6,6 @@ - type: StorageFill contents: - id: CP14GuidebookAlchemy - - id: CP14ClothingEyesAlchemyGlasses - prob: 0.5 - - id: CP14ClothingEyesAlchemyMonocle - prob: 0.2 - id: CP14ClothingCloakAlchemist prob: 0.6 - id: CP14ClothingHeadAlchemistBeret diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fire_rune.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fire_rune.yml deleted file mode 100644 index 94727de9bf..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fire_rune.yml +++ /dev/null @@ -1,98 +0,0 @@ -- type: entity - id: CP14ActionSpellFireRune - name: Fire rune - description: You create an area where a scalding stream of fire occurs with little delay. - components: - - type: Sprite - sprite: _CP14/Actions/Spells/fire.rsi - state: tiefling_revenge - - type: CP14MagicEffectCastSlowdown - speedMultiplier: 0.5 - - type: CP14MagicEffectManaCost - manaCost: 15 - - type: CP14MagicEffect - telegraphyEffects: - - !type:CP14SpellSpawnEntityOnTarget - spawns: - - CP14TelegraphyFireRune - effects: - - !type:CP14SpellSpawnEntityOnTarget - spawns: - - CP14AreaEntityEffectFireRune - - type: CP14MagicEffectCastingVisual - proto: CP14RuneEarthWall - - type: CP14MagicEffectPacifiedBlock - - type: EntityWorldTargetAction - range: 10 - itemIconStyle: BigAction - sound: !type:SoundPathSpecifier - path: /Audio/Magic/rumble.ogg - icon: - sprite: _CP14/Actions/Spells/fire.rsi - state: tiefling_revenge - event: !type:CP14DelayedEntityWorldTargetActionEvent - cooldown: 10 - -- type: entity - id: CP14TelegraphyFireRune - parent: CP14BaseMagicImpact - categories: [ HideSpawnMenu ] - save: false - components: - - type: PointLight - color: "#eea911" - - type: TimedDespawn - lifetime: 0.8 - - type: Sprite - noRot: true - drawdepth: BelowFloor - sprite: _CP14/Effects/Magic/area_impact.rsi - layers: - - state: area_impact_in - color: "#eea911" - scale: 2, 2 - shader: unshaded - -- type: entity - id: CP14AreaEntityEffectFireRune - parent: CP14BaseMagicImpact - categories: [ HideSpawnMenu ] - save: false - components: - - type: PointLight - color: "#eea911" - - type: Sprite - noRot: true - drawdepth: BelowFloor - sprite: _CP14/Effects/Magic/area_impact.rsi - layers: - - state: area_impact_out - color: "#eea911" - scale: 2, 2 - shader: unshaded - - type: TimedDespawn - lifetime: 0.8 - - type: CP14AreaEntityEffect - range: 1 - whitelist: - components: - - Damageable - effects: - - !type:CP14SpellSpawnEntityOnTarget - spawns: - - CP14ImpactEffectTieflingRevenge - - !type:CP14SpellApplyEntityEffect - effects: - - !type:HealthChange - damage: - types: - Heat: 10 - -- type: entity - parent: CP14BaseSpellScrollFire - id: CP14SpellScrollFireRune - name: fire rune spell scroll - components: - - type: CP14SpellStorage - spells: - - CP14ActionSpellFireRune \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fireball.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fireball.yml index 6293d727fb..3aab714392 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fireball.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fireball.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 20 - type: CP14MagicEffect + magicType: Fire effects: - !type:CP14SpellSpawnEntityOnUser spawns: @@ -36,7 +37,7 @@ state: fireball event: !type:CP14DelayedEntityWorldTargetActionEvent cooldown: 25 - castDelay: 1.5 + castDelay: 2.5 breakOnMove: false - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/flame_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/flame_creation.yml index 0274879d97..a2ac6d4879 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/flame_creation.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/flame_creation.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 5 - type: CP14MagicEffect + magicType: Fire effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/hell_ballade.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/hell_ballade.yml index 53c5af43d5..ddaff00d81 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/hell_ballade.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/hell_ballade.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 1 - type: CP14MagicEffect + magicType: Fire effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/tiefling_inner_fire.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/tiefling_inner_fire.yml index 91846c528b..c4f36538f6 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/tiefling_inner_fire.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/tiefling_inner_fire.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectCastingVisual proto: CP14RuneTieflingRevenge - type: CP14MagicEffect + magicType: Fire effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_heat.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_heat.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml index c7ceac34d0..d43079d6d6 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_heat.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_poison.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml similarity index 94% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_poison.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml index ae6890d9f6..503939eb6f 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_poison.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml @@ -1,7 +1,7 @@ - type: entity id: CP14ActionSpellBloodPurification name: Blood purification - description: You cleanse the target's blood of poisons, and restore its volume slightly + description: You cleanse the target's blood of poisons and acids, and restore its volume slightly components: - type: Sprite sprite: _CP14/Actions/Spells/healing.rsi @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -52,7 +53,7 @@ cooldown: 5 castDelay: 1.5 breakOnMove: false - + - type: entity id: CP14RuneBloodPurification parent: CP14BaseMagicRune diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_wounds.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_wounds.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml index b23d54e603..e339b649d3 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_wounds.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_heal_ballade.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/heal_ballade.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_heal_ballade.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/heal_ballade.yml index 04c8af2971..c3b753ab2c 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_heal_ballade.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/heal_ballade.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 1 - type: CP14MagicEffect + magicType: Life effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/magical_acceleration.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/magical_acceleration.yml index cd4d32d350..bb34144809 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/magical_acceleration.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/magical_acceleration.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 3 - type: CP14MagicEffect + magicType: Life effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_peace_ballade.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/peace_ballade.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_peace_ballade.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/peace_ballade.yml index 842215ec8f..6daec90aac 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_peace_ballade.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/peace_ballade.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 2 - type: CP14MagicEffect + magicType: Life effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_plant_growth.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/plant_growth.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_plant_growth.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/plant_growth.yml index c75bc4f919..ea4885c658 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_plant_growth.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/plant_growth.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 5 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/T1_resurrection.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/resurrection.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/T1_resurrection.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/resurrection.yml index 3fb0bbb5e1..f7d393c6f7 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/T1_resurrection.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/resurrection.yml @@ -13,6 +13,7 @@ - type: CP14MagicEffectAliveTargetRequired inverted: true - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml index 6ad1a98a63..e7b49985c5 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 30 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_speed_ballade.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/speed_ballade.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_speed_ballade.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/speed_ballade.yml index c34e023b6c..9bd96ad1a5 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_speed_ballade.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/speed_ballade.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 1 - type: CP14MagicEffect + magicType: Life effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_flash_light.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/flash_light.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_flash_light.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/flash_light.yml index 045703a10d..116c520085 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_flash_light.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/flash_light.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Light telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/search_of_life.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/search_of_life.yml new file mode 100644 index 0000000000..9b15358973 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/search_of_life.yml @@ -0,0 +1,90 @@ +- type: entity + id: CP14ActionSpellSearchOfLife + name: Search of life + description: Detects all living things in a large radius around you. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/light.rsi + state: search_of_life + - type: CP14MagicEffectManaCost + manaCost: 30 + - type: CP14MagicEffect + magicType: Light + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectSearchOfLife + - !type:CP14SpellPointerToAlive + pointerEntity: CP14SearchOfLifePointer + searchRange: 30 + - type: CP14MagicEffectVerbalAspect + startSpeech: "Ego vultus..." + endSpeech: "parumper vita" + - type: CP14MagicEffectSomaticAspect + - type: CP14MagicEffectCastingVisual + proto: CP14RuneSearchOfLife + - type: InstantAction + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/Spells/light.rsi + state: search_of_life + event: !type:CP14DelayedInstantActionEvent + cooldown: 30 + castDelay: 1.5 + +- type: entity + id: CP14ImpactEffectSearchOfLife + parent: CP14BaseMagicImpact + categories: [ HideSpawnMenu ] + save: false + components: + - type: Sprite + layers: + - state: particles_up + color: "#efedff" + shader: unshaded + - state: circle_increase + color: "#79b330" + shader: unshaded + +- type: entity + id: CP14RuneSearchOfLife + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + save: false + components: + - type: PointLight + color: "#328643" + - type: Sprite + layers: + - state: sun + color: "#efedff" + shader: unshaded + - state: double_outer + color: "#79b330" + shader: unshaded + +- type: entity + id: CP14SearchOfLifePointer + name: pointer + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: /Textures/_CP14/Effects/Magic/pointer.rsi + offset: 0, -1 + layers: + - state: pointer + shader: unshaded + drawdepth: LowFloors + - type: PointLight + netSync: false + radius: 3 + color: "#ffffff" + energy: 0.2 + - type: TimedDespawn + lifetime: 8 + - type: Tag + tags: + - HideContextMenu \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_signal_light.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/signal_light.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_signal_light.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/signal_light.yml index 06ac3898eb..61332ba244 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_signal_light.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/signal_light.yml @@ -7,6 +7,7 @@ - type: CP14MagicEffectManaCost manaCost: 5 - type: CP14MagicEffect + magicType: Light - type: CP14MagicEffectSomaticAspect - type: InstantAction itemIconStyle: BigAction diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T0_sphere_of_light.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/sphere_of_light.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T0_sphere_of_light.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/sphere_of_light.yml index fbb004dd1c..78943ce80e 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T0_sphere_of_light.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/sphere_of_light.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Light effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_trance.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_trance.yml new file mode 100644 index 0000000000..b682bdce46 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_trance.yml @@ -0,0 +1,48 @@ +- type: entity + id: CP14ActionSpellManaTrance + name: Mana trance + description: You go into a trance for a while, restoring mana. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/meta.rsi + state: mana_trance + - type: CP14MagicEffect + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectManaGift + - !type:CP14SpellApplyEntityEffect + effects: + - !type:CP14ManaChange + manaDelta: 2 + safe: true + - !type:HealthChange + damage: + types: + CP14ManaDepletion: -0.1 + - type: CP14MagicEffectCastingVisual + proto: CP14RuneManaTrance + - type: InstantAction + itemIconStyle: BigAction + icon: + sprite: _CP14/Actions/Spells/meta.rsi + state: mana_trance + event: !type:CP14ToggleableInstantActionEvent + cooldown: 60 + castTime: 120 + hidden: true + breakOnMove: true + +- type: entity + id: CP14RuneManaTrance + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + save: false + components: + - type: PointLight + color: "#5096d4" + - type: Sprite + layers: + - state: sun + color: "#5096d4" + shader: unshaded \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Vampire/bloodlust.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Vampire/bloodlust.yml new file mode 100644 index 0000000000..82195b52b3 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Vampire/bloodlust.yml @@ -0,0 +1,56 @@ +- type: entity + id: CP14ActionSpellBloodlust + name: Bloodlust + description: you sense all living things in a large radius around you that you want to KILL. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/vampire.rsi + state: blood_moon + - type: CP14MagicEffect + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectVampireHypnosis + - !type:CP14SpellPointerToAlive + pointerEntity: CP14BloodlustPointer + searchRange: 60 + - type: CP14MagicEffectVerbalAspect + startSpeech: "Ego vultus..." + endSpeech: "parumper vita" + - type: CP14MagicEffectSomaticAspect + - type: CP14MagicEffectCastingVisual + proto: CP14RuneVampireHypnosis + - type: InstantAction + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/Spells/vampire.rsi + state: blood_moon + event: !type:CP14DelayedInstantActionEvent + cooldown: 30 + castDelay: 1.5 + +- type: entity + id: CP14BloodlustPointer + name: pointer + categories: [ HideSpawnMenu ] + components: + - type: Sprite + color: red + sprite: /Textures/_CP14/Effects/Magic/pointer.rsi + offset: 0, -1 + layers: + - state: pointer + shader: unshaded + drawdepth: LowFloors + - type: PointLight + netSync: false + radius: 3 + color: red + energy: 0.2 + - type: TimedDespawn + lifetime: 8 + - type: Tag + tags: + - HideContextMenu \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/beer_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/beer_creation.yml index 963b326cbe..0914fade75 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/beer_creation.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/beer_creation.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 20 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml index 52b1fb8cbe..c0093a92ee 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 7 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_arrow.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_arrow.yml index 269ebd8a55..259fc0a750 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_arrow.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_arrow.yml @@ -7,8 +7,9 @@ sprite: _CP14/Actions/Spells/water.rsi state: ice_arrow - type: CP14MagicEffectManaCost - manaCost: 15 + manaCost: 7 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -30,7 +31,7 @@ sprite: _CP14/Actions/Spells/water.rsi state: ice_arrow event: !type:CP14DelayedInstantActionEvent - cooldown: 5 + cooldown: 10 breakOnMove: false - type: entity @@ -78,7 +79,7 @@ onlyCollideWhenShot: true damage: types: - Piercing: 17 + Piercing: 15 Cold: 5 - type: Damageable - type: Destructible @@ -93,7 +94,7 @@ - !type:DoActsBehavior acts: ["Destruction"] - type: TimedDespawn - lifetime: 60 + lifetime: 240 - type: DamageOnLand damage: types: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_dagger.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_dagger.yml index a9d650917c..78116b72d1 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_dagger.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_dagger.yml @@ -7,8 +7,9 @@ sprite: _CP14/Actions/Spells/water.rsi state: ice_dagger - type: CP14MagicEffectManaCost - manaCost: 15 + manaCost: 25 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -30,7 +31,7 @@ sprite: _CP14/Actions/Spells/water.rsi state: ice_dagger event: !type:CP14DelayedInstantActionEvent - cooldown: 20 + cooldown: 10 breakOnMove: false - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_shards.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_shards.yml index b816e58139..9b490b2723 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_shards.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_shards.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 5 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellProjectile prototype: CP14IceShard diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/water_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/water_creation.yml index fa575db584..9c27e4f08b 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/water_creation.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/water_creation.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -47,7 +48,7 @@ - type: entity id: CP14LiquidDropWater - parent: + parent: - BaseItem - ItemHeftyBase name: floating liquid drop diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/base.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/base.yml index 721a1dbb23..c054903698 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/base.yml @@ -27,7 +27,6 @@ - type: TimedDespawn lifetime: 1.6 - type: AnimationPlayer - - type: EffectVisuals - type: Tag tags: - HideContextMenu diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/alchemist.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/alchemist.yml index 23c33ab108..8f8ee09946 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/alchemist.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/alchemist.yml @@ -23,3 +23,29 @@ whitelist: tags: - CP14Vial + +- type: entity + parent: + - CP14ClothingCloakBase + - CP14ClothingBaseContainer + id: CP14ClothingCloakAlchemistMantle + name: alchemist's mantle + description: An expensive fabric that can withstand acid splashes - the standard for alchemist experts. + components: + - type: Sprite + sprite: _CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi + - type: Clothing + sprite: _CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi + - type: Armor + modifiers: + coefficients: + Heat: 0.9 + Caustic: 0.75 + - type: Storage + maxItemSize: Tiny + defaultStorageOrientation: Vertical + grid: + - 0,0,1,1 + whitelist: + tags: + - CP14Vial \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/Roles/general.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/Roles/general.yml index ab71e6e7fd..cf85d30dd1 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/Roles/general.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/Roles/general.yml @@ -76,3 +76,28 @@ - type: Clothing sprite: _CP14/Clothing/OuterClothing/Roles/General/jagermeister_waistcoat.rsi +- type: entity + parent: + - ClothingSlotBase + - CP14ClothingOuterFoldableBase + id: CP14ClothingOuterClothingGreenVest2 + name: green vest + description: Stylish green vest with gold buttons. + components: + - type: Sprite + sprite: _CP14/Clothing/OuterClothing/Roles/General/green_2.rsi + - type: Clothing + sprite: _CP14/Clothing/OuterClothing/Roles/General/green_2.rsi + +- type: entity + parent: + - ClothingSlotBase + - CP14ClothingOuterFoldableBase + id: CP14ClothingOuterClothingPurple + name: purple vest + description: Stylish purple vest. + components: + - type: Sprite + sprite: _CP14/Clothing/OuterClothing/Roles/General/purple.rsi + - type: Clothing + sprite: _CP14/Clothing/OuterClothing/Roles/General/purple.rsi \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Shirt/Roles/general.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Shirt/Roles/general.yml index 2d3d26763b..7c8ad79c8f 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Shirt/Roles/general.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Shirt/Roles/general.yml @@ -291,3 +291,133 @@ sprite: _CP14/Clothing/Shirt/Roles/General/Dress/maid_dress.rsi - type: Clothing sprite: _CP14/Clothing/Shirt/Roles/General/Dress/maid_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtBlueYellowDress + name: blue-yellow dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtWhiteBlueDress + name: white-blue dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtWhiteBlue2Dress + name: white-blue dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtBrown2Dress + name: brown dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtBrown3Dress + name: brown dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtWhiteGreenDress + name: green dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtwhiteGreenYellowDress + name: green-yellow dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtRedBlueDress + name: red-blue dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtYellowBlueDress + name: yellow-blue dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtBlueGreen + name: blue-green shirt + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtGray + name: gray shirt + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtGreenYellow + name: green-yellow shirt + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtWhiteBrown + name: white-brown shirt + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Effects/sky_lightning.yml b/Resources/Prototypes/_CP14/Entities/Effects/sky_lightning.yml index 52c04b5afc..433a114e84 100644 --- a/Resources/Prototypes/_CP14/Entities/Effects/sky_lightning.yml +++ b/Resources/Prototypes/_CP14/Entities/Effects/sky_lightning.yml @@ -14,7 +14,6 @@ shader: unshaded - type: TimedDespawn lifetime: 2 - - type: EffectVisuals - type: Tag tags: - HideContextMenu diff --git a/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml b/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml index b665ab14d2..766728d78f 100644 --- a/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml +++ b/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml @@ -17,7 +17,6 @@ dirt2: "" - type: TimedDespawn lifetime: 2 - - type: EffectVisuals - type: Tag tags: - HideContextMenu @@ -53,7 +52,6 @@ drawdepth: Items sprite: _CP14/Effects/dust.rsi state: dust - - type: EffectVisuals - type: Tag tags: - HideContextMenu @@ -94,6 +92,23 @@ canCollide: false - type: TimedDespawn lifetime: 2 + - type: Tag + tags: + - HideContextMenu + +- type: entity + id: CP14BloodMoonCurseEffect + categories: [ HideSpawnMenu ] + components: + - type: Sprite + noRot: true + color: "#FFFFFF33" + sprite: /Textures/_CP14/Effects/Magic/blood_moon_curse.rsi + drawdepth: Effects + layers: + - state: icon + - type: Physics + canCollide: false - type: Tag tags: - HideContextMenu \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Markers/salary.yml b/Resources/Prototypes/_CP14/Entities/Markers/salary.yml deleted file mode 100644 index 56a299d717..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Markers/salary.yml +++ /dev/null @@ -1,11 +0,0 @@ -- type: entity - id: CP14SalarySpawner - categories: [ ForkFiltered ] - parent: BaseItem - name: station salary spawner - components: - - type: CP14SalarySpawner - - type: Sprite - layers: - - sprite: /Textures/_CP14/Objects/Economy/jewelry.rsi - state: ruby1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/myconide.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/myconide.yml index 3dbede2d07..af9f6af612 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/myconide.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/myconide.yml @@ -2,7 +2,7 @@ id: CP14MobMonsterMyconideFlyagaric parent: CP14SimpleMobBase name: myconide flyagaric - description: While you're looking at it, it's already running towards you!!! + description: A running fly on legs, a strange phenomenon even for our crazy world. categories: [ ForkFiltered ] components: - type: HTN diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T2.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T2.yml index 5c6661c31f..8db6c3d617 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T2.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T2.yml @@ -139,32 +139,6 @@ - sprite: _CP14/Mobs/Species/Skeleton/parts.rsi state: full -- type: entity - id: CP14SpawnPointGhostDemiplaneSkeletonMagicalT2 - parent: MarkerBase - name: ghost role spawn point - description: A ghost role for a bloodthirsty and cunning skeleton. - suffix: skeleton random T2 - categories: [ ForkFiltered ] - components: - - type: EntityTableSpawner - table: !type:GroupSelector - children: - - !type:GroupSelector - weight: 2 - children: - - id: CP14SpawnPointGhostDemiplaneSkeletonWizardT2 - - !type:GroupSelector - weight: 1 - children: - - id: CP14SpawnPointGhostDemiplaneSkeletonBardT2 - - type: Sprite - sprite: Markers/jobs.rsi - layers: - - state: green - - sprite: _CP14/Mobs/Species/Skeleton/parts.rsi - state: full - - type: entity id: CP14SpawnPointGhostDemiplaneSkeletonHalberdT2 name: ghost role spawn point diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/carcat.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/carcat.yml index 31d92c1ac2..ef397519ab 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/carcat.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/carcat.yml @@ -42,9 +42,6 @@ - type: CP14NightVision #Night vision - type: FootstepModifier footstepSoundCollection: null # Silent footstep - - type: CP14SkillStorage - progress: - Atlethic: 1 - type: Inventory templateId: CP14Carcat # Cant wear shoes speciesId: carcat diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/elf.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/elf.yml index 1a6abf8601..6ee2421b09 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/elf.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/elf.yml @@ -35,15 +35,16 @@ requiredLegs: 2 - type: Bloodstream bloodReagent: CP14BloodElf - - type: CP14SkillStorage - progress: - Metamagic: 1 - type: CP14MagicEnergyContainer #Increased mana container maxEnergy: 200 energy: 200 - type: CP14MagicEnergyDraw #Half of standard mana regeneration energy: 0.5 delay: 3 + - type: CP14SkillStorage #Innate metamagic + freeLearnedSkills: + - MetamagicT1 + - MetamagicT2 - type: Inventory templateId: CP14Human displacements: diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/human.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/human.yml index 9ac0436b6c..6b37e895c6 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/human.yml @@ -23,6 +23,8 @@ - type: Body prototype: CP14Human requiredLegs: 2 + - type: CP14SkillStorage # +1 memory point + experienceMaxCap: 6 - type: Inventory templateId: CP14Human femaleDisplacements: diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/silva.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/silva.yml index 12c11e506c..1884f803f1 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/silva.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/silva.yml @@ -73,12 +73,13 @@ spawned: - id: CP14FoodMeatHuman # Replace it with silva meat, heh. amount: 5 - #- type: CP14MagicEnergyPhotosynthesis # Silva special feature #Disabled until sunlight fixed - #- type: CP14MagicEnergyDraw #Enabled default mana regen until sunlight fixed - # enable: false - - type: CP14SkillStorage - progress: - Healing: 1 + - type: CP14SkillStorage #Innate vivification + freeLearnedSkills: + - HealingT1 + - HealingT2 + - type: CP14MagicEnergyPhotosynthesis # Silva special feature #Disabled until sunlight fixed + - type: CP14MagicEnergyDraw #Enabled default mana regen until sunlight fixed + enable: false - type: Body prototype: CP14Silva requiredLegs: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/tiefling.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/tiefling.yml index 968f71eb9a..6761754113 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/tiefling.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/tiefling.yml @@ -44,17 +44,10 @@ damage: Heat: 1 #Magic regen from fire Cold: -1 - - type: CP14MagicManacostModify - globalModifier: 1.2 - modifiers: - Fire: 0.5 - - type: CP14SkillStorage - progress: - Pyrokinetic: 1 - - type: CP14SpellStorage - #grantAccessToSelf: true - #spells: - #- CP14ActionSpellTieflingInnerFire + - type: CP14SkillStorage #Innate pyrokinetic + freeLearnedSkills: + - PyrokineticT1 + - PyrokineticT2 - type: Inventory templateId: CP14Human femaleDisplacements: diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/base.yml b/Resources/Prototypes/_CP14/Entities/Mobs/base.yml index 56192108ad..74bb29c248 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/base.yml @@ -57,8 +57,6 @@ delay: 3 # 5m to full restore - type: CP14MagicUnsafeDamage - type: CP14MagicUnsafeSleep - - type: CP14MagicAttuningMind - autoCopyToMind: true - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml index 0070306e24..9a0dd8347a 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml @@ -18,6 +18,8 @@ - type: Appearance - type: BurnStateVisuals unlitIcon: unlit-icon + - type: CP14IgnitionModifier + hideCaution: true - type: entity id: CP14SmokingPipeFilledTobacco diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/Catalog/guard.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/Catalog/guard.yml index f75ab34927..5b1dcc95cb 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Keys/Catalog/guard.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/Catalog/guard.yml @@ -1,18 +1,18 @@ - type: entity parent: CP14KeyIronBlank - id: CP14KeyGuardEntrance - suffix: Guard Entrance + id: CP14KeyCityGate + suffix: City Gate components: - type: CP14Key - autoGenerateShape: GuardEntrance + autoGenerateShape: CityGate - type: entity parent: CP14KeyIronBlank - id: CP14KeyGuard - suffix: Guard + id: CP14KeyGuardBarracks + suffix: Guard Barracks components: - type: CP14Key - autoGenerateShape: Guard + autoGenerateShape: GuardBarracks - type: entity parent: CP14KeyMithrilBlank @@ -21,11 +21,3 @@ components: - type: CP14Key autoGenerateShape: GuardCommander - -- type: entity - parent: CP14KeyMithrilBlank - id: CP14KeyGuardWeaponStorage - suffix: Guard Weapon Storage - components: - - type: CP14Key - autoGenerateShape: GuardWeaponStorage diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml index 1c42c31f12..793bd5e784 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml @@ -101,8 +101,8 @@ components: - type: StorageFill contents: - - id: CP14KeyGuardEntrance - - id: CP14KeyGuard + - id: CP14KeyCityGate + - id: CP14KeyGuardBarracks - type: entity parent: CP14BaseKeyRing @@ -111,10 +111,9 @@ components: - type: StorageFill contents: - - id: CP14KeyGuardEntrance - - id: CP14KeyGuard + - id: CP14KeyCityGate + - id: CP14KeyGuardBarracks - id: CP14KeyGuardCommander - #- id: CP14KeyGuardWeaponStorage - type: entity parent: CP14BaseKeyRing diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/tools.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/tools.yml index 39ea6a1124..ff67d4c64d 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Keys/tools.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/tools.yml @@ -34,10 +34,10 @@ categories: [ ForkFiltered ] components: - type: Item - storedRotation: -45 + storedRotation: 45 - type: Sprite sprite: _CP14/Objects/keys.rsi state: file - type: CP14KeyFile - type: UseDelay - delay: 1.0 \ No newline at end of file + delay: 1.0 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml new file mode 100644 index 0000000000..be991e9a7e --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml @@ -0,0 +1,78 @@ +- type: entity + parent: BaseItem + id: CP14ModularBladeSkimitarBase + categories: [ ForkFiltered ] + abstract: true + description: A skimitar blade without a hilt. A blacksmith can use it as a spare part to create a weapon. + components: + - type: Item + storedRotation: 45 + shape: + - 0,0,0,1 + storedOffset: 0, 10 + +- type: entity + parent: CP14ModularBladeSkimitarBase + id: CP14ModularBladeIronSkimitar + name: iron skimitar blade + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + state: icon + - type: CP14ModularCraftPart + possibleParts: + - BladeIronSkimitar + - type: CP14Material + materials: + CP14Iron: 10 + +- type: entity + parent: CP14ModularBladeSkimitarBase + id: CP14ModularBladeGoldSkimitar + name: golden skimitar blade + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + layers: + - state: icon + color: "#ffe269" + - type: CP14ModularCraftPart + possibleParts: + - BladeGoldSkimitar + - type: CP14Material + materials: + CP14Gold: 10 + +- type: entity + parent: CP14ModularBladeSkimitarBase + id: CP14ModularBladeCopperSkimitar + name: copper skimitar blade + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + layers: + - state: icon + color: "#e28f08" + - type: CP14ModularCraftPart + possibleParts: + - BladeCopperSkimitar + - type: CP14Material + materials: + CP14Copper: 10 + +- type: entity + parent: CP14ModularBladeSkimitarBase + id: CP14ModularBladeMithrilSkimitar + name: mithril skimitar blade + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + layers: + - state: icon + color: "#38f0b3" + - type: CP14ModularCraftPart + possibleParts: + - BladeMithrilSkimitar + - type: CP14Material + materials: + CP14Mithril: 10 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/sack.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/sack.yml index a8048a39e4..1c887e1361 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/sack.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/sack.yml @@ -63,6 +63,8 @@ - type: entity id: CP14SackFarmingWheat + name: seed sack + description: Sack for various plant seeds. parent: CP14SackFarming suffix: Wheat components: @@ -76,3 +78,62 @@ - id: CP14Wheat amount: 5 prob: 0.4 + +- type: entity + id: CP14SackFarmingSeed + parent: CP14SackFarming + suffix: Seed + components: + - type: Sprite + sprite: _CP14/Objects/Storage/sack.rsi + state: seed + - type: Item + size: Small + - type: Storage + maxItemSize: Tiny + grid: + - 0,0,6,3 + quickInsert: true + areaInsert: true + whitelist: + tags: + - CP14FarmSeed + +- type: entity + id: CP14SackFarmingSeedFull + parent: CP14SackFarmingSeed + suffix: Full + components: + - type: StorageFill + contents: + - id: CP14SeedWheat + amount: 4 + - id: CP14SeedWheat + amount: 2 + prob: 0.6 + - id: CP14SeedWheat + amount: 1 + prob: 0.4 + - id: CP14SeedPumpkin + amount: 3 + - id: CP14SeedPumpkin + amount: 1 + prob: 0.4 + - id: CP14SeedCucumber + amount: 3 + - id: CP14SeedTomato + amount: 3 + - id: CP14SeedCabbage + amount: 2 + - id: CP14SeedPepper + amount: 2 + - id: CP14SeedSage + amount: 2 + - id: CP14SeedSage + amount: 1 + prob: 0.4 + - id: CP14SeedCotton + amount: 2 + - id: CP14SeedCotton + amount: 1 + prob: 0.4 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml index 3929a26da7..5f245d429a 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml @@ -9,6 +9,9 @@ - type: Sprite sprite: _CP14/Objects/Specific/Farming/seeds.rsi - type: CP14Seed + - type: Tag + tags: + - CP14FarmSeed - type: entity id: CP14SeedWheat diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Guard/GuardBell.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Guard/GuardBell.yml index 074e81c27e..d25b4093de 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Guard/GuardBell.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Guard/GuardBell.yml @@ -2,7 +2,7 @@ parent: BaseStructure id: CP14GuardBell name: guard bell - description: A bell used to set the appropriate alert level. + description: A strong bell to alert the entire settlement of a possible threat. categories: [ ForkFiltered ] components: - type: Sprite diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml index 2225795c23..d85876af4e 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml @@ -12,6 +12,9 @@ sprite: _CP14/Objects/Specific/Thaumaturgy/crystal.rsi - type: CP14MagicEnergyContainer - type: CP14MagicEnergyExaminable + - type: Tag + tags: + - CP14EnergyCrystal - type: entity id: CP14EnergyCrystalMedium diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml index 545d98ea09..c4646d7353 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml @@ -55,8 +55,6 @@ collection: MetalThud cPAnimationLength: 0.3 cPAnimationOffset: -1.3 - - type: CP14SpellStorageRequireAttune - - type: CP14MagicAttuningItem - type: CP14SpellStorageAccessHolding - type: CP14SpellStorage spells: diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/rapier.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/rapier.yml index f0182668ac..d441bb905e 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/rapier.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/rapier.yml @@ -1,3 +1,18 @@ +- type: entity + id: CP14ModularIronRapier + parent: CP14ModularGripWooden + name: iron rapier + description: the gold standard of edged weapons. Medium length, comfortable grip. No frills. + components: + - type: Sprite + layers: + - state: icon + - sprite: _CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi + state: icon + - type: CP14ModularCraftAutoAssemble + details: + - BladeIronRapier + - type: entity id: CP14ModularGuildmasterRapier parent: CP14ModularGripGuildmaster diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/skimitar.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/skimitar.yml new file mode 100644 index 0000000000..776f2f5283 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/skimitar.yml @@ -0,0 +1,14 @@ +- type: entity + id: CP14ModularIronSkimitar + parent: CP14ModularGripWooden + name: iron skimitar + description: the gold standard of edged weapons. Medium length, comfortable grip. No frills. + components: + - type: Sprite + layers: + - state: icon + - sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + state: icon + - type: CP14ModularCraftAutoAssemble + details: + - BladeIronSkimitar \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Stations/base.yml b/Resources/Prototypes/_CP14/Entities/Stations/base.yml index b86b5883f2..15e7d2749c 100644 --- a/Resources/Prototypes/_CP14/Entities/Stations/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Stations/base.yml @@ -8,7 +8,6 @@ - CP14BaseTownAlerts - BaseStationRecords # Required for lobby manifest + cryo leave - CP14BaseStationCommonObjectives - - CP14BaseStationSalary - CP14BaseStationDemiplaneMap - type: entity @@ -17,15 +16,6 @@ components: - type: CP14StationCommonObjectives -- type: entity - id: CP14BaseStationSalary - abstract: true - components: - - type: CP14StationSalary - #frequency: every 20 minutes - salary: - CP14Guard: 550 - - type: entity id: CP14BaseTownAlerts abstract: true diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/flags_wallmount.yml b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/flags_wallmount.yml index 77ed4375d8..bbe43f58db 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/flags_wallmount.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/flags_wallmount.yml @@ -33,7 +33,7 @@ parent: CP14WallmountFlagBase id: CP14WallmountFlagAlchemist name: alchemist tapestry - description: A tapestry with a potion symbol, indicating that alchemists dwell here. + description: A tapestry with a potion symbol indicating that alchemists dwell here. components: - type: Sprite layers: @@ -44,7 +44,7 @@ parent: CP14WallmountFlagBase id: CP14WallmountFlagBlacksmith name: blacksmith tapestry - description: A tapestry with a anvil symbol, indicating that blacksmiths dwell here. + description: A tapestry with an anvil symbol indicating that blacksmiths dwell here. components: - type: Sprite layers: @@ -55,7 +55,7 @@ parent: CP14WallmountFlagBase id: CP14WallmountFlagTavern name: tavern tapestry - description: A tapestry with a beer symbol, indicating that tavern is here. + description: A tapestry with a beer symbol indicating that the tavern is here. components: - type: Sprite layers: diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guard.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guard.yml index 319772b08f..8926a6a1ce 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guard.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guard.yml @@ -3,11 +3,11 @@ - type: entity parent: CP14IronDoor - id: CP14IronDoorGuard - suffix: Guard + id: CP14IronDoorGuardBarracks + suffix: Guard Barracks components: - type: CP14Lock - autoGenerateShape: Guard + autoGenerateShape: GuardBarracks - type: Lock locked: true @@ -21,43 +21,43 @@ - type: Lock locked: true -- type: entity - parent: CP14IronDoor - id: CP14IronDoorGuardWeaponStorage - suffix: Guard, Weapon Storage - components: - - type: CP14Lock - autoGenerateShape: GuardWeaponStorage - - type: Lock - locked: true - # Iron windowed - type: entity parent: CP14IronDoorWindowed - id: CP14IronDoorWindowedGuardEntrance - suffix: Guard, Entrance + id: CP14IronDoorWindowedCityGate + suffix: Guard Barracks components: - type: CP14Lock - autoGenerateShape: GuardEntrance + autoGenerateShape: GuardBarracks - type: Lock locked: true - type: entity parent: - - CP14IronDoorWindowedGuardEntrance + - CP14IronDoorWindowedCityGate - CP14IronDoorWindowedMirrored - id: CP14IronDoorWindowedMirroredGuardEntrance - suffix: Guard, Entrance, Mirrored + id: CP14IronDoorWindowedMirroredCityGate + suffix: Guard Barracks, Mirrored # Grill Gate - type: entity parent: CP14FenceGateBigIron - id: CP14FenceGateBigIronGuard - suffix: Guard + id: CP14FenceGateBigIronGuardBarracks + suffix: Guard Barracks components: - type: CP14Lock - autoGenerateShape: Guard + autoGenerateShape: GuardBarracks - type: Lock - locked: true \ No newline at end of file + locked: true + +- type: entity + parent: CP14FenceGateBigIron + id: CP14FenceGateBigIronCityGate + suffix: City Gate + components: + - type: CP14Lock + autoGenerateShape: CityGate + - type: Lock + locked: false #City gate opened by default \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guildmaster.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guildmaster.yml index 7ac3cb00f2..26b19ca4e1 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guildmaster.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guildmaster.yml @@ -28,4 +28,4 @@ - type: CP14Lock autoGenerateShape: DemiplaneCrystal - type: Lock - locked: true \ No newline at end of file + locked: false \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cabbage.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cabbage.yml index 7b635159b9..2caaab49cf 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cabbage.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cabbage.yml @@ -21,4 +21,7 @@ entries: - id: CP14FoodCabbage amount: 6 - maxAmount: 8 \ No newline at end of file + maxAmount: 8 + - id: CP14SeedCabbage + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml index e437f5ac39..1e1a94aabc 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml @@ -23,4 +23,7 @@ entries: - id: CP14Cotton amount: 4 - maxAmount: 6 \ No newline at end of file + maxAmount: 6 + - id: CP14SeedCotton + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cucumber.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cucumber.yml index 8cd68e0b90..cc5397f7d2 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cucumber.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cucumber.yml @@ -22,3 +22,6 @@ - id: CP14FoodCucumber amount: 4 maxAmount: 8 + - id: CP14SeedCucumber + amount: 0 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pepper.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pepper.yml index 3099c72665..2709e6ce64 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pepper.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pepper.yml @@ -24,3 +24,6 @@ - id: CP14FoodPepper amount: 4 maxAmount: 8 + - id: CP14SeedPepper + amount: 0 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pumpkin.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pumpkin.yml index 645f806220..b06cc36dba 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pumpkin.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pumpkin.yml @@ -22,3 +22,6 @@ - id: CP14FoodPumpkin amount: 4 maxAmount: 8 + - id: CP14SeedPumpkin + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/sage.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/sage.yml index 316332ff4e..883ec970ab 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/sage.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/sage.yml @@ -24,3 +24,6 @@ - id: CP14WildSage amount: 4 maxAmount: 8 + - id: CP14SeedSage + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/tomatoes.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/tomatoes.yml index 493b2e7173..8c54c15953 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/tomatoes.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/tomatoes.yml @@ -22,3 +22,6 @@ - id: CP14FoodTomatoes amount: 4 maxAmount: 8 + - id: CP14SeedTomato + amount: 0 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/wheat.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/wheat.yml index 18efb07abc..401070903e 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/wheat.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/wheat.yml @@ -27,3 +27,6 @@ - id: CP14Wheat amount: 5 maxAmount: 8 + - id: CP14SeedWheat + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/research_table.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/research_table.yml new file mode 100644 index 0000000000..348d448bd7 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/research_table.yml @@ -0,0 +1,57 @@ +- type: entity + parent: + - BaseStructure + id: CP14ResearchTable + categories: [ ForkFiltered ] + name: research table + description: A place of research, experimentation and discovery that allows you to be smarter. + components: + - type: Sprite + snapCardinals: true + sprite: _CP14/Structures/Furniture/workbench.rsi + state: research_table + - type: Icon + sprite: _CP14/Structures/Furniture/workbench.rsi + state: research_table + - type: ActivatableUI + key: enum.CP14ResearchTableUiKey.Key + requiresComplex: true + singleUser: true + - type: Climbable + - type: Clickable + - type: CP14ResearchTable + - type: InteractionOutline + - type: PlaceableSurface + - type: UserInterface + interfaces: + enum.CP14ResearchTableUiKey.Key: + type: CP14ResearchTableBoundUserInterface + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Heat + damage: 40 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - trigger: + !type:DamageTrigger + damage: 60 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + CP14WoodenPlanks1: + min: 1 + max: 2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Demiplanes/round_end.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Demiplanes/round_end.yml index 5610fa379a..a7723c686f 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Demiplanes/round_end.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Demiplanes/round_end.yml @@ -3,7 +3,7 @@ parent: BaseStructure categories: [ ForkFiltered ] name: demiplane link crystal - description: Maintains communication with the demiplanes while charged. Causes mosnters from the demiplanes to attack the city. Once it is discharged, the game is over. + description: Maintains communication with the demiplanes while charged. Causes monsters from the demiplanes to attack the city. Once it is discharged, the game is over. suffix: ONE TO MAP components: - type: Fixtures @@ -94,7 +94,7 @@ sprite: _CP14/Structures/Specific/Thaumaturgy/energy_monolith_small.rsi layers: - state: dimension - - state: frame + - state: frame drawdepth: Mobs offset: 0,0.4 - type: CP14MagicEnergyContainer @@ -178,11 +178,11 @@ collection: GlassBreak - !type:DoActsBehavior acts: ["Destruction"] - - !type:SpawnEntitiesBehavior - spawn: - CP14DimensitCrystal: - min: 4 - max: 6 + #- !type:SpawnEntitiesBehavior + # spawn: + # CP14DimensitCrystal: + # min: 4 + # max: 6 - !type:SpawnEntitiesBehavior spawn: CP14SkyLightningPurple: diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Walls/stonebrick.yml b/Resources/Prototypes/_CP14/Entities/Structures/Walls/stonebrick.yml index 03b78a1f7e..3f466bc5a5 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Walls/stonebrick.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Walls/stonebrick.yml @@ -1,8 +1,8 @@ -# Stonebrick +# Stone brick - type: entity id: CP14WallFrameStonebrick - name: stonebrick wall base + name: stone brick wall base parent: CP14BaseWallFrame components: - type: Sprite @@ -12,8 +12,8 @@ sprite: _CP14/Structures/Walls/bricks_stone_wall.rsi state: frame - type: Construction - graph: CP14WallStonebrick - node: CP14WallFrameStonebrick + graph: CP14WallStoneBrick + node: CP14WallFrameStoneBrick - type: Damageable damageContainer: StructuralInorganic damageModifierSet: CP14RockStructural @@ -38,7 +38,7 @@ - type: entity id: CP14WallStonebrick - name: stonebrick wall + name: stone brick wall parent: CP14BaseWall components: - type: Sprite @@ -48,8 +48,8 @@ - type: IconSmooth base: stonebricks - type: Construction - graph: CP14WallStonebrick - node: CP14WallStonebrick + graph: CP14WallStoneBrick + node: CP14WallStoneBrick - type: Damageable damageContainer: StructuralInorganic damageModifierSet: CP14RockStructural @@ -65,7 +65,7 @@ min: 1 max: 2 - !type:ChangeConstructionNodeBehavior - node: CP14WallFrameStonebrick + node: CP14WallFrameStoneBrick - !type:PlaySoundBehavior sound: path: /Audio/Effects/break_stone.ogg @@ -79,7 +79,7 @@ - type: entity id: CP14WallFrameMarblebrick - name: marblebrick wall base + name: marble brick wall base parent: CP14BaseWallFrame components: - type: Sprite @@ -90,7 +90,7 @@ state: frame - type: Construction graph: CP14WallMarbleBrick - node: CP14WallFrameMarblebrick + node: CP14WallFrameMarbleBrick - type: Damageable damageContainer: StructuralInorganic damageModifierSet: CP14RockStructural @@ -144,7 +144,7 @@ min: 1 max: 2 - !type:ChangeConstructionNodeBehavior - node: CP14WallFrameMarblebrick + node: CP14WallFrameMarbleBrick - !type:DoActsBehavior acts: [ "Destruction" ] - type: Construction @@ -154,7 +154,7 @@ - type: entity id: CP14WallStonebrickOld - name: old stonebrick wall + name: old stone brick wall parent: CP14BaseWall components: - type: Sprite diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Windows/marblebrick.yml b/Resources/Prototypes/_CP14/Entities/Structures/Windows/marblebrick.yml new file mode 100644 index 0000000000..fc2374ecfd --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Windows/marblebrick.yml @@ -0,0 +1,81 @@ +- type: entity + id: CP14WindowMarbleBrick + parent: CP14WindowBase + name: marble brick window + description: A marble brick wall with a glass window in it. + components: + - type: Sprite + sprite: _CP14/Structures/Windows/marble_bricks_window.rsi + - type: Icon + sprite: _CP14/Structures/Windows/marble_bricks_window.rsi + state: full + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WindowShatter + - !type:SpawnEntitiesBehavior + spawn: + CP14GlassShard: + min: 1 + max: 2 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:ChangeConstructionNodeBehavior + node: CP14WindowMarbleBrickBroken + - type: Construction + graph: CP14WindowMarbleBrick + node: CP14WindowMarbleBrick + +- type: entity + id: CP14WindowFrameMarbleBrick + name: marble brick window frame + parent: CP14BaseWindowFrame + components: + - type: Sprite + sprite: _CP14/Structures/Windows/marble_bricks_window_frame.rsi + - type: Icon + sprite: _CP14/Structures/Windows/marble_bricks_window_frame.rsi + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: CP14RockStructural + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + CP14MarbleBlock1: + min: 1 + max: 2 + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/break_stone.ogg + params: + volume: -6 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Construction + graph: CP14WindowMarbleBrick + node: CP14WindowFrameMarbleBrick + +- type: entity + id: CP14WindowMarbleBrickBroken + name: shattered marble brick window + parent: + - CP14BaseWindowFrameBroken + - CP14WindowFrameMarbleBrick + components: + - type: Sprite + sprite: _CP14/Structures/Windows/marble_bricks_window_broken.rsi + - type: Icon + sprite: _CP14/Structures/Windows/marble_bricks_window_broken.rsi + - type: Construction + graph: CP14WindowMarbleBrick + node: CP14WindowMarbleBrickBroken \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Windows/misc.yml b/Resources/Prototypes/_CP14/Entities/Structures/Windows/misc.yml new file mode 100644 index 0000000000..0973380cc3 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Windows/misc.yml @@ -0,0 +1,33 @@ +- type: entity + id: CP14WindowIceBlock + parent: CP14WindowBase + name: ice block + description: Smooth and translucent ice. + components: + - type: Sprite + sprite: _CP14/Structures/Windows/ice_block.rsi + - type: Icon + sprite: _CP14/Structures/Windows/ice_block.rsi + state: full + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 15 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WindowShatter + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: MeleeSound + soundGroups: + Brute: + collection: GlassSmash + - type: InteractionPopup + interactSuccessString: popup-cp14crystal-ding + messagePerceivedByOthers: popup-cp14crystal-ding + interactSuccessSound: + collection: CP14CrystalDings + params: + variation: 0.03 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Windows/stonebrick.yml b/Resources/Prototypes/_CP14/Entities/Structures/Windows/stonebrick.yml new file mode 100644 index 0000000000..7169d46c63 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Windows/stonebrick.yml @@ -0,0 +1,81 @@ +- type: entity + id: CP14WindowStoneBrick + parent: CP14WindowBase + name: stone brick window + description: A stone brick wall with a glass window in it. + components: + - type: Sprite + sprite: _CP14/Structures/Windows/stone_bricks_window.rsi + - type: Icon + sprite: _CP14/Structures/Windows/stone_bricks_window.rsi + state: full + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WindowShatter + - !type:SpawnEntitiesBehavior + spawn: + CP14GlassShard: + min: 1 + max: 2 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:ChangeConstructionNodeBehavior + node: CP14WindowStoneBrickBroken + - type: Construction + graph: CP14WindowStoneBrick + node: CP14WindowStoneBrick + +- type: entity + id: CP14WindowFrameStoneBrick + name: stone brick window frame + parent: CP14BaseWindowFrame + components: + - type: Sprite + sprite: _CP14/Structures/Windows/stone_bricks_window_frame.rsi + - type: Icon + sprite: _CP14/Structures/Windows/stone_bricks_window_frame.rsi + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: CP14RockStructural + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + CP14StoneBlock1: + min: 1 + max: 2 + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/break_stone.ogg + params: + volume: -6 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Construction + graph: CP14WindowStoneBrick + node: CP14WindowFrameStoneBrick + +- type: entity + id: CP14WindowStoneBrickBroken + name: shattered stone brick window + parent: + - CP14BaseWindowFrameBroken + - CP14WindowFrameStoneBrick + components: + - type: Sprite + sprite: _CP14/Structures/Windows/stone_bricks_window_broken.rsi + - type: Icon + sprite: _CP14/Structures/Windows/stone_bricks_window_broken.rsi + - type: Construction + graph: CP14WindowStoneBrick + node: CP14WindowStoneBrickBroken diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Windows/windows.yml b/Resources/Prototypes/_CP14/Entities/Structures/Windows/windows.yml index 1c10ff1956..d8d78e412e 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Windows/windows.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Windows/windows.yml @@ -13,6 +13,16 @@ base: window - type: PlacementReplacement key: walls + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.5" + mask: + - FullTileMask + layer: + - GlassLayer - type: Damageable damageContainer: Inorganic damageModifierSet: Glass @@ -27,97 +37,73 @@ collection: WindowShatter - !type:DoActsBehavior acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 50 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: WindowShatter - - !type:SpawnEntitiesBehavior - spawn: - CP14GlassShard: - min: 1 - max: 2 - - !type:DoActsBehavior - acts: [ "Destruction" ] - type: entity - id: CP14WindowStoneBrick - parent: CP14WindowBase - name: stone brick window - description: A stone brick wall with a glass window in it. + id: CP14BaseWindowFrame + categories: [ ForkFiltered ] + parent: BaseStructure + abstract: true + description: Provides a nice breeze. The gap looks big enough to climb through. + placement: + mode: SnapgridCenter + snap: + - Window components: - type: Sprite - sprite: _CP14/Structures/Windows/stone_bricks_window.rsi + drawdepth: Mobs - type: Icon - sprite: _CP14/Structures/Windows/stone_bricks_window.rsi state: full - - type: Construction - graph: CP14WallStonebrick - node: CP14WallStonebrick + - type: IconSmooth + key: CP14window + base: window + - type: PlacementReplacement + key: walls + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.5" + mask: + - FullTileMask + layer: + - HalfWallLayer + - type: Appearance + - type: Climbable - type: entity - id: CP14WindowMarbleBrick - parent: CP14WindowBase - name: marble brick window - description: A stone brick wall with a glass window in it. + id: CP14BaseWindowFrameBroken + parent: CP14BaseWindowFrame + abstract: true + description: Broken window. You can get in, but the sharp splinters will tear your skin. components: - - type: Sprite - sprite: _CP14/Structures/Windows/marble_bricks_window.rsi - - type: Icon - sprite: _CP14/Structures/Windows/marble_bricks_window.rsi - state: full - - type: Construction - graph: CP14WallMarbleBrick - node: CP14WindowMarbleBrick - -- type: entity - id: CP14WindowWooden - parent: - - CP14WindowBase - - CP14BaseFlammable - name: wooden window - description: A wooden wall with a glass window in it. - components: - - type: Sprite - sprite: _CP14/Structures/Windows/wooden_window.rsi - - type: Icon - sprite: _CP14/Structures/Windows/wooden_window.rsi - - type: Construction - graph: CP14WallWooden - node: CP14WindowWooden - -- type: entity - id: CP14WindowIceBlock - parent: CP14WindowBase - name: ice block - description: Smooth and translucent ice. - components: - - type: Sprite - sprite: _CP14/Structures/Windows/ice_block.rsi - - type: Icon - sprite: _CP14/Structures/Windows/ice_block.rsi - state: full - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: WindowShatter - - !type:DoActsBehavior - acts: [ "Destruction" ] - - type: MeleeSound - soundGroups: - Brute: - collection: GlassSmash - - type: InteractionPopup - interactSuccessString: popup-cp14crystal-ding - messagePerceivedByOthers: popup-cp14crystal-ding - interactSuccessSound: - collection: CP14CrystalDings - params: - variation: 0.03 \ No newline at end of file + - type: StepTrigger + requiredTriggeredSpeed: 0 + intersectRatio: 0.2 + - type: Slippery + slipSound: + collection: GlassCrack + slipData: + launchForwardsMultiplier: 0 + - type: TriggerOnStepTrigger + - type: DamageUserOnTrigger + damage: + types: + Slash: 10 + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.5,-0.5,0.5,0.5" + mask: + - FullTileMask + layer: + - HalfWallLayer + slips: # For stun & damage + shape: + !type:PhysShapeAabb + bounds: "-0.3,-0.3,0.3,0.3" + hard: false + mask: + - FullTileLayer diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Windows/wooden.yml b/Resources/Prototypes/_CP14/Entities/Structures/Windows/wooden.yml new file mode 100644 index 0000000000..1516c41fc1 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Windows/wooden.yml @@ -0,0 +1,82 @@ +- type: entity + id: CP14WindowWooden + parent: + - CP14WindowBase + - CP14BaseFlammable + name: wooden window + description: A wooden wall with a glass window in it. + components: + - type: Sprite + sprite: _CP14/Structures/Windows/wooden_window.rsi + - type: Icon + sprite: _CP14/Structures/Windows/wooden_window.rsi + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: WindowShatter + - !type:SpawnEntitiesBehavior + spawn: + CP14GlassShard: + min: 1 + max: 2 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:ChangeConstructionNodeBehavior + node: CP14WindowWoodenBroken + - type: Construction + graph: CP14WindowWooden + node: CP14WindowWooden + +- type: entity + id: CP14WindowFrameWooden + name: wooden window frame + parent: + - CP14BaseWindowFrame + - CP14BaseFlammable + components: + - type: Sprite + sprite: _CP14/Structures/Windows/wooden_window_frame.rsi + - type: Icon + sprite: _CP14/Structures/Windows/wooden_window_frame.rsi + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: CP14WoodStructural + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + CP14WoodenPlanks1: + min: 1 + max: 2 + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Construction + graph: CP14WindowWooden + node: CP14WindowFrameWooden + +- type: entity + id: CP14WindowWoodenBroken + name: shattered wooden window + parent: + - CP14BaseWindowFrameBroken + - CP14WindowFrameWooden + components: + - type: Sprite + sprite: _CP14/Structures/Windows/wooden_window_broken.rsi + - type: Icon + sprite: _CP14/Structures/Windows/wooden_window_broken.rsi + - type: Construction + graph: CP14WindowWooden + node: CP14WindowWoodenBroken \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/GameRules/events.yml b/Resources/Prototypes/_CP14/GameRules/events.yml index bf80f14bc3..f941d2d329 100644 --- a/Resources/Prototypes/_CP14/GameRules/events.yml +++ b/Resources/Prototypes/_CP14/GameRules/events.yml @@ -32,7 +32,7 @@ # - type: StationEvent # startAnnouncement: cp14-event-announcement-demiplane-outbreak # startAudio: -# path: /Audio/_CP14/Ambience/event_boom.ogg +# path: /Audio/_CP14/Announce/event_boom.ogg # earliestStart: 20 # minimumPlayers: 15 # weight: 5 @@ -49,7 +49,7 @@ - type: StationEvent startAnnouncement: cp14-event-announcement-demiplane-outbreak startAudio: - path: /Audio/_CP14/Ambience/event_boom.ogg + path: /Audio/_CP14/Announce/event_boom.ogg earliestStart: 20 minimumPlayers: 15 weight: 1 diff --git a/Resources/Prototypes/_CP14/GameRules/judgement_night.yml b/Resources/Prototypes/_CP14/GameRules/judgement_night.yml new file mode 100644 index 0000000000..2993dbed29 --- /dev/null +++ b/Resources/Prototypes/_CP14/GameRules/judgement_night.yml @@ -0,0 +1,33 @@ +- type: entity + id: CP14BloodMoonRule + parent: CP14BaseGameRule + components: + - type: CP14BloodMoonRule + curseRule: CP14BloodMoonCurseRule + announceSound: + path: /Audio/_CP14/Announce/darkness_boom.ogg + - type: GameRule + delay: + min: 30 + max: 60 + +- type: entity + id: CP14BloodMoonCurseRule + parent: CP14BaseGameRule + components: + - type: CP14BloodMoonCurseRule + announcementColor: "#e32759" + - type: AntagSelection + definitions: + - prefRoles: [ CP14BloodMoonCursed ] + max: 15 + playerRatio: 2 + multiAntagSetting: NotExclusive + lateJoinAdditional: true + allowNonHumans: true + mindRoles: + - CP14MindRoleBloodMoonCursed + briefing: + text: cp14-roles-antag-blood-moon-cursed-briefing + color: "#630f24" + sound: "/Audio/_CP14/Announce/darkness_boom_2.ogg" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/GameRules/roundstart.yml b/Resources/Prototypes/_CP14/GameRules/roundstart.yml index 2e78fe80fe..e2e8dbc112 100644 --- a/Resources/Prototypes/_CP14/GameRules/roundstart.yml +++ b/Resources/Prototypes/_CP14/GameRules/roundstart.yml @@ -19,14 +19,8 @@ id: CP14RoundObjectivesRule parent: CP14BaseGameRule components: - #- type: CP14CommonObjectivesRule - # departmentObjectives: - # CP14Command: - # - CP14TownSendObjectiveGroup - type: CP14PersonalObjectivesRule roleObjectives: - CP14Guildmaster: - - CP14GuildmasterNoDemiplaneObjectiveGroup CP14Adventurer: - CP14PersonalCurrencyCollectObjectiveGroup CP14Alchemist: @@ -37,8 +31,6 @@ - CP14PersonalCurrencyCollectObjectiveGroup CP14Innkeeper: - CP14PersonalCurrencyCollectObjectiveGroup - CP14Merchant: - - CP14PersonalObjectiveRichestMerchantGroup # event schedulers diff --git a/Resources/Prototypes/_CP14/Guidebook/Eng/species.yml b/Resources/Prototypes/_CP14/Guidebook/Eng/species.yml index e7083ab0f4..c941f90507 100644 --- a/Resources/Prototypes/_CP14/Guidebook/Eng/species.yml +++ b/Resources/Prototypes/_CP14/Guidebook/Eng/species.yml @@ -9,6 +9,7 @@ - CP14_EN_Elf - CP14_EN_Tiefling - CP14_EN_Goblin + - CP14_EN_Carcat filterEnabled: True - type: guideEntry @@ -44,4 +45,11 @@ id: CP14_EN_Goblin name: Goblin text: "/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Goblin.xml" + filterEnabled: True + +- type: guideEntry + crystallPunkAllowed: true + id: CP14_EN_Carcat + name: Carcat + text: "/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Carcat.xml" filterEnabled: True \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Guidebook/Ru/species.yml b/Resources/Prototypes/_CP14/Guidebook/Ru/species.yml index fdd7c8f88e..8e97498483 100644 --- a/Resources/Prototypes/_CP14/Guidebook/Ru/species.yml +++ b/Resources/Prototypes/_CP14/Guidebook/Ru/species.yml @@ -9,6 +9,7 @@ - CP14_RU_Elf - CP14_RU_Tiefling - CP14_RU_Goblin + - CP14_RU_Carcat filterEnabled: True - type: guideEntry @@ -44,4 +45,11 @@ id: CP14_RU_Goblin name: Гоблин text: "/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Goblin.xml" + filterEnabled: True + +- type: guideEntry + crystallPunkAllowed: true + id: CP14_RU_Carcat + name: Каркат + text: "/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Carcat.xml" filterEnabled: True \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/adventure.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/adventure.yml new file mode 100644 index 0000000000..32cae6720e --- /dev/null +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/adventure.yml @@ -0,0 +1,41 @@ +- type: loadoutGroup + id: CP14AdventureEquip + name: cp14-loadout-adventurers-equip + minLimit: 0 + maxLimit: 1 + loadouts: + - CP14ModularIronSkimitar + - CP14ModularIronSword + - CP14ModularIronRapier + - CP14BowCombat + +- type: loadout + id: CP14ModularIronSkimitar + dummyEntity: CP14ModularIronSkimitar + equipment: + belt2: CP14ModularIronSkimitar + skills: + - SkimitarMastery + +- type: loadout + id: CP14ModularIronSword + dummyEntity: CP14ModularIronSword + equipment: + belt2: CP14ModularIronSword + skills: + - SwordMastery + +- type: loadout + id: CP14ModularIronRapier + dummyEntity: CP14ModularIronRapier + equipment: + belt2: CP14ModularIronRapier + skills: + - RapierMastery + +- type: loadout + id: CP14BowCombat + dummyEntity: CP14BowCombat + equipment: + belt2: CP14ClothingBeltQuiverCopperArrow + neck: CP14BowCombat \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/alchemist.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/alchemist.yml index 8e9aaf2269..448cf7ec0e 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/alchemist.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/alchemist.yml @@ -25,12 +25,18 @@ name: cp14-loadout-alchemist-cloak loadouts: - CP14ClothingCloakAlchemist + - CP14ClothingCloakAlchemistMantle - type: loadout id: CP14ClothingCloakAlchemist equipment: cloak: CP14ClothingCloakAlchemist +- type: loadout + id: CP14ClothingCloakAlchemistMantle + equipment: + cloak: CP14ClothingCloakAlchemistMantle + # Eyes - type: loadoutGroup diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml index 452c7c76ef..3225e3cdb8 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml @@ -114,6 +114,7 @@ - CP14ClothingOuterClothingBrownVest3 - CP14ClothingOuterClothingJagermeisterWaistcoat - CP14ClothingOuterClothingRedVest + - CP14ClothingOuterClothingPurple - type: loadout id: CP14ClothingOuterClothingBrownVest1 @@ -140,6 +141,10 @@ equipment: outerClothing: CP14ClothingOuterClothingJagermeisterWaistcoat +- type: loadout + id: CP14ClothingOuterClothingPurple + equipment: + outerClothing: CP14ClothingOuterClothingPurple # Eyes @@ -344,6 +349,7 @@ name: cp14-loadout-general-shirt loadouts: - CP14ClothingShirtCottonBlack + - CP14ClothinShirtGray - CP14ClothingShirtBlackDress - CP14ClothinShirtMaidDress - CP14ClothingShirtCottonBlue @@ -351,11 +357,15 @@ - CP14ClothingBlueCollarDress - CP14ClothingShirtBlueOpen - CP14ClothingBlueOpenDress + - CP14ClothinShirtWhiteBlueDress + - CP14ClothinShirtWhiteBlue2Dress + - CP14ClothinShirtRedBlueDress - CP14ClothingShirtJestersAttire - CP14ClothingShirtRedOpen - CP14ClothingRedOpenDress - CP14ClothingShirtYellowOpen - CP14ClothingYellowOpenDress + - CP14ClothinShirtBlueYellowDress - CP14ClothingShirtCottonPurple - CP14ClothingShirtCottonRed - CP14ClothingCottonRedDress @@ -363,12 +373,20 @@ - CP14ClothingCottonWhiteDress - CP14ClothingShirtCottonWhiteCollar - CP14ClothingCottonWhiteCollarDress + - CP14ClothinShirtWhiteBrown + - CP14ClothinShirtBrown2Dress + - CP14ClothinShirtBrown3Dress - CP14ClothinGreenBeltDress - CP14ClothinGreenBeltDress2 + - CP14ClothinShirtWhiteGreenDress + - CP14ClothinShirtwhiteGreenYellowDress + - CP14ClothinShirtGreenYellow + - CP14ClothinShirtBlueGreen - CP14ClothinGreenLightDress - CP14ClothingShirtCottonYellow - CP14ClothingShirtCottonYellowCollar - CP14ClothingCottonYellowCollarDress + - CP14ClothinShirtYellowBlueDress - CP14ClothingWarriorsGarbDress - type: loadout @@ -506,6 +524,71 @@ equipment: shirt: CP14ClothingWarriorsGarbDress +- type: loadout + id: CP14ClothinShirtBlueYellowDress + equipment: + shirt: CP14ClothinShirtBlueYellowDress + +- type: loadout + id: CP14ClothinShirtWhiteBlueDress + equipment: + shirt: CP14ClothinShirtWhiteBlueDress + +- type: loadout + id: CP14ClothinShirtWhiteBlue2Dress + equipment: + shirt: CP14ClothinShirtWhiteBlue2Dress + +- type: loadout + id: CP14ClothinShirtBrown2Dress + equipment: + shirt: CP14ClothinShirtBrown2Dress + +- type: loadout + id: CP14ClothinShirtBrown3Dress + equipment: + shirt: CP14ClothinShirtBrown3Dress + +- type: loadout + id: CP14ClothinShirtWhiteGreenDress + equipment: + shirt: CP14ClothinShirtWhiteGreenDress + +- type: loadout + id: CP14ClothinShirtwhiteGreenYellowDress + equipment: + shirt: CP14ClothinShirtwhiteGreenYellowDress + +- type: loadout + id: CP14ClothinShirtRedBlueDress + equipment: + shirt: CP14ClothinShirtRedBlueDress + +- type: loadout + id: CP14ClothinShirtYellowBlueDress + equipment: + shirt: CP14ClothinShirtYellowBlueDress + +- type: loadout + id: CP14ClothinShirtBlueGreen + equipment: + shirt: CP14ClothinShirtBlueGreen + +- type: loadout + id: CP14ClothinShirtGray + equipment: + shirt: CP14ClothinShirtGray + +- type: loadout + id: CP14ClothinShirtGreenYellow + equipment: + shirt: CP14ClothinShirtGreenYellow + +- type: loadout + id: CP14ClothinShirtWhiteBrown + equipment: + shirt: CP14ClothinShirtWhiteBrown + # Shoes - type: loadoutGroup @@ -585,7 +668,6 @@ - CP14FluteInstrument - CP14LuteInstrument - CP14LyraInstrument - - CP14ClothingBeltQuiver - type: loadout id: CP14ManaOperationGlove @@ -677,11 +759,6 @@ back: - CP14FluteInstrument -- type: loadout - id: CP14ClothingBeltQuiver - equipment: - belt2: CP14ClothingBeltQuiver - # Keys - type: loadoutGroup diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/guard.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/guard.yml index fc5ff15d00..b0e923c212 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/guard.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/guard.yml @@ -58,17 +58,3 @@ id: CP14ClothingShirtGuardsChainmailShirtB equipment: shirt: CP14ClothingShirtGuardsChainmailShirtB - -# Spells - -- type: loadoutGroup - id: CP14GuardSpells - name: cp14-loadout-guard-spells - loadouts: - - CP14ActionSpellFlashLight - -- type: loadout - id: CP14ActionSpellFlashLight - dummyEntity: CP14ActionSpellFlashLight - actions: - - CP14ActionSpellFlashLight diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml index 9082e26791..6bf2af2009 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml @@ -31,12 +31,19 @@ name: cp14-loadout-guildmaster-outer loadouts: - CP14ClothingOuterClothingGreenVest + - CP14ClothingOuterClothingGreenVest2 - type: loadout id: CP14ClothingOuterClothingGreenVest equipment: outerClothing: CP14ClothingOuterClothingGreenVest +- type: loadout + id: CP14ClothingOuterClothingGreenVest2 + equipment: + outerClothing: CP14ClothingOuterClothingGreenVest2 + + # Shirt - type: loadoutGroup @@ -59,27 +66,4 @@ id: CP14GuildmasterShoes name: cp14-loadout-guildmaster-shoes loadouts: - - CP14ShoesAristocraticBlack - -# Spells - -- type: loadoutGroup - id: CP14GuildmasterSpells - name: cp14-loadout-guildmaster-spells - minLimit: 2 - maxLimit: 2 - loadouts: - - CP14ActionSpellDemiplaneInfiltration - - CP14ActionSpellMonolithWarp - -- type: loadout - id: CP14ActionSpellDemiplaneInfiltration - dummyEntity: CP14ActionSpellDemiplaneInfiltration - actions: - - CP14ActionSpellDemiplaneInfiltration - -- type: loadout - id: CP14ActionSpellMonolithWarp - dummyEntity: CP14ActionSpellMonolithWarp - actions: - - CP14ActionSpellMonolithWarp + - CP14ShoesAristocraticBlack \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml b/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml index 1ecbd232af..1c80592644 100644 --- a/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml @@ -1,7 +1,7 @@ - type: roleLoadout id: JobCP14Adventurer groups: - - CP14SkillTree + - CP14AdventureEquip - CP14GeneralHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -18,7 +18,6 @@ - type: roleLoadout id: JobCP14Apprentice groups: - - CP14SkillTree - CP14GeneralHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -33,7 +32,6 @@ - type: roleLoadout id: JobCP14Alchemist groups: - - CP14SkillTree - CP14AlchemistHead # - CP14GeneralOuterClothing - CP14AlchemistEyes # @@ -49,7 +47,6 @@ - type: roleLoadout id: JobCP14Innkeeper groups: - - CP14SkillTree - CP14GeneralHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -64,7 +61,6 @@ - type: roleLoadout id: JobCP14Blacksmith groups: - - CP14SkillTree - CP14GeneralHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -79,7 +75,6 @@ - type: roleLoadout id: JobCP14GuardCommander groups: - - CP14SkillTree - CP14GuardHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -90,12 +85,10 @@ - CP14GeneralShoes - CP14GeneralBack - CP14GeneralTrinkets - - CP14GuardSpells - type: roleLoadout id: JobCP14Guard groups: - - CP14SkillTree - CP14GuardHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -106,12 +99,10 @@ - CP14GeneralShoes - CP14GeneralBack - CP14GeneralTrinkets - - CP14GuardSpells - type: roleLoadout id: JobCP14Commandant groups: - - CP14SkillTree - CP14MerchantOuterClothing - CP14GeneralEyes - CP14MerchantShirt @@ -123,7 +114,6 @@ - type: roleLoadout id: JobCP14Guildmaster groups: - - CP14SkillTree - CP14GuildmasterOuterClothing - CP14GeneralEyes - CP14GuildmasterHead @@ -133,12 +123,10 @@ - CP14GuildmasterShoes - CP14GeneralBack - CP14GeneralTrinkets - - CP14GuildmasterSpells - type: roleLoadout id: JobCP14Merchant groups: - - CP14SkillTree - CP14MerchantHead - CP14MerchantOuterClothing - CP14GeneralEyes diff --git a/Resources/Prototypes/_CP14/Loadouts/skill_tree.yml b/Resources/Prototypes/_CP14/Loadouts/skill_tree.yml deleted file mode 100644 index 7759e40d56..0000000000 --- a/Resources/Prototypes/_CP14/Loadouts/skill_tree.yml +++ /dev/null @@ -1,119 +0,0 @@ -- type: loadoutGroup - id: CP14SkillTree - name: cp14-loadout-skill-tree - minLimit: 2 - maxLimit: 2 - loadouts: - - CP14SkillTreeMetamagic - - CP14SkillTreeHydrosophistry - - CP14SkillTreePyrokinetic - - CP14SkillTreeIllusion - - CP14SkillTreeHealing - - CP14SkillTreeAtlethic - #- CP14SkillTreeDimension Disabled until teleport & grab collider fix - -- type: entity - id: CP14SkillTreePyrokineticLoadoutDummy - name: Pyrokinetic - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: pyro - -- type: loadout - id: CP14SkillTreePyrokinetic - dummyEntity: CP14SkillTreePyrokineticLoadoutDummy - skillTree: - Pyrokinetic: 2 - -- type: entity - id: CP14SkillTreeHydrosophistryLoadoutDummy - name: Hydrosophistry - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: water - -- type: loadout - id: CP14SkillTreeHydrosophistry - dummyEntity: CP14SkillTreeHydrosophistryLoadoutDummy - skillTree: - Hydrosophistry: 2 - -- type: entity - id: CP14SkillTreeIllusionLoadoutDummy - name: Illusion - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: light - -- type: loadout - id: CP14SkillTreeIllusion - dummyEntity: CP14SkillTreeIllusionLoadoutDummy - skillTree: - Illusion: 2 - -- type: entity - id: CP14SkillTreeMetamagicLoadoutDummy - name: Metamagic - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: meta - -- type: loadout - id: CP14SkillTreeMetamagic - dummyEntity: CP14SkillTreeMetamagicLoadoutDummy - skillTree: - Metamagic: 2 - -- type: entity - id: CP14SkillTreeHealingLoadoutDummy - name: Healing - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: heal - -- type: loadout - id: CP14SkillTreeHealing - dummyEntity: CP14SkillTreeHealingLoadoutDummy - skillTree: - Healing: 2 - -- type: entity - id: CP14SkillTreeAtlethicLoadoutDummy - name: Atlethic - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: atlethic - -- type: loadout - id: CP14SkillTreeAtlethic - dummyEntity: CP14SkillTreeAtlethicLoadoutDummy - skillTree: - Atlethic: 2 - -- type: entity - id: CP14SkillTreeDimensionLoadoutDummy - name: Dimension - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: dimension - -- type: loadout - id: CP14SkillTreeDimension - dummyEntity: CP14SkillTreeDimensionLoadoutDummy - skillTree: - Dimension: 2 - diff --git a/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml b/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml index a3b8cf4f1b..ca06ed1502 100644 --- a/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml +++ b/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml @@ -209,21 +209,16 @@ # Guard - type: CP14LockType - id: GuardEntrance + id: CityGate complexity: 5 - name: cp14-lock-shaper-guard-entrance + name: cp14-lock-shaper-guard-city-gate - type: CP14LockType - id: Guard + id: GuardBarracks complexity: 5 - name: cp14-lock-shaper-guard-staff + name: cp14-lock-shaper-guard-barracks - type: CP14LockType id: GuardCommander complexity: 7 - name: cp14-lock-shaper-guard-commander - -- type: CP14LockType - id: GuardWeaponStorage - complexity: 7 - name: cp14-lock-shaper-guard-weapon-storage \ No newline at end of file + name: cp14-lock-shaper-guard-commander \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Maps/Frigid_Coast.yml b/Resources/Prototypes/_CP14/Maps/Frigid_Coast.yml index 8b214124c7..3c08652ad4 100644 --- a/Resources/Prototypes/_CP14/Maps/Frigid_Coast.yml +++ b/Resources/Prototypes/_CP14/Maps/Frigid_Coast.yml @@ -14,14 +14,14 @@ - type: StationJobs availableJobs: #Mercenary - CP14Guildmaster: [1, 1] + #CP14Guildmaster: [1, 1] CP14Adventurer: [ -1, -1 ] #Artisans CP14Apprentice: [ 3, 3 ] CP14Alchemist: [ 2, 2 ] CP14Blacksmith: [ 2, 2 ] CP14Innkeeper: [ 2, 3 ] - CP14Merchant: [2, 2] + #CP14Merchant: [2, 2] #Guard CP14Guard: [5, 5] CP14GuardCommander: [1, 1] diff --git a/Resources/Prototypes/_CP14/Maps/comoss.yml b/Resources/Prototypes/_CP14/Maps/comoss.yml index dbaa9de1dc..ca180cc0a7 100644 --- a/Resources/Prototypes/_CP14/Maps/comoss.yml +++ b/Resources/Prototypes/_CP14/Maps/comoss.yml @@ -14,14 +14,14 @@ - type: StationJobs availableJobs: #Mercenary - CP14Guildmaster: [1, 1] + #CP14Guildmaster: [1, 1] CP14Adventurer: [ -1, -1 ] #Artisans CP14Apprentice: [ 5, 5 ] CP14Alchemist: [ 2, 2 ] CP14Blacksmith: [ 2, 2 ] CP14Innkeeper: [ 3, 4 ] - CP14Merchant: [2, 2] + #CP14Merchant: [2, 2] #Guard CP14Guard: [8, 8] CP14GuardCommander: [1, 1] diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/rapier.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/rapier.yml index 30cde7ac47..acb71501e2 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/Blade/rapier.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/rapier.yml @@ -12,6 +12,9 @@ - BaseWeaponSharp - !type:AddComponents components: + - type: CP14MeleeWeaponSkillRequired + skills: + - RapierMastery - !type:EditMeleeWeapon newWideAnimation: CP14WeaponArcThrust resetOnHandSelected: true # Disable fast swap @@ -29,7 +32,7 @@ addSlots: - Garde - BladeInlay - - !type:EditDamageableModifier # Only 1 ingot t craft, so less health + - !type:EditDamageableModifier # Only 1 ingot craft, so less health multiplier: 2 - type: modularPart diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/sickle.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/sickle.yml index 5102f9f845..74549018fd 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/Blade/sickle.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/sickle.yml @@ -12,7 +12,7 @@ attackRateMultiplier: 1.5 bonusDamage: types: - Slash: 8 + Slash: 5 - !type:EditIncreaseDamageOnWield bonusDamage: types: diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/skimitar.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/skimitar.yml new file mode 100644 index 0000000000..582d56fa18 --- /dev/null +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/skimitar.yml @@ -0,0 +1,87 @@ +#Concept: +# + Additional range +# + High Damage! + Wielded buff +# - Required Warcraft skill + +- type: modularPart + id: BaseBladeSkimitar + modifiers: + - !type:Inherit + copyFrom: + - BaseWeaponChemical + - BaseWeaponSharp + - !type:AddComponents + components: + - type: CP14MeleeWeaponSkillRequired + skills: + - SkimitarMastery + - !type:EditMeleeWeapon + resetOnHandSelected: false # We can fast swing! + bonusRange: 0.2 + angleMultiplier: 1.5 + bonusDamage: + types: + Slash: 8 + - !type:EditIncreaseDamageOnWield + bonusDamage: + types: + Slash: 16 + - !type:EditItem + newSize: Large + adjustShape: 0, 2 + storedOffsetBonus: 0, 10 + - !type:EditModularSlots + addSlots: + - Garde + - BladeInlay + +- type: modularPart + id: BladeIronSkimitar + slots: + - Blade + sourcePart: CP14ScrapIron + rsiPath: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + modifiers: + - !type:Inherit + copyFrom: + - BaseBladeSkimitar + - BaseBladeIron + +- type: modularPart + id: BladeGoldSkimitar + slots: + - Blade + sourcePart: CP14ScrapGold + rsiPath: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + color: "#ffe269" + modifiers: + - !type:Inherit + copyFrom: + - BaseBladeSkimitar + - BaseBladeGold + +- type: modularPart + id: BladeCopperSkimitar + slots: + - Blade + sourcePart: CP14ScrapCopper + rsiPath: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + color: "#e28f08" + modifiers: + - !type:Inherit + copyFrom: + - BaseBladeSkimitar + - BaseBladeCopper + +- type: modularPart + id: BladeMithrilSkimitar + slots: + - Blade + sourcePart: CP14ScrapMithril + rsiPath: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + color: "#38f0b3" + modifiers: + - !type:Inherit + copyFrom: + - BaseBladeSkimitar + - BaseBladeMithril \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/spear.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/spear.yml index df61c8f7a4..2ad6b8d72f 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/Blade/spear.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/spear.yml @@ -26,6 +26,7 @@ - !type:EditMeleeWeapon newWideAnimation: CP14WeaponArcThrust angleMultiplier: 0 + bonusRange: 0.2 bonusDamage: types: Piercing: 8 diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/sword.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/sword.yml index d84fb55711..3a546ca31e 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/Blade/sword.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/sword.yml @@ -12,6 +12,9 @@ - BaseWeaponSharp - !type:AddComponents components: + - type: CP14MeleeWeaponSkillRequired + skills: + - SwordMastery - !type:EditMeleeWeapon resetOnHandSelected: true # Disable fast swap bonusRange: 0.2 diff --git a/Resources/Prototypes/_CP14/Objectives/empire_orders.yml b/Resources/Prototypes/_CP14/Objectives/empire_orders.yml index bd34ec5ec9..debc0c0d88 100644 --- a/Resources/Prototypes/_CP14/Objectives/empire_orders.yml +++ b/Resources/Prototypes/_CP14/Objectives/empire_orders.yml @@ -53,25 +53,4 @@ weights: CP14TownSendDinoObjective: 1 CP14TownSendMoleObjective: 1 - CP14TownSendBoarObjective: 1 - -# 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 \ No newline at end of file + CP14TownSendBoarObjective: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Objectives/personal_objectives.yml b/Resources/Prototypes/_CP14/Objectives/personal_objectives.yml index 325c5504b8..f8ae92d123 100644 --- a/Resources/Prototypes/_CP14/Objectives/personal_objectives.yml +++ b/Resources/Prototypes/_CP14/Objectives/personal_objectives.yml @@ -36,22 +36,4 @@ - type: weightedRandom id: CP14PersonalCurrencyCollectObjectiveGroup weights: - CP14PersonalCurrencyCollectObjective: 1 - -#Richest merchant objective -- type: entity - parent: CP14BasePersonalObjective - id: CP14PersonalObjectiveRichestMerchant - components: - - type: CP14RichestJobCondition - job: CP14Merchant - objectiveText: cp14-objective-personal-richest-merchant-title - objectiveDescription: cp14-objective-personal-richest-merchant-desc - objectiveSprite: - sprite: /Textures/_CP14/Objects/Economy/pp_coin.rsi - state: coin10 - -- type: weightedRandom - id: CP14PersonalObjectiveRichestMerchantGroup - weights: - CP14PersonalObjectiveRichestMerchant: 1 \ No newline at end of file + CP14PersonalCurrencyCollectObjective: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_ice.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_ice.yml index 054aa6e5e6..c363aa95b8 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_ice.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_ice.yml @@ -1,7 +1,7 @@ - type: cp14DemiplaneLocation id: T1IceCaves levels: - min: 3 + min: 2 max: 7 icon: sprite: _CP14/Interface/Misc/demiplane_locations.rsi diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_magma.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_magma.yml index 906a766042..d0349520fc 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_magma.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_magma.yml @@ -1,7 +1,7 @@ - type: cp14DemiplaneLocation id: T1MagmaCaves levels: - min: 7 + min: 4 max: 10 icon: sprite: _CP14/Interface/Misc/demiplane_locations.rsi diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/island_grassland_ring.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/island_grassland_ring.yml deleted file mode 100644 index 1a8af09540..0000000000 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/island_grassland_ring.yml +++ /dev/null @@ -1,113 +0,0 @@ -- type: cp14DemiplaneLocation - id: T1GrasslandIslandRing - levels: - min: 1 - max: 2 - icon: - sprite: _CP14/Interface/Misc/demiplane_locations.rsi - state: grassland_island - locationConfig: CP14DemiplaneGrasslandIslandRing - name: cp14-demiplane-location-grassland-island - tags: - - CP14DemiplaneOpenSky - - CP14DemiplaneHerbals - - CP14DemiplanePeacefulAnimals - components: - - type: MapLight - ambientLightColor: "#BFEEFFFF" - - type: CP14CloudShadows - - type: Biome - template: CP14SandOceanFill - - type: SunShadow - - type: SunShadowCycle - - type: Roof - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRing - layers: - # Masks - - !type:PrototypeDunGen - proto: CP14DemiplaneGrasslandIslandRingFloorMaskSand - - !type:PrototypeDunGen - proto: CP14DemiplaneGrasslandIslandRingFloorMaskGrass - - !type:PrototypeDunGen - proto: CP14DemiplaneGrasslandIslandRingFloorMaskSand2 - - !type:PrototypeDunGen - proto: CP14DemiplaneGrasslandIslandRingFloorMaskWater - # Biomes - - !type:BiomeDunGen - biomeTemplate: CP14GrasslandTestResult - tileMask: - - CP14FloorGrass - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRingFloorMaskSand - layers: - - !type:NoiseDistanceDunGen - size: 210, 210 - distanceConfig: !type:DunGenEuclideanSquaredDistance - blendWeight: 0.7 - layers: - - tile: CP14FloorSand - threshold: 0.50 - noise: - frequency: 0.005 - noiseType: OpenSimplex2 - fractalType: FBm - octaves: 5 - lacunarity: 2 - gain: 0.5 - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRingFloorMaskGrass - layers: - - !type:NoiseDistanceDunGen - size: 190, 190 - distanceConfig: !type:DunGenEuclideanSquaredDistance - blendWeight: 0.7 - layers: - - tile: CP14FloorGrass - threshold: 0.50 - noise: - frequency: 0.005 - noiseType: OpenSimplex2 - fractalType: FBm - octaves: 5 - lacunarity: 2 - gain: 0.5 - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRingFloorMaskSand2 - layers: - - !type:NoiseDistanceDunGen - size: 120, 120 - distanceConfig: !type:DunGenEuclideanSquaredDistance - blendWeight: 0.7 - layers: - - tile: CP14FloorSand - threshold: 0.50 - noise: - frequency: 0.005 - noiseType: OpenSimplex2 - fractalType: FBm - octaves: 5 - lacunarity: 2 - gain: 0.5 - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRingFloorMaskWater - layers: - - !type:NoiseDistanceDunGen - size: 110, 110 - distanceConfig: !type:DunGenEuclideanSquaredDistance - blendWeight: 0.7 - layers: - - tile: Space - threshold: 0.50 - noise: - frequency: 0.005 - noiseType: OpenSimplex2 - fractalType: FBm - octaves: 5 - lacunarity: 2 - gain: 0.5 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/mobs.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/mobs.yml index b92358c72e..796c7b1a4e 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/mobs.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/mobs.yml @@ -226,25 +226,4 @@ entity: CP14MobWatcherMagma count: 8 minGroupSize: 2 - maxGroupSize: 3 - -- type: cp14DemiplaneModifier - id: EnemySkeletonT2 - levels: - min: 6 - max: 10 - name: cp14-modifier-skeleton - generationWeight: 2.0 - categories: - Danger: 0.5 - layers: - - !type:OreDunGen - entity: CP14SpawnPointGhostDemiplaneSkeletonT2 - count: 1 - minGroupSize: 1 - maxGroupSize: 2 - - !type:OreDunGen - entity: CP14SpawnPointGhostDemiplaneSkeletonMagicalT2 - count: 1 - minGroupSize: 0 - maxGroupSize: 1 \ No newline at end of file + maxGroupSize: 3 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/GhostRoleDanger/misc.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/GhostRoleDanger/misc.yml index 4302a7491e..b3ae56d7f6 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/GhostRoleDanger/misc.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/GhostRoleDanger/misc.yml @@ -1,8 +1,8 @@ - type: cp14DemiplaneModifier id: EnemySkeletonT1 levels: - min: 3 - max: 5 + min: 2 + max: 3 name: cp14-modifier-skeleton generationWeight: 1.5 generationProb: 0.5 @@ -15,10 +15,26 @@ minGroupSize: 1 maxGroupSize: 3 +- type: cp14DemiplaneModifier + id: EnemySkeletonT2 + levels: + min: 4 + max: 10 + name: cp14-modifier-skeleton + generationWeight: 2.0 + categories: + GhostRoleDanger: 1 + layers: + - !type:OreDunGen + entity: CP14SpawnPointGhostDemiplaneSkeletonT2 + count: 1 + minGroupSize: 2 + maxGroupSize: 3 + - type: cp14DemiplaneModifier id: EnemyLurker levels: - min: 1 + min: 2 max: 10 generationWeight: 0.33 generationProb: 0.25 diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/ores.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Ore/ores.yml similarity index 93% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/ores.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Ore/ores.yml index 9b2e319da6..21c0d12464 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/ores.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Ore/ores.yml @@ -4,11 +4,11 @@ id: IronOre levels: min: 1 - max: 7 + max: 10 name: cp14-modifier-iron-ore unique: false categories: - Reward: 0.25 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneOpenSky @@ -25,11 +25,11 @@ id: IronOreUnderground levels: min: 1 - max: 7 + max: 10 name: cp14-modifier-iron-ore unique: false categories: - Reward: 0.25 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneUnderground @@ -46,11 +46,11 @@ id: CopperOre levels: min: 1 - max: 2 + max: 5 name: cp14-modifier-copper-ore unique: false categories: - Reward: 0.25 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneOpenSky @@ -67,11 +67,11 @@ id: CopperOreUnderground levels: min: 1 - max: 2 + max: 5 name: cp14-modifier-copper-ore unique: false categories: - Reward: 0.25 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneUnderground @@ -89,12 +89,12 @@ - type: cp14DemiplaneModifier id: GoldOre levels: - min: 4 - max: 5 + min: 2 + max: 10 name: cp14-modifier-gold-ore unique: false categories: - Reward: 0.25 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneOpenSky @@ -110,12 +110,12 @@ - type: cp14DemiplaneModifier id: GoldOreUnderground levels: - min: 4 - max: 5 + min: 2 + max: 10 name: cp14-modifier-gold-ore unique: false categories: - Reward: 0.25 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneUnderground @@ -131,12 +131,12 @@ - type: cp14DemiplaneModifier id: MithrilOre levels: - min: 5 + min: 3 max: 10 name: cp14-modifier-mithril-ore unique: false categories: - Reward: 0.25 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneOpenSky @@ -152,12 +152,12 @@ - type: cp14DemiplaneModifier id: MithrilOreUnderground levels: - min: 5 + min: 3 max: 10 name: cp14-modifier-mithril-ore unique: false categories: - Reward: 0.25 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneUnderground diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/rooms.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/rooms.yml index afb13626f8..690f774b8e 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/rooms.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/rooms.yml @@ -1,7 +1,7 @@ - type: cp14DemiplaneModifier id: ArtifactRoom levels: - min: 1 + min: 3 max: 10 generationWeight: 2 categories: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/categories.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/categories.yml index 082788b723..02e5f13efe 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/categories.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/categories.yml @@ -7,6 +7,9 @@ - type: cp14DemiplaneModifierCategory id: Reward +- type: cp14DemiplaneModifierCategory + id: Ore + - type: cp14DemiplaneModifierCategory id: Fun diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Special/misc.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Special/misc.yml index 9eb84e9cb4..68aa286e98 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Special/misc.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Special/misc.yml @@ -1,55 +1,71 @@ +- type: cp14SpecialDemiplane + id: Ensure4Entry1 + levels: + min: 1 + max: 1 + +- type: cp14SpecialDemiplane + id: Ensure4Entry2 + levels: + min: 1 + max: 1 + +- type: cp14SpecialDemiplane + id: Ensure4Entry3 + levels: + min: 1 + max: 1 + +- type: cp14SpecialDemiplane + id: Ensure4Entry4 + levels: + min: 1 + max: 1 + - type: cp14SpecialDemiplane id: Test levels: min: 5 max: 5 - location: T1GrasslandIsland - type: cp14SpecialDemiplane id: Test2 levels: min: 5 max: 5 - location: T1Caves - type: cp14SpecialDemiplane id: Test3 levels: min: 5 max: 5 - location: T1IceCaves - type: cp14SpecialDemiplane id: Test4 levels: min: 5 max: 5 - location: T1MagmaCaves - type: cp14SpecialDemiplane id: Test5 levels: min: 5 max: 5 - location: T1SnowIsland - type: cp14SpecialDemiplane id: Test6 levels: min: 5 max: 5 - location: T1SnowIsland - type: cp14SpecialDemiplane id: Test7 levels: min: 9 max: 10 - location: T1MagmaCaves - type: cp14SpecialDemiplane id: Test8 levels: min: 9 - max: 10 - location: T1Wastelands \ No newline at end of file + max: 10 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_stonebrick.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_stonebrick.yml index 41545a4a52..a34be6a09c 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_stonebrick.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_stonebrick.yml @@ -1,10 +1,10 @@ - type: constructionGraph - id: CP14WallStonebrick + id: CP14WallStoneBrick start: start graph: - node: start edges: - - to: CP14WallFrameStonebrick + - to: CP14WallFrameStoneBrick completed: - !type:SnapToGrid southRotation: true @@ -13,7 +13,7 @@ amount: 2 doAfter: 2 - - node: CP14WallFrameStonebrick + - node: CP14WallFrameStoneBrick entity: CP14WallFrameStonebrick edges: - to: start @@ -25,28 +25,20 @@ steps: - tool: Prying doAfter: 2 - - to: CP14WallStonebrick + - to: CP14WallStoneBrick steps: - material: CP14Stone amount: 2 doAfter: 2 - - to: CP14WindowStoneBrick - steps: - - material: CP14GlassSheet - amount: 2 - doAfter: 2 - - node: CP14WallStonebrick + - node: CP14WallStoneBrick entity: CP14WallStonebrick edges: - - to: CP14WallFrameStonebrick + - to: CP14WallFrameStoneBrick steps: - tool: CP14Hammering doAfter: 2 completed: - !type:SpawnPrototype prototype: CP14StoneBlock1 - amount: 2 - - - node: CP14WindowStoneBrick - entity: CP14WindowStoneBrick \ No newline at end of file + amount: 2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_stonebrick_marble.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_stonebrick_marble.yml index 63af925959..15819ac750 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_stonebrick_marble.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_stonebrick_marble.yml @@ -4,7 +4,7 @@ graph: - node: start edges: - - to: CP14WallFrameMarblebrick + - to: CP14WallFrameMarbleBrick completed: - !type:SnapToGrid southRotation: true @@ -13,7 +13,7 @@ amount: 2 doAfter: 2 - - node: CP14WallFrameMarblebrick + - node: CP14WallFrameMarbleBrick entity: CP14WallFrameMarblebrick edges: - to: start @@ -30,23 +30,15 @@ - material: CP14MarbleStone amount: 2 doAfter: 2 - - to: CP14WindowMarbleBrick - steps: - - material: CP14GlassSheet - amount: 2 - doAfter: 2 - node: CP14WallMarbleBrick entity: CP14WallMarbleBrick edges: - - to: CP14WallFrameMarblebrick + - to: CP14WallFrameMarbleBrick steps: - tool: CP14Hammering doAfter: 2 completed: - !type:SpawnPrototype prototype: CP14MarbleBlock1 - amount: 2 - - - node: CP14WindowMarbleBrick - entity: CP14WindowMarbleBrick \ No newline at end of file + amount: 2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_wooden.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_wooden.yml index f0d93457a2..26cc901679 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_wooden.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/wall_wooden.yml @@ -30,11 +30,6 @@ - material: CP14WoodenPlanks amount: 2 doAfter: 2 - - to: CP14WindowWooden - steps: - - material: CP14GlassSheet - amount: 2 - doAfter: 2 - node: CP14WallWooden entity: CP14WallWooden @@ -46,7 +41,4 @@ completed: - !type:SpawnPrototype prototype: CP14WoodenPlanks1 - amount: 2 - - - node: CP14WindowWooden - entity: CP14WindowWooden \ No newline at end of file + amount: 2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/window_stonebrick.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/window_stonebrick.yml new file mode 100644 index 0000000000..aeb49f48e4 --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/window_stonebrick.yml @@ -0,0 +1,58 @@ +- type: constructionGraph + id: CP14WindowStoneBrick + start: start + graph: + - node: start + edges: + - to: CP14WindowFrameStoneBrick + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14Stone + amount: 2 + doAfter: 2 + + - node: CP14WindowFrameStoneBrick + entity: CP14WindowFrameStoneBrick + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14StoneBlock1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 + - to: CP14WindowStoneBrick + steps: + - material: CP14GlassSheet + amount: 2 + doAfter: 2 + + - node: CP14WindowStoneBrick + entity: CP14WindowStoneBrick + edges: + - to: CP14WindowFrameStoneBrick + steps: + - tool: Screwing + doAfter: 1 + - tool: Anchoring + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: CP14GlassSheet1 + amount: 2 + + - node: CP14WindowStoneBrickBroken + entity: CP14WindowStoneBrickBroken + edges: + - to: CP14WindowFrameStoneBrick + steps: + - tool: Anchoring + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: CP14GlassShard + amount: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/window_stonebrick_marble.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/window_stonebrick_marble.yml new file mode 100644 index 0000000000..d1f816dc93 --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/window_stonebrick_marble.yml @@ -0,0 +1,58 @@ +- type: constructionGraph + id: CP14WindowMarbleBrick + start: start + graph: + - node: start + edges: + - to: CP14WindowFrameMarbleBrick + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14MarbleStone + amount: 2 + doAfter: 2 + + - node: CP14WindowFrameMarbleBrick + entity: CP14WindowFrameMarbleBrick + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14MarbleBlock1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 + - to: CP14WindowMarbleBrick + steps: + - material: CP14GlassSheet + amount: 2 + doAfter: 2 + + - node: CP14WindowMarbleBrick + entity: CP14WindowMarbleBrick + edges: + - to: CP14WindowFrameMarbleBrick + steps: + - tool: Screwing + doAfter: 1 + - tool: Anchoring + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: CP14GlassSheet1 + amount: 2 + + - node: CP14WindowMarbleBrickBroken + entity: CP14WindowMarbleBrickBroken + edges: + - to: CP14WindowFrameMarbleBrick + steps: + - tool: Anchoring + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: CP14GlassShard + amount: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/window_wooden.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/window_wooden.yml new file mode 100644 index 0000000000..c4c6a7ec01 --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Walls/window_wooden.yml @@ -0,0 +1,58 @@ +- type: constructionGraph + id: CP14WindowWooden + start: start + graph: + - node: start + edges: + - to: CP14WindowFrameWooden + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14WoodenPlanks + amount: 2 + doAfter: 2 + + - node: CP14WindowFrameWooden + entity: CP14WindowFrameWooden + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14WoodenPlanks1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 + - to: CP14WindowWooden + steps: + - material: CP14GlassSheet + amount: 2 + doAfter: 2 + + - node: CP14WindowWooden + entity: CP14WindowWooden + edges: + - to: CP14WindowFrameWooden + steps: + - tool: Screwing + doAfter: 1 + - tool: Anchoring + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: CP14GlassSheet1 + amount: 2 + + - node: CP14WindowWoodenBroken + entity: CP14WindowWoodenBroken + edges: + - to: CP14WindowFrameWooden + steps: + - tool: Anchoring + doAfter: 2 + completed: + - !type:SpawnPrototype + prototype: CP14GlassShard + amount: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/walls.yml b/Resources/Prototypes/_CP14/Recipes/Construction/walls.yml index 3aa53e5200..0b3b2658fb 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/walls.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/walls.yml @@ -40,7 +40,7 @@ - type: construction crystallPunkAllowed: true id: CP14WindowWooden - graph: CP14WallWooden + graph: CP14WindowWooden startNode: start targetNode: CP14WindowWooden category: construction-category-structures @@ -68,7 +68,7 @@ id: CP14WallStonebrick graph: CP14WallStonebrick startNode: start - targetNode: CP14WallStonebrick + targetNode: CP14WallStoneBrick category: construction-category-structures objectType: Structure placementMode: SnapgridCenter @@ -76,6 +76,22 @@ conditions: - !type:TileNotBlocked +- type: construction + crystallPunkAllowed: true + id: CP14WindowStoneBrick + graph: CP14WindowStoneBrick + startNode: start + targetNode: CP14WindowStoneBrick + category: construction-category-structures + icon: + sprite: _CP14/Structures/Windows/stone_bricks_window.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction crystallPunkAllowed: true id: CP14WallMarbleBrick @@ -86,5 +102,18 @@ objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14WindowMarbleBrick + graph: CP14WindowMarbleBrick + startNode: start + targetNode: CP14WindowMarbleBrick + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false conditions: - !type:TileNotBlocked \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml index b08cb0b022..727eebc8e5 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml @@ -4,6 +4,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14WoodenPlanks count: 2 @@ -18,6 +21,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -28,6 +34,9 @@ tag: CP14RecipeAnvil craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -39,6 +48,10 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting + - IronMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -53,6 +66,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +80,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 4 @@ -75,6 +94,9 @@ category: Armor craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -86,6 +108,9 @@ category: Weapon craftTime: 1 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -98,6 +123,9 @@ category: Weapon craftTime: 1 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -110,6 +138,9 @@ category: Weapon craftTime: 1 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -122,6 +153,9 @@ category: Weapon craftTime: 1 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -134,6 +168,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -145,6 +182,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -156,6 +196,10 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting + - IronMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -173,6 +217,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -184,6 +231,9 @@ category: Tools craftTime: 3 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -195,6 +245,9 @@ category: Tools craftTime: 3 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -206,6 +259,9 @@ category: Tools craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -217,6 +273,9 @@ category: Tools craftTime: 3 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -228,6 +287,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -239,6 +301,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -250,6 +315,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -261,6 +329,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -272,6 +343,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -283,6 +357,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:ProtoIdResource protoId: CP14CrystalShardQuartz count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_aventail.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_aventail.yml index 21cf2c6e60..3da5f78f39 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_aventail.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_aventail.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -53,6 +65,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -75,6 +93,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -86,6 +107,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_blade.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_blade.yml index 8dc4d6d3c4..35ef96680e 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_blade.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_blade.yml @@ -7,6 +7,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -18,6 +21,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -29,6 +35,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -40,6 +49,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -53,6 +65,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -75,6 +93,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -86,6 +107,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -99,6 +123,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -110,6 +137,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -121,6 +151,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -132,6 +165,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -145,6 +181,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -156,6 +195,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -167,6 +209,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -178,6 +223,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -191,6 +239,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -202,6 +253,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -213,6 +267,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -224,6 +281,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -237,6 +297,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -248,6 +311,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -260,6 +326,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -271,6 +340,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -284,6 +356,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -295,6 +370,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -306,6 +384,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -317,6 +398,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -330,6 +414,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -341,6 +428,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -352,6 +442,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -363,6 +456,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -376,6 +472,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -387,6 +486,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -398,6 +500,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -409,6 +514,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -422,6 +530,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -433,6 +544,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -444,6 +558,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -455,6 +572,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -468,6 +588,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -479,6 +602,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -490,6 +616,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -501,6 +630,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -514,6 +646,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -525,6 +660,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -536,6 +674,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -547,6 +688,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -560,6 +704,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -571,6 +718,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -582,6 +732,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -593,7 +746,68 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 - result: CP14ModularBladeMithrilHoe \ No newline at end of file + result: CP14ModularBladeMithrilHoe + +# Skimitar + +- type: CP14Recipe + id: CP14ModularBladeIronSkimitar + tag: CP14RecipeAnvil + category: Weapon + craftTime: 4 + requirements: + - !type:SkillRequired + skills: + - IronMelting + - !type:StackResource + stack: CP14IronBar + count: 2 + result: CP14ModularBladeIronSkimitar + +- type: CP14Recipe + id: CP14ModularBladeGoldSkimitar + tag: CP14RecipeAnvil + category: Weapon + craftTime: 4 + requirements: + - !type:SkillRequired + skills: + - GoldMelting + - !type:StackResource + stack: CP14GoldBar + count: 2 + result: CP14ModularBladeGoldSkimitar + +- type: CP14Recipe + id: CP14ModularBladeCopperSkimitar + tag: CP14RecipeAnvil + category: Weapon + craftTime: 4 + requirements: + - !type:SkillRequired + skills: + - CopperMelting + - !type:StackResource + stack: CP14CopperBar + count: 2 + result: CP14ModularBladeCopperSkimitar + +- type: CP14Recipe + id: CP14ModularBladeMithrilSkimitar + tag: CP14RecipeAnvil + category: Weapon + craftTime: 4 + requirements: + - !type:SkillRequired + skills: + - MithrilMelting + - !type:StackResource + stack: CP14MithrilBar + count: 2 + result: CP14ModularBladeMithrilSkimitar \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_breastplate.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_breastplate.yml index 9755c5d70a..228c4e4170 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_breastplate.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_breastplate.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 5 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 5 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 5 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 5 @@ -53,6 +65,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 6 @@ -64,6 +79,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 6 @@ -75,6 +93,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 6 @@ -86,6 +107,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 6 @@ -99,6 +123,9 @@ category: Armor craftTime: 8 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 4 @@ -110,6 +137,9 @@ category: Armor craftTime: 8 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 4 @@ -121,6 +151,9 @@ category: Armor craftTime: 8 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 4 @@ -132,6 +165,9 @@ category: Armor craftTime: 8 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 4 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_cuisses.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_cuisses.yml index 684f4df6e4..3586ba0390 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_cuisses.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_cuisses.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -53,6 +65,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -75,6 +93,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -86,6 +107,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_garde.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_garde.yml index 44a7e5cbac..b213187f06 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_garde.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_garde.yml @@ -6,6 +6,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -17,6 +20,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -28,6 +34,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -39,6 +48,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -52,6 +64,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -63,6 +78,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -74,6 +92,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -85,6 +106,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_greave.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_greave.yml index 12d519118c..b68cbf1771 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_greave.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_greave.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -53,6 +65,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -75,6 +93,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -86,6 +107,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_helmet.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_helmet.yml index 6cf72fefa5..8dd4d3f084 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_helmet.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_helmet.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -53,6 +65,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -64,6 +79,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -75,6 +93,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -86,6 +107,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml index 1299f9c0ac..ebdf4506c0 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -19,6 +22,9 @@ category: Armor craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -31,6 +37,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -43,6 +52,9 @@ category: Armor craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_visor.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_visor.yml index 2906734c8d..825845fdc4 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_visor.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_visor.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -53,6 +65,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -75,6 +93,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -86,6 +107,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/misc.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/misc.yml index eb0f950a25..76b1524b70 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/misc.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/misc.yml @@ -23,11 +23,11 @@ - type: CP14Recipe id: CP14FoodDoughMedium tag: CP14RecipeCooking - craftTime: 2 + craftTime: 1 requirements: - !type:ProtoIdResource protoId: CP14Wheat - count: 2 + count: 1 result: CP14FoodDoughMedium - type: CP14Recipe @@ -38,4 +38,4 @@ - !type:ProtoIdResource protoId: CP14FoodDoughMedium count: 1 - result: CP14FoodDoughMediumFlat \ No newline at end of file + result: CP14FoodDoughMediumFlat diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml index 1e6355b4b4..ad271ca5b5 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml @@ -7,6 +7,7 @@ protoId: CP14Wheat count: 1 result: CP14SeedWheat + resultCount: 3 - type: CP14Recipe id: CP14SeedTomato diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml index 50b51f8f31..15b422b43a 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml @@ -3,6 +3,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:MaterialResource material: CP14Copper count: 10 @@ -13,6 +16,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:MaterialResource material: CP14Iron count: 10 @@ -23,6 +29,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:MaterialResource material: CP14Gold count: 10 @@ -33,6 +42,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:MaterialResource material: CP14Mithril count: 10 @@ -43,6 +55,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:ProtoIdResource protoId: CP14CrystalShardQuartz count: 1 @@ -53,6 +68,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:ProtoIdResource protoId: CP14GlassShard count: 2 @@ -63,6 +81,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14GlassSheet count: 1 @@ -73,6 +94,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -86,6 +110,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14GlassSheet count: 2 @@ -96,6 +123,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -109,6 +139,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14GlassSheet count: 6 @@ -119,6 +152,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -132,6 +168,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14GlassSheet count: 9 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml index 32a5376ad1..48d6276203 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml @@ -255,6 +255,18 @@ count: 4 result: CP14SackFarming +- type: CP14Recipe + id: CP14SackFarmingSeed + tag: CP14RecipeSewing + craftTime: 2 + requirements: + - !type:ProtoIdResource + protoId: CP14String + - !type:StackResource + stack: CP14Cloth + count: 2 + result: CP14SackFarmingSeed + # Wallpaper (TODO: Move to separate workbench?) - type: CP14Recipe diff --git a/Resources/Prototypes/_CP14/Roles/Antags/demiplane_antag.yml b/Resources/Prototypes/_CP14/Roles/Antags/demiplane_antag.yml deleted file mode 100644 index 98ed742207..0000000000 --- a/Resources/Prototypes/_CP14/Roles/Antags/demiplane_antag.yml +++ /dev/null @@ -1,13 +0,0 @@ -- type: antag - id: CP14DemiplaneAntag - name: cp14-role-type-demiplane-antag-name - antagonist: true - setPreference: false - objective: cp14-ghost-role-information-rules-demiplane - -- type: antag - id: CP14RaidAntag - name: cp14-role-type-raid-antag-name - antagonist: true - setPreference: false - objective: cp14-ghost-role-information-rules-raid \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Antags/misc.yml b/Resources/Prototypes/_CP14/Roles/Antags/misc.yml new file mode 100644 index 0000000000..498e6cdf07 --- /dev/null +++ b/Resources/Prototypes/_CP14/Roles/Antags/misc.yml @@ -0,0 +1,31 @@ +- type: antag + id: CP14DemiplaneAntag + name: cp14-role-type-demiplane-antag-name + antagonist: true + setPreference: false + objective: cp14-ghost-role-information-rules-demiplane + +- type: antag + id: CP14RaidAntag + name: cp14-role-type-raid-antag-name + antagonist: true + setPreference: false + objective: cp14-ghost-role-information-rules-raid + +- type: antag + id: CP14Vampire + name: cp14-roles-antag-vampire-name + antagonist: true + setPreference: false #Impossible and boring gameplay ATM + objective: cp14-roles-antag-vampire-objective + requirements: + - !type:OverallPlaytimeRequirement + time: 7200 # 2h + #guides: TODO + +- type: antag + id: CP14BloodMoonCursed + name: cp14-roles-antag-blood-moon-cursed-name + antagonist: true + setPreference: true + objective: cp14-roles-antag-blood-moon-cursed-objective \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Antags/vampire.yml b/Resources/Prototypes/_CP14/Roles/Antags/vampire.yml deleted file mode 100644 index 8608c130ed..0000000000 --- a/Resources/Prototypes/_CP14/Roles/Antags/vampire.yml +++ /dev/null @@ -1,10 +0,0 @@ -- type: antag - id: CP14Vampire - name: cp14-roles-antag-vampire-name - antagonist: true - setPreference: false #Impossible and boring gameplay ATM - objective: cp14-roles-antag-vampire-objective - requirements: - - !type:OverallPlaytimeRequirement - time: 7200 # 2h - #guides: TODO \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml index 865f259a98..8f724fdcb4 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml @@ -6,10 +6,14 @@ startingGear: CP14AlchemistGear icon: "CP14JobIconAlchemist" supervisors: cp14-job-supervisors-command + special: + - !type:CP14LearnSkillsSpecial + skills: + - AlchemyVision requirements: - - !type:RoleTimeRequirement - role: CP14JobApprentice - time: 3600 # 1 hours + #- !type:RoleTimeRequirement + # role: CP14JobApprentice + # time: 3600 # 1 hours - !type:TraitsRequirement inverted: true traits: diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml index 8fb12ea307..7e5f625a24 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml @@ -6,6 +6,11 @@ startingGear: CP14ApprenticeGear icon: "CP14JobIconApprentice" supervisors: cp14-job-supervisors-command + special: + - !type:CP14LearnSkillsSpecial + skills: + - CopperMelting + - AlchemyVision - type: startingGear id: CP14ApprenticeGear diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml index 8126c96418..8ecdaf62bf 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml @@ -6,10 +6,18 @@ startingGear: CP14BlacksmithGear icon: "CP14JobIconBlacksmith" supervisors: cp14-job-supervisors-command - requirements: - - !type:RoleTimeRequirement - role: CP14JobApprentice - time: 3600 # 1 hours + special: + - !type:CP14LearnSkillsSpecial + skills: + - CopperMelting + - IronMelting + - GoldMelting + - GlassMelting + - MithrilMelting + #requirements: + #- !type:RoleTimeRequirement + # role: CP14JobApprentice + # time: 3600 # 1 hour - type: startingGear id: CP14BlacksmithGear diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard.yml index e5a327698d..9131884a4f 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard.yml @@ -6,6 +6,10 @@ startingGear: CP14GuardGear icon: "CP14JobIconGuard" supervisors: cp14-job-supervisors-guard-commander + special: + - !type:CP14LearnSkillsSpecial + skills: + - SwordMastery - type: startingGear id: CP14GuardGear diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard_commander.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard_commander.yml index b219a955bb..35d89483f4 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard_commander.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard_commander.yml @@ -15,6 +15,10 @@ - !type:DepartmentTimeRequirement department: CP14Guard time: 3600 # 1 hours + special: + - !type:CP14LearnSkillsSpecial + skills: + - SwordMastery - type: startingGear id: CP14GuardCommanderGear diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml index 3dfd695627..a5865c2707 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml @@ -1,5 +1,6 @@ - type: job id: CP14Guildmaster + setPreference: false name: cp14-job-name-guildmaster description: cp14-job-desc-guildmaster playTimeTracker: CP14JobGuildmaster diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml index bb139cb541..b5e23c6bb0 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml @@ -1,5 +1,6 @@ - type: job id: CP14Merchant + setPreference: false name: cp14-job-name-merchant description: cp14-job-desc-merchant playTimeTracker: CP14JobMerchant diff --git a/Resources/Prototypes/_CP14/Roles/MindRoles/mind_roles.yml b/Resources/Prototypes/_CP14/Roles/MindRoles/mind_roles.yml index 982e479450..d102f32c4c 100644 --- a/Resources/Prototypes/_CP14/Roles/MindRoles/mind_roles.yml +++ b/Resources/Prototypes/_CP14/Roles/MindRoles/mind_roles.yml @@ -1,7 +1,7 @@ - type: entity parent: BaseMindRoleAntag id: CP14MindRoleDemiplaneAntag - name: Demiplane Antag Role + name: Demiplane antag role components: - type: MindRole roleType: CP14DemiplaneAntagonist @@ -20,7 +20,7 @@ parent: BaseMindRoleAntag id: CP14MindRoleVampire categories: [ ForkFiltered ] - name: Vampire Role + name: Vampire role components: - type: MindRole antagPrototype: CP14Vampire @@ -28,4 +28,15 @@ exclusiveAntag: true - type: CP14VampireRole - type: RoleBriefing - briefing: cp14-roles-antag-vampire-briefing \ No newline at end of file + briefing: cp14-roles-antag-vampire-briefing + +- type: entity + parent: BaseMindRoleAntag + id: CP14MindRoleBloodMoonCursed + categories: [ ForkFiltered ] + name: Blood moon cursed role + components: + - type: MindRole + antagPrototype: CP14BloodMoonCursed + roleType: SoloAntagonist + exclusiveAntag: false \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/atlethic.yml b/Resources/Prototypes/_CP14/Skill/atlethic.yml index 780da468c4..3c78264db7 100644 --- a/Resources/Prototypes/_CP14/Skill/atlethic.yml +++ b/Resources/Prototypes/_CP14/Skill/atlethic.yml @@ -5,7 +5,8 @@ icon: sprite: _CP14/Actions/Spells/physical.rsi state: kick - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellKick - type: cp14Skill @@ -15,7 +16,8 @@ icon: sprite: _CP14/Actions/Spells/physical.rsi state: sprint - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellSprint - type: cp14Skill @@ -26,7 +28,8 @@ icon: sprite: _CP14/Actions/Spells/physical.rsi state: sprint - effect: !type:ReplaceAction + effects: + - !type:ReplaceAction oldAction: CP14ActionSpellSprint newAction: CP14ActionSpellSprintGoblin restrictions: diff --git a/Resources/Prototypes/_CP14/Skill/blacksmithing.yml b/Resources/Prototypes/_CP14/Skill/blacksmithing.yml new file mode 100644 index 0000000000..5e77661099 --- /dev/null +++ b/Resources/Prototypes/_CP14/Skill/blacksmithing.yml @@ -0,0 +1,68 @@ +- type: cp14Skill + id: CopperMelting + skillUiPosition: 1, 0 + tree: Blacksmithing + name: cp14-skill-copper-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/copper_ore.rsi + state: ore3 + effects: + - !type:UnlockRecipes + +- type: cp14Skill + id: IronMelting + skillUiPosition: 1, 2 + tree: Blacksmithing + name: cp14-skill-iron-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/iron_ore.rsi + state: ore3 + effects: + - !type:UnlockRecipes + restrictions: + - !type:NeedPrerequisite + prerequisite: CopperMelting + +- type: cp14Skill + id: GoldMelting + skillUiPosition: 0, 4 + tree: Blacksmithing + name: cp14-skill-gold-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/gold_ore.rsi + state: ore3 + effects: + - !type:UnlockRecipes + restrictions: + - !type:NeedPrerequisite + prerequisite: IronMelting + +- type: cp14Skill + id: MithrilMelting + skillUiPosition: 2, 4 + tree: Blacksmithing + name: cp14-skill-mithril-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/mithril_ore.rsi + state: ore3 + effects: + - !type:UnlockRecipes + restrictions: + - !type:NeedPrerequisite + prerequisite: IronMelting + +- type: cp14Skill + id: GlassMelting + skillUiPosition: 3, 0 + tree: Blacksmithing + name: cp14-skill-glass-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/glass.rsi + state: glass_3 + effects: + - !type:UnlockRecipes \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/dimension.yml b/Resources/Prototypes/_CP14/Skill/dimension.yml index b32bafa99f..1f78e7c87d 100644 --- a/Resources/Prototypes/_CP14/Skill/dimension.yml +++ b/Resources/Prototypes/_CP14/Skill/dimension.yml @@ -1,31 +1,34 @@ -- type: cp14Skill - id: CP14ActionSpellShadowGrab - skillUiPosition: 0, 0 - tree: Dimension - icon: - sprite: _CP14/Actions/Spells/dimension.rsi - state: shadow_grab - effect: !type:AddAction - action: CP14ActionSpellShadowGrab - -- type: cp14Skill - id: CP14ActionSpellShadowSwap - skillUiPosition: 0, 2 - tree: Dimension - icon: - sprite: _CP14/Actions/Spells/dimension.rsi - state: shadow_swap - effect: !type:AddAction - action: CP14ActionSpellShadowSwap - -- type: cp14Skill - id: CP14ActionSpellShadowStep - skillUiPosition: 0, 4 - learnCost: 2 - tree: Dimension - icon: - sprite: _CP14/Actions/Spells/dimension.rsi - state: shadow_step - effect: !type:AddAction - action: CP14ActionSpellShadowStep +#- type: cp14Skill +# id: CP14ActionSpellShadowGrab +# skillUiPosition: 0, 0 +# tree: Dimension +# icon: +# sprite: _CP14/Actions/Spells/dimension.rsi +# state: shadow_grab +# effects: +#- !type:AddAction +# action: CP14ActionSpellShadowGrab +# +#- type: cp14Skill +# id: CP14ActionSpellShadowSwap +# skillUiPosition: 0, 2 +# tree: Dimension +# icon: +# sprite: _CP14/Actions/Spells/dimension.rsi +# state: shadow_swap +# effects: +#- !type:AddAction +# action: CP14ActionSpellShadowSwap +# +#- type: cp14Skill +# id: CP14ActionSpellShadowStep +# skillUiPosition: 0, 4 +# learnCost: 2 +# tree: Dimension +# icon: +# sprite: _CP14/Actions/Spells/dimension.rsi +# state: shadow_step +# effects: +#- !type:AddAction +# action: CP14ActionSpellShadowStep diff --git a/Resources/Prototypes/_CP14/Skill/healing.yml b/Resources/Prototypes/_CP14/Skill/healing.yml index 79d876019d..76077fcec5 100644 --- a/Resources/Prototypes/_CP14/Skill/healing.yml +++ b/Resources/Prototypes/_CP14/Skill/healing.yml @@ -1,83 +1,145 @@ +# T1 + - type: cp14Skill - id: CP14ActionSpellCureBurn - skillUiPosition: 0, 0 + id: HealingT1 + skillUiPosition: 1, 0 tree: Healing - learnCost: 1 + name: cp14-skill-life-t1-name + learnCost: 0.5 icon: - sprite: _CP14/Actions/Spells/healing.rsi - state: cure_burn - effect: !type:AddAction - action: CP14ActionSpellCureBurn + sprite: _CP14/Actions/skill_tree.rsi + state: heal - type: cp14Skill id: CP14ActionSpellBloodPurification - skillUiPosition: 2, 0 - learnCost: 1 + skillUiPosition: 2, 6 tree: Healing icon: sprite: _CP14/Actions/Spells/healing.rsi state: cure_poison - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellBloodPurification - -- type: cp14Skill - id: CP14ActionSpellCureWounds - skillUiPosition: 4, 0 - learnCost: 1 - tree: Healing - icon: - sprite: _CP14/Actions/Spells/healing.rsi - state: cure_wounds - effect: !type:AddAction - action: CP14ActionSpellCureWounds + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT1 - type: cp14Skill id: CP14ActionSpellPlantGrowth - skillUiPosition: 0, 2 + skillUiPosition: 2, 4 tree: Healing icon: sprite: _CP14/Actions/Spells/healing.rsi state: plant_growth - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellPlantGrowth - -- type: cp14Skill - id: CP14ActionSpellHealBallade - skillUiPosition: 0, 6 - learnCost: 1 - tree: Healing - icon: - sprite: _CP14/Actions/Spells/healing.rsi - state: heal_music - effect: !type:AddAction - action: CP14ActionSpellHealBallade - -- type: cp14Skill - id: CP14ActionSpellPeaceBallade - skillUiPosition: 0, 8 - tree: Healing - icon: - sprite: _CP14/Actions/Spells/healing.rsi - state: peace_music - effect: !type:AddAction - action: CP14ActionSpellPeaceBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT1 - type: cp14Skill id: CP14ActionSpellSpeedBallade - skillUiPosition: 0, 10 + skillUiPosition: 0, 6 tree: Healing icon: sprite: _CP14/Actions/Spells/healing.rsi state: speed_music - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellSpeedBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT1 + +# T2 - type: cp14Skill - id: CP14ActionSpellSheepPolymorph - skillUiPosition: 4, 10 + id: HealingT2 + skillUiPosition: 7, 0 + tree: Healing + name: cp14-skill-life-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: heal2 + effects: + - !type:ModifyManacost + modifiers: + Life: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT1 + +- type: cp14Skill + id: CP14ActionSpellCureBurn + skillUiPosition: 6, 4 tree: Healing icon: - sprite: _CP14/Actions/Spells/misc.rsi - state: polymorph - effect: !type:AddAction - action: CP14ActionSpellSheepPolymorph \ No newline at end of file + sprite: _CP14/Actions/Spells/healing.rsi + state: cure_burn + effects: + - !type:AddAction + action: CP14ActionSpellCureBurn + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT2 + +- type: cp14Skill + id: CP14ActionSpellCureWounds + skillUiPosition: 6, 6 + tree: Healing + icon: + sprite: _CP14/Actions/Spells/healing.rsi + state: cure_wounds + effects: + - !type:AddAction + action: CP14ActionSpellCureWounds + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT2 + +- type: cp14Skill + id: CP14ActionSpellHealBallade + skillUiPosition: 8, 6 + tree: Healing + icon: + sprite: _CP14/Actions/Spells/healing.rsi + state: heal_music + effects: + - !type:AddAction + action: CP14ActionSpellHealBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT2 + +# T3 + +- type: cp14Skill + id: HealingT3 + skillUiPosition: 13, 0 + tree: Healing + name: cp14-skill-life-t3-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: heal3 + effects: + - !type:ModifyManacost + modifiers: + Life: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT2 + +- type: cp14Skill + id: CP14ActionSpellResurrection + skillUiPosition: 12, 4 + tree: Healing + icon: + sprite: _CP14/Actions/Spells/necromancy.rsi + state: resurrection + effects: + - !type:AddAction + action: CP14ActionSpellResurrection + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT3 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/hydrosophistry.yml b/Resources/Prototypes/_CP14/Skill/hydrosophistry.yml index af95644d63..47d27f9009 100644 --- a/Resources/Prototypes/_CP14/Skill/hydrosophistry.yml +++ b/Resources/Prototypes/_CP14/Skill/hydrosophistry.yml @@ -1,62 +1,134 @@ +# T1 + - type: cp14Skill - id: CP14ActionSpellFreeze - skillUiPosition: 0, 4 + id: HydrosophistryT1 + skillUiPosition: 1, 0 tree: Hydrosophistry + name: cp14-skill-water-t1-name + learnCost: 0.5 icon: - sprite: _CP14/Actions/Spells/water.rsi - state: freeze - effect: !type:AddAction - action: CP14ActionSpellFreeze + sprite: _CP14/Actions/skill_tree.rsi + state: water - type: cp14Skill id: CP14ActionSpellWaterCreation - skillUiPosition: 0, 0 + skillUiPosition: 1, 4 tree: Hydrosophistry icon: sprite: _CP14/Actions/Spells/water.rsi state: water_creation - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellWaterCreation + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT1 - type: cp14Skill id: CP14ActionSpellBeerCreation - skillUiPosition: 2, 0 + skillUiPosition: 1, 8 tree: Hydrosophistry + learnCost: 0 icon: sprite: _CP14/Actions/Spells/water.rsi state: beer_creation - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellBeerCreation restrictions: + - !type:NeedPrerequisite + prerequisite: CP14ActionSpellWaterCreation - !type:SpeciesWhitelist species: CP14Dwarf - type: cp14Skill - id: CP14ActionSpellIceShards + id: CP14ActionSpellIceDagger skillUiPosition: 0, 6 tree: Hydrosophistry - icon: - sprite: _CP14/Actions/Spells/water.rsi - state: ice_shards - effect: !type:AddAction - action: CP14ActionSpellIceShards - -- type: cp14Skill - id: CP14ActionSpellIceDagger - skillUiPosition: 0, 8 - tree: Hydrosophistry icon: sprite: _CP14/Actions/Spells/water.rsi state: ice_dagger - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellIceDagger + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT1 - type: cp14Skill id: CP14ActionSpellIceArrow - skillUiPosition: 0, 10 + skillUiPosition: 2, 6 tree: Hydrosophistry icon: sprite: _CP14/Actions/Spells/water.rsi state: ice_arrow - effect: !type:AddAction - action: CP14ActionSpellIceArrow \ No newline at end of file + effects: + - !type:AddAction + action: CP14ActionSpellIceArrow + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT1 + +# T2 + +- type: cp14Skill + id: HydrosophistryT2 + skillUiPosition: 7, 0 + tree: Hydrosophistry + name: cp14-skill-water-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: water2 + effects: + - !type:ModifyManacost + modifiers: + Water: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT1 + +- type: cp14Skill + id: CP14ActionSpellFreeze + skillUiPosition: 6, 4 + tree: Hydrosophistry + icon: + sprite: _CP14/Actions/Spells/water.rsi + state: freeze + effects: + - !type:AddAction + action: CP14ActionSpellFreeze + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT2 + +- type: cp14Skill + id: CP14ActionSpellIceShards + skillUiPosition: 8, 4 + tree: Hydrosophistry + icon: + sprite: _CP14/Actions/Spells/water.rsi + state: ice_shards + effects: + - !type:AddAction + action: CP14ActionSpellIceShards + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT2 + +# T3 + +- type: cp14Skill + id: HydrosophistryT3 + skillUiPosition: 13, 0 + tree: Hydrosophistry + name: cp14-skill-water-t3-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: water3 + effects: + - !type:ModifyManacost + modifiers: + Water: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/illusion.yml b/Resources/Prototypes/_CP14/Skill/illusion.yml index 33f3548d33..c8448993d7 100644 --- a/Resources/Prototypes/_CP14/Skill/illusion.yml +++ b/Resources/Prototypes/_CP14/Skill/illusion.yml @@ -1,52 +1,104 @@ +# T1 + +- type: cp14Skill + id: IllusionT1 + skillUiPosition: 1, 0 + tree: Illusion + name: cp14-skill-illusion-t1-name + learnCost: 0.5 + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: light + - type: cp14Skill id: CP14ActionSpellSphereOfLight - skillUiPosition: 0, 0 + skillUiPosition: 0, 4 tree: Illusion icon: sprite: _CP14/Actions/Spells/light.rsi state: sphere_of_light - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellSphereOfLight + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT1 + +- type: cp14Skill + id: CP14ActionSpellSearchOfLife + skillUiPosition: 2, 4 + learnCost: 1 + tree: Illusion + icon: + sprite: _CP14/Actions/Spells/light.rsi + state: search_of_life + effects: + - !type:AddAction + action: CP14ActionSpellSearchOfLife + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT1 + +# T2 + +- type: cp14Skill + id: IllusionT2 + skillUiPosition: 7, 0 + tree: Illusion + name: cp14-skill-illusion-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: light2 + effects: + - !type:ModifyManacost + modifiers: + Light: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT1 - type: cp14Skill id: CP14ActionSpellFlashLight - skillUiPosition: 2, 0 + skillUiPosition: 6, 4 tree: Illusion icon: sprite: _CP14/Actions/Spells/light.rsi state: flash_light - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellFlashLight + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT2 - type: cp14Skill - id: CP14ActionSpellSignalLightRed - skillUiPosition: 0, 4 - learnCost: 0.5 + id: CP14ActionSpellPeaceBallade + skillUiPosition: 8, 4 tree: Illusion icon: - sprite: _CP14/Actions/Spells/light.rsi - state: signal_light_red - effect: !type:AddAction - action: CP14ActionSpellSignalLightRed + sprite: _CP14/Actions/Spells/healing.rsi + state: peace_music + effects: + - !type:AddAction + action: CP14ActionSpellPeaceBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT2 + +# T3 - type: cp14Skill - id: CP14ActionSpellSignalLightYellow - skillUiPosition: 0, 6 - learnCost: 0.5 + id: IllusionT3 + skillUiPosition: 13, 0 tree: Illusion + name: cp14-skill-illusion-t3-name icon: - sprite: _CP14/Actions/Spells/light.rsi - state: signal_light_yellow - effect: !type:AddAction - action: CP14ActionSpellSignalLightYellow - -- type: cp14Skill - id: CP14ActionSpellSignalLightBlue - skillUiPosition: 0, 8 - learnCost: 0.5 - tree: Illusion - icon: - sprite: _CP14/Actions/Spells/light.rsi - state: signal_light_blue - effect: !type:AddAction - action: CP14ActionSpellSignalLightBlue \ No newline at end of file + sprite: _CP14/Actions/skill_tree.rsi + state: light3 + effects: + - !type:ModifyManacost + modifiers: + Light: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/martial_arts.yml b/Resources/Prototypes/_CP14/Skill/martial_arts.yml new file mode 100644 index 0000000000..2a560ffc73 --- /dev/null +++ b/Resources/Prototypes/_CP14/Skill/martial_arts.yml @@ -0,0 +1,32 @@ +- type: cp14Skill + id: SwordMastery + skillUiPosition: 0, 0 + name: cp14-skill-sword-mastery-name + desc: cp14-skill-mastery-desc + learnCost: 0.5 + tree: MartialArts + icon: + sprite: _CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi + state: preview + +- type: cp14Skill + id: RapierMastery + skillUiPosition: 2, 0 + name: cp14-skill-parier-mastery-name + desc: cp14-skill-mastery-desc + learnCost: 0.5 + tree: MartialArts + icon: + sprite: _CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi + state: preview + +- type: cp14Skill + id: SkimitarMastery + skillUiPosition: 4, 0 + name: cp14-skill-skimitar-mastery-name + desc: cp14-skill-mastery-desc + learnCost: 0.5 + tree: MartialArts + icon: + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + state: preview \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/metamagic.yml b/Resources/Prototypes/_CP14/Skill/metamagic.yml index 74552479fa..2ac1c3d928 100644 --- a/Resources/Prototypes/_CP14/Skill/metamagic.yml +++ b/Resources/Prototypes/_CP14/Skill/metamagic.yml @@ -1,13 +1,18 @@ +# T1 + - type: cp14Skill - id: CP14ActionSpellMagicSplitting - skillUiPosition: 0, 0 + id: MetamagicT1 + skillUiPosition: 1, 0 tree: Metamagic + name: cp14-skill-meta-t1-name + learnCost: 0.5 icon: - sprite: _CP14/Actions/Spells/meta.rsi - state: counter_spell - effect: !type:AddAction - action: CP14ActionSpellMagicSplitting - + sprite: _CP14/Actions/skill_tree.rsi + state: meta + effects: + - !type:AddManaMax + additionalMana: 25 + - type: cp14Skill id: CP14ActionSpellManaGift skillUiPosition: 0, 2 @@ -16,18 +21,23 @@ icon: sprite: _CP14/Actions/Spells/meta.rsi state: mana_gift - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellManaGift - + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT1 + - type: cp14Skill id: CP14ActionSpellManaGiftElf - skillUiPosition: 2, 2 - learnCost: 0.5 + skillUiPosition: 0, 4 + learnCost: 0 tree: Metamagic icon: sprite: _CP14/Actions/Spells/meta.rsi state: mana_gift - effect: !type:ReplaceAction + effects: + - !type:ReplaceAction oldAction: CP14ActionSpellManaGift newAction: CP14ActionSpellManaGiftElf restrictions: @@ -38,24 +48,29 @@ - type: cp14Skill id: CP14ActionSpellManaConsume - skillUiPosition: 0, 4 + skillUiPosition: 2, 2 learnCost: 0.5 tree: Metamagic icon: sprite: _CP14/Actions/Spells/meta.rsi state: mana_consume - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellManaConsume + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT1 - type: cp14Skill id: CP14ActionSpellManaConsumeElf skillUiPosition: 2, 4 - learnCost: 0.5 + learnCost: 0 tree: Metamagic icon: sprite: _CP14/Actions/Spells/meta.rsi state: mana_consume - effect: !type:ReplaceAction + effects: + - !type:ReplaceAction oldAction: CP14ActionSpellManaConsume newAction: CP14ActionSpellManaConsumeElf restrictions: @@ -66,10 +81,76 @@ - type: cp14Skill id: CP14ActionSpellMagicBallade - skillUiPosition: 0, 6 + skillUiPosition: 1, 6 tree: Metamagic icon: sprite: _CP14/Actions/Spells/meta.rsi state: magic_music - effect: !type:AddAction - action: CP14ActionSpellMagicBallade \ No newline at end of file + effects: + - !type:AddAction + action: CP14ActionSpellMagicBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT1 + +# T2 + +- type: cp14Skill + id: MetamagicT2 + skillUiPosition: 7, 0 + tree: Metamagic + name: cp14-skill-meta-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: meta2 + effects: + - !type:AddManaMax + additionalMana: 25 + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT1 + +- type: cp14Skill + id: CP14ActionSpellMagicSplitting + skillUiPosition: 6, 2 + tree: Metamagic + icon: + sprite: _CP14/Actions/Spells/meta.rsi + state: counter_spell + effects: + - !type:AddAction + action: CP14ActionSpellMagicSplitting + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT2 + +- type: cp14Skill + id: CP14ActionSpellManaTrance + skillUiPosition: 8, 2 + tree: Metamagic + icon: + sprite: _CP14/Actions/Spells/meta.rsi + state: mana_trance + effects: + - !type:AddAction + action: CP14ActionSpellManaTrance + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT2 + +# T3 + +- type: cp14Skill + id: MetamagicT3 + skillUiPosition: 13, 0 + tree: Metamagic + name: cp14-skill-meta-t3-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: meta3 + effects: + - !type:AddManaMax + additionalMana: 25 + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT2 diff --git a/Resources/Prototypes/_CP14/Skill/pyrokinetic.yml b/Resources/Prototypes/_CP14/Skill/pyrokinetic.yml index 0b5bde0be1..54c3b1359a 100644 --- a/Resources/Prototypes/_CP14/Skill/pyrokinetic.yml +++ b/Resources/Prototypes/_CP14/Skill/pyrokinetic.yml @@ -1,45 +1,121 @@ +# T1 + +- type: cp14Skill + id: PyrokineticT1 + skillUiPosition: 1, 0 + tree: Pyrokinetic + name: cp14-skill-pyro-t1-name + learnCost: 0.5 + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: pyro + - type: cp14Skill id: CP14ActionSpellFlameCreation - skillUiPosition: 0, 0 + skillUiPosition: 0, 4 tree: Pyrokinetic icon: sprite: _CP14/Actions/Spells/fire.rsi state: flame_creation - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellFlameCreation + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 - type: cp14Skill id: CP14ActionSpellHeat - skillUiPosition: 4, 0 + skillUiPosition: 0, 6 tree: Pyrokinetic icon: sprite: _CP14/Actions/Spells/fire.rsi state: heat - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellHeat + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 - type: cp14Skill id: CP14ActionSpellHellBallade - skillUiPosition: 0, 2 + skillUiPosition: 2, 4 tree: Pyrokinetic icon: sprite: _CP14/Actions/Spells/fire.rsi state: fire_music - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellHellBallade restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 - !type:SpeciesWhitelist species: CP14Tiefling - type: cp14Skill id: CP14ActionSpellTieflingInnerFire - skillUiPosition: 0, 4 + skillUiPosition: 2, 6 tree: Pyrokinetic icon: sprite: _CP14/Actions/Spells/fire.rsi state: tiefling_revenge - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellTieflingInnerFire restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 - !type:SpeciesWhitelist - species: CP14Tiefling \ No newline at end of file + species: CP14Tiefling + +# T2 + +- type: cp14Skill + id: PyrokineticT2 + skillUiPosition: 7, 0 + tree: Pyrokinetic + name: cp14-skill-pyro-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: pyro2 + effects: + - !type:ModifyManacost + modifiers: + Fire: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 + +- type: cp14Skill + id: CP14ActionSpellFireball + skillUiPosition: 6, 4 + tree: Pyrokinetic + icon: + sprite: _CP14/Actions/Spells/fire.rsi + state: fireball + effects: + - !type:AddAction + action: CP14ActionSpellFireball + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT2 + +# T3 + +- type: cp14Skill + id: PyrokineticT3 + skillUiPosition: 13, 0 + tree: Pyrokinetic + name: cp14-skill-pyro-t3-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: pyro3 + effects: + - !type:ModifyManacost + modifiers: + Fire: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/skill_tree.yml b/Resources/Prototypes/_CP14/Skill/skill_tree.yml index 52f276c83a..8011fb254d 100644 --- a/Resources/Prototypes/_CP14/Skill/skill_tree.yml +++ b/Resources/Prototypes/_CP14/Skill/skill_tree.yml @@ -2,7 +2,7 @@ id: Pyrokinetic name: cp14-skill-tree-pyrokinetic-name desc: cp14-skill-tree-pyrokinetic-desc - color: "#b52400" + color: "#d6933c" icon: sprite: _CP14/Actions/skill_tree.rsi state: pyro @@ -52,11 +52,34 @@ sprite: _CP14/Actions/skill_tree.rsi state: atlethic +#- type: cp14SkillTree +# id: Dimension +# name: cp14-skill-tree-dimension-name +# desc: cp14-skill-tree-dimension-desc +# color: "#ac66be" +# icon: +# sprite: _CP14/Actions/skill_tree.rsi +# state: dimension + - type: cp14SkillTree - id: Dimension - name: cp14-skill-tree-dimension-name - desc: cp14-skill-tree-dimension-desc - color: "#ac66be" + id: MartialArts + name: cp14-skill-tree-martial-name + desc: cp14-skill-tree-martial-desc + color: "#f54242" icon: sprite: _CP14/Actions/skill_tree.rsi - state: dimension + state: martial + +# + +- type: cp14SkillTree + id: Thaumaturgy + name: cp14-skill-tree-thaumaturgy-name + desc: cp14-skill-tree-thaumaturgy-desc + color: "#7c52bf" + +- type: cp14SkillTree + id: Blacksmithing + name: cp14-skill-tree-blacksmithing-name + desc: cp14-skill-tree-blacksmithing-desc + color: "#6b3200" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/thaumaturgy.yml b/Resources/Prototypes/_CP14/Skill/thaumaturgy.yml new file mode 100644 index 0000000000..a5bdef0596 --- /dev/null +++ b/Resources/Prototypes/_CP14/Skill/thaumaturgy.yml @@ -0,0 +1,14 @@ +- type: cp14Skill + id: AlchemyVision + skillUiPosition: 0, 0 + tree: Thaumaturgy + name: cp14-skill-alchemy-vision-name + desc: cp14-skill-alchemy-vision-desc + learnCost: 1 + icon: + sprite: _CP14/Clothing/Eyes/alchemy_glasses.rsi + state: icon + effects: + - !type:AddComponents + components: + - type: SolutionScanner \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Sponsor/roles.yml b/Resources/Prototypes/_CP14/Sponsor/roles.yml index e22c36452e..9748079680 100644 --- a/Resources/Prototypes/_CP14/Sponsor/roles.yml +++ b/Resources/Prototypes/_CP14/Sponsor/roles.yml @@ -7,6 +7,13 @@ priority: 1 color: "#1fbf51" +- type: sponsorRole + id: Collaborator + name: Collaborator + discordRoleId: "1288813716707606549" + priority: 1 + color: "#1fbf51" + - type: sponsorRole id: Moderator name: "Discord Moderator" diff --git a/Resources/Prototypes/_CP14/Traits/physical.yml b/Resources/Prototypes/_CP14/Traits/physical.yml index 0fb1430710..825161e0b4 100644 --- a/Resources/Prototypes/_CP14/Traits/physical.yml +++ b/Resources/Prototypes/_CP14/Traits/physical.yml @@ -29,7 +29,6 @@ - type: CP14MagicEnergyDraw - type: CP14MagicUnsafeDamage - type: CP14MagicUnsafeSleep - - type: CP14MagicAttuningMind # -1 diff --git a/Resources/Prototypes/_CP14/debug.yml b/Resources/Prototypes/_CP14/debug.yml deleted file mode 100644 index ae9888bd37..0000000000 --- a/Resources/Prototypes/_CP14/debug.yml +++ /dev/null @@ -1,33 +0,0 @@ -#- type: entity -# parent: BaseItem -# id: CP14DebugWorldSprite -# name: strange copper bar -# suffix: CP, DEBUG -# categories: [ ForkFiltered ] -# components: -# # Just copy me, I am block with name Bob -# - type: Appearance -# - type: CP14WorldSprite -# - type: GenericVisualizer -# visuals: -# enum.WorldSpriteVisualLayers.Layer: -# world: -# True: -# visible: true -# False: -# visible: false -# content: -# True: -# visible: false -# False: -# visible: true -# # Just copy me, I am block with name Bob -# -# - type: Sprite -# sprite: /Textures/_CP14/Objects/Materials/copper_bar.rsi -# layers: -# - map: ["world"] -# state: bar -# - map: ["content"] -# state: bar_2 -# \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/game_presets.yml b/Resources/Prototypes/_CP14/game_presets.yml index 5a31a9226c..533f883c1e 100644 --- a/Resources/Prototypes/_CP14/game_presets.yml +++ b/Resources/Prototypes/_CP14/game_presets.yml @@ -10,6 +10,19 @@ rules: - Secret +- type: gamePreset + id: CP14Sandbox + alias: + - sandbox + name: sandbox-title + description: sandbox-description + showInVote: false + cP14Allowed: true + rules: + - CP14RoundObjectivesRule + - CP14BasicStationEventScheduler + - Sandbox + - type: gamePreset id: CP14Greenshift name: greenshift-title @@ -17,19 +30,16 @@ showInVote: true cP14Allowed: true rules: - - CP14SubGamemodesRule - CP14RoundObjectivesRule - CP14BasicStationEventScheduler - type: gamePreset - id: CP14Sandbox - alias: - - sandbox - name: sandbox-title - description: sandbox-description - showInVote: true # For playtest period only + id: CP14JudgmentNight + name: cp14-judge-night-title + description: cp14-judge-night-desc + showInVote: true cP14Allowed: true rules: - CP14RoundObjectivesRule - CP14BasicStationEventScheduler - - Sandbox + - CP14BloodMoonRule \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/stat_trackers.yml b/Resources/Prototypes/_CP14/stat_trackers.yml deleted file mode 100644 index 10204af15c..0000000000 --- a/Resources/Prototypes/_CP14/stat_trackers.yml +++ /dev/null @@ -1,7 +0,0 @@ -- type: statisticTracker - id: DemiplaneOpen - text: cp14-tracker-demiplane-open - -- type: statisticTracker - id: DemiplaneDeaths - text: cp14-tracker-demiplane-deaths \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/tags.yml b/Resources/Prototypes/_CP14/tags.yml index 30948e227f..681ae5251e 100644 --- a/Resources/Prototypes/_CP14/tags.yml +++ b/Resources/Prototypes/_CP14/tags.yml @@ -112,6 +112,9 @@ - type: Tag id: CP14FarmFood +- type: Tag + id: CP14FarmSeed + - type: Tag id: CP14AlchemicalHerbals @@ -141,3 +144,6 @@ - type: Tag id: CP14RaidLeader + +- type: Tag + id: CP14EnergyCrystal diff --git a/Resources/Prototypes/round_announcements.yml b/Resources/Prototypes/round_announcements.yml index 070de0cb7f..0f8aeea7d2 100644 --- a/Resources/Prototypes/round_announcements.yml +++ b/Resources/Prototypes/round_announcements.yml @@ -1,3 +1,7 @@ +#- type: roundAnnouncement +# id: Welcome +# sound: /Audio/Announcements/welcome.ogg #REPLACED By CrystallEdge + - type: roundAnnouncement id: Welcome - sound: /Audio/Announcements/welcome.ogg + sound: /Audio/_CP14/Effects/round_start.ogg \ No newline at end of file diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AdventurersTabs/Demiplanes.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AdventurersTabs/Demiplanes.xml index 3a8a4a63df..f63081142f 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AdventurersTabs/Demiplanes.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AdventurersTabs/Demiplanes.xml @@ -13,7 +13,7 @@ There are "keys" in the game world that allow you to temporarily activate a port -. + When you activate the "key" (via the "Z" key or by clicking on the key), a portal is formed, which will teleport up to 4 players and what they are pulling behind them to the demiplane. Be aware that you may be immediately attacked by opponents who are near you. @@ -50,11 +50,11 @@ To prepare for an expedition to the demiplane, you may need the following items: ## Cooperation tips The entire Demiplane is designed for adventurers to (and should) work as a team. Define the basic concepts amongst yourselves: -- who will engage in melee and ranged combat? -- who will be responsible for healing and/or storing medicine vials? +- Who will engage in melee and ranged combat? +- Who will be responsible for healing and/or storing medicine vials? - Who will carry the team's cargo (crates or extra bags) to gather resources? - How will you divide the items you receive amongst yourselves later on? -- who will be your team leader during critical situations? +- Who will be your team leader during critical situations? - What will you do with dead and injured team members? diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Carcat.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Carcat.xml new file mode 100644 index 0000000000..027f698283 --- /dev/null +++ b/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Carcat.xml @@ -0,0 +1,22 @@ + +# Carcats + + + + + +The Carkats are a desert nation inhabiting the harsh expanse of the Great Dune Desert. They are known for their endurance, isolation, and deep connection to their ancestors. Their homeland is Bafamir, a state that rose from the ashes of war, disaster and harsh conditions, held together by the iron will of the Sultan and the overriding clans. In other lands they are often found as mercenaries, traders and artisans. + +## Game Features +- Carkats are naturally endowed with sharp claws that deal enhanced damage in melee combat. +- Wearing shoes? Not for them. Where have you seen shoes that will fit over clawed paws? +- Soft paws - soft pads ensure a completely silent footstep. +- Night vision - nature has given carcats excellent night vision - they see in the dark almost as well as they do in daylight. Combined with their silent walk, this makes them ideal hunters. + +## Cultural Features +- Ancestral nation: the Karkats do not worship gods - they honor the spirits of their ancestors, believing them to be the guardians of boundaries and law. +- Anonymity of power: the Sultans of Bafamir have no name, clan or face. Their figure is a symbol of the will of the entire desert. +- Accent of terrain: Carkats from different areas of Bafamir may have their own particular accent. +- Tribal ties: far from their homeland, the Carkats are very warm towards tribesmen, setting them apart from other races. + + \ No newline at end of file diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Silva.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Silva.xml index 103d64ec06..1ad0e6f9f5 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Silva.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Silva.xml @@ -7,7 +7,7 @@ The Silva are a race of humanoid plants living in deep relic forests. Emerging from the mother tree in the centre of their cities, the Silvas do not travel the world very often. -## Magical photosynthesis (TEMPORARILY DISABLED) +## Magical photosynthesis Silvas regenerate [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DaylightEnergy"/] mana while in sunlight, but without it, mana regeneration is completely absent. diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Carcat.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Carcat.xml new file mode 100644 index 0000000000..1864428379 --- /dev/null +++ b/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Carcat.xml @@ -0,0 +1,22 @@ + +# Каркаты + + + + + +Каркаты — пустынный народ, обитающий в суровых просторах Пустыни Великих Дюн. Они известны своей выносливостью, замкнутостью и глубокой связью с предками. Их родина — Бафамир, государство, выросшее из пепла войны, бедствий и тяжелых условий, удерживаемое железной волей султана и главенствующих кланов. В других странах они часто встречаются в роли наемников, торговцев и ремесленников. + +## Игровые особенности +- Каркаты от природы наделены острыми когтями, которые наносят усиленный урон в ближнем бою. +- Ношение обуви? Не для них. Где вы видели ботинки, которые налезут на лапы с когтями? +- Мягкие лапы - мягкие подушечки обеспечивают абсолютно бесшумную поступь. +- Ночное зрение - природа наградила каркатов отличным ночным зрением — они видят в темноте почти так же хорошо, как при свете дня. Вкупе с бесшумной ходьбой, это делает их идеальными охотниками. + +## Культурные особенности +- Народ предков: каркаты не поклоняются богам — они чтят духов своих предков, считая их хранителями границ и закона. +- Анонимность власти: султаны Бафамира не имеют имени, рода или лица. Их фигура — символ воли всей пустыни. +- Акцент местности: у каркатов из разных районов Бафамира может быть свой особенный акцент. +- Соплеменнические связи: вдали от своей родины, каркаты очень тепло относятся к соплеменникам, выделяя их от остальных рас. + + \ No newline at end of file diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Silva.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Silva.xml index 1b6b066263..65545e4d43 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Silva.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Silva.xml @@ -7,7 +7,7 @@ Сильва - раса гуманоидных растений обитающих в глубоких реликтовых лесах. Появляясь в центре своих городов из материнского дерева, Сильвы не особо часто путешествуют по миру. -## Магический фотосинтез (ВРЕМЕННО ОТКЛЮЧЕНО) +## Магический фотосинтез Сильвы регенерируют [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DaylightEnergy"/] маны находясь под солнечным светом, но без него регенерация маны полностью отсутствует. diff --git a/Resources/Textures/_CP14/Actions/Spells/light.rsi/meta.json b/Resources/Textures/_CP14/Actions/Spells/light.rsi/meta.json index 4aa5d154b7..889b53cf41 100644 --- a/Resources/Textures/_CP14/Actions/Spells/light.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/Spells/light.rsi/meta.json @@ -13,6 +13,9 @@ { "name": "signal_light_blue" }, + { + "name": "search_of_life" + }, { "name": "signal_light_red" }, diff --git a/Resources/Textures/_CP14/Actions/Spells/light.rsi/search_of_life.png b/Resources/Textures/_CP14/Actions/Spells/light.rsi/search_of_life.png new file mode 100644 index 0000000000..2b5979bad1 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/light.rsi/search_of_life.png differ diff --git a/Resources/Textures/_CP14/Actions/Spells/meta.rsi/mana_trance.png b/Resources/Textures/_CP14/Actions/Spells/meta.rsi/mana_trance.png new file mode 100644 index 0000000000..25b6cad378 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/meta.rsi/mana_trance.png differ diff --git a/Resources/Textures/_CP14/Actions/Spells/meta.rsi/meta.json b/Resources/Textures/_CP14/Actions/Spells/meta.rsi/meta.json index 93e6c521ce..5f3ba98223 100644 --- a/Resources/Textures/_CP14/Actions/Spells/meta.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/Spells/meta.rsi/meta.json @@ -21,6 +21,9 @@ }, { "name": "mana_gift" + }, + { + "name": "mana_trance" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal.png index c59080bf51..1bbc425b76 100644 Binary files a/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal.png and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal2.png new file mode 100644 index 0000000000..c421d61781 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal3.png new file mode 100644 index 0000000000..febc988935 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal3.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/light.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light.png index 9c8625db69..90dadf56e4 100644 Binary files a/Resources/Textures/_CP14/Actions/skill_tree.rsi/light.png and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/light2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light2.png new file mode 100644 index 0000000000..753d660c22 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/light3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light3.png new file mode 100644 index 0000000000..23710fed22 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light3.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/martial.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/martial.png new file mode 100644 index 0000000000..a04674adfa Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/martial.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.json b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.json index 34934b3a38..606e456397 100644 --- a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.json @@ -16,17 +16,50 @@ { "name": "heal" }, + { + "name": "heal2" + }, + { + "name": "heal3" + }, { "name": "light" }, + { + "name": "light2" + }, + { + "name": "light3" + }, + { + "name": "martial" + }, { "name": "meta" }, + { + "name": "meta2" + }, + { + "name": "meta3" + }, { "name": "pyro" }, + { + "name": "pyro2" + }, + { + "name": "pyro3" + }, { "name": "water" + }, + { + "name": "water2" + }, + { + "name": "water3" } ] } diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.png index 6cc20d9668..9611ec35ee 100644 Binary files a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.png and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta2.png new file mode 100644 index 0000000000..6cc20d9668 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta3.png new file mode 100644 index 0000000000..a5dfa07c4b Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta3.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro2.png new file mode 100644 index 0000000000..ab29eb43a4 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro3.png new file mode 100644 index 0000000000..37ac5e1aa9 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro3.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/water.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water.png index af5f50fad1..a6b7d2f7d8 100644 Binary files a/Resources/Textures/_CP14/Actions/skill_tree.rsi/water.png and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/water2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water2.png new file mode 100644 index 0000000000..af5f50fad1 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/water3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water3.png new file mode 100644 index 0000000000..f485ec04d3 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water3.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/equipped-CLOAK.png index fe7325bb08..8e4bf531d5 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/equipped-CLOAK.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/icon.png index 02f7cc4dc7..93a64beb65 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/icon.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/equipped-CLOAK.png new file mode 100644 index 0000000000..ebf3b443ea Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/icon.png new file mode 100644 index 0000000000..cd86745b2a Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/meta.json new file mode 100644 index 0000000000..936e465a96 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-CLOAK", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/equipped-CLOAK.png index a57695ea54..f6ee713b5d 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/equipped-CLOAK.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/icon.png index 0584398c46..4ec70e2686 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/icon.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/meta.json index 049bd400e8..c280ca88d9 100644 --- a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/meta.json +++ b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Created by KBAS5", + "license": "All right reserved", + "copyright": "Created by Jaraten", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/equipped-CLOAK.png index eba4a89e94..f7cd8f499c 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/equipped-CLOAK.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/icon.png index 3fc79bf89d..dd75d31016 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/icon.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/meta.json index 049bd400e8..c280ca88d9 100644 --- a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/meta.json +++ b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Created by KBAS5", + "license": "All right reserved", + "copyright": "Created by Jaraten", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/equipped-CLOAK.png index af27e74ddc..7ecca5f4a9 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/equipped-CLOAK.png and b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/icon.png index a825ab00ff..e38628c71a 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/icon.png and b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/meta.json index 2124f3278a..c280ca88d9 100644 --- a/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/meta.json +++ b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Created by perzonaz (discord)", + "license": "All right reserved", + "copyright": "Created by Jaraten", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/equipped-CLOAK.png index da50be7e9f..2eeab94ba1 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/equipped-CLOAK.png and b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/icon.png index bb7f347f5c..05e63c15f7 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/icon.png and b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/meta.json index 2124f3278a..c280ca88d9 100644 --- a/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/meta.json +++ b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Created by perzonaz (discord)", + "license": "All right reserved", + "copyright": "Created by Jaraten", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..2e2cec1163 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon-open.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon-open.png new file mode 100644 index 0000000000..051371763e Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon-open.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon.png new file mode 100644 index 0000000000..add684784e Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/meta.json b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/meta.json new file mode 100644 index 0000000000..1452f4b3d7 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "icon-open" + }, + { + "name": "open-equipped-OUTERCLOTHING", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/open-equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/open-equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..dd7f960b01 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/open-equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..db4c678295 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon-open.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon-open.png new file mode 100644 index 0000000000..1fe2ae2713 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon-open.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon.png new file mode 100644 index 0000000000..4a5a5a8299 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/meta.json b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/meta.json new file mode 100644 index 0000000000..1452f4b3d7 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "icon-open" + }, + { + "name": "open-equipped-OUTERCLOTHING", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/open-equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/open-equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..4712c16428 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/open-equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..a8e92c1ff0 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/icon.png new file mode 100644 index 0000000000..25cf6ebb95 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..7f71a52815 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/icon.png new file mode 100644 index 0000000000..67b51f8554 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..7a396b479e Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/icon.png new file mode 100644 index 0000000000..00f7fcb862 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..95acdb99e9 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/icon.png new file mode 100644 index 0000000000..1b6b3e187a Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..a7d9cb88df Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/icon.png new file mode 100644 index 0000000000..3b09be9298 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..5bf3b794e1 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/icon.png new file mode 100644 index 0000000000..9d4bf927de Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..3e4068c9a8 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/icon.png new file mode 100644 index 0000000000..276b2a5371 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..4a63f79b5c Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/icon.png new file mode 100644 index 0000000000..416fb29701 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..0706364f75 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/icon.png new file mode 100644 index 0000000000..8b67f7f859 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..b6e481afe1 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/icon.png new file mode 100644 index 0000000000..ae1572d377 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/meta.json new file mode 100644 index 0000000000..be228e48bf --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..0900bb2c42 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/icon.png new file mode 100644 index 0000000000..011d047e08 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/meta.json new file mode 100644 index 0000000000..be228e48bf --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..310575963b Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/icon.png new file mode 100644 index 0000000000..1f729df940 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/meta.json new file mode 100644 index 0000000000..be228e48bf --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..59ab615449 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/icon.png new file mode 100644 index 0000000000..73e6b98d70 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/meta.json new file mode 100644 index 0000000000..be228e48bf --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/icon.png b/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/icon.png new file mode 100644 index 0000000000..4b942c8ae7 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/meta.json b/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/meta.json new file mode 100644 index 0000000000..8db91c82a3 --- /dev/null +++ b/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "size": { + "x": 48, + "y": 48 + }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by TheShuEd", + "states": [ + { + "name": "icon", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + } + ] +} diff --git a/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/meta.json b/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/meta.json new file mode 100644 index 0000000000..84ba7b94b5 --- /dev/null +++ b/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "size": { + "x": 19, + "y": 48 + }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by TheShuEd", + "states": [ + { + "name": "pointer" + } + ] +} diff --git a/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/pointer.png b/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/pointer.png new file mode 100644 index 0000000000..b62461f387 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/pointer.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/meta.json b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/meta.json index 21122621e0..8219fbfd64 100644 --- a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/meta.json +++ b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/meta.json @@ -1,124 +1,130 @@ { "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "taken from tg station at commit https://github.com/tgstation/tgstation/blob/832ae532766d491d91db53746d15b4b55be3f2b0", + "license": "All right reserved", + "copyright": "by TTTomaTTT for CrystallEdge", "size": { - "x": 32, - "y": 32 + "x": 48, + "y": 48 }, "states": [ - { - "name": "stamina6", - "delays": [ - [ - 0.5, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.5 - ] - ] - }, - { - "name": "stamina5", - "delays": [ - [ - 0.5, - 0.2, - 0.2, - 0.2, - 0.2, - 0.5 - ] - ] - }, - { - "name": "stamina4", - "delays": [ - [ - 0.3, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.3 - ] - ] - }, - { - "name": "stamina3", - "delays": [ - [ - 0.3, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.3 - ] - ] - }, - { - "name": "stamina2", - "delays": [ - [ - 0.3, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.3 - ] - ] - }, - { - "name": "stamina1", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "stamina0", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - } + { + "name": "stamina0", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] ] -} \ No newline at end of file + }, + { + "name": "stamina1", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina2", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina3", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina4", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina5", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina6", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + } + ] +} diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina0.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina0.png index 10e3e8c956..d5daf3c54b 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina0.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina0.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina1.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina1.png index a34d57cf26..13a8c6a448 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina1.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina1.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina2.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina2.png index a3d263d751..cf6ee3cca4 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina2.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina2.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina3.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina3.png index 356916dfe0..f818b321b6 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina3.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina3.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina4.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina4.png index d0645f4ebd..11242e7056 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina4.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina4.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina5.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina5.png index 46f439dfd5..d86d602222 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina5.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina5.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina6.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina6.png index 60a536643d..aec2bb6cbc 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina6.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina6.png differ diff --git a/Resources/Textures/_CP14/Interface/Paper/paper_passport.png b/Resources/Textures/_CP14/Interface/Paper/paper_passport.png index 77306e199b..edfa70e5f5 100644 Binary files a/Resources/Textures/_CP14/Interface/Paper/paper_passport.png and b/Resources/Textures/_CP14/Interface/Paper/paper_passport.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/dead.png b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/dead.png index f028e6c4a3..01311821b7 100644 Binary files a/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/dead.png and b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/dead.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/flyagaric.png b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/flyagaric.png index ea2f65b628..550eeef194 100644 Binary files a/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/flyagaric.png and b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/flyagaric.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/meta.json index 48b6460e93..c06aa96040 100644 --- a/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/meta.json +++ b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-4.0", - "copyright": "Created by prazat911 (Discord)", + "copyright": "Created by prazat911 (Discord) resprite by jaraten", "states": [ { "name": "flyagaric", diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead.png b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead.png index a55b2ff298..c1a791c8ae 100644 Binary files a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead.png and b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead_cap.png b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead_cap.png index 54f0f64528..5602aa2957 100644 Binary files a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead_cap.png and b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead_cap.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom.png b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom.png index 4b07bac6a8..90dea8ade3 100644 Binary files a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom.png and b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom_cap.png b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom_cap.png index 8cb1f9d281..baf1856d27 100644 Binary files a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom_cap.png and b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom_cap.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/meta.json index 187bc51f03..d684db047b 100644 --- a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/meta.json +++ b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-4.0", - "copyright": "Created by prazat911 (Discord)", + "copyright": "Created by prazat911 (Discord) resprite by jaraten", "states": [ { "name": "lumishroom", diff --git a/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png b/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png index 317c759725..f673bcc730 100644 Binary files a/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png and b/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base1.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base1.png index 308076c7ae..c40d2c5dd7 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base1.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base1.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base2.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base2.png index 75eb4c47ea..0f6c5a7d6c 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base2.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base2.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base3.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base3.png index f505e86472..5661c8211c 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base3.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base3.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base4.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base4.png index 2972130d81..30497114c3 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base4.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base4.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base5.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base5.png index 249a61f646..23eeb73a52 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base5.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base5.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/meta.json b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/meta.json index d74af1377e..5e14108ff1 100644 --- a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-4.0", - "copyright": "Created by TheShuEd (Github)", + "copyright": "Created by TheShuEd (Github), resprite by jaraten", "states": [ { "name": "base1" diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/meta.json b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/meta.json index 2239e3ce26..0103caf9e3 100644 --- a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/meta.json @@ -22,6 +22,9 @@ { "name": "icon" }, + { + "name": "preview" + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/preview.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/preview.png new file mode 100644 index 0000000000..b51cba529e Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/preview.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT1.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT1.png new file mode 100644 index 0000000000..ed5a92db6d Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT1.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT2.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT2.png new file mode 100644 index 0000000000..5eb7b68b61 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT2.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-NECK.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-NECK.png new file mode 100644 index 0000000000..aa515db0d5 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/icon.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/icon.png new file mode 100644 index 0000000000..bd25ad4a35 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-left.png new file mode 100644 index 0000000000..7fdf1b11ca Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-left.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-right.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-right.png new file mode 100644 index 0000000000..3c55843bd1 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-right.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/meta.json b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/meta.json new file mode 100644 index 0000000000..8a6dedae1a --- /dev/null +++ b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/meta.json @@ -0,0 +1,45 @@ +{ + "version": 1, + "size": { + "x": 48, + "y": 48 + }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by iwordoloni (Discord) ", + "states": [ + { + "name": "equipped-BELT1", + "directions": 4 + }, + { + "name": "equipped-BELT2", + "directions": 4 + }, + { + "name": "equipped-NECK", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "preview" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/preview.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/preview.png new file mode 100644 index 0000000000..ada7e2858d Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/preview.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-left.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-left.png new file mode 100644 index 0000000000..15f6491603 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-left.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-right.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-right.png new file mode 100644 index 0000000000..730b1e8bc2 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-right.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/meta.json b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/meta.json index 2239e3ce26..0103caf9e3 100644 --- a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/meta.json @@ -22,6 +22,9 @@ { "name": "icon" }, + { + "name": "preview" + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/preview.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/preview.png new file mode 100644 index 0000000000..1c2d968844 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/preview.png differ diff --git a/Resources/Textures/_CP14/Objects/Storage/sack.rsi/meta.json b/Resources/Textures/_CP14/Objects/Storage/sack.rsi/meta.json index c57e82414c..c807edc953 100644 --- a/Resources/Textures/_CP14/Objects/Storage/sack.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/Storage/sack.rsi/meta.json @@ -1,14 +1,17 @@ { "version": 1, "license": "All right reserved", - "copyright": "Created by Artista", + "copyright": "Created by Artista. Seed sack By Ell_Good", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "icon" + "name": "icon" + }, + { + "name": "seed" } ] } diff --git a/Resources/Textures/_CP14/Objects/Storage/sack.rsi/seed.png b/Resources/Textures/_CP14/Objects/Storage/sack.rsi/seed.png new file mode 100644 index 0000000000..ebbb5485b1 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Storage/sack.rsi/seed.png differ diff --git a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/furnace.png b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/furnace.png deleted file mode 100644 index c05d9e84fe..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/furnace.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/meta.json b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/meta.json index c615c6282e..26e2b611df 100644 --- a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/meta.json +++ b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "All right reserved", - "copyright": "Created by jaraten(discord) , modified by vladimir.s. Cooking table by Max Gab", + "copyright": "Created by jaraten(discord), modified by vladimir.s. Cooking table by Max Gab, research_table by TheShuEd(github)", "size": { "x": 48, "y": 48 @@ -20,7 +20,7 @@ "name": "sewing_table" }, { - "name": "furnace" + "name": "research_table" } ] } diff --git a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/research_table.png b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/research_table.png new file mode 100644 index 0000000000..3f7725e01f Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/research_table.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/full.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/full.png new file mode 100644 index 0000000000..bca921a949 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/full.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/meta.json b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/meta.json new file mode 100644 index 0000000000..be52cde95e --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/meta.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "By jaraten(discord)", + "size": { + "x": 32, + "y": 64 + }, + "states": [ + { + "name": "full" + }, + { + "name": "window0", + "directions": 4 + }, + { + "name": "window1", + "directions": 4 + }, + { + "name": "window2", + "directions": 4 + }, + { + "name": "window3", + "directions": 4 + }, + { + "name": "window4", + "directions": 4 + }, + { + "name": "window5", + "directions": 4 + }, + { + "name": "window6", + "directions": 4 + }, + { + "name": "window7", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window0.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window0.png new file mode 100644 index 0000000000..8efb55243c Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window0.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window1.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window1.png new file mode 100644 index 0000000000..52f3877b4d Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window1.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window2.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window2.png new file mode 100644 index 0000000000..8608c39b26 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window2.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window3.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window3.png new file mode 100644 index 0000000000..3e769de8ed Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window3.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window4.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window4.png new file mode 100644 index 0000000000..ad62b934a8 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window4.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window5.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window5.png new file mode 100644 index 0000000000..da91032f84 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window5.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window6.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window6.png new file mode 100644 index 0000000000..b8abd2ff63 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window6.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window7.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window7.png new file mode 100644 index 0000000000..4611cb315c Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_broken.rsi/window7.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/full.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/full.png new file mode 100644 index 0000000000..2b8f7f1bd0 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/full.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/meta.json b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/meta.json new file mode 100644 index 0000000000..be52cde95e --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/meta.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "By jaraten(discord)", + "size": { + "x": 32, + "y": 64 + }, + "states": [ + { + "name": "full" + }, + { + "name": "window0", + "directions": 4 + }, + { + "name": "window1", + "directions": 4 + }, + { + "name": "window2", + "directions": 4 + }, + { + "name": "window3", + "directions": 4 + }, + { + "name": "window4", + "directions": 4 + }, + { + "name": "window5", + "directions": 4 + }, + { + "name": "window6", + "directions": 4 + }, + { + "name": "window7", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window0.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window0.png new file mode 100644 index 0000000000..f2741b90ce Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window0.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window1.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window1.png new file mode 100644 index 0000000000..a800106378 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window1.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window2.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window2.png new file mode 100644 index 0000000000..f2741b90ce Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window2.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window3.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window3.png new file mode 100644 index 0000000000..b1b21eaf17 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window3.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window4.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window4.png new file mode 100644 index 0000000000..596b6c32d8 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window4.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window5.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window5.png new file mode 100644 index 0000000000..643e181402 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window5.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window6.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window6.png new file mode 100644 index 0000000000..190df928bc Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window6.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window7.png b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window7.png new file mode 100644 index 0000000000..8640d3f304 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/marble_bricks_window_frame.rsi/window7.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/full.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/full.png new file mode 100644 index 0000000000..1222cf93a8 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/full.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/meta.json b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/meta.json new file mode 100644 index 0000000000..be52cde95e --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/meta.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "By jaraten(discord)", + "size": { + "x": 32, + "y": 64 + }, + "states": [ + { + "name": "full" + }, + { + "name": "window0", + "directions": 4 + }, + { + "name": "window1", + "directions": 4 + }, + { + "name": "window2", + "directions": 4 + }, + { + "name": "window3", + "directions": 4 + }, + { + "name": "window4", + "directions": 4 + }, + { + "name": "window5", + "directions": 4 + }, + { + "name": "window6", + "directions": 4 + }, + { + "name": "window7", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window0.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window0.png new file mode 100644 index 0000000000..524909ade2 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window0.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window1.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window1.png new file mode 100644 index 0000000000..1b423008f0 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window1.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window2.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window2.png new file mode 100644 index 0000000000..382af87726 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window2.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window3.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window3.png new file mode 100644 index 0000000000..5506cc86ff Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window3.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window4.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window4.png new file mode 100644 index 0000000000..9f74fc1efd Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window4.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window5.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window5.png new file mode 100644 index 0000000000..492ae56122 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window5.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window6.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window6.png new file mode 100644 index 0000000000..5278932a7c Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window6.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window7.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window7.png new file mode 100644 index 0000000000..4611cb315c Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_broken.rsi/window7.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/full.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/full.png new file mode 100644 index 0000000000..664908c4f8 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/full.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/meta.json b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/meta.json new file mode 100644 index 0000000000..be52cde95e --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/meta.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "By jaraten(discord)", + "size": { + "x": 32, + "y": 64 + }, + "states": [ + { + "name": "full" + }, + { + "name": "window0", + "directions": 4 + }, + { + "name": "window1", + "directions": 4 + }, + { + "name": "window2", + "directions": 4 + }, + { + "name": "window3", + "directions": 4 + }, + { + "name": "window4", + "directions": 4 + }, + { + "name": "window5", + "directions": 4 + }, + { + "name": "window6", + "directions": 4 + }, + { + "name": "window7", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window0.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window0.png new file mode 100644 index 0000000000..f884b2f167 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window0.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window1.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window1.png new file mode 100644 index 0000000000..e26342f054 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window1.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window2.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window2.png new file mode 100644 index 0000000000..f884b2f167 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window2.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window3.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window3.png new file mode 100644 index 0000000000..217f05e1bf Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window3.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window4.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window4.png new file mode 100644 index 0000000000..e67a769378 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window4.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window5.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window5.png new file mode 100644 index 0000000000..a42ac19bb9 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window5.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window6.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window6.png new file mode 100644 index 0000000000..0e1eb039b2 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window6.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window7.png b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window7.png new file mode 100644 index 0000000000..8640d3f304 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/stone_bricks_window_frame.rsi/window7.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/full.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/full.png new file mode 100644 index 0000000000..1b013fe3f2 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/full.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/meta.json b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/meta.json new file mode 100644 index 0000000000..ea35331224 --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/meta.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "By TheShuEd(github)", + "size": { + "x": 32, + "y": 64 + }, + "states": [ + { + "name": "full" + }, + { + "name": "window0", + "directions": 4 + }, + { + "name": "window1", + "directions": 4 + }, + { + "name": "window2", + "directions": 4 + }, + { + "name": "window3", + "directions": 4 + }, + { + "name": "window4", + "directions": 4 + }, + { + "name": "window5", + "directions": 4 + }, + { + "name": "window6", + "directions": 4 + }, + { + "name": "window7", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window0.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window0.png new file mode 100644 index 0000000000..725db5abc8 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window0.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window1.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window1.png new file mode 100644 index 0000000000..7154af6fa1 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window1.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window2.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window2.png new file mode 100644 index 0000000000..f96882cf43 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window2.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window3.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window3.png new file mode 100644 index 0000000000..e714b27c89 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window3.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window4.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window4.png new file mode 100644 index 0000000000..637af25976 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window4.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window5.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window5.png new file mode 100644 index 0000000000..155a654609 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window5.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window6.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window6.png new file mode 100644 index 0000000000..6236300f48 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window6.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window7.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window7.png new file mode 100644 index 0000000000..4611cb315c Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_broken.rsi/window7.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/full.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/full.png new file mode 100644 index 0000000000..ebd66f2c87 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/full.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/meta.json b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/meta.json new file mode 100644 index 0000000000..ea35331224 --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/meta.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "By TheShuEd(github)", + "size": { + "x": 32, + "y": 64 + }, + "states": [ + { + "name": "full" + }, + { + "name": "window0", + "directions": 4 + }, + { + "name": "window1", + "directions": 4 + }, + { + "name": "window2", + "directions": 4 + }, + { + "name": "window3", + "directions": 4 + }, + { + "name": "window4", + "directions": 4 + }, + { + "name": "window5", + "directions": 4 + }, + { + "name": "window6", + "directions": 4 + }, + { + "name": "window7", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window0.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window0.png new file mode 100644 index 0000000000..f71f60dd6e Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window0.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window1.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window1.png new file mode 100644 index 0000000000..ac30e99239 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window1.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window2.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window2.png new file mode 100644 index 0000000000..f71f60dd6e Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window2.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window3.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window3.png new file mode 100644 index 0000000000..037f45c7c2 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window3.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window4.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window4.png new file mode 100644 index 0000000000..c8d9bf0e4f Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window4.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window5.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window5.png new file mode 100644 index 0000000000..86962d9e5b Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window5.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window6.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window6.png new file mode 100644 index 0000000000..6fd45ee0dd Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window6.png differ diff --git a/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window7.png b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window7.png new file mode 100644 index 0000000000..8640d3f304 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Windows/wooden_window_frame.rsi/window7.png differ diff --git a/Resources/migration.yml b/Resources/migration.yml index 3dff16b243..17c7b8ee78 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -264,7 +264,7 @@ CP14FenceWoodSmallCorner: CP14FenceWooden CP14FenceWoodSmallGate: CP14FenceGateWooden CP14FenceIronGrilleStraight: CP14FenceBigIron CP14FenceIronGrilleGate: CP14FenceGateBigIron -CP14FenceIronGrilleGateGuard: CP14FenceGateBigIronGuard +CP14FenceIronGrilleGateGuard: CP14FenceGateBigIronGuardBarracks CP14FenceIronGrilleGateGuildmaster: CP14FenceGateBigIronGuildmaster CP14FenceIronGrilleGateDemiplaneCrystal: CP14FenceGateBigIronDemiplaneCrystal CP14FenceIronGrilleWindowStraight: CP14FenceWindowIron @@ -316,6 +316,18 @@ CP14EnergyCrystalSmall: CP14EnergyCrystalMedium CP14DemiplaneKeyT1: null CP14DemiplaneKeyT2: null +#2025-20-05 +CP14KeyGuardEntrance: CP14KeyGuardBarracks +CP14KeyGuard: CP14KeyGuardBarracks +CP14KeyGuardWeaponStorage: null +CP14IronDoorGuard: CP14IronDoorGuardBarracks +CP14IronDoorGuardWeaponStorage: null +CP14IronDoorWindowedGuardEntrance: CP14IronDoorGuardBarracks +CP14IronDoorWindowedMirroredGuardEntrance: CP14IronDoorGuardBarracks +CP14FenceGateBigIronGuard: CP14FenceGateBigIronGuardBarracks + + + # <---> CrystallEdge migration zone end diff --git a/Tools/_CP14/LocalizationHelper/LocalizationHelper/entity.py b/Tools/_CP14/LocalizationHelper/LocalizationHelper/entity.py index 776ccd3430..fbd5af520b 100644 --- a/Tools/_CP14/LocalizationHelper/LocalizationHelper/entity.py +++ b/Tools/_CP14/LocalizationHelper/LocalizationHelper/entity.py @@ -63,6 +63,9 @@ class Entity: return self._attrs_dict def set_attrs_dict_value(self, key, value): + ''' + Set attributes for entity object with given key (for set with cycle) + ''' self._attrs_dict[key] = value if key == "name": self._name = value @@ -80,6 +83,9 @@ class Entity: def check_prototype_attrs(prototype: Entity, without_parent_check: bool = False) -> bool: + """ + Checks if the prototype has any of the attributes: name, desc, suff, parent + """ if prototype.name: return True elif prototype.description: diff --git a/Tools/_CP14/LocalizationHelper/LocalizationHelper/localization_helper.py b/Tools/_CP14/LocalizationHelper/LocalizationHelper/localization_helper.py index 1b71cb211d..447d824fdc 100644 --- a/Tools/_CP14/LocalizationHelper/LocalizationHelper/localization_helper.py +++ b/Tools/_CP14/LocalizationHelper/LocalizationHelper/localization_helper.py @@ -17,6 +17,9 @@ class LocalizationHelper: @staticmethod def _save_to_json(path: str, data: dict): + """ + Saves data to a JSON file + """ os.makedirs(os.path.dirname(path), exist_ok=True) try: logger.debug("%s: %s", LogText.SAVING_DATA_TO_FILE, path) @@ -27,6 +30,9 @@ class LocalizationHelper: @staticmethod def _read_from_json(path: str) -> dict: + """ + Reads data from a JSON file + """ if os.path.exists(path): try: logger.debug("%s: %s", LogText.READING_DATA_FROM_FILE, path) @@ -37,6 +43,9 @@ class LocalizationHelper: return {} def _save_yaml_parser_last_launch_result(self, last_launch_result: dict[str, Entity]): + """ + Updates all prototypes and their attributes at last launch JSON file + """ logger.debug("%s %s", LogText.SAVING_LAST_LAUNCH_RESULT, YAML_PARSER_LAST_LAUNCH_RESULT_PATH) prototypes_dict = {} @@ -46,6 +55,9 @@ class LocalizationHelper: self._save_to_json(YAML_PARSER_LAST_LAUNCH_RESULT_PATH, prototypes_dict) def _read_prototypes_from_last_launch_result(self) -> dict[str, Entity] | None: + """ + Reads all prototypes from the last launch JSON file + """ if os.path.isfile(YAML_PARSER_LAST_LAUNCH_RESULT_PATH): last_launch_result = self._read_from_json(YAML_PARSER_LAST_LAUNCH_RESULT_PATH) last_launch_result_dict = {} @@ -58,6 +70,10 @@ class LocalizationHelper: @staticmethod def _update_prototype_if_attrs_has_been_changed(yaml_prototype_obj: Entity, last_launch_prototype_obj: Entity, final_prototype_obj: Entity): + """ + Updates the prototype if their attributes have changed + Compares the YAML prototype with the FTL and overwrites if there have been changes + """ if yaml_prototype_obj.attrs_dict != last_launch_prototype_obj.attrs_dict: log_text = f"Has been updated from: {final_prototype_obj.attrs_dict}, to: " @@ -72,7 +88,9 @@ class LocalizationHelper: def _merge_yaml_parser_prototypes_and_ftl_parser_prototypes(self, yaml_parser_prototypes: dict[str, Entity], ftl_parser_prototypes: dict[str, Entity]) -> dict[str, Entity]: - + """ + Combines YAML and FTL prototypes with persistence of changes + """ general_prototypes_dict = {} last_launch_result = self._read_prototypes_from_last_launch_result() @@ -81,6 +99,8 @@ class LocalizationHelper: if prototype_id in ftl_parser_prototypes: final_prototype_obj = ftl_parser_prototypes[prototype_id] + final_prototype_obj.parent = yaml_prototype_obj.parent + if last_launch_result and prototype_id in last_launch_result: last_launch_prototype_obj = last_launch_result[prototype_id] final_prototype_obj = self._update_prototype_if_attrs_has_been_changed(yaml_prototype_obj, @@ -90,50 +110,81 @@ class LocalizationHelper: return general_prototypes_dict @staticmethod - def _set_parent_attrs(prototype_parent_id: str, prototype_obj: Entity, parent_prototype_obj: Entity): + def _add_parent_attrs(prototype_parent_id: str, prototype_obj: Entity, parent_prototype_obj: Entity): + """ + Adds parent's attributes to the entity + """ for attr_name, attr_value in prototype_obj.attrs_dict.items(): if attr_value or attr_name in ("parent", "id"): continue parent_prototype_attr_value = parent_prototype_obj.attrs_dict.get(attr_name) if parent_prototype_attr_value: - if attr_name == "name": + if attr_name == "name" and not prototype_obj.name: prototype_obj.name = f"{{ ent-{prototype_parent_id} }}" - elif attr_name == "description": + elif attr_name == "description" and not prototype_obj.description: prototype_obj.description = f"{{ ent-{prototype_parent_id}.desc }}" - elif attr_name == "suffix": + elif attr_name == "suffix" and not prototype_obj.suffix: prototype_obj.suffix = parent_prototype_attr_value return prototype_obj + def _add_all_parents_attributes(self, general_prototypes_dict: dict[str, Entity], prototype_id: str, main_prototype_obj: Entity = None): + ''' + Recursively finds all object parents and adds to his attributes parents attributes + ''' + prototype_obj = general_prototypes_dict.get(prototype_id) + + if prototype_obj is None: # TODO for asqw: moment when we find wizden parent. We must parse them + return + + if not main_prototype_obj: + main_prototype_obj = prototype_obj + + if main_prototype_obj != prototype_obj and check_prototype_attrs(prototype_obj): + for _ in prototype_obj.attrs_dict.items(): + self._add_parent_attrs(prototype_id, main_prototype_obj, prototype_obj) # TODO for asqw: it is adds from one prototype to another prototype, naming work + + if main_prototype_obj.name and main_prototype_obj.description and main_prototype_obj.suffix: + return + + if prototype_obj.parent: + prototype_parent_id_list = [] + + if isinstance(prototype_obj.parent, list): # Makes id list list if it is not list (TODO for asqw: it must be list at parent writing) + prototype_parent_id_list.extend(prototype_obj.parent) + else: + prototype_parent_id_list.append(prototype_obj.parent) + + for prototype_parent_id in prototype_parent_id_list: + self._add_all_parents_attributes(general_prototypes_dict, prototype_parent_id, main_prototype_obj) + else: + return + def _parent_checks(self, general_prototypes_dict: dict[str, Entity]): + """ + Adds parent's attributes at all entities in general prototypes dictionary and returns new copy + """ to_delete = [] for prototype_id, prototype_obj in general_prototypes_dict.items(): - prototype_parent_id = prototype_obj.parent - if not isinstance(prototype_parent_id, list): - - parent_prototype_obj = general_prototypes_dict.get(prototype_parent_id) - - if parent_prototype_obj and check_prototype_attrs(parent_prototype_obj, True): - self._set_parent_attrs(prototype_parent_id, prototype_obj, parent_prototype_obj) - else: - if not check_prototype_attrs(prototype_obj, True): - to_delete.append(prototype_id) + if check_prototype_attrs(prototype_obj): + self._add_all_parents_attributes(general_prototypes_dict, prototype_id) else: - if not prototype_obj.name: - prototype_obj.name = f"CONFLICT{{ ent-{prototype_parent_id} }}" - if not prototype_obj.description: - prototype_obj.description = f"CONFLICT{{ ent-{prototype_parent_id}.desc }}" + to_delete.append(prototype_id) for prototype_id in to_delete: logger.debug("%s %s: %s", prototype_id, LogText.HAS_BEEN_DELETED, general_prototypes_dict[prototype_id]) - del general_prototypes_dict[prototype_id] + del general_prototypes_dict[prototype_id] # Deletes prototype if ID wasn't found return general_prototypes_dict def _create_general_prototypes_dict(self, yaml_parser_prototypes: dict[str, Entity], ftl_parser_prototypes: dict[str, Entity]) -> dict[str, Entity]: - + """ + Creates a prototype dictionary by combining YAML and FTL + Preserves YAML parsing data + Replaces prototype attributes with their parent attributes + """ general_prototypes_dict = self._merge_yaml_parser_prototypes_and_ftl_parser_prototypes(yaml_parser_prototypes, ftl_parser_prototypes) @@ -143,12 +194,18 @@ class LocalizationHelper: @staticmethod def _create_result_ftl(general_prototypes_dict: dict[str, Entity]) -> str: + """ + Creates string for FTL writing + """ result = "" for prototype_obj in general_prototypes_dict.values(): result += create_ftl(prototype_obj) return result def _save_result(self, general_prototypes_dict: dict[str, Entity]): + """ + Saves prototypes to an FTL file + """ logger.debug("%s: %s", LogText.SAVING_FINAL_RESULT, SAVE_RESULT_TO) result = self._create_result_ftl(general_prototypes_dict) try: diff --git a/Tools/_CP14/LocalizationHelper/LocalizationHelper/parsers/fluent/ftl_reader.py b/Tools/_CP14/LocalizationHelper/LocalizationHelper/parsers/fluent/ftl_reader.py index be53a1b8c8..43a48f59fb 100644 --- a/Tools/_CP14/LocalizationHelper/LocalizationHelper/parsers/fluent/ftl_reader.py +++ b/Tools/_CP14/LocalizationHelper/LocalizationHelper/parsers/fluent/ftl_reader.py @@ -12,10 +12,10 @@ def read_ftl(path: str) -> dict: logger.debug("%s: %s", LogText.READING_DATA_FROM_FILE, path) with open(path, encoding="utf-8") as file: for line in file.readlines(): - if line.startswith("#") or line.startswith("\n") or line.startswith(" \n"): + if line.strip().startswith("#") or line.strip() == '': continue - if not line.startswith(" "): + if not line.startswith(" "): proto_id, proto_name = line.split(" = ") proto_id = proto_id.replace("ent-", "") last_prototype = proto_id diff --git a/Tools/_CP14/LocalizationHelper/LocalizationHelper/prototype.py b/Tools/_CP14/LocalizationHelper/LocalizationHelper/prototype.py deleted file mode 100644 index 82ce9660b4..0000000000 --- a/Tools/_CP14/LocalizationHelper/LocalizationHelper/prototype.py +++ /dev/null @@ -1,99 +0,0 @@ -class Prototype: - def __init__(self, prototype: dict): - self._name = prototype.get("name") - self._description = prototype.get("description") - self._parent = prototype.get("parent") - self._id = prototype.get("id") - self._suffix = prototype.get("suffix") - self._attrs_dict = { - "id": self._id, - "name": self._name, - "description": self._description, - "parent": self._parent, - "suffix": self._suffix - } - - @property - def name(self): - return self._name - - @name.setter - def name(self, new_name: str): - self._name = new_name - self._attrs_dict["name"] = new_name - - @property - def description(self): - return self._description - - @description.setter - def description(self, new_description: str): - self._description = new_description - self._attrs_dict["description"] = new_description - - @property - def parent(self): - return self._parent - - @parent.setter - def parent(self, new_parent: str): - self._parent = new_parent - self._attrs_dict["parent"] = new_parent - - @property - def id(self): - return self._id - - @id.setter - def id(self, new_id: str): - self._id = new_id - self._attrs_dict["id"] = new_id - - @property - def suffix(self): - return self._suffix - - @suffix.setter - def suffix(self, new_suffix: str): - self._suffix = new_suffix - self._attrs_dict["suffix"] = new_suffix - - @property - def attrs_dict(self): - return self._attrs_dict - - def set_attrs_dict_value(self, key, value): - self._attrs_dict[key] = value - if key == "name": - self._name = value - elif key == "description": - self._description = value - elif key == "id": - self._id = value - elif key == "parent": - self._parent = value - elif key == "suffix": - self._suffix = value - - def __repr__(self): - return str(self._attrs_dict) - - -def check_prototype_attrs(prototype: Prototype, with_parent_check: bool = True) -> bool: - - if prototype.name: - # if prototype.id == "CP14BaseWooden": - # print(prototype.name) - return True - elif prototype.description: - # if prototype.id == "CP14BaseWooden": - # print(prototype.description) - return True - elif prototype.suffix: - return True - # In some cases a parent can be a list (because of multiple parents), - # the game will not be able to handle such cases in ftl files. - elif with_parent_check and prototype.parent and not isinstance(prototype.parent, list): - return True - - return False diff --git a/Tools/_CP14/LocalizationHelper/last_launch_result/result.json b/Tools/_CP14/LocalizationHelper/last_launch_result/result.json index fb79d8c824..32d1f439d3 100644 --- a/Tools/_CP14/LocalizationHelper/last_launch_result/result.json +++ b/Tools/_CP14/LocalizationHelper/last_launch_result/result.json @@ -342,6 +342,34 @@ "parent": "CP14BaseSpellScroll", "suffix": null }, + "CP14ActionSpellCureFromDeath": { + "id": "CP14ActionSpellCureFromDeath", + "name": "Cure from death", + "description": "You heal the target from all kinds of damage.", + "parent": null, + "suffix": null + }, + "CP14ActionSpellHealFromDeathBallade": { + "id": "CP14ActionSpellHealFromDeathBallade", + "name": "Healing from death ballade", + "description": "Your music is filled with healing magic, fast healing all the creatures around you.", + "parent": null, + "suffix": null + }, + "CP14ImpactEffectDeadHealBallade": { + "id": "CP14ImpactEffectDeadHealBallade", + "name": null, + "description": null, + "parent": "CP14BaseMagicImpact", + "suffix": null + }, + "CP14RuneDeadHealBallade": { + "id": "CP14RuneDeadHealBallade", + "name": null, + "description": null, + "parent": "CP14BaseMagicRune", + "suffix": null + }, "CP14ActionSpellResurrection": { "id": "CP14ActionSpellResurrection", "name": "Resurrection", @@ -433,6 +461,13 @@ "parent": "CP14BaseSpellScrollDimension", "suffix": null }, + "CP14ActionSpellShadowSwap": { + "id": "CP14ActionSpellShadowSwap", + "name": "Shadow swap", + "description": "A warp of space between two living beings", + "parent": null, + "suffix": null + }, "CP14ActionSpellShadowStep": { "id": "CP14ActionSpellShadowStep", "name": "Shadow step", @@ -1007,6 +1042,55 @@ "parent": "CP14SignalLightBase", "suffix": "Blue" }, + "CP14ActionSpellLurkerFear": { + "id": "CP14ActionSpellLurkerFear", + "name": "Primal terror", + "description": "You plunge the target into primal terror, robbing them of the ability to fight and speak.", + "parent": null, + "suffix": null + }, + "CP14ImpactEffectLurkerFear": { + "id": "CP14ImpactEffectLurkerFear", + "name": null, + "description": null, + "parent": "CP14BaseMagicImpact", + "suffix": null + }, + "CP14RuneLurkerFear": { + "id": "CP14RuneLurkerFear", + "name": null, + "description": null, + "parent": "CP14BaseMagicRune", + "suffix": null + }, + "CP14RuneLurkerFearImpact": { + "id": "CP14RuneLurkerFearImpact", + "name": null, + "description": null, + "parent": "CP14BaseMagicImpact", + "suffix": null + }, + "CP14ActionSpellLurkerKick": { + "id": "CP14ActionSpellLurkerKick", + "name": "Crushing attack", + "description": "You prepare a powerful melee strike that will knock your target back with force and stun them for a long time.", + "parent": null, + "suffix": null + }, + "CP14ActionSpellLurkerStep": { + "id": "CP14ActionSpellLurkerStep", + "name": "Shadow step", + "description": "A step through the gash of reality that allows you to cover a small of distance quickly.", + "parent": null, + "suffix": null + }, + "CP14ImpactEffectLurkerStep": { + "id": "CP14ImpactEffectLurkerStep", + "name": null, + "description": null, + "parent": "CP14BaseMagicImpact", + "suffix": null + }, "CP14ActionSpellMagicBallade": { "id": "CP14ActionSpellMagicBallade", "name": "Magic ballade", @@ -1133,6 +1217,13 @@ "parent": "CP14DustEffect", "suffix": null }, + "CP14ActionSpellKickSkeleton": { + "id": "CP14ActionSpellKickSkeleton", + "name": "Kick", + "description": "You perform an epic leg kick at your chosen object, pushing it away from you.", + "parent": "CP14ActionSpellKick", + "suffix": null + }, "CP14ActionSpellSprint": { "id": "CP14ActionSpellSprint", "name": "Sprint", @@ -1147,6 +1238,13 @@ "parent": "CP14ActionSpellSprint", "suffix": null }, + "CP14ActionSpellSprintSkeleton": { + "id": "CP14ActionSpellSprintSkeleton", + "name": "Sprint", + "description": "At the cost of heavy stamina expenditure, you accelerate significantly in movement.", + "parent": "CP14ActionSpellSprint", + "suffix": null + }, "CP14ActionVampireBite": { "id": "CP14ActionVampireBite", "name": "Vampire bite", @@ -1290,7 +1388,7 @@ "CP14IceDagger": { "id": "CP14IceDagger", "name": "ice dagger", - "description": "A sharp ice arrow created with magic. It melts and will soon disappear, but you can shoot it once with your bow.", + "description": "A sharp ice dagger, not very durable but can temporarily replace real weapons.", "parent": "BaseItem", "suffix": null }, @@ -1637,6 +1735,20 @@ "parent": "Clothing", "suffix": null }, + "CP14ClothingCloakBone": { + "id": "CP14ClothingCloakBone", + "name": "bone cloak", + "description": "a brutal cloak for brutal skeletons.", + "parent": "CP14ClothingCloakBase", + "suffix": null + }, + "CP14ClothingCloakBoneMage": { + "id": "CP14ClothingCloakBoneMage", + "name": "bone armor with cloak", + "description": "The leader's cloak, for the leader's skeleton!", + "parent": "CP14ClothingCloakBone", + "suffix": null + }, "CP14ClothingCloakFurcapeBlack": { "id": "CP14ClothingCloakFurcapeBlack", "name": "furcape", @@ -1686,6 +1798,13 @@ "parent": "CP14ClothingCloakBase", "suffix": null }, + "CP14ClothingCloakBrownFurCoat": { + "id": "CP14ClothingCloakBrownFurCoat", + "name": "brown fur coat", + "description": "Warm in the rain, warm in the snow, warm in the wind. Nice.", + "parent": "CP14ClothingCloakBase", + "suffix": null + }, "CP14ClothingCloakInsulated": { "id": "CP14ClothingCloakInsulated", "name": "insulated mantle", @@ -1693,6 +1812,55 @@ "parent": "CP14ClothingCloakBase", "suffix": null }, + "CP14ClothingCloakBlackSyurko": { + "id": "CP14ClothingCloakBlackSyurko", + "name": "black surcoats", + "description": "A long and roomy cloak that serves to protect your armour.", + "parent": "CP14ClothingCloakBase", + "suffix": null + }, + "CP14ClothingCloakRedSyurko": { + "id": "CP14ClothingCloakRedSyurko", + "name": "red surcoats", + "description": "A long and roomy cloak that serves to protect your armour.", + "parent": "CP14ClothingCloakBase", + "suffix": null + }, + "CP14ClothingCloakBlueSyurko": { + "id": "CP14ClothingCloakBlueSyurko", + "name": "blue surcoats", + "description": "A long and roomy cloak that serves to protect your armour.", + "parent": "CP14ClothingCloakBase", + "suffix": null + }, + "CP14ClothingCloakGreenSyurko": { + "id": "CP14ClothingCloakGreenSyurko", + "name": "green surcoats", + "description": "A long and roomy cloak that serves to protect your armour.", + "parent": "CP14ClothingCloakBase", + "suffix": null + }, + "CP14ClothingCloakWhiteSyurko": { + "id": "CP14ClothingCloakWhiteSyurko", + "name": "white surcoats", + "description": "A long and roomy cloak that serves to protect your armour.", + "parent": "CP14ClothingCloakBase", + "suffix": null + }, + "CP14ClothingCloakYellowSyurko": { + "id": "CP14ClothingCloakYellowSyurko", + "name": "yellow surcoats", + "description": "A long and roomy cloak that serves to protect your armour.", + "parent": "CP14ClothingCloakBase", + "suffix": null + }, + "CP14ClothingCloakAristocraticCloak": { + "id": "CP14ClothingCloakAristocraticCloak", + "name": "aristocratic cloak", + "description": "Aristocratic red coat with fur collar, very expensive, very cool, a little uncomfortable.", + "parent": "CP14ClothingCloakBase", + "suffix": null + }, "CP14ClothingCloakGuardBase": { "id": "CP14ClothingCloakGuardBase", "name": "guard's cloak", @@ -1707,6 +1875,13 @@ "parent": "CP14ClothingCloakGuardBase", "suffix": null }, + "CP14ClothingCloakGuardSyurko": { + "id": "CP14ClothingCloakGuardSyurko", + "name": "guard surcoats", + "description": "A long and roomy cloak that serves to protect your armour.", + "parent": "CP14ClothingCloakGuardBase", + "suffix": null + }, "CP14ClothingCloakGuardCommander": { "id": "CP14ClothingCloakGuardCommander", "name": "armored cloak of a guard commander", @@ -1791,13 +1966,195 @@ "parent": "Clothing", "suffix": null }, - "CP14ClothingHeadCapellina": { - "id": "CP14ClothingHeadCapellina", - "name": "capellina", - "description": "Protects against large object strikes to the head.", + "CP14ModularAventailBase": { + "id": "CP14ModularAventailBase", + "name": null, + "description": null, + "parent": "BaseItem", + "suffix": null + }, + "CP14ModularAventailIronChainmail": { + "id": "CP14ModularAventailIronChainmail", + "name": "iron aventail chainmail", + "description": "A aventail of chainmail to protect the neck from blows and piercing at vital points.", + "parent": "CP14ModularAventailBase", + "suffix": null + }, + "CP14ModularAventailGoldChainmail": { + "id": "CP14ModularAventailGoldChainmail", + "name": "golden aventail chainmail", + "description": "A aventail of chainmail to protect the neck from blows and piercing at vital points.", + "parent": "CP14ModularAventailBase", + "suffix": null + }, + "CP14ModularAventailCopperChainmail": { + "id": "CP14ModularAventailCopperChainmail", + "name": "copper aventail chainmail", + "description": "A aventail of chainmail to protect the neck from blows and piercing at vital points.", + "parent": "CP14ModularAventailBase", + "suffix": null + }, + "CP14ModularAventailMithrilChainmail": { + "id": "CP14ModularAventailMithrilChainmail", + "name": "mithril aventail chainmail", + "description": "A aventail of chainmail to protect the neck from blows and piercing at vital points.", + "parent": "CP14ModularAventailBase", + "suffix": null + }, + "CP14ModularAventailIronPlate": { + "id": "CP14ModularAventailIronPlate", + "name": "iron aventail plate", + "description": "An iron sheet aventail to protect the neck from blows and piercing in vital places. Uncomfortable.", + "parent": "CP14ModularAventailBase", + "suffix": null + }, + "CP14ModularAventailGoldPlate": { + "id": "CP14ModularAventailGoldPlate", + "name": "golden aventail plate", + "description": "An golden sheet aventail to protect the neck from blows and piercing in vital places. Uncomfortable.", + "parent": "CP14ModularAventailBase", + "suffix": null + }, + "CP14ModularAventailCopperPlate": { + "id": "CP14ModularAventailCopperPlate", + "name": "copper aventail plate", + "description": "An copper sheet aventail to protect the neck from blows and piercing in vital places. Uncomfortable.", + "parent": "CP14ModularAventailBase", + "suffix": null + }, + "CP14ModularAventailMithrilPlate": { + "id": "CP14ModularAventailMithrilPlate", + "name": "mithril aventail plate", + "description": "An mithril sheet aventail to protect the neck from blows and piercing in vital places. Uncomfortable.", + "parent": "CP14ModularAventailBase", + "suffix": null + }, + "CP14ModularHeadBase": { + "id": "CP14ModularHeadBase", + "name": null, + "description": null, "parent": "CP14ClothingHeadBase", "suffix": null }, + "CP14HelmetIronCapellina": { + "id": "CP14HelmetIronCapellina", + "name": "iron capellina", + "description": "Protects against large object strikes to the head.", + "parent": "CP14ModularHeadBase", + "suffix": null + }, + "CP14HelmetGoldCapellina": { + "id": "CP14HelmetGoldCapellina", + "name": "golden capellina", + "description": "Protects against large object strikes to the head.", + "parent": "CP14ModularHeadBase", + "suffix": null + }, + "CP14HelmetCopperCapellina": { + "id": "CP14HelmetCopperCapellina", + "name": "copper capellina", + "description": "Protects against large object strikes to the head.", + "parent": "CP14ModularHeadBase", + "suffix": null + }, + "CP14HelmetMithrilCapellina": { + "id": "CP14HelmetMithrilCapellina", + "name": "mithril capellina", + "description": "Protects against large object strikes to the head.", + "parent": "CP14ModularHeadBase", + "suffix": null + }, + "CP14HelmetIronPalmHelmet": { + "id": "CP14HelmetIronPalmHelmet", + "name": "iron palm helmet", + "description": "A tight fitting helmet that protects your head from impact.", + "parent": "CP14ModularHeadBase", + "suffix": null + }, + "CP14HelmetGoldPalmHelmet": { + "id": "CP14HelmetGoldPalmHelmet", + "name": "golden palm helmet", + "description": "A tight fitting helmet that protects your head from impact.", + "parent": "CP14ModularHeadBase", + "suffix": null + }, + "CP14HelmetCopperPalmHelmet": { + "id": "CP14HelmetCopperPalmHelmet", + "name": "copper palm helmet", + "description": "A tight fitting helmet that protects your head from impact.", + "parent": "CP14ModularHeadBase", + "suffix": null + }, + "CP14HelmetMithrilPalmHelmet": { + "id": "CP14HelmetMithrilPalmHelmet", + "name": "mithril palm helmet", + "description": "A tight fitting helmet that protects your head from impact.", + "parent": "CP14ModularHeadBase", + "suffix": null + }, + "CP14ModularVisorBase": { + "id": "CP14ModularVisorBase", + "name": null, + "description": null, + "parent": "BaseItem", + "suffix": null + }, + "CP14ModularVisorIronChainmail": { + "id": "CP14ModularVisorIronChainmail", + "name": "iron visor chainmail", + "description": "A chainmail visor that protects the face from nasty damage and leaves the wearer looking all that beautiful. And the skin breathes.", + "parent": "CP14ModularVisorBase", + "suffix": null + }, + "CP14ModularVisorGoldChainmail": { + "id": "CP14ModularVisorGoldChainmail", + "name": "golden visor chainmail", + "description": "A chainmail visor that protects the face from nasty damage and leaves the wearer looking all that beautiful. And the skin breathes.", + "parent": "CP14ModularVisorBase", + "suffix": null + }, + "CP14ModularVisorCopperChainmail": { + "id": "CP14ModularVisorCopperChainmail", + "name": "copper visor chainmail", + "description": "A chainmail visor that protects the face from nasty damage and leaves the wearer looking all that beautiful. And the skin breathes.", + "parent": "CP14ModularVisorBase", + "suffix": null + }, + "CP14ModularVisorMithrilChainmail": { + "id": "CP14ModularVisorMithrilChainmail", + "name": "mithril visor chainmail", + "description": "A chainmail visor that protects the face from nasty damage and leaves the wearer looking all that beautiful. And the skin breathes.", + "parent": "CP14ModularVisorBase", + "suffix": null + }, + "CP14ModularVisorIronPlate": { + "id": "CP14ModularVisorIronPlate", + "name": "iron visor plate", + "description": "A iron plate visor that protects the face from nasty damage and leaves the wearer looking all that good-looking. Not as comfortable.", + "parent": "CP14ModularVisorBase", + "suffix": null + }, + "CP14ModularVisorGoldPlate": { + "id": "CP14ModularVisorGoldPlate", + "name": "golden visor plate", + "description": "A golden plate visor that protects the face from nasty damage and leaves the wearer looking all that good-looking. Very uncomfortable.", + "parent": "CP14ModularVisorBase", + "suffix": null + }, + "CP14ModularVisorCopperPlate": { + "id": "CP14ModularVisorCopperPlate", + "name": "copper visor plate", + "description": "A copper plate visor that protects the face from nasty damage and leaves the wearer looking all that good-looking. Not as comfortable.", + "parent": "CP14ModularVisorBase", + "suffix": null + }, + "CP14ModularVisorMithrilPlate": { + "id": "CP14ModularVisorMithrilPlate", + "name": "mithril visor plate", + "description": "A mithril plate visor that protects the face from nasty damage and leaves the wearer looking all that good-looking.", + "parent": "CP14ModularVisorBase", + "suffix": null + }, "CP14ClothingHeadBascinet": { "id": "CP14ClothingHeadBascinet", "name": "bascinet", @@ -1868,6 +2225,20 @@ "parent": "CP14ClothingHeadBase", "suffix": null }, + "CP14ClothingHeadGreenHuntersHat": { + "id": "CP14ClothingHeadGreenHuntersHat", + "name": "green hunter's hat", + "description": "A headdress revered by hunters on undead.", + "parent": "CP14ClothingHeadBase", + "suffix": null + }, + "CP14ClothingHeadRedHuntersHat": { + "id": "CP14ClothingHeadRedHuntersHat", + "name": "red hunter's hat", + "description": "A headdress revered by hunters on undead.", + "parent": "CP14ClothingHeadBase", + "suffix": null + }, "CP14ClothingHeadJestersCap": { "id": "CP14ClothingHeadJestersCap", "name": "jester's cap", @@ -1882,6 +2253,13 @@ "parent": "CP14ClothingHeadBase", "suffix": null }, + "CP14ClothingHeadStrawHat": { + "id": "CP14ClothingHeadStrawHat", + "name": "straw hat", + "description": "Easy to make, not too bad to lose.", + "parent": "CP14ClothingHeadBase", + "suffix": null + }, "CP14ClothingHeadGuardBase": { "id": "CP14ClothingHeadGuardBase", "name": null, @@ -1945,6 +2323,20 @@ "parent": "CP14ClothingMaskBase", "suffix": null }, + "CP14ClothingMaskRedNeckerchief": { + "id": "CP14ClothingMaskRedNeckerchief", + "name": "red neckerchief", + "description": "It hides your face to the best of its ability.", + "parent": "CP14ClothingMaskBase", + "suffix": null + }, + "CP14ClothingMaskGreenNeckerchief": { + "id": "CP14ClothingMaskGreenNeckerchief", + "name": "green neckerchief", + "description": "It hides your face to the best of its ability.", + "parent": "CP14ClothingMaskBase", + "suffix": null + }, "CP14ClothingMaskBoneMask": { "id": "CP14ClothingMaskBoneMask", "name": "bone mask", @@ -2001,15 +2393,15 @@ "parent": "CP14ArmorMithrilCuirass", "suffix": null }, - "CP14ArmorIronСhainmailPresets": { - "id": "CP14ArmorIronСhainmailPresets", + "CP14ArmorIronChainmailPresets": { + "id": "CP14ArmorIronChainmailPresets", "name": "full iron chainmail", "description": "Full iron ringed armour, lightweight and has decent protection.", "parent": "CP14ArmorIronChainmail", "suffix": null }, - "CP14ArmorMithrilСhainmailPresets": { - "id": "CP14ArmorMithrilСhainmailPresets", + "CP14ArmorMithrilChainmailPresets": { + "id": "CP14ArmorMithrilChainmailPresets", "name": "full mithril chainmail", "description": "A full mithril armour that may have been slowly and painstakingly assembled by dwarven smiths. A most valuable piece of work.", "parent": "CP14ArmorMithrilChainmail", @@ -2029,6 +2421,13 @@ "parent": "CP14ClothingOuterClothingBase", "suffix": null }, + "CP14ClothingOuterClothingBoneArmorUpgrade": { + "id": "CP14ClothingOuterClothingBoneArmorUpgrade", + "name": "reinforced bone armor", + "description": "Bone armour... not the best or most attractive defence.", + "parent": "CP14ClothingOuterClothingBoneArmor", + "suffix": null + }, "CP14ClothingOuterClothingBase": { "id": "CP14ClothingOuterClothingBase", "name": null, @@ -2344,6 +2743,27 @@ "parent": "CP14ClothingPantsBase", "suffix": null }, + "CP14ClothingJewelleryBase": { + "id": "CP14ClothingJewelleryBase", + "name": null, + "description": null, + "parent": "Clothing", + "suffix": null + }, + "CP14ClothingCloakAmuletGold": { + "id": "CP14ClothingCloakAmuletGold", + "name": "gold amulet", + "description": "A gold amulet, a valuable trinket.", + "parent": "CP14ClothingJewelleryBase", + "suffix": null + }, + "CP14ClothingCloakAmuletMana": { + "id": "CP14ClothingCloakAmuletMana", + "name": "mana amulet", + "description": "A gold amulet with a magical stone inside that helps you conjure more easily.", + "parent": "CP14ClothingJewelleryBase", + "suffix": null + }, "CP14ClothingRingBase": { "id": "CP14ClothingRingBase", "name": null, @@ -2680,6 +3100,20 @@ "parent": "BaseFoam", "suffix": null }, + "CP14SkyLightning": { + "id": "CP14SkyLightning", + "name": "sky lighting", + "description": null, + "parent": null, + "suffix": null + }, + "CP14SkyLightningPurple": { + "id": "CP14SkyLightningPurple", + "name": null, + "description": null, + "parent": "CP14SkyLightning", + "suffix": "Purple" + }, "CP14SnowEffect": { "id": "CP14SnowEffect", "name": null, @@ -2757,13 +3191,6 @@ "parent": "CP14BaseMobGroupSpawner", "suffix": "2-3 Rabbits" }, - "CP14MobGroupSpawnerFrogs": { - "id": "CP14MobGroupSpawnerFrogs", - "name": null, - "description": null, - "parent": "CP14BaseMobGroupSpawner", - "suffix": "2-3 Frogs" - }, "CP14MobGroupSpawnerIceSpectres": { "id": "CP14MobGroupSpawnerIceSpectres", "name": null, @@ -2771,6 +3198,48 @@ "parent": "CP14BaseMobGroupSpawner", "suffix": "1-2 Ice spectres" }, + "CP14MobGroupSpawnerWatcherIce": { + "id": "CP14MobGroupSpawnerWatcherIce", + "name": null, + "description": null, + "parent": "CP14BaseMobGroupSpawner", + "suffix": "2-3 Ice Watchers" + }, + "CP14MobGroupSpawnerWatcherMagma": { + "id": "CP14MobGroupSpawnerWatcherMagma", + "name": null, + "description": null, + "parent": "CP14BaseMobGroupSpawner", + "suffix": "2-3 Magma Watchers" + }, + "CP14MobGroupSpawnerSlimeIce": { + "id": "CP14MobGroupSpawnerSlimeIce", + "name": null, + "description": null, + "parent": "CP14BaseMobGroupSpawner", + "suffix": "2-3 Ice Slimes" + }, + "CP14MobGroupSpawnerSlimeFire": { + "id": "CP14MobGroupSpawnerSlimeFire", + "name": null, + "description": null, + "parent": "CP14BaseMobGroupSpawner", + "suffix": "2-3 Fire Slimes" + }, + "CP14MobGroupSpawnerSlimeElectric": { + "id": "CP14MobGroupSpawnerSlimeElectric", + "name": null, + "description": null, + "parent": "CP14BaseMobGroupSpawner", + "suffix": "2-3 Electric Slimes" + }, + "CP14MobGroupSpawnerSlime": { + "id": "CP14MobGroupSpawnerSlime", + "name": null, + "description": null, + "parent": "CP14BaseMobGroupSpawner", + "suffix": "2-3 Slimes" + }, "CP14SpawnPointJobBase": { "id": "CP14SpawnPointJobBase", "name": null, @@ -2939,20 +3408,6 @@ "parent": "CP14SpawnUniqueBase", "suffix": null }, - "CP14ConstrainedSpawnerBase": { - "id": "CP14ConstrainedSpawnerBase", - "name": null, - "description": "lol", - "parent": "MarkerBase", - "suffix": null - }, - "CP14ConstrainedSpawnerXeno": { - "id": "CP14ConstrainedSpawnerXeno", - "name": "xeno constrained spawner", - "description": null, - "parent": "CP14ConstrainedSpawnerBase", - "suffix": null - }, "CP14RandomSpawnerGatherAgaricShroom": { "id": "CP14RandomSpawnerGatherAgaricShroom", "name": "agaric shroom spawner", @@ -2967,6 +3422,13 @@ "parent": "CP14DirtEffect", "suffix": null }, + "CP14RandomStoneLootSpawner": { + "id": "CP14RandomStoneLootSpawner", + "name": "dirt spawner", + "description": null, + "parent": "CP14DirtEffect", + "suffix": null + }, "CP14RandomSnowLootSpawner": { "id": "CP14RandomSnowLootSpawner", "name": "snow spawner", @@ -3044,6 +3506,20 @@ "parent": "CP14BaseBiomeSpawner", "suffix": "Leaf maze" }, + "CP14BiomeSpawnerMarbleCave": { + "id": "CP14BiomeSpawnerMarbleCave", + "name": null, + "description": null, + "parent": "CP14BaseBiomeSpawner", + "suffix": "Marble cave" + }, + "CP14BiomeSpawnerWastelands": { + "id": "CP14BiomeSpawnerWastelands", + "name": null, + "description": null, + "parent": "CP14BaseBiomeSpawner", + "suffix": "Wastelands" + }, "CP14SpawnerDemiplaneLootT1": { "id": "CP14SpawnerDemiplaneLootT1", "name": "Demiplane T1 Loot", @@ -3142,104 +3618,6 @@ "parent": "CP14SimpleMobBase", "suffix": null }, - "CP14MobUndeadSkeletonDemiplane": { - "id": "CP14MobUndeadSkeletonDemiplane", - "name": "skeleton", - "description": "Animated by the dark magic of a fragile skeleton. Skeletons are usually extremely intelligent creatures, controlled by a recently deceased soul.", - "parent": "CP14BaseMobSkeleton", - "suffix": null - }, - "CP14MobUndeadSkeletonHalberd": { - "id": "CP14MobUndeadSkeletonHalberd", - "name": null, - "description": null, - "parent": "CP14MobUndeadSkeletonDemiplane", - "suffix": "Halebard" - }, - "CP14MobUndeadSkeletonSword": { - "id": "CP14MobUndeadSkeletonSword", - "name": null, - "description": null, - "parent": "CP14MobUndeadSkeletonDemiplane", - "suffix": "Sword" - }, - "CP14MobUndeadSkeletonDodger": { - "id": "CP14MobUndeadSkeletonDodger", - "name": null, - "description": null, - "parent": "CP14MobUndeadSkeletonDemiplane", - "suffix": "Dodger" - }, - "CP14MobUndeadSkeletonArcher": { - "id": "CP14MobUndeadSkeletonArcher", - "name": null, - "description": null, - "parent": "CP14MobUndeadSkeletonDemiplane", - "suffix": "Archer" - }, - "CP14MobUndeadSkeletonWizard": { - "id": "CP14MobUndeadSkeletonWizard", - "name": null, - "description": null, - "parent": "CP14MobUndeadSkeletonDemiplane", - "suffix": "Wizard" - }, - "CP14MobUndeadSkeletonBard": { - "id": "CP14MobUndeadSkeletonBard", - "name": null, - "description": null, - "parent": "CP14MobUndeadSkeletonDemiplane", - "suffix": "Bard" - }, - "SpawnPointGhostDemiplaneSkeleton": { - "id": "SpawnPointGhostDemiplaneSkeleton", - "name": "ghost role spawn point", - "description": "A ghost role for a bloodthirsty and cunning skeleton.", - "parent": "MarkerBase", - "suffix": "skeleton random" - }, - "SpawnPointGhostDemiplaneSkeletonHalberd": { - "id": "SpawnPointGhostDemiplaneSkeletonHalberd", - "name": "ghost role spawn point", - "description": "A ghost role for a bloodthirsty and cunning skeleton.", - "parent": "MarkerBase", - "suffix": "skeleton Halebard" - }, - "SpawnPointGhostDemiplaneSkeletonSword": { - "id": "SpawnPointGhostDemiplaneSkeletonSword", - "name": "ghost role spawn point", - "description": "A ghost role for a bloodthirsty and cunning skeleton.", - "parent": "SpawnPointGhostDemiplaneSkeletonHalberd", - "suffix": "skeleton Sword" - }, - "SpawnPointGhostDemiplaneSkeletonDodger": { - "id": "SpawnPointGhostDemiplaneSkeletonDodger", - "name": "ghost role spawn point", - "description": "A ghost role for a bloodthirsty and cunning skeleton.", - "parent": "SpawnPointGhostDemiplaneSkeletonHalberd", - "suffix": "skeleton Dodger" - }, - "SpawnPointGhostDemiplaneSkeletonArcher": { - "id": "SpawnPointGhostDemiplaneSkeletonArcher", - "name": "ghost role spawn point", - "description": "A ghost role for a bloodthirsty and cunning skeleton.", - "parent": "SpawnPointGhostDemiplaneSkeletonHalberd", - "suffix": "skeleton Archer" - }, - "SpawnPointGhostDemiplaneSkeletonWizard": { - "id": "SpawnPointGhostDemiplaneSkeletonWizard", - "name": "ghost role spawn point", - "description": "A ghost role for a bloodthirsty and cunning skeleton.", - "parent": "SpawnPointGhostDemiplaneSkeletonHalberd", - "suffix": "skeleton Wizard" - }, - "SpawnPointGhostDemiplaneSkeletonBard": { - "id": "SpawnPointGhostDemiplaneSkeletonBard", - "name": "ghost role spawn point", - "description": "A ghost role for a bloodthirsty and cunning skeleton.", - "parent": "SpawnPointGhostDemiplaneSkeletonHalberd", - "suffix": "skeleton Bard" - }, "CP14XenoTurret": { "id": "CP14XenoTurret", "name": null, @@ -3261,48 +3639,6 @@ "parent": "CP14MobWatcherBase", "suffix": null }, - "CP14MobXeno": { - "id": "CP14MobXeno", - "name": null, - "description": null, - "parent": "MobXeno", - "suffix": null - }, - "CP14MobXenoDrone": { - "id": "CP14MobXenoDrone", - "name": null, - "description": null, - "parent": "MobXenoDrone", - "suffix": null - }, - "CP14MobSpaceCobra": { - "id": "CP14MobSpaceCobra", - "name": "cobra", - "description": null, - "parent": "MobCobraSpace", - "suffix": null - }, - "CP14MobPurpleSnake": { - "id": "CP14MobPurpleSnake", - "name": null, - "description": null, - "parent": "MobPurpleSnake", - "suffix": null - }, - "CP14MobSmallPurpleSnake": { - "id": "CP14MobSmallPurpleSnake", - "name": null, - "description": null, - "parent": "MobSmallPurpleSnake", - "suffix": null - }, - "CP14MobWatcherMagmawing": { - "id": "CP14MobWatcherMagmawing", - "name": null, - "description": null, - "parent": "MobWatcherMagmawing", - "suffix": null - }, "CP14MobUndeadZombie": { "id": "CP14MobUndeadZombie", "name": "walking dead", @@ -3436,6 +3772,223 @@ "parent": "CP14BaseMobTiefling", "suffix": null }, + "CP14MobLurker": { + "id": "CP14MobLurker", + "name": "lurker", + "description": "The spirit of hunger and night. Hunting lonely wanderers lost in the dark forest.", + "parent": "CP14SimpleMobBase", + "suffix": null + }, + "CP14LurkerRitualSound": { + "id": "CP14LurkerRitualSound", + "name": "lurker ritual far sound", + "description": null, + "parent": null, + "suffix": null + }, + "SpawnPointGhostDemiplaneLurker": { + "id": "SpawnPointGhostDemiplaneLurker", + "name": "ghost role spawn point", + "description": "A ghost role for a lurker", + "parent": "MarkerBase", + "suffix": "Lurker" + }, + "CP14MobUndeadSkeletonDemiplaneT1": { + "id": "CP14MobUndeadSkeletonDemiplaneT1", + "name": "skeleton", + "description": null, + "parent": "CP14BaseMobSkeleton", + "suffix": null + }, + "CP14MobUndeadSkeletonHalberdT1": { + "id": "CP14MobUndeadSkeletonHalberdT1", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT1", + "suffix": "Halebard T1" + }, + "CP14MobUndeadSkeletonSwordT1": { + "id": "CP14MobUndeadSkeletonSwordT1", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT1", + "suffix": "Sword T1" + }, + "CP14MobUndeadSkeletonDodgerT1": { + "id": "CP14MobUndeadSkeletonDodgerT1", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT1", + "suffix": "Dodger T1" + }, + "CP14MobUndeadSkeletonArcherT1": { + "id": "CP14MobUndeadSkeletonArcherT1", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT1", + "suffix": "Archer T1" + }, + "CP14SpawnPointGhostDemiplaneSkeletonT1": { + "id": "CP14SpawnPointGhostDemiplaneSkeletonT1", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "MarkerBase", + "suffix": "skeleton random T1" + }, + "SpawnPointGhostDemiplaneSkeletonHalberdT1": { + "id": "SpawnPointGhostDemiplaneSkeletonHalberdT1", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "MarkerBase", + "suffix": "skeleton Halebard T1" + }, + "SpawnPointGhostDemiplaneSkeletonSwordT1": { + "id": "SpawnPointGhostDemiplaneSkeletonSwordT1", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "SpawnPointGhostDemiplaneSkeletonHalberdT1", + "suffix": "skeleton Sword T1" + }, + "SpawnPointGhostDemiplaneSkeletonDodgerT1": { + "id": "SpawnPointGhostDemiplaneSkeletonDodgerT1", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "SpawnPointGhostDemiplaneSkeletonHalberdT1", + "suffix": "skeleton Dodger T1" + }, + "SpawnPointGhostDemiplaneSkeletonArcherT1": { + "id": "SpawnPointGhostDemiplaneSkeletonArcherT1", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "SpawnPointGhostDemiplaneSkeletonHalberdT1", + "suffix": "skeleton Archer T1" + }, + "CP14MobUndeadSkeletonDemiplaneT2": { + "id": "CP14MobUndeadSkeletonDemiplaneT2", + "name": "skeleton", + "description": null, + "parent": "CP14BaseMobSkeleton", + "suffix": null + }, + "CP14MobUndeadSkeletonHalberdT2": { + "id": "CP14MobUndeadSkeletonHalberdT2", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT2", + "suffix": "Halebard T2" + }, + "CP14MobUndeadSkeletonSwordT2": { + "id": "CP14MobUndeadSkeletonSwordT2", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT2", + "suffix": "Sword T2" + }, + "CP14MobUndeadSkeletonDodgerT2": { + "id": "CP14MobUndeadSkeletonDodgerT2", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT2", + "suffix": "Dodger T2" + }, + "CP14MobUndeadSkeletonArcherT2": { + "id": "CP14MobUndeadSkeletonArcherT2", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT2", + "suffix": "Archer T2" + }, + "CP14MobUndeadSkeletonWizardT2": { + "id": "CP14MobUndeadSkeletonWizardT2", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT2", + "suffix": "Wizard T2" + }, + "CP14MobUndeadSkeletonBardT2": { + "id": "CP14MobUndeadSkeletonBardT2", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonDemiplaneT2", + "suffix": "Bard T2" + }, + "CP14SpawnPointGhostDemiplaneSkeletonT2": { + "id": "CP14SpawnPointGhostDemiplaneSkeletonT2", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "MarkerBase", + "suffix": "skeleton random T2" + }, + "CP14SpawnPointGhostDemiplaneSkeletonMagicalT2": { + "id": "CP14SpawnPointGhostDemiplaneSkeletonMagicalT2", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "MarkerBase", + "suffix": "skeleton random T2" + }, + "CP14SpawnPointGhostDemiplaneSkeletonHalberdT2": { + "id": "CP14SpawnPointGhostDemiplaneSkeletonHalberdT2", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "MarkerBase", + "suffix": "skeleton Halebard T2" + }, + "CP14SpawnPointGhostDemiplaneSkeletonSwordT2": { + "id": "CP14SpawnPointGhostDemiplaneSkeletonSwordT2", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "CP14SpawnPointGhostDemiplaneSkeletonHalberdT2", + "suffix": "skeleton Sword T2" + }, + "CP14SpawnPointGhostDemiplaneSkeletonDodgerT2": { + "id": "CP14SpawnPointGhostDemiplaneSkeletonDodgerT2", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "CP14SpawnPointGhostDemiplaneSkeletonHalberdT2", + "suffix": "skeleton Dodger T2" + }, + "CP14SpawnPointGhostDemiplaneSkeletonArcherT2": { + "id": "CP14SpawnPointGhostDemiplaneSkeletonArcherT2", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "CP14SpawnPointGhostDemiplaneSkeletonHalberdT2", + "suffix": "skeleton Archer T2" + }, + "CP14SpawnPointGhostDemiplaneSkeletonWizardT2": { + "id": "CP14SpawnPointGhostDemiplaneSkeletonWizardT2", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "CP14SpawnPointGhostDemiplaneSkeletonHalberdT2", + "suffix": "skeleton Wizard T2" + }, + "CP14SpawnPointGhostDemiplaneSkeletonBardT2": { + "id": "CP14SpawnPointGhostDemiplaneSkeletonBardT2", + "name": "ghost role spawn point", + "description": "A ghost role for a bloodthirsty and cunning skeleton.", + "parent": "CP14SpawnPointGhostDemiplaneSkeletonHalberdT2", + "suffix": "skeleton Bard T2" + }, + "CP14SpawnPointTownRaid": { + "id": "CP14SpawnPointTownRaid", + "name": "town raid ghost role spawn point", + "description": null, + "parent": "MarkerBase", + "suffix": "Town Raid" + }, + "CP14MobUndeadSkeletonWizardTownRaid": { + "id": "CP14MobUndeadSkeletonWizardTownRaid", + "name": null, + "description": null, + "parent": "CP14MobUndeadSkeletonWizardT2", + "suffix": null + }, + "CP14SpawnPointTownRaidUndeadEasy": { + "id": "CP14SpawnPointTownRaidUndeadEasy", + "name": null, + "description": null, + "parent": "CP14SpawnPointTownRaid", + "suffix": "Town Raid (Undead, Easy)" + }, "CP14BaseMobCarcat": { "id": "CP14BaseMobCarcat", "name": "Mr. Cat", @@ -3548,13 +4101,6 @@ "parent": "CP14BaseSpeciesDummy", "suffix": null }, - "CP14RitualGrimoire": { - "id": "CP14RitualGrimoire", - "name": "ritualist's grimoire", - "description": "a book that holds the knowledge of hundreds of ritualists before you. Use it on an active ritual to get all the information about its current state.", - "parent": "BookBase", - "suffix": null - }, "CP14PaperFolderBase": { "id": "CP14PaperFolderBase", "name": "folder", @@ -4157,6 +4703,13 @@ "parent": "CP14FoodPieBase", "suffix": null }, + "CP14FoodPieBurnt": { + "id": "CP14FoodPieBurnt", + "name": "burnt pie", + "description": "The pie is burnt and is a burnt and inedible mass. It's best to clean that up with a knife.", + "parent": "CP14FoodPieBaseRaw", + "suffix": null + }, "CP14Plate": { "id": "CP14Plate", "name": "plate", @@ -4420,7 +4973,14 @@ "id": "CP14Wheat", "name": "wheat bushel", "description": "You have the choice of either planting the grains again or grinding them into flour.", - "parent": "ProduceBase", + "parent": "BaseItem", + "suffix": null + }, + "CP14Cotton": { + "id": "CP14Cotton", + "name": "cotton", + "description": "A plant raw fiber used to make cotton fabric.", + "parent": "BaseItem", "suffix": null }, "CP14WildProduceBase": { @@ -4535,27 +5095,6 @@ "parent": "BaseHandheldInstrument", "suffix": null }, - "CP14KeyTavernAlchemistAbstract": { - "id": "CP14KeyTavernAlchemistAbstract", - "name": null, - "description": null, - "parent": "CP14BaseKey", - "suffix": "Abstract Alchemist" - }, - "CP14KeyAlchemy1": { - "id": "CP14KeyAlchemy1", - "name": null, - "description": null, - "parent": "CP14BaseKey", - "suffix": "Alchemy 1" - }, - "CP14KeyAlchemy2": { - "id": "CP14KeyAlchemy2", - "name": null, - "description": null, - "parent": "CP14BaseKey", - "suffix": "Alchemy 2" - }, "CP14BaseKey": { "id": "CP14BaseKey", "name": "key", @@ -4563,75 +5102,33 @@ "parent": "BaseItem", "suffix": null }, - "CP14BaseLockpick": { - "id": "CP14BaseLockpick", - "name": "lockpick", - "description": "A thief's tool that, with proper skill and skill, allows you to pick any lock.", - "parent": "BaseItem", + "CP14KeyCopperBlank": { + "id": "CP14KeyCopperBlank", + "name": null, + "description": null, + "parent": "CP14BaseKey", "suffix": null }, - "CP14KeyTavernBlacksmithAbstract": { - "id": "CP14KeyTavernBlacksmithAbstract", + "CP14KeyIronBlank": { + "id": "CP14KeyIronBlank", "name": null, "description": null, "parent": "CP14BaseKey", - "suffix": "Abstract Blacksmith" + "suffix": null }, - "CP14KeyBlacksmith": { - "id": "CP14KeyBlacksmith", + "CP14KeyGoldBlank": { + "id": "CP14KeyGoldBlank", "name": null, "description": null, "parent": "CP14BaseKey", - "suffix": "Blacksmith 1" + "suffix": null }, - "CP14KeyBlacksmith2": { - "id": "CP14KeyBlacksmith2", + "CP14KeyMithrilBlank": { + "id": "CP14KeyMithrilBlank", "name": null, "description": null, "parent": "CP14BaseKey", - "suffix": "Blacksmith 2" - }, - "CP14KeyGuardEntrance": { - "id": "CP14KeyGuardEntrance", - "name": null, - "description": null, - "parent": "CP14BaseKey", - "suffix": "Guard Entrance" - }, - "CP14KeyGuard": { - "id": "CP14KeyGuard", - "name": null, - "description": null, - "parent": "CP14BaseKey", - "suffix": "Guard" - }, - "CP14KeyGuardCommander": { - "id": "CP14KeyGuardCommander", - "name": null, - "description": null, - "parent": "CP14BaseKey", - "suffix": "Guard Commander" - }, - "CP14KeyGuardWeaponStorage": { - "id": "CP14KeyGuardWeaponStorage", - "name": null, - "description": null, - "parent": "CP14BaseKey", - "suffix": "Guard Weapon Storage" - }, - "CP14KeyGuildmaster": { - "id": "CP14KeyGuildmaster", - "name": null, - "description": null, - "parent": "CP14BaseKey", - "suffix": "Guildmaster" - }, - "CP14KeyDemiplaneCrystal": { - "id": "CP14KeyDemiplaneCrystal", - "name": null, - "description": null, - "parent": "CP14BaseKey", - "suffix": "Demiplane Crystal" + "suffix": null }, "CP14BaseKeyRing": { "id": "CP14BaseKeyRing", @@ -4696,214 +5193,354 @@ "parent": "CP14BaseKeyRing", "suffix": "Guildmaster" }, + "CP14BaseLock": { + "id": "CP14BaseLock", + "name": "lock", + "description": "A small device customized only for a specific key shape. Attach it to doors or chests that have no lock and feel the spirit of security.", + "parent": "BaseItem", + "suffix": null + }, + "CP14LockCopper": { + "id": "CP14LockCopper", + "name": null, + "description": null, + "parent": "CP14BaseLock", + "suffix": null + }, + "CP14LockIron": { + "id": "CP14LockIron", + "name": null, + "description": null, + "parent": "CP14BaseLock", + "suffix": null + }, + "CP14LockGold": { + "id": "CP14LockGold", + "name": null, + "description": null, + "parent": "CP14BaseLock", + "suffix": null + }, + "CP14LockMithril": { + "id": "CP14LockMithril", + "name": null, + "description": null, + "parent": "CP14BaseLock", + "suffix": null + }, + "CP14BaseLockpick": { + "id": "CP14BaseLockpick", + "name": "iron lockpick", + "description": "A thief's tool that, with proper skill and skill, allows you to pick any lock.", + "parent": "BaseItem", + "suffix": null + }, + "CP14LockpickMithril": { + "id": "CP14LockpickMithril", + "name": "mithril lockpick", + "description": null, + "parent": "CP14BaseLockpick", + "suffix": null + }, + "CP14KeyFile": { + "id": "CP14KeyFile", + "name": "key file", + "description": "A file, ideal for sharpening keys, and reshaping them.", + "parent": "BaseItem", + "suffix": null + }, + "CP14KeyTavernAlchemistAbstract": { + "id": "CP14KeyTavernAlchemistAbstract", + "name": null, + "description": null, + "parent": "CP14KeyIronBlank", + "suffix": "Abstract Alchemist" + }, + "CP14KeyAlchemy1": { + "id": "CP14KeyAlchemy1", + "name": null, + "description": null, + "parent": "CP14KeyIronBlank", + "suffix": "Alchemy 1" + }, + "CP14KeyAlchemy2": { + "id": "CP14KeyAlchemy2", + "name": null, + "description": null, + "parent": "CP14KeyIronBlank", + "suffix": "Alchemy 2" + }, + "CP14KeyTavernBlacksmithAbstract": { + "id": "CP14KeyTavernBlacksmithAbstract", + "name": null, + "description": null, + "parent": "CP14KeyIronBlank", + "suffix": "Abstract Blacksmith" + }, + "CP14KeyBlacksmith": { + "id": "CP14KeyBlacksmith", + "name": null, + "description": null, + "parent": "CP14KeyIronBlank", + "suffix": "Blacksmith 1" + }, + "CP14KeyBlacksmith2": { + "id": "CP14KeyBlacksmith2", + "name": null, + "description": null, + "parent": "CP14KeyIronBlank", + "suffix": "Blacksmith 2" + }, + "CP14KeyGuardEntrance": { + "id": "CP14KeyGuardEntrance", + "name": null, + "description": null, + "parent": "CP14KeyIronBlank", + "suffix": "Guard Entrance" + }, + "CP14KeyGuard": { + "id": "CP14KeyGuard", + "name": null, + "description": null, + "parent": "CP14KeyIronBlank", + "suffix": "Guard" + }, + "CP14KeyGuardCommander": { + "id": "CP14KeyGuardCommander", + "name": null, + "description": null, + "parent": "CP14KeyMithrilBlank", + "suffix": "Guard Commander" + }, + "CP14KeyGuardWeaponStorage": { + "id": "CP14KeyGuardWeaponStorage", + "name": null, + "description": null, + "parent": "CP14KeyMithrilBlank", + "suffix": "Guard Weapon Storage" + }, + "CP14KeyGuildmaster": { + "id": "CP14KeyGuildmaster", + "name": null, + "description": null, + "parent": "CP14KeyGoldBlank", + "suffix": "Guildmaster" + }, + "CP14KeyDemiplaneCrystal": { + "id": "CP14KeyDemiplaneCrystal", + "name": null, + "description": null, + "parent": "CP14KeyGoldBlank", + "suffix": "Demiplane Crystal" + }, "CP14KeyTavernMerchantShopAbstract": { "id": "CP14KeyTavernMerchantShopAbstract", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyIronBlank", "suffix": "Abstract Merchant shop" }, "CP14KeyMercantShop1": { "id": "CP14KeyMercantShop1", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyIronBlank", "suffix": "Merchant shop 1" }, "CP14KeyMercantShop2": { "id": "CP14KeyMercantShop2", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyIronBlank", "suffix": "Merchant shop 2" }, "CP14KeyMercantShop3": { "id": "CP14KeyMercantShop3", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyIronBlank", "suffix": "Merchant shop 3" }, "CP14KeyPersonalHouseAbstract": { "id": "CP14KeyPersonalHouseAbstract", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "Abstract Personal house" }, "CP14KeyPersonalHouseAbstractLoadoutDummy": { "id": "CP14KeyPersonalHouseAbstractLoadoutDummy", "name": "a key to a random personal home (limited per map)", "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": null }, "CP14KeyPersonalHouse1": { "id": "CP14KeyPersonalHouse1", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse1" }, "CP14KeyPersonalHouse2": { "id": "CP14KeyPersonalHouse2", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse2" }, "CP14KeyPersonalHouse3": { "id": "CP14KeyPersonalHouse3", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse3" }, "CP14KeyPersonalHouse4": { "id": "CP14KeyPersonalHouse4", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse4" }, "CP14KeyPersonalHouse5": { "id": "CP14KeyPersonalHouse5", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse5" }, "CP14KeyPersonalHouse6": { "id": "CP14KeyPersonalHouse6", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse6" }, "CP14KeyPersonalHouse7": { "id": "CP14KeyPersonalHouse7", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse7" }, "CP14KeyPersonalHouse8": { "id": "CP14KeyPersonalHouse8", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse8" }, "CP14KeyPersonalHouse9": { "id": "CP14KeyPersonalHouse9", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse9" }, "CP14KeyPersonalHouse10": { "id": "CP14KeyPersonalHouse10", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse10" }, "CP14KeyPersonalHouse11": { "id": "CP14KeyPersonalHouse11", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse11" }, "CP14KeyPersonalHouse12": { "id": "CP14KeyPersonalHouse12", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse12" }, "CP14KeyPersonalHouse13": { "id": "CP14KeyPersonalHouse13", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse13" }, "CP14KeyPersonalHouse14": { "id": "CP14KeyPersonalHouse14", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse14" }, "CP14KeyPersonalHouse15": { "id": "CP14KeyPersonalHouse15", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse15" }, "CP14KeyPersonalHouse16": { "id": "CP14KeyPersonalHouse16", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "PersonalHouse16" }, "CP14KeyTavernHall": { "id": "CP14KeyTavernHall", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "Tavern Hall" }, "CP14KeyTavernStaff": { "id": "CP14KeyTavernStaff", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "Tavern Staff" }, "CP14KeyTavernDormsAbstract": { "id": "CP14KeyTavernDormsAbstract", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "Abstract Tavern Dorms" }, "CP14KeyTavernDorms1": { "id": "CP14KeyTavernDorms1", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "Tavern Dorms 1" }, "CP14KeyTavernDorms2": { "id": "CP14KeyTavernDorms2", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "Tavern Dorms 2" }, "CP14KeyTavernDorms3": { "id": "CP14KeyTavernDorms3", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "Tavern Dorms 3" }, "CP14KeyTavernDorms4": { "id": "CP14KeyTavernDorms4", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "Tavern Dorms 4" }, "CP14KeyTavernDorms5": { "id": "CP14KeyTavernDorms5", "name": null, "description": null, - "parent": "CP14BaseKey", + "parent": "CP14KeyCopperBlank", "suffix": "Tavern Dorms 5" }, "CP14Ash1": { @@ -5102,6 +5739,20 @@ "parent": "CP14CompostMaterial1", "suffix": 10 }, + "CP14CrystalShardQuartz": { + "id": "CP14CrystalShardQuartz", + "name": "quartz shard", + "description": "Natural quartz crystals that can absorb the magical energy of the world around them.", + "parent": "BaseItem", + "suffix": null + }, + "CP14DimensitCrystal": { + "id": "CP14DimensitCrystal", + "name": "dimensit shard", + "description": "A fragment of the fabric of reality. An extremely valuable resource for those who know what they can do with it.", + "parent": "BaseItem", + "suffix": null + }, "CP14OreCopper1": { "id": "CP14OreCopper1", "name": "copper ore", @@ -5186,6 +5837,48 @@ "parent": "CP14OreMithril1", "suffix": 10 }, + "CP14DirtBlock1": { + "id": "CP14DirtBlock1", + "name": "dirt block", + "description": "A block of excellent black soil.", + "parent": "BaseItem", + "suffix": null + }, + "CP14DirtBlock10": { + "id": "CP14DirtBlock10", + "name": null, + "description": null, + "parent": "CP14DirtBlock1", + "suffix": 10 + }, + "CP14StoneBlock1": { + "id": "CP14StoneBlock1", + "name": "stone block", + "description": "A block of cold stone.", + "parent": "BaseItem", + "suffix": null + }, + "CP14StoneBlock10": { + "id": "CP14StoneBlock10", + "name": null, + "description": null, + "parent": "CP14StoneBlock1", + "suffix": 10 + }, + "CP14MarbleBlock1": { + "id": "CP14MarbleBlock1", + "name": "marble block", + "description": "A block of white marble.", + "parent": "BaseItem", + "suffix": null + }, + "CP14MarbleBlock10": { + "id": "CP14MarbleBlock10", + "name": null, + "description": null, + "parent": "CP14MarbleBlock1", + "suffix": 10 + }, "CP14BaseScrap": { "id": "CP14BaseScrap", "name": null, @@ -5221,34 +5914,34 @@ "parent": "CP14BaseScrap", "suffix": null }, - "CP14DirtBlock1": { - "id": "CP14DirtBlock1", - "name": "dirt block", - "description": "A block of excellent black soil.", + "CP14String": { + "id": "CP14String", + "name": "strings", + "description": "Thin thread. Material for mending clothes, or sewing new ones.", "parent": "BaseItem", "suffix": null }, - "CP14DirtBlock10": { - "id": "CP14DirtBlock10", - "name": null, - "description": null, - "parent": "CP14DirtBlock1", - "suffix": 10 - }, - "CP14StoneBlock1": { - "id": "CP14StoneBlock1", - "name": "stone block", - "description": "A block of cold stone.", + "CP14Cloth1": { + "id": "CP14Cloth1", + "name": "cloth", + "description": "White cloth roll", "parent": "BaseItem", - "suffix": null + "suffix": 1 }, - "CP14StoneBlock10": { - "id": "CP14StoneBlock10", + "CP14Cloth10": { + "id": "CP14Cloth10", "name": null, "description": null, - "parent": "CP14StoneBlock1", + "parent": "CP14Cloth1", "suffix": 10 }, + "CP14GlassShard": { + "id": "CP14GlassShard", + "name": null, + "description": null, + "parent": "ShardGlass", + "suffix": null + }, "CP14WoodLog": { "id": "CP14WoodLog", "name": "wooden log", @@ -5305,53 +5998,39 @@ "parent": "CP14LucensWoodenPlanks1", "suffix": 20 }, - "CP14Nail1": { - "id": "CP14Nail1", - "name": "nails", - "description": "A basic carpenter's tool that allows you to do unimaginable things with wood.", - "parent": "BaseItem", - "suffix": 1 - }, - "CP14Nail20": { - "id": "CP14Nail20", - "name": null, + "CP14BirchWoodLog": { + "id": "CP14BirchWoodLog", + "name": "birch log", "description": null, - "parent": "CP14Nail1", - "suffix": 20 - }, - "CP14Nail50": { - "id": "CP14Nail50", - "name": null, - "description": null, - "parent": "CP14Nail1", - "suffix": 50 - }, - "CP14String": { - "id": "CP14String", - "name": "strings", - "description": "Thin thread. Material for mending clothes, or sewing new ones.", - "parent": "BaseItem", + "parent": "CP14WoodLog", "suffix": null }, - "CP14Cloth1": { - "id": "CP14Cloth1", - "name": "cloth", - "description": "White cloth roll", - "parent": "BaseItem", + "CP14BirchWoodenPlanks1": { + "id": "CP14BirchWoodenPlanks1", + "name": "birch planks", + "description": null, + "parent": "CP14WoodenPlanks1", "suffix": 1 }, - "CP14Cloth10": { - "id": "CP14Cloth10", + "CP14BirchWoodenPlanks10": { + "id": "CP14BirchWoodenPlanks10", "name": null, "description": null, - "parent": "CP14Cloth1", + "parent": "CP14BirchWoodenPlanks1", "suffix": 10 }, - "CP14GlassShard": { - "id": "CP14GlassShard", + "CP14BirchWoodenPlanks20": { + "id": "CP14BirchWoodenPlanks20", "name": null, "description": null, - "parent": "ShardGlass", + "parent": "CP14BirchWoodenPlanks1", + "suffix": 20 + }, + "CP14Bell": { + "id": "CP14Bell", + "name": "bell", + "description": "A regular bell with a handle to attract attention.", + "parent": "BaseItem", "suffix": null }, "CP14Candle": { @@ -5585,6 +6264,118 @@ "parent": "FoodInjectableBase", "suffix": null }, + "CP14FloorTileBase": { + "id": "CP14FloorTileBase", + "name": null, + "description": "Makes the floor more pleasant for your feet. And your eyes.", + "parent": "BaseItem", + "suffix": null + }, + "CP14FloorTileFoundation": { + "id": "CP14FloorTileFoundation", + "name": "foundation floor tile", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileMarbleBrick": { + "id": "CP14FloorTileMarbleBrick", + "name": "marble brick", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileMarbleSmallbricks": { + "id": "CP14FloorTileMarbleSmallbricks", + "name": "marble small brick", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileOakWoodplanks": { + "id": "CP14FloorTileOakWoodplanks", + "name": "oak woodplanks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileOakWoodplanksBig": { + "id": "CP14FloorTileOakWoodplanksBig", + "name": "oak big woodplanks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileOakWoodplanksCruciform": { + "id": "CP14FloorTileOakWoodplanksCruciform", + "name": "oak cruciform woodplanks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileOakWoodplanksStairs": { + "id": "CP14FloorTileOakWoodplanksStairs", + "name": "oak stairs woodplanks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileStonebricks": { + "id": "CP14FloorTileStonebricks", + "name": "stonebrick", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileStonebricksSmallCarved": { + "id": "CP14FloorTileStonebricksSmallCarved", + "name": "small carved stonebricks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileStonebricksSmallCarved2": { + "id": "CP14FloorTileStonebricksSmallCarved2", + "name": "small carved stonebricks 2", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileStonebricksSquareCarved": { + "id": "CP14FloorTileStonebricksSquareCarved", + "name": "square carved stonebricks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileBirchWoodplanks": { + "id": "CP14FloorTileBirchWoodplanks", + "name": "birch woodplanks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileBirchWoodplanksBig": { + "id": "CP14FloorTileBirchWoodplanksBig", + "name": "birch big woodplanks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileBirchWoodplanksCruciform": { + "id": "CP14FloorTileBirchWoodplanksCruciform", + "name": "birch cruciform woodplanks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, + "CP14FloorTileBirchWoodplanksStairs": { + "id": "CP14FloorTileBirchWoodplanksStairs", + "name": "birch stairs woodplanks", + "description": null, + "parent": "CP14FloorTileBase", + "suffix": null + }, "CP14ModularGripBase": { "id": "CP14ModularGripBase", "name": null, @@ -6516,6 +7307,20 @@ "parent": "CP14SackFarming", "suffix": "Wheat" }, + "CP14SackFarmingSeed": { + "id": "CP14SackFarmingSeed", + "name": "seed sack", + "description": "Sack for various plant seeds.", + "parent": "CP14SackFarming", + "suffix": null + }, + "CP14SackFarmingSeedFull": { + "id": "CP14SackFarmingSeedFull", + "name": null, + "description": null, + "parent": "CP14SackFarming", + "suffix": "Full" + }, "CP14BaseSeed": { "id": "CP14BaseSeed", "name": null, @@ -6572,6 +7377,20 @@ "parent": "CP14BaseSeed", "suffix": null }, + "CP14SeedCotton": { + "id": "CP14SeedCotton", + "name": "cotton seeds", + "description": "Cotton seeds. It's time to grow some pants!", + "parent": "CP14BaseSeed", + "suffix": null + }, + "CP14GuardBell": { + "id": "CP14GuardBell", + "name": "guard bell", + "description": "A bell used to set the appropriate alert level.", + "parent": "BaseStructure", + "suffix": null + }, "CP14HerbalBandage": { "id": "CP14HerbalBandage", "name": "herbal bandage", @@ -6607,20 +7426,6 @@ "parent": "BaseItem", "suffix": null }, - "CP14EnergyCrystalSmall": { - "id": "CP14EnergyCrystalSmall", - "name": "small energyshard", - "description": null, - "parent": "CP14EnergyCrystalBase", - "suffix": "Full" - }, - "CP14EnergyCrystalSmallEmpty": { - "id": "CP14EnergyCrystalSmallEmpty", - "name": null, - "description": null, - "parent": "CP14EnergyCrystalSmall", - "suffix": "Empty" - }, "CP14EnergyCrystalMedium": { "id": "CP14EnergyCrystalMedium", "name": "energyshard", @@ -6768,27 +7573,13 @@ "parent": "BaseItem", "suffix": null }, - "CP14BaseSubdimensionalKey": { - "id": "CP14BaseSubdimensionalKey", - "name": "demiplane key", - "description": "The core that connects the real world to the demiplane. Use it to open a temporary passage to the other world.", + "CP14BaseDemiplaneKey": { + "id": "CP14BaseDemiplaneKey", + "name": "demiplane coordinate key", + "description": "A temporary blob of energy linking the real world and the demiplane. Use it before it dissipates.", "parent": "BaseItem", "suffix": null }, - "CP14DemiplaneKeyT1": { - "id": "CP14DemiplaneKeyT1", - "name": null, - "description": null, - "parent": "CP14BaseSubdimensionalKey", - "suffix": "Level 3" - }, - "CP14DemiplaneKeyT2": { - "id": "CP14DemiplaneKeyT2", - "name": null, - "description": null, - "parent": "CP14BaseSubdimensionalKey", - "suffix": "Level 6" - }, "CP14CrystalLampBlueEmpty": { "id": "CP14CrystalLampBlueEmpty", "name": "blue crystal lamp", @@ -6824,6 +7615,13 @@ "parent": "BaseItem", "suffix": null }, + "CP14Screwdriver": { + "id": "CP14Screwdriver", + "name": "screwdriver", + "description": "Industrial grade torque in a small screwdriving package.", + "parent": "BaseItem", + "suffix": null + }, "CP14BaseSharpeningStone": { "id": "CP14BaseSharpeningStone", "name": "sharpening stone", @@ -6831,13 +7629,6 @@ "parent": "BaseItem", "suffix": null }, - "CP14Torch": { - "id": "CP14Torch", - "name": "torch", - "description": "At its core, a stick burning on one side. Used to light up the area.", - "parent": "BaseItem", - "suffix": null - }, "CP14TorchIgnited": { "id": "CP14TorchIgnited", "name": null, @@ -6957,6 +7748,20 @@ "parent": "CP14ModularGripWooden", "suffix": null }, + "CP14ModularIronDaggerTundra": { + "id": "CP14ModularIronDaggerTundra", + "name": "Dagger Tundra", + "description": "A small, multi-purpose, sharp blade. You can cut meat or throw it at a goblin. It has \"tundra\" engraved on it.", + "parent": "CP14ModularGripWooden", + "suffix": null + }, + "CP14ModularIronDaggerAgony": { + "id": "CP14ModularIronDaggerAgony", + "name": "Dagger Agony", + "description": "A small, multi-purpose, sharp blade. You can cut meat or throw it at a goblin. It has \"agony\" engraved on it.", + "parent": "CP14ModularGripWooden", + "suffix": null + }, "CP14ModularIronHammer": { "id": "CP14ModularIronHammer", "name": "iron hammer", @@ -7048,6 +7853,20 @@ "parent": "CP14ModularGripWooden", "suffix": null }, + "CP14ModularSkeletonHalberdUpgrade": { + "id": "CP14ModularSkeletonHalberdUpgrade", + "name": "bone halberd", + "description": "Monstrous weapons of bone.", + "parent": "CP14ModularGripWoodenLong", + "suffix": "Reinforced" + }, + "CP14ModularSkeletonSwordUpgrade": { + "id": "CP14ModularSkeletonSwordUpgrade", + "name": "bone sword", + "description": "Monstrous weapons of bone.", + "parent": "CP14ModularGripWooden", + "suffix": "Reinforced" + }, "CP14BaseBow": { "id": "CP14BaseBow", "name": null, @@ -7062,6 +7881,13 @@ "parent": "CP14BaseBow", "suffix": null }, + "CP14BowIceArtifact": { + "id": "CP14BowIceArtifact", + "name": "ice bow", + "description": "A magic bow that needs no ammunition.", + "parent": "CP14BowCombat", + "suffix": "Artifact" + }, "CP14BaseLightCrossbow": { "id": "CP14BaseLightCrossbow", "name": "light crossbow", @@ -7111,83 +7937,6 @@ "parent": "Dart", "suffix": null }, - "CP14RitualEnd": { - "id": "CP14RitualEnd", - "name": "end of ritual", - "description": null, - "parent": "CP14BaseRitualPhase", - "suffix": null - }, - "CP14_NeutralCluster_Base": { - "id": "CP14_NeutralCluster_Base", - "name": null, - "description": null, - "parent": "CP14BaseRitualPhase", - "suffix": null - }, - "CP14_NeutralCluster_Root": { - "id": "CP14_NeutralCluster_Root", - "name": "Te-Se-Ra", - "description": "The perfect energetic position to begin any ritual.", - "parent": "CP14_NeutralCluster_Base", - "suffix": null - }, - "CP14_NeutralCluster_00": { - "id": "CP14_NeutralCluster_00", - "name": "Li-Ra", - "description": null, - "parent": "CP14_NeutralCluster_Base", - "suffix": null - }, - "CP14Chasm": { - "id": "CP14Chasm", - "name": "chasm", - "description": "You can't even see the bottom.", - "parent": null, - "suffix": null - }, - "CP14WallmountCrystalRubies": { - "id": "CP14WallmountCrystalRubies", - "name": null, - "description": null, - "parent": "CP14WallmountCrystalBase", - "suffix": "Red" - }, - "CP14WallmountCrystalTopazes": { - "id": "CP14WallmountCrystalTopazes", - "name": null, - "description": null, - "parent": "CP14WallmountCrystalBase", - "suffix": "Yellow" - }, - "CP14WallmountCrystalEmeralds": { - "id": "CP14WallmountCrystalEmeralds", - "name": null, - "description": null, - "parent": "CP14WallmountCrystalBase", - "suffix": "Green" - }, - "CP14WallmountCrystalSapphires": { - "id": "CP14WallmountCrystalSapphires", - "name": null, - "description": null, - "parent": "CP14WallmountCrystalBase", - "suffix": "Cyan" - }, - "CP14WallmountCrystalAmethysts": { - "id": "CP14WallmountCrystalAmethysts", - "name": null, - "description": null, - "parent": "CP14WallmountCrystalBase", - "suffix": "Purple" - }, - "CP14WallmountCrystalDiamonds": { - "id": "CP14WallmountCrystalDiamonds", - "name": null, - "description": null, - "parent": "CP14WallmountCrystalBase", - "suffix": "White" - }, "CP14Lighthouse": { "id": "CP14Lighthouse", "name": "lighthouse", @@ -7202,6 +7951,20 @@ "parent": "BaseStructureDynamic", "suffix": null }, + "CP14RoundLeaver": { + "id": "CP14RoundLeaver", + "name": "distance fog", + "description": "You have reached the edge of the game map. There's nothing further. You can use this fog to get out of the game.", + "parent": "BaseStructure", + "suffix": null + }, + "CP14StoneWell": { + "id": "CP14StoneWell", + "name": "well", + "description": "At the bottom of this well gurgles clear water. If you have a bucket, you can reach it.", + "parent": "BaseStructure", + "suffix": null + }, "CP14LaddersDownBase": { "id": "CP14LaddersDownBase", "name": "stairway down", @@ -7587,13 +8350,6 @@ "parent": "CP14IronDoorFrame", "suffix": null }, - "CP14FenceIronGrilleGateFrame": { - "id": "CP14FenceIronGrilleGateFrame", - "name": "iron grille gate frame", - "description": "An unfinished iron grille gate.", - "parent": "CP14BaseDoorFrame", - "suffix": null - }, "CP14IronDoorMirrored": { "id": "CP14IronDoorMirrored", "name": null, @@ -7692,11 +8448,11 @@ "parent": "CP14IronDoorWindowed", "suffix": "Guard, Entrance" }, - "CP14FenceIronGrilleGateGuard": { - "id": "CP14FenceIronGrilleGateGuard", + "CP14FenceGateBigIronGuard": { + "id": "CP14FenceGateBigIronGuard", "name": null, "description": null, - "parent": "CP14FenceIronGrilleGate", + "parent": "CP14FenceGateBigIron", "suffix": "Guard" }, "CP14IronDoorGuardGuildmaster": { @@ -7706,18 +8462,18 @@ "parent": "CP14IronDoor", "suffix": "Guildmaster" }, - "CP14FenceIronGrilleGateGuildmaster": { - "id": "CP14FenceIronGrilleGateGuildmaster", + "CP14FenceGateBigIronGuildmaster": { + "id": "CP14FenceGateBigIronGuildmaster", "name": null, "description": null, - "parent": "CP14FenceIronGrilleGate", + "parent": "CP14FenceGateBigIron", "suffix": "Guildmaster" }, - "CP14FenceIronGrilleGateDemiplaneCrystal": { - "id": "CP14FenceIronGrilleGateDemiplaneCrystal", + "CP14FenceGateBigIronDemiplaneCrystal": { + "id": "CP14FenceGateBigIronDemiplaneCrystal", "name": null, "description": null, - "parent": "CP14FenceIronGrilleGate", + "parent": "CP14FenceGateBigIron", "suffix": "DemiplaneCrystal" }, "CP14WoodenDoorMerchantShop1": { @@ -7853,6 +8609,41 @@ "parent": "CP14WoodenDoor", "suffix": "PersonalHouse16" }, + "CP14WoodenDoorRandomLocked": { + "id": "CP14WoodenDoorRandomLocked", + "name": null, + "description": null, + "parent": "CP14WoodenDoor", + "suffix": "Random Locked (Complex 3)" + }, + "CP14WoodenDoorWindowedRandomLocked": { + "id": "CP14WoodenDoorWindowedRandomLocked", + "name": null, + "description": null, + "parent": "CP14WoodenDoorWindowed", + "suffix": "Random Locked (Complex 3)" + }, + "CP14IronDoorRandomLocked": { + "id": "CP14IronDoorRandomLocked", + "name": null, + "description": null, + "parent": "CP14IronDoor", + "suffix": "Random Locked (Complex 5)" + }, + "CP14IronDoorWindowedRandomLocked": { + "id": "CP14IronDoorWindowedRandomLocked", + "name": null, + "description": null, + "parent": "CP14IronDoorWindowed", + "suffix": "Random Locked (Complex 5)" + }, + "CP14FenceGateBigIronRandomLocked": { + "id": "CP14FenceGateBigIronRandomLocked", + "name": null, + "description": null, + "parent": "CP14FenceGateBigIron", + "suffix": "Random Locked (Complex 5)" + }, "CP14WoodenDoorTavernStaff": { "id": "CP14WoodenDoorTavernStaff", "name": null, @@ -7902,33 +8693,40 @@ "parent": "CP14WoodenDoorWindowed", "suffix": "Tavern Hall" }, - "CP14BaseFence": { - "id": "CP14BaseFence", - "name": null, - "description": null, + "CP14BaseFenceBig": { + "id": "CP14BaseFenceBig", + "name": "big fence", + "description": "You definitely need a towel to get to the other side", "parent": "BaseStructure", "suffix": null }, - "CP14BaseFenceStraight": { - "id": "CP14BaseFenceStraight", + "CP14FenceBigWoodenBirch": { + "id": "CP14FenceBigWoodenBirch", "name": null, "description": null, - "parent": "CP14BaseFence", + "parent": "CP14FenceBigWooden", + "suffix": "Wooden Birch" + }, + "CP14FenceBigIron": { + "id": "CP14FenceBigIron", + "name": null, + "description": null, + "parent": "CP14BaseFenceBig", + "suffix": "Iron" + }, + "CP14BaseFenceGateBig": { + "id": "CP14BaseFenceGateBig", + "name": "fence big gate", + "description": "Big man-sized gates. What's your next move?", + "parent": "CP14BaseFenceBig", "suffix": null }, - "CP14BaseFenceCorner": { - "id": "CP14BaseFenceCorner", + "CP14FenceGateBigWoodenBirch": { + "id": "CP14FenceGateBigWoodenBirch", "name": null, "description": null, - "parent": "CP14BaseFence", - "suffix": null - }, - "CP14BaseFenceDoor": { - "id": "CP14BaseFenceDoor", - "name": null, - "description": null, - "parent": "CP14BaseFenceStraight", - "suffix": null + "parent": "CP14FenceGateBigWooden", + "suffix": "Wooden Birch" }, "CP14Cliff": { "id": "CP14Cliff", @@ -7965,6 +8763,55 @@ "parent": "CP14Cliff", "suffix": "Right End" }, + "CP14BaseFence": { + "id": "CP14BaseFence", + "name": "fence", + "description": "A low fence restricting movement in a purely nominal way.", + "parent": "BaseStructure", + "suffix": null + }, + "CP14FenceWoodenBirch": { + "id": "CP14FenceWoodenBirch", + "name": null, + "description": null, + "parent": "CP14FenceWooden", + "suffix": "Wooden Birch" + }, + "CP14BaseFenceGate": { + "id": "CP14BaseFenceGate", + "name": "fence gate", + "description": "You have two paths. You can open the door like a normal person, or you can climb over the door like a funny person.", + "parent": "CP14BaseFence", + "suffix": null + }, + "CP14FenceGateWoodenBirch": { + "id": "CP14FenceGateWoodenBirch", + "name": null, + "description": null, + "parent": "CP14FenceGateWooden", + "suffix": "Wooden Birch" + }, + "CP14BaseFenceWindow": { + "id": "CP14BaseFenceWindow", + "name": "fence window", + "description": "You can slip an object in here, but you sure as hell can't fit through.", + "parent": "BaseStructure", + "suffix": null + }, + "CP14FenceWindowIron": { + "id": "CP14FenceWindowIron", + "name": null, + "description": null, + "parent": "CP14BaseFenceWindow", + "suffix": "Iron" + }, + "CP14Chasm": { + "id": "CP14Chasm", + "name": "chasm", + "description": "You can't even see the bottom.", + "parent": null, + "suffix": null + }, "CP14FloorLava": { "id": "CP14FloorLava", "name": "lava", @@ -7977,14 +8824,21 @@ "name": "water", "description": "A trough of plain water. Clean enough for consumption", "parent": "BaseStructure", - "suffix": null + "suffix": "Optimized, Empty" + }, + "CP14FloorWaterOptimizedDeep": { + "id": "CP14FloorWaterOptimizedDeep", + "name": "deep water", + "description": null, + "parent": "CP14FloorWaterOptimized", + "suffix": "Deep, Air damage" }, "CP14FloorWater": { "id": "CP14FloorWater", "name": null, "description": null, "parent": "CP14FloorWaterOptimized", - "suffix": null + "suffix": "Normal" }, "CP14FloorWaterLilies": { "id": "CP14FloorWaterLilies", @@ -8091,6 +8945,20 @@ "parent": "CP14BaseTree", "suffix": null }, + "CP14FloraTreeDead": { + "id": "CP14FloraTreeDead", + "name": null, + "description": null, + "parent": "CP14BaseTree", + "suffix": null + }, + "CP14FloraTreeDeadSmall": { + "id": "CP14FloraTreeDeadSmall", + "name": null, + "description": null, + "parent": "CP14BaseTree", + "suffix": null + }, "CP14FloraTreeGreenLarge": { "id": "CP14FloraTreeGreenLarge", "name": null, @@ -8112,6 +8980,27 @@ "parent": "CP14BaseLucensTree", "suffix": null }, + "CP14FloraTreeBirchSmall": { + "id": "CP14FloraTreeBirchSmall", + "name": null, + "description": null, + "parent": "CP14BaseTree", + "suffix": "Small" + }, + "CP14FloraTreeBirchMedium": { + "id": "CP14FloraTreeBirchMedium", + "name": null, + "description": null, + "parent": "CP14BaseTree", + "suffix": "Medium" + }, + "CP14FloraTreeBirchLarge": { + "id": "CP14FloraTreeBirchLarge", + "name": null, + "description": null, + "parent": "CP14BaseTree", + "suffix": "Large" + }, "CP14CrystalBase": { "id": "CP14CrystalBase", "name": "quartz", @@ -8119,104 +9008,13 @@ "parent": "BaseRock", "suffix": null }, - "CP14CrystalEmpty": { - "id": "CP14CrystalEmpty", + "CP14CrystalQuartz": { + "id": "CP14CrystalQuartz", "name": null, "description": null, "parent": "CP14CrystalBase", "suffix": "Normal" }, - "CP14CrystalEarth": { - "id": "CP14CrystalEarth", - "name": null, - "description": null, - "parent": "CP14CrystalBase", - "suffix": "Terra" - }, - "CP14CrystalFire": { - "id": "CP14CrystalFire", - "name": null, - "description": null, - "parent": "CP14CrystalBase", - "suffix": "Ignis" - }, - "CP14CrystalWater": { - "id": "CP14CrystalWater", - "name": null, - "description": null, - "parent": "CP14CrystalBase", - "suffix": "Aqua" - }, - "CP14CrystalAir": { - "id": "CP14CrystalAir", - "name": null, - "description": null, - "parent": "CP14CrystalBase", - "suffix": "Aer" - }, - "CP14CrystalOrder": { - "id": "CP14CrystalOrder", - "name": null, - "description": null, - "parent": "CP14CrystalBase", - "suffix": "Ordo" - }, - "CP14CrystalChaos": { - "id": "CP14CrystalChaos", - "name": null, - "description": null, - "parent": "CP14CrystalBase", - "suffix": "Perditio" - }, - "CP14CrystalShardBase": { - "id": "CP14CrystalShardBase", - "name": "quartz shard", - "description": "Natural quartz crystals that can absorb the magical energy of the world around them.", - "parent": "BaseItem", - "suffix": null - }, - "CP14CrystalShardEarth": { - "id": "CP14CrystalShardEarth", - "name": "terra quartz shard", - "description": null, - "parent": "CP14CrystalShardBase", - "suffix": null - }, - "CP14CrystalShardFire": { - "id": "CP14CrystalShardFire", - "name": "ignis quartz shard", - "description": null, - "parent": "CP14CrystalShardBase", - "suffix": null - }, - "CP14CrystalShardWater": { - "id": "CP14CrystalShardWater", - "name": "aqua quartz shard", - "description": null, - "parent": "CP14CrystalShardBase", - "suffix": null - }, - "CP14CrystalShardAir": { - "id": "CP14CrystalShardAir", - "name": "aer quartz shard", - "description": null, - "parent": "CP14CrystalShardBase", - "suffix": null - }, - "CP14CrystalShardOrder": { - "id": "CP14CrystalShardOrder", - "name": "ordo quartz shard", - "description": null, - "parent": "CP14CrystalShardBase", - "suffix": null - }, - "CP14CrystalShardChaos": { - "id": "CP14CrystalShardChaos", - "name": "perditio quartz shard", - "description": null, - "parent": "CP14CrystalShardBase", - "suffix": null - }, "CP14GatherableBase": { "id": "CP14GatherableBase", "name": null, @@ -8245,6 +9043,13 @@ "parent": "CP14GatherablePlantSingleHarvestBase", "suffix": null }, + "CP14PlantCotton": { + "id": "CP14PlantCotton", + "name": "cotton", + "description": "In a way, you're growing future clothes.", + "parent": "CP14GatherablePlantSingleHarvestBase", + "suffix": null + }, "CP14PlantCucumber": { "id": "CP14PlantCucumber", "name": "cucumber", @@ -8805,19 +9610,47 @@ "parent": "CP14TableWooden", "suffix": null }, - "CP14WallmountTorch": { - "id": "CP14WallmountTorch", - "name": "wallmount torch", - "description": "A good, reliable light source. Too bad it doesn't last.", - "parent": "CP14BaseWallmount", + "CP14TableMarble": { + "id": "CP14TableMarble", + "name": "marble table", + "description": "Exquisite white marble table.", + "parent": "CP14TableBase", "suffix": null }, + "CP14BaseTorch": { + "id": "CP14BaseTorch", + "name": null, + "description": "A good, reliable light source. Too bad it doesn't last.", + "parent": null, + "suffix": null + }, + "CP14FloorTorchIgnited": { + "id": "CP14FloorTorchIgnited", + "name": null, + "description": null, + "parent": "CP14FloorTorch", + "suffix": "Ignited" + }, + "CP14FloorTorchAlwaysPowered": { + "id": "CP14FloorTorchAlwaysPowered", + "name": "floor torch", + "description": null, + "parent": "BaseStructure", + "suffix": "Debug, Infinite" + }, + "CP14WallmountTorchIgnited": { + "id": "CP14WallmountTorchIgnited", + "name": null, + "description": null, + "parent": "CP14WallmountTorch", + "suffix": "Ignited" + }, "CP14WallmountTorchAlwaysPowered": { "id": "CP14WallmountTorchAlwaysPowered", - "name": "always powered wallmount torch", + "name": "wallmount torch", "description": null, "parent": "CP14BaseWallmount", - "suffix": null + "suffix": "Debug, Infinite" }, "CP14WallmountBarShelfA": { "id": "CP14WallmountBarShelfA", @@ -8840,41 +9673,6 @@ "parent": "CP14WallmountLampEmpty", "suffix": "Small crystal" }, - "CP14BaseCrushed": { - "id": "CP14BaseCrushed", - "name": null, - "description": "A wall that has not resisted the flow of time and aggressive conditions.", - "parent": "BaseStructure", - "suffix": null - }, - "CP14FrameWoodenCrushedMedium": { - "id": "CP14FrameWoodenCrushedMedium", - "name": "wooden wall frame", - "description": null, - "parent": "CP14BaseCrushed", - "suffix": "CrushedMedium" - }, - "CP14FrameWoodenCrushedLow": { - "id": "CP14FrameWoodenCrushedLow", - "name": "wooden wall frame", - "description": null, - "parent": "CP14BaseCrushed", - "suffix": "CrushedLow" - }, - "CP14WallStonebrickCrushedMedium": { - "id": "CP14WallStonebrickCrushedMedium", - "name": "stone brick wall", - "description": null, - "parent": "CP14BaseCrushed", - "suffix": "CrushedMedium" - }, - "CP14WallStonebrickCrushedLow": { - "id": "CP14WallStonebrickCrushedLow", - "name": "stone brick wall", - "description": null, - "parent": "CP14BaseCrushed", - "suffix": "CrushedLow" - }, "CP14BaseRoof": { "id": "CP14BaseRoof", "name": "roof", @@ -8882,41 +9680,6 @@ "parent": null, "suffix": null }, - "CP14ShuttleWingBase": { - "id": "CP14ShuttleWingBase", - "name": "airship wing", - "description": "Giant webbed wings, capable, along with magic, of holding the heaviest objects in the air.", - "parent": null, - "suffix": null - }, - "CP14ShuttleWingSmallR": { - "id": "CP14ShuttleWingSmallR", - "name": null, - "description": null, - "parent": "CP14ShuttleWingBase", - "suffix": "Right, Small" - }, - "CP14ShuttleWingSmallL": { - "id": "CP14ShuttleWingSmallL", - "name": null, - "description": null, - "parent": "CP14ShuttleWingBase", - "suffix": "Left, Small" - }, - "CP14ShuttleWingBigL": { - "id": "CP14ShuttleWingBigL", - "name": null, - "description": null, - "parent": "CP14ShuttleWingBase", - "suffix": "Left, Big" - }, - "CP14ShuttleWingBigR": { - "id": "CP14ShuttleWingBigR", - "name": null, - "description": null, - "parent": "CP14ShuttleWingBase", - "suffix": "Right, Big" - }, "CP14BaseFireplace": { "id": "CP14BaseFireplace", "name": null, @@ -8973,6 +9736,27 @@ "parent": "CP14DemiplanePassway", "suffix": null }, + "CP14DemiplaneLinkCrystal": { + "id": "CP14DemiplaneLinkCrystal", + "name": "demiplane link crystal", + "description": "Maintains communication with the demiplanes while charged. Causes mosnters from the demiplanes to attack the city. Once it is discharged, the game is over.", + "parent": "BaseStructure", + "suffix": "ONE TO MAP" + }, + "CP14PortalFrameCrystal": { + "id": "CP14PortalFrameCrystal", + "name": "portal frame", + "description": "A structure made of shadow crystals used to create a stable portal to another location.", + "parent": "BaseStructure", + "suffix": null + }, + "CP14DemiplaneCore": { + "id": "CP14DemiplaneCore", + "name": "demiplane core", + "description": "The heart of the demiplane. Your task is to take it out of the demiplane safe and sound and hand it over to the guildmaster.", + "parent": "BaseStructureDynamic", + "suffix": null + }, "CP14PressurePlateBase": { "id": "CP14PressurePlateBase", "name": "pressure plate", @@ -9113,20 +9897,6 @@ "parent": null, "suffix": null }, - "CP14DemiplaneLinkCrystal": { - "id": "CP14DemiplaneLinkCrystal", - "name": "demiplane link crystal", - "description": "Maintains communication with the demiplanes while charged. Causes mosnters from the demiplanes to attack the city. Once it is discharged, the game is over.", - "parent": "BaseStructure", - "suffix": "ONE TO MAP" - }, - "CP14PortalFrameCrystal": { - "id": "CP14PortalFrameCrystal", - "name": "portal frame", - "description": "A structure made of shadow crystals used to create a stable portal to another location.", - "parent": "BaseStructure", - "suffix": null - }, "CP14ChestGeneric": { "id": "CP14ChestGeneric", "name": "Chest", @@ -9169,6 +9939,13 @@ "parent": "CP14BaseWall", "suffix": null }, + "CP14WallMarbleStone": { + "id": "CP14WallMarbleStone", + "name": "marble", + "description": null, + "parent": "CP14WallStone", + "suffix": null + }, "CP14WallStoneIndestructable": { "id": "CP14WallStoneIndestructable", "name": "dense rock", @@ -9190,6 +9967,13 @@ "parent": "CP14BaseWall", "suffix": null }, + "CP14WallDimensit": { + "id": "CP14WallDimensit", + "name": "dimensit wall", + "description": "The solid form of the interdimensional continuum.", + "parent": "CP14BaseWall", + "suffix": null + }, "CP14WallStoneCopperOre": { "id": "CP14WallStoneCopperOre", "name": null, @@ -9218,20 +10002,27 @@ "parent": "CP14WallStone", "suffix": "mithril ore" }, - "CP14BaseWall": { - "id": "CP14BaseWall", - "name": "wall", - "description": "Sturdy enough to cover you from threats or cold winds.", - "parent": "BaseWall", + "CP14WallFrameStonebrick": { + "id": "CP14WallFrameStonebrick", + "name": "stonebrick wall base", + "description": null, + "parent": "CP14BaseWallFrame", "suffix": null }, "CP14WallStonebrick": { "id": "CP14WallStonebrick", - "name": "stone brick wall", + "name": "stonebrick wall", "description": null, "parent": "CP14BaseWall", "suffix": null }, + "CP14WallFrameMarblebrick": { + "id": "CP14WallFrameMarblebrick", + "name": "marblebrick wall base", + "description": null, + "parent": "CP14BaseWallFrame", + "suffix": null + }, "CP14WallMarbleBrick": { "id": "CP14WallMarbleBrick", "name": "marble brick wall", @@ -9239,25 +10030,39 @@ "parent": "CP14BaseWall", "suffix": null }, - "CP14WallBrownbrick": { - "id": "CP14WallBrownbrick", - "name": "brick wall", + "CP14WallStonebrickOld": { + "id": "CP14WallStonebrickOld", + "name": "old stonebrick wall", "description": null, "parent": "CP14BaseWall", "suffix": null }, - "CP14WallCyan": { - "id": "CP14WallCyan", - "name": "cyan wall", - "description": null, - "parent": "CP14BaseWall", + "CP14BaseWall": { + "id": "CP14BaseWall", + "name": "wall", + "description": "Sturdy enough to cover you from threats or cold winds.", + "parent": "BaseWall", "suffix": null }, - "CP14WallSkulls": { - "id": "CP14WallSkulls", - "name": "skulls wall", + "CP14BaseWallFrame": { + "id": "CP14BaseWallFrame", + "name": null, + "description": "This wall is now in an indeterminate state between existence and non-existence.", + "parent": "BaseStructure", + "suffix": null + }, + "CP14WallFrameWoodenBirch": { + "id": "CP14WallFrameWoodenBirch", + "name": null, "description": null, - "parent": "CP14BaseWall", + "parent": "CP14WallFrameWooden", + "suffix": null + }, + "CP14WallWoodenBirch": { + "id": "CP14WallWoodenBirch", + "name": null, + "description": null, + "parent": "CP14WallWooden", "suffix": null }, "CP14WindowDirectional": { @@ -9316,39 +10121,11 @@ "parent": "CP14BaseGameRule", "suffix": null }, - "CP14ZombiesSpawn": { - "id": "CP14ZombiesSpawn", + "CP14TestRaidSpawn": { + "id": "CP14TestRaidSpawn", "name": null, "description": null, - "parent": "CP14BaseStationEventLongDelay", - "suffix": null - }, - "CP14HydrasSpawn": { - "id": "CP14HydrasSpawn", - "name": null, - "description": null, - "parent": "CP14BaseStationEventLongDelay", - "suffix": null - }, - "CP14MosquitoSpawn": { - "id": "CP14MosquitoSpawn", - "name": null, - "description": null, - "parent": "CP14BaseStationEventLongDelay", - "suffix": null - }, - "CP14RabbitsSpawn": { - "id": "CP14RabbitsSpawn", - "name": null, - "description": null, - "parent": "CP14BaseStationEventLongDelay", - "suffix": null - }, - "CP14FrogsSpawn": { - "id": "CP14FrogsSpawn", - "name": null, - "description": null, - "parent": "CP14BaseStationEventLongDelay", + "parent": "CP14BaseStationEventShortDelay", "suffix": null }, "CP14Storm": { @@ -9435,6 +10212,13 @@ "parent": null, "suffix": null }, + "CP14SkillTreeDimensionLoadoutDummy": { + "id": "CP14SkillTreeDimensionLoadoutDummy", + "name": "Dimension", + "description": null, + "parent": null, + "suffix": null + }, "CP14BaseTownObjective": { "id": "CP14BaseTownObjective", "name": null, @@ -9512,6 +10296,13 @@ "parent": "BaseRoomMarker", "suffix": null }, + "CP14DemiplanCoreRoomMarker": { + "id": "CP14DemiplanCoreRoomMarker", + "name": "Demiplane Core room marker", + "description": null, + "parent": "BaseRoomMarker", + "suffix": null + }, "CP14DemiplanEnterRoomMarker": { "id": "CP14DemiplanEnterRoomMarker", "name": "Demiplane enter room marker", @@ -9533,6 +10324,13 @@ "parent": "BaseMindRoleAntag", "suffix": null }, + "CP14MindRoleRaidAntag": { + "id": "CP14MindRoleRaidAntag", + "name": "Raid Antag Role", + "description": null, + "parent": "BaseMindRoleAntag", + "suffix": null + }, "CP14MindRoleVampire": { "id": "CP14MindRoleVampire", "name": "Vampire Role", @@ -9575,20 +10373,6 @@ "parent": null, "suffix": null }, - "CP14ClothingCloakAmuletGold": { - "id": "CP14ClothingCloakAmuletGold", - "name": "gold amulet", - "description": "A gold amulet, a valuable trinket.", - "parent": "CP14ClothingCloakBase", - "suffix": null - }, - "CP14ClothingCloakAmuletMana": { - "id": "CP14ClothingCloakAmuletMana", - "name": "mana amulet", - "description": "A gold amulet with a magical stone inside that helps you conjure more easily.", - "parent": "CP14ClothingCloakBase", - "suffix": null - }, "CP14ClothingCloakMaidArpon": { "id": "CP14ClothingCloakMaidArpon", "name": "maid's apron", @@ -9799,6 +10583,13 @@ "parent": null, "suffix": null }, + "CP14Torch": { + "id": "CP14Torch", + "name": "torch", + "description": "At its core, a stick burning on one side. Used to light up the area.", + "parent": "CP14BaseTorch", + "suffix": null + }, "CP14MagicHealingStaff": { "id": "CP14MagicHealingStaff", "name": "magic healing staff", @@ -9813,13 +10604,6 @@ "parent": null, "suffix": null }, - "CP14BaseCrowbar": { - "id": "CP14BaseCrowbar", - "name": "crowbar", - "description": "A versatile and useful iron, for taking apart floors or other objects.", - "parent": null, - "suffix": null - }, "CP14BaseMop": { "id": "CP14BaseMop", "name": "wooden mop", @@ -9841,13 +10625,6 @@ "parent": null, "suffix": null }, - "CP14WallmountCrystalBase": { - "id": "CP14WallmountCrystalBase", - "name": "sparkling quartz", - "description": "bioluminescent quartz crystals that can take on any color - a very handy light source in a deep caves. Unfortunately, the luminous properties are very hard to preserve.", - "parent": null, - "suffix": null - }, "CP14AstralHaze": { "id": "CP14AstralHaze", "name": "astral haze", @@ -10030,129 +10807,52 @@ ], "suffix": "Tavern Hall, Mirrored" }, - "CP14FenceIronGrilleBase": { - "id": "CP14FenceIronGrilleBase", - "name": "iron grille", - "description": "A strong barrier made of iron bars welded together.", - "parent": "CP14BaseFence", - "suffix": null - }, - "CP14FenceIronGrilleStraight": { - "id": "CP14FenceIronGrilleStraight", + "CP14FenceBigWooden": { + "id": "CP14FenceBigWooden", "name": null, "description": null, "parent": [ - "CP14FenceIronGrilleBase", - "CP14BaseFenceStraight" + "CP14BaseFenceBig", + "CP14BaseFlammableSpreading" ], - "suffix": "Straight" + "suffix": "Wooden" }, - "CP14FenceIronGrilleGate": { - "id": "CP14FenceIronGrilleGate", - "name": "iron grille gate", - "description": "Heavy iron gates in bars. Looks serious.", - "parent": [ - "CP14BaseFenceDoor", - "CP14FenceIronGrilleStraight" - ], - "suffix": null - }, - "CP14FenceIronGrilleWindowBase": { - "id": "CP14FenceIronGrilleWindowBase", - "name": "iron grille window", - "description": "A strong barrier made of iron bars welded together. The absence of the bottom part allows you to slip objects through it.", - "parent": "CP14BaseFence", - "suffix": null - }, - "CP14FenceIronGrilleWindowStraight": { - "id": "CP14FenceIronGrilleWindowStraight", + "CP14FenceGateBigWooden": { + "id": "CP14FenceGateBigWooden", "name": null, "description": null, "parent": [ - "CP14FenceIronGrilleWindowBase", - "CP14BaseFenceStraight" + "CP14BaseFenceGateBig", + "CP14BaseFlammableSpreading" ], - "suffix": "Straight" + "suffix": "Wooden" }, - "CP14BaseFenceWood": { - "id": "CP14BaseFenceWood", - "name": "wooden fence", - "description": "A wooden fence. Don't plant splinters!", + "CP14FenceGateBigIron": { + "id": "CP14FenceGateBigIron", + "name": null, + "description": null, + "parent": "CP14BaseFenceGateBig", + "suffix": "Iron" + }, + "CP14FenceWooden": { + "id": "CP14FenceWooden", + "name": null, + "description": null, "parent": [ "CP14BaseFence", "CP14BaseFlammableSpreading" ], - "suffix": null + "suffix": "Wooden" }, - "CP14FenceWoodStraight": { - "id": "CP14FenceWoodStraight", + "CP14FenceGateWooden": { + "id": "CP14FenceGateWooden", "name": null, "description": null, "parent": [ - "CP14BaseFenceStraight", - "CP14BaseFenceWood" - ], - "suffix": "Straight" - }, - "CP14FenceWoodCorner": { - "id": "CP14FenceWoodCorner", - "name": null, - "description": null, - "parent": [ - "CP14BaseFenceCorner", - "CP14BaseFenceWood" - ], - "suffix": "Corner" - }, - "CP14FenceWoodGate": { - "id": "CP14FenceWoodGate", - "name": "wooden fence gate", - "description": "Big door in a big fence. For big people.", - "parent": [ - "CP14BaseFenceDoor", - "CP14BaseFenceWood" - ], - "suffix": null - }, - "CP14BaseFenceWoodSmall": { - "id": "CP14BaseFenceWoodSmall", - "name": "small wooden fence", - "description": "A small wooden fence. It protects the area from unnecessary visitors who don't have a towel.", - "parent": [ - "CP14BaseFence", + "CP14BaseFenceGate", "CP14BaseFlammableSpreading" ], - "suffix": null - }, - "CP14FenceWoodSmallStraight": { - "id": "CP14FenceWoodSmallStraight", - "name": null, - "description": null, - "parent": [ - "CP14BaseFenceStraight", - "CP14BaseFenceWoodSmall" - ], - "suffix": "Straight" - }, - "CP14FenceWoodSmallCorner": { - "id": "CP14FenceWoodSmallCorner", - "name": null, - "description": null, - "parent": [ - "CP14BaseFenceCorner", - "CP14BaseFenceWoodSmall" - ], - "suffix": "Corner" - }, - "CP14FenceWoodSmallGate": { - "id": "CP14FenceWoodSmallGate", - "name": "small wooden fence gate", - "description": "Looking at this gate, a familiar image pops up in your head. Where's my piggy?", - "parent": [ - "CP14BaseFenceDoor", - "CP14BaseFenceWoodSmall" - ], - "suffix": null + "suffix": "Wooden" }, "CP14GatherablePlantSingleHarvestBase": { "id": "CP14GatherablePlantSingleHarvestBase", @@ -10268,11 +10968,18 @@ "parent": "CP14ClosetBase", "suffix": null }, + "CP14TableBase": { + "id": "CP14TableBase", + "name": null, + "description": null, + "parent": null, + "suffix": null + }, "CP14WoodenTableBase": { "id": "CP14WoodenTableBase", "name": null, "description": null, - "parent": null, + "parent": "CP14TableBase", "suffix": null }, "CP14Target": { @@ -10296,6 +11003,20 @@ "parent": null, "suffix": null }, + "CP14FloorTorch": { + "id": "CP14FloorTorch", + "name": "floor torch", + "description": null, + "parent": "CP14BaseTorch", + "suffix": null + }, + "CP14WallmountTorch": { + "id": "CP14WallmountTorch", + "name": "wallmount torch", + "description": null, + "parent": "CP14BaseTorch", + "suffix": null + }, "CP14WallmountLampEmpty": { "id": "CP14WallmountLampEmpty", "name": "crystal wall lamp", @@ -10338,13 +11059,6 @@ "parent": "CP14BaseWorkbench", "suffix": null }, - "CP14FrameWooden": { - "id": "CP14FrameWooden", - "name": "wooden wall frame", - "description": "Wooden frame for any wooden wall.", - "parent": "CP14BaseFlammableSpreading", - "suffix": null - }, "CP14RoofWooden": { "id": "CP14RoofWooden", "name": "wooden roof", @@ -10418,13 +11132,6 @@ "parent": null, "suffix": null }, - "CP14WoodenChestFrame": { - "id": "CP14WoodenChestFrame", - "name": "wooden chest frame", - "description": "Base for any wooden chest", - "parent": null, - "suffix": null - }, "CP14WoodenChest": { "id": "CP14WoodenChest", "name": "wooden chest", @@ -10463,16 +11170,6 @@ ], "suffix": null }, - "CP14WallWooden": { - "id": "CP14WallWooden", - "name": "wooden wall", - "description": null, - "parent": [ - "CP14BaseWall", - "CP14BaseFlammableSpreading" - ], - "suffix": null - }, "CP14WallWoodenPalisade": { "id": "CP14WallWoodenPalisade", "name": "palisade", @@ -10483,13 +11180,23 @@ ], "suffix": null }, - "CP14WallCardboard": { - "id": "CP14WallCardboard", - "name": "cardboard Wall", - "description": "A thin, flimsy wall made of paper and cardboard. Popular in warm countries.", + "CP14WallFrameWooden": { + "id": "CP14WallFrameWooden", + "name": "wooden wall frame", + "description": null, "parent": [ - "CP14WallWooden", - "CP14BaseFlammableSpreadingStrong" + "CP14BaseWallFrame", + "CP14BaseFlammableSpreading" + ], + "suffix": null + }, + "CP14WallWooden": { + "id": "CP14WallWooden", + "name": "wooden wall", + "description": null, + "parent": [ + "CP14BaseWall", + "CP14BaseFlammableSpreading" ], "suffix": null }, diff --git a/signatures/version1/cla.json b/signatures/version1/cla.json index 0eb563e9b1..9847bf4eef 100644 --- a/signatures/version1/cla.json +++ b/signatures/version1/cla.json @@ -167,6 +167,46 @@ "created_at": "2025-05-08T08:40:36Z", "repoId": 778936029, "pullRequestNo": 1257 + }, + { + "name": "DeLTaAlarm0", + "id": 212058224, + "comment_id": 2889135851, + "created_at": "2025-05-18T18:15:50Z", + "repoId": 778936029, + "pullRequestNo": 1275 + }, + { + "name": "PhantornRU", + "id": 41479614, + "comment_id": 2889843902, + "created_at": "2025-05-19T07:00:57Z", + "repoId": 778936029, + "pullRequestNo": 1281 + }, + { + "name": "TheKittehJesus", + "id": 29379890, + "comment_id": 2895445816, + "created_at": "2025-05-20T18:35:20Z", + "repoId": 778936029, + "pullRequestNo": 1288 + }, + { + "name": "Cu1r", + "id": 123379145, + "comment_id": 2896867858, + "created_at": "2025-05-21T07:17:51Z", + "repoId": 778936029, + "pullRequestNo": 1292 + }, + { + "name": "Soupkilove", + "id": 186358809, + "comment_id": 2899589456, + "created_at": "2025-05-22T00:41:10Z", + "repoId": 778936029, + "pullRequestNo": 1299 } ] } \ No newline at end of file