diff --git a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs
index 4776386c1d..4d9fdcec15 100644
--- a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs
+++ b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs
@@ -136,6 +136,7 @@ public sealed partial class GuidebookWindow : FancyWindow, ILinkClickHandler
TreeItem? parent = forcedRoot == null ? null : AddEntry(forcedRoot, null, addedEntries);
foreach (var entry in GetSortedEntries(roots))
{
+ if (!entry.CrystallPunkAllowed) continue; //CrystallPunk guidebook filter
AddEntry(entry.Id, parent, addedEntries);
}
Tree.SetAllExpanded(true);
diff --git a/Content.Client/Guidebook/GuideEntry.cs b/Content.Client/Guidebook/GuideEntry.cs
index b7b3b3309e..3f9ce31ad0 100644
--- a/Content.Client/Guidebook/GuideEntry.cs
+++ b/Content.Client/Guidebook/GuideEntry.cs
@@ -39,6 +39,9 @@ public class GuideEntry
/// If the guide is the child of some other guide, the order simply determined by the order of children in .
///
[DataField("priority")] public int Priority = 0;
+
+ [DataField]
+ public bool CrystallPunkAllowed = false;
}
[Prototype("guideEntry")]
diff --git a/Content.Client/Guidebook/GuidebookSystem.cs b/Content.Client/Guidebook/GuidebookSystem.cs
index cb13d4ca6e..57fa8d12af 100644
--- a/Content.Client/Guidebook/GuidebookSystem.cs
+++ b/Content.Client/Guidebook/GuidebookSystem.cs
@@ -13,6 +13,7 @@ using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Map;
using Robust.Shared.Player;
+using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
@@ -31,6 +32,8 @@ public sealed class GuidebookSystem : EntitySystem
[Dependency] private readonly SharedPointLightSystem _pointLightSystem = default!;
[Dependency] private readonly TagSystem _tags = default!;
+ [Dependency] private readonly IPrototypeManager _proto = default!; //CrystallPunk guidebook filter
+
public event Action, List?, string?, bool, string?>? OnGuidebookOpen;
public const string GuideEmbedTag = "GuideEmbeded";
@@ -39,6 +42,7 @@ public sealed class GuidebookSystem : EntitySystem
///
public override void Initialize()
{
+ SubscribeLocalEvent(OnCrystallPunkMapInit); //CrystallPunk guidebook filter
SubscribeLocalEvent>(OnGetVerbs);
SubscribeLocalEvent(OnInteract);
@@ -48,6 +52,21 @@ public sealed class GuidebookSystem : EntitySystem
OnGuidebookControlsTestGetAlternateVerbs);
}
+ //CrystallPunk guidebook filter
+ private void OnCrystallPunkMapInit(Entity ent, ref MapInitEvent args)
+ {
+ foreach (var guide in ent.Comp.Guides)
+ {
+ var guideProto = _proto.Index(guide);
+ if (!guideProto.CrystallPunkAllowed) //REMOVE unnecessary guidebook
+ {
+ RemComp(ent);
+ return;
+ }
+ }
+ }
+ //CrystallPunk guidebook filter end
+
///
/// Gets a user entity to use for verbs and examinations. If the player has no attached entity, this will use a
/// dummy client-side entity so that users can still use the guidebook when not attached to anything (e.g., in the
diff --git a/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs
index 6e6373e10b..1508f326d8 100644
--- a/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs
+++ b/Content.Server/Chemistry/EntitySystems/SolutionHeaterSystem.cs
@@ -1,3 +1,5 @@
+using Content.Server._CP14.Temperature;
+using Content.Server.Atmos.Components;
using Content.Server.Chemistry.Components;
using Content.Server.Chemistry.Containers.EntitySystems;
using Content.Server.Power.Components;
@@ -92,5 +94,26 @@ public sealed class SolutionHeaterSystem : EntitySystem
}
}
}
+
+ //CrystallPunk bonfire
+ var flammablequery = EntityQueryEnumerator();
+ while (flammablequery.MoveNext(out _, out var heater, out var placer, out var flammable))
+ {
+ foreach (var heatingEntity in placer.PlacedEntities)
+ {
+ if (!flammable.OnFire)
+ return;
+
+ if (!TryComp(heatingEntity, out var container))
+ continue;
+
+ var energy = flammable.FireStacks * frameTime * 300;
+ foreach (var (_, soln) in _solutionContainer.EnumerateSolutions((heatingEntity, container)))
+ {
+ _solutionContainer.AddThermalEnergy(soln, energy);
+ }
+ }
+ }
+ //CrystallPunk bonfire end
}
}
diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs
index 6c9e99e5f3..01a5dcb274 100644
--- a/Content.Server/Temperature/Systems/TemperatureSystem.cs
+++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs
@@ -122,8 +122,12 @@ public sealed class TemperatureSystem : EntitySystem
public void ChangeHeat(EntityUid uid, float heatAmount, bool ignoreHeatResistance = false,
TemperatureComponent? temperature = null)
{
- if (!Resolve(uid, ref temperature))
+ //CrystallPunk may try place on heater and entity, and solutions
+ //if (!Resolve(uid, ref temperature))
+ // return;
+ if (temperature == null)
return;
+ //CrystallPunk may try place on heater and entity, and solutions END
if (!ignoreHeatResistance)
{
diff --git a/Content.Server/_CP14/Temperature/CP14FlammableEntityHeaterComponent.cs b/Content.Server/_CP14/Temperature/CP14FlammableEntityHeaterComponent.cs
index 0a455ad42f..d75278aa8e 100644
--- a/Content.Server/_CP14/Temperature/CP14FlammableEntityHeaterComponent.cs
+++ b/Content.Server/_CP14/Temperature/CP14FlammableEntityHeaterComponent.cs
@@ -9,5 +9,5 @@ namespace Content.Server._CP14.Temperature;
public sealed partial class CP14FlammableEntityHeaterComponent : Component
{
[DataField]
- public float EnergyPerFireStack = 1000f;
+ public float EnergyPerFireStack = 300f;
}
diff --git a/Content.Server/_CP14/Temperature/CP14FlammableSolutionHeaterComponent.cs b/Content.Server/_CP14/Temperature/CP14FlammableSolutionHeaterComponent.cs
new file mode 100644
index 0000000000..218a81afb0
--- /dev/null
+++ b/Content.Server/_CP14/Temperature/CP14FlammableSolutionHeaterComponent.cs
@@ -0,0 +1,11 @@
+using Content.Server.Chemistry.EntitySystems;
+
+namespace Content.Server._CP14.Temperature;
+
+///
+/// Adds thermal energy from FlammableComponent to solutions placed on it.
+///
+[RegisterComponent, Access(typeof(SolutionHeaterSystem))]
+public sealed partial class CP14FlammableSolutionHeaterComponent : Component
+{
+}
diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs
index 4670f2dbf8..17dca959ff 100644
--- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs
+++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs
@@ -4,6 +4,8 @@ using System.Linq;
using Content.Shared.ActionBlocker;
using Content.Shared.Administration;
using Content.Shared.Administration.Managers;
+using Content.Shared.Chemistry.Components;
+using Content.Shared.Chemistry.Components.SolutionManager;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.Destructible;
using Content.Shared.DoAfter;
@@ -358,6 +360,9 @@ public abstract class SharedStorageSystem : EntitySystem
if (HasComp(uid))
return;
+ if (HasComp(uid) && !storageComp.CP14CanStorageSolutionManagers) //CP14 bandage
+ return;
+
PlayerInsertHeldEntity(uid, args.User, storageComp);
// Always handle it, even if insertion fails.
// We don't want to trigger any AfterInteract logic here.
diff --git a/Content.Shared/Storage/StorageComponent.cs b/Content.Shared/Storage/StorageComponent.cs
index ef682dd4f9..e712d167e5 100644
--- a/Content.Shared/Storage/StorageComponent.cs
+++ b/Content.Shared/Storage/StorageComponent.cs
@@ -124,6 +124,14 @@ namespace Content.Shared.Storage
[DataField, ViewVariables(VVAccess.ReadWrite)]
public StorageDefaultOrientation? DefaultStorageOrientation;
+ ///
+ /// CrystallPunk bandage. We need to put in both objects and liquids.
+ /// This avoids situations where a player puts a bucket into the cauldron
+ /// instead of pouring liquid from the bucket into the cauldron.
+ ///
+ [DataField]
+ public bool CP14CanStorageSolutionManagers = true;
+
[Serializable, NetSerializable]
public enum StorageUiKey : byte
{
diff --git a/Resources/Locale/en-US/_CP14/flavors/flavor-profiles.ftl b/Resources/Locale/en-US/_CP14/flavors/flavor-profiles.ftl
new file mode 100644
index 0000000000..26aded1213
--- /dev/null
+++ b/Resources/Locale/en-US/_CP14/flavors/flavor-profiles.ftl
@@ -0,0 +1,8 @@
+# Base
+
+cp14-flavor-base-metallic = metallic
+cp14-flavor-base-invigorating = invigorating
+
+# Complex
+
+cp14-flavor-complex-water = like water
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/guidebook/guides.ftl b/Resources/Locale/en-US/_CP14/guidebook/guides.ftl
new file mode 100644
index 0000000000..03886f7db9
--- /dev/null
+++ b/Resources/Locale/en-US/_CP14/guidebook/guides.ftl
@@ -0,0 +1,6 @@
+cp14-guide-entry-russian = Russian guidebook
+cp14-guide-entry-english = English guidebook
+
+cp14-guide-entry-alchemy = Alchemy
+cp14-guide-entry-basic-alchemy = Basic alchemical reagents
+cp14-guide-entry-biological = Biological
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/markings/human-hair.ftl b/Resources/Locale/en-US/_CP14/markings/human-hair.ftl
index 5d69a94c93..f77fb5386c 100644
--- a/Resources/Locale/en-US/_CP14/markings/human-hair.ftl
+++ b/Resources/Locale/en-US/_CP14/markings/human-hair.ftl
@@ -1,12 +1,12 @@
-marking-CP14marking-CP14HumanHair80s = Shoulder Length
+marking-CP14HumanHair80s = Shoulder Length
marking-CP14HumanHairA = Short Haircut
marking-CP14HumanHairAntenna = Unruly Strands
marking-CP14HumanHairB = Boring Parting
-marking-CP14HP14HumanHairBedhead = Bedhead
-marking-CP14HP14HumanHairBedheadV2 = Bedhead 2
+marking-CP14HumanHairBedhead = Bedhead
+marking-CP14HumanHairBedheadV2 = Bedhead 2
marking-CP14HumanHairBeeHive = Aristocratic
-marking-CP14HP14HumanHairBigBraid = Full Braid
+marking-CP14HumanHairBigBraid = Full Braid
marking-CP14HumanHairBigDoubleBun = Double Bun
-marking-CP14HumanHP14HumanHairBigPompadour = Bard
-marking-CP14HumanHP14HumanHairCrazyBald = CrazyBald
+marking-CP14HumanHumanHairBigPompadour = Bard
+marking-CP14HumanHumanHairCrazyBald = CrazyBald
marking-CP14HumanHairBob = Bob
diff --git a/Resources/Locale/en-US/_CP14/reagents/meta/basic-alchemy.ftl b/Resources/Locale/en-US/_CP14/reagents/meta/basic-alchemy.ftl
new file mode 100644
index 0000000000..e36b7fbf0a
--- /dev/null
+++ b/Resources/Locale/en-US/_CP14/reagents/meta/basic-alchemy.ftl
@@ -0,0 +1,8 @@
+cp14-reagent-name-vital-extract = vital extract
+cp14-reagent-desc-vital-extract = Liquid, unprocessed embodiment of the desire for life. In small doses can be used as a weak medicine, but in large doses can have irreversible effects on the body.
+
+cp14-reagent-vital-extract-feeling-1 = You feel your heart begin to beat more often.
+cp14-reagent-vital-extract-feeling-2 = You feel your whole body tingle.
+cp14-reagent-vital-extract-feeling-3 = Your whole body starts to pinch and scratch.
+cp14-reagent-vital-extract-feeling-4 = You feel strange...
+cp14-reagent-vital-extract-feeling-5 = You feel as if something inside you is growing and dying...
diff --git a/Resources/Locale/en-US/_CP14/reagents/meta/biological.ftl b/Resources/Locale/en-US/_CP14/reagents/meta/biological.ftl
new file mode 100644
index 0000000000..45915c66aa
--- /dev/null
+++ b/Resources/Locale/en-US/_CP14/reagents/meta/biological.ftl
@@ -0,0 +1,2 @@
+cp14-reagent-name-blood = blood
+cp14-reagent-desc-blood = The life energy of a living warm-blooded creatures.
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/reagents/meta/consumable/drink/drinks.ftl b/Resources/Locale/en-US/_CP14/reagents/meta/consumable/drink/drinks.ftl
new file mode 100644
index 0000000000..8ffcb15bb4
--- /dev/null
+++ b/Resources/Locale/en-US/_CP14/reagents/meta/consumable/drink/drinks.ftl
@@ -0,0 +1,2 @@
+cp14-reagent-name-water = water
+cp14-reagent-desc-water = A colorless liquid so essential to the survival of living things.
\ No newline at end of file
diff --git a/Resources/Locale/en-US/_CP14/reagents/meta/physical-desc.ftl b/Resources/Locale/en-US/_CP14/reagents/meta/physical-desc.ftl
new file mode 100644
index 0000000000..9f02823119
--- /dev/null
+++ b/Resources/Locale/en-US/_CP14/reagents/meta/physical-desc.ftl
@@ -0,0 +1,2 @@
+cp14-reagent-physical-desc-ferrous = ferrous
+cp14-reagent-physical-desc-scarlet = shimmering scarlet
\ No newline at end of file
diff --git a/Resources/Locale/nl-NL/gereedschap.ftl b/Resources/Locale/nl-NL/gereedschap.ftl
deleted file mode 100644
index e9d8697102..0000000000
--- a/Resources/Locale/nl-NL/gereedschap.ftl
+++ /dev/null
@@ -1,10 +0,0 @@
-ent-Wrench = moersleutel
- .desc = Een veelgebruikt stuk gereedschap voor montage en demontage.
- .suffix = Test
-
-ent-Crowbar = koevoet
- .desc = Een multifunctioneel stuk gereedschap om deuren open te wrikken en interdimensionale indringers te bestrijden.
-
-ent-CrowbarRed =
- .desc = Een multifunctioneel stuk gereedschap om deuren open te wrikken en interdimensionale indringers te bestrijden. Deze is bedoeld voor Noodgevallen.
- .suffix = Noodgeval
diff --git a/Resources/Locale/ru-RU/_CP14/flavors/flavor-profiles.ftl b/Resources/Locale/ru-RU/_CP14/flavors/flavor-profiles.ftl
new file mode 100644
index 0000000000..fe25e2c787
--- /dev/null
+++ b/Resources/Locale/ru-RU/_CP14/flavors/flavor-profiles.ftl
@@ -0,0 +1,8 @@
+# Basic
+
+cp14-flavor-base-metallic = металлически
+cp14-flavor-base-invigorating = живительно
+
+# Complex
+
+cp14-flavor-complex-water = как вода
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/guidebook/guides.ftl b/Resources/Locale/ru-RU/_CP14/guidebook/guides.ftl
new file mode 100644
index 0000000000..b45b825310
--- /dev/null
+++ b/Resources/Locale/ru-RU/_CP14/guidebook/guides.ftl
@@ -0,0 +1,6 @@
+cp14-guide-entry-russian = Русское руководство
+cp14-guide-entry-english = Английское руководство
+
+cp14-guide-entry-alchemy = Алхимия
+cp14-guide-entry-basic-alchemy = Базовые алхимические элементы
+cp14-guide-entry-biological = Биологические вещества
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/reagents/meta/basic-alchemy.ftl b/Resources/Locale/ru-RU/_CP14/reagents/meta/basic-alchemy.ftl
new file mode 100644
index 0000000000..cfdf1b19ef
--- /dev/null
+++ b/Resources/Locale/ru-RU/_CP14/reagents/meta/basic-alchemy.ftl
@@ -0,0 +1,8 @@
+cp14-reagent-name-vital-extract = живительный экстракт
+cp14-reagent-desc-vital-extract = Жидкое, необработанное воплощение стремления к жизни. В малых дозах может использоваться как слабое лекарство, но при больших дозах может оказать необратимые последствия на организм.
+
+cp14-reagent-vital-extract-feeling-1 = Вы чувствуете, как ваше сердце начинает биться чаще
+cp14-reagent-vital-extract-feeling-2 = Вы чувствуете дрожь во всем теле
+cp14-reagent-vital-extract-feeling-3 = Все ваше тело начинает щипать и почесывать
+cp14-reagent-vital-extract-feeling-4 = Вы чувствуете себя странно...
+cp14-reagent-vital-extract-feeling-5 = Вы чувствуете словно внутри вам что-то растет и умирает...
diff --git a/Resources/Locale/ru-RU/_CP14/reagents/meta/biological.ftl b/Resources/Locale/ru-RU/_CP14/reagents/meta/biological.ftl
new file mode 100644
index 0000000000..e171174101
--- /dev/null
+++ b/Resources/Locale/ru-RU/_CP14/reagents/meta/biological.ftl
@@ -0,0 +1,5 @@
+cp14-reagent-name-blood = кровь
+cp14-reagent-desc-blood = Жизненная энергия живого теплокровного существа.
+
+cp14-reagent-name-bloodgrasssap = сок кровьтравы
+cp14-reagent-desc-bloodgrasssap = Выжимка из повсеместно растущей кровьтравы. Не имеет особых примечательных качеств, но при должной сноровке может быть приготовлена в питательную пищу.
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/reagents/meta/consumable/drink/drinks.ftl b/Resources/Locale/ru-RU/_CP14/reagents/meta/consumable/drink/drinks.ftl
new file mode 100644
index 0000000000..9096a172bd
--- /dev/null
+++ b/Resources/Locale/ru-RU/_CP14/reagents/meta/consumable/drink/drinks.ftl
@@ -0,0 +1,2 @@
+cp14-reagent-name-water = вода
+cp14-reagent-desc-water = Бесцветная жидкость, столь необходимая для выживания живых существ.
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/_CP14/reagents/meta/physical-desc.ftl b/Resources/Locale/ru-RU/_CP14/reagents/meta/physical-desc.ftl
new file mode 100644
index 0000000000..ea4d0b2213
--- /dev/null
+++ b/Resources/Locale/ru-RU/_CP14/reagents/meta/physical-desc.ftl
@@ -0,0 +1,2 @@
+cp14-reagent-physical-desc-ferrous = черно-металлическое
+cp14-reagent-physical-desc-scarlet = мерцающе алое
\ No newline at end of file
diff --git a/Resources/Locale/ru-RU/chemistry/components/injector-component.ftl b/Resources/Locale/ru-RU/chemistry/components/injector-component.ftl
new file mode 100644
index 0000000000..3526b47059
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/components/injector-component.ftl
@@ -0,0 +1,29 @@
+## UI
+
+injector-draw-text = Забор
+injector-inject-text = Введение
+injector-invalid-injector-toggle-mode = Неверный режим
+injector-volume-label = Объём: [color=white]{ $currentVolume }/{ $totalVolume }[/color]
+ Режим: [color=white]{ $modeString }[/color] ([color=white]{ $transferVolume } ед.[/color])
+
+## Entity
+
+injector-component-drawing-text = Содержимое набирается
+injector-component-injecting-text = Содержимое вводится
+injector-component-cannot-transfer-message = Вы не можете ничего переместить в { $target }!
+injector-component-cannot-draw-message = Вы не можете ничего набрать из { $target }!
+injector-component-cannot-inject-message = Вы не можете ничего ввести в { $target }!
+injector-component-inject-success-message = Вы вводите { $amount }ед. в { $target }!
+injector-component-transfer-success-message = Вы перемещаете { $amount }ед. в { $target }.
+injector-component-draw-success-message = Вы набираете { $amount }ед. из { $target }.
+injector-component-target-already-full-message = { $target } полон!
+injector-component-target-is-empty-message = { $target } пуст!
+injector-component-cannot-toggle-draw-message = Больше не набрать!
+injector-component-cannot-toggle-inject-message = Нечего вводить!
+
+## mob-inject doafter messages
+
+injector-component-drawing-user = Вы начинаете набирать шприц.
+injector-component-injecting-user = Вы начинаете вводить содержимое шприца.
+injector-component-drawing-target = { CAPITALIZE($user) } начинает набирать шприц из вас!
+injector-component-injecting-target = { CAPITALIZE($user) } начинает вводить содержимое шприца в вас!
diff --git a/Resources/Locale/ru-RU/chemistry/components/mixing-component.ftl b/Resources/Locale/ru-RU/chemistry/components/mixing-component.ftl
new file mode 100644
index 0000000000..89ecf45c87
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/components/mixing-component.ftl
@@ -0,0 +1,13 @@
+# Types
+mixing-verb-default-mix = смешивание
+mixing-verb-default-grind = измельчение
+mixing-verb-default-juice = выжимание
+mixing-verb-default-condense = конденсирование
+mixing-verb-centrifuge = центрифугирование
+mixing-verb-electrolysis = электролиз
+mixing-verb-holy = благословение
+
+## Entity
+
+default-mixing-success = Вы смешиваете { $mixed } при помощи { $mixer }
+bible-mixing-success = Вы благословляете { $mixed } при помощи { $mixer }
diff --git a/Resources/Locale/ru-RU/chemistry/components/rehydratable-component.ftl b/Resources/Locale/ru-RU/chemistry/components/rehydratable-component.ftl
new file mode 100644
index 0000000000..843874a1fb
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/components/rehydratable-component.ftl
@@ -0,0 +1 @@
+rehydratable-component-expands-message = { $owner } расширяется!
diff --git a/Resources/Locale/ru-RU/chemistry/components/scoopable-component.ftl b/Resources/Locale/ru-RU/chemistry/components/scoopable-component.ftl
new file mode 100644
index 0000000000..1f0c1a62b5
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/components/scoopable-component.ftl
@@ -0,0 +1 @@
+scoopable-component-popup = Вы зачёрпываете { $scooped } при помощи { $beaker }.
diff --git a/Resources/Locale/ru-RU/chemistry/components/solution-container-mixer-component.ftl b/Resources/Locale/ru-RU/chemistry/components/solution-container-mixer-component.ftl
new file mode 100644
index 0000000000..6db7f71c92
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/components/solution-container-mixer-component.ftl
@@ -0,0 +1,3 @@
+solution-container-mixer-activate = Активировать
+solution-container-mixer-no-power = Нет энергии!
+solution-container-mixer-popup-nothing-to-mix = Внутри пусто!
diff --git a/Resources/Locale/ru-RU/chemistry/components/solution-scanner-component.ftl b/Resources/Locale/ru-RU/chemistry/components/solution-scanner-component.ftl
new file mode 100644
index 0000000000..e58b5bf43c
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/components/solution-scanner-component.ftl
@@ -0,0 +1,5 @@
+scannable-solution-verb-text = Раствор
+scannable-solution-verb-message = Изучить химический состав.
+scannable-solution-main-text = Содержит следующие химические вещества:
+scannable-solution-empty-container = Не содержит химических веществ.
+scannable-solution-chemical = - { $amount }ед. [color={ $color }]{ $type }[/color]
diff --git a/Resources/Locale/ru-RU/chemistry/components/solution-spike-component.ftl b/Resources/Locale/ru-RU/chemistry/components/solution-spike-component.ftl
new file mode 100644
index 0000000000..1b70b4c070
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/components/solution-spike-component.ftl
@@ -0,0 +1,3 @@
+spike-solution-generic = Вы толчёте { $spiked-entity } в { $spike-entity }.
+spike-solution-empty-generic = Вам не удаётся разбить { $spike-entity } в { $spiked-entity }.
+spike-solution-egg = Вы разбиваете { $spike-entity } в { $spiked-entity }.
diff --git a/Resources/Locale/ru-RU/chemistry/components/solution-transfer-component.ftl b/Resources/Locale/ru-RU/chemistry/components/solution-transfer-component.ftl
new file mode 100644
index 0000000000..36ffc60219
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/components/solution-transfer-component.ftl
@@ -0,0 +1,20 @@
+### Solution transfer component
+
+comp-solution-transfer-fill-normal = Вы перемещаете { $amount } ед. из { $owner } в { $target }.
+comp-solution-transfer-fill-fully = Вы наполняете { $target } до краёв, переместив { $amount } ед. из { $owner }.
+comp-solution-transfer-transfer-solution = Вы перемещаете { $amount } ед. в { $target }.
+
+## Displayed when trying to transfer to a solution, but either the giver is empty or the taker is full
+
+comp-solution-transfer-is-empty = { $target } пуст!
+comp-solution-transfer-is-full = { $target } полон!
+
+## Displayed in change transfer amount verb's name
+
+comp-solution-transfer-verb-custom-amount = Своё кол-во
+comp-solution-transfer-verb-amount = { $amount } ед.
+comp-solution-transfer-verb-toggle = Переключить на { $amount } ед.
+
+## Displayed after you successfully change a solution's amount using the BUI
+
+comp-solution-transfer-set-amount = Перемещаемое количество установлено на { $amount } ед.
diff --git a/Resources/Locale/ru-RU/chemistry/components/transformable-container-component.ftl b/Resources/Locale/ru-RU/chemistry/components/transformable-container-component.ftl
new file mode 100644
index 0000000000..de88f9fb97
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/components/transformable-container-component.ftl
@@ -0,0 +1 @@
+transformable-container-component-glass = стакан { $name }
diff --git a/Resources/Locale/ru-RU/chemistry/solution/components/shared-solution-container-component.ftl b/Resources/Locale/ru-RU/chemistry/solution/components/shared-solution-container-component.ftl
new file mode 100644
index 0000000000..e99be545dd
--- /dev/null
+++ b/Resources/Locale/ru-RU/chemistry/solution/components/shared-solution-container-component.ftl
@@ -0,0 +1,8 @@
+shared-solution-container-component-on-examine-empty-container = Не содержит вещества.
+shared-solution-container-component-on-examine-main-text = Содержит [color={ $color }]{ $desc }[/color] { $wordedAmount }
+shared-solution-container-component-on-examine-worded-amount-one-reagent = вещество.
+shared-solution-container-component-on-examine-worded-amount-multiple-reagents = смесь веществ.
+examinable-solution-has-recognizable-chemicals = В этом растворе вы можете распознать { $recognizedString }.
+examinable-solution-recognized-first = [color={ $color }]{ $chemical }[/color]
+examinable-solution-recognized-next = , [color={ $color }]{ $chemical }[/color]
+examinable-solution-recognized-last = и [color={ $color }]{ $chemical }[/color]
diff --git a/Resources/Locale/ru-RU/flavors/flavor-profiles.ftl b/Resources/Locale/ru-RU/flavors/flavor-profiles.ftl
new file mode 100644
index 0000000000..38ce71ebb9
--- /dev/null
+++ b/Resources/Locale/ru-RU/flavors/flavor-profiles.ftl
@@ -0,0 +1,267 @@
+flavor-profile = На вкус { $flavor }.
+flavor-profile-multiple = На вкус { $flavors } и { $lastFlavor }.
+flavor-profile-unknown = Вкус неописуем.
+
+# Base flavors. Use these when you can't think of anything.
+# These are specifically flavors that are placed in front
+# of other flavors. When the flavors are processed, these
+# will go in front so you don't get this like "Tastes like tomatoes, sweet and spicy",
+# instead, you get "Tastes sweet, spicy and like tomatoes".
+
+flavor-base-savory = жгуче
+flavor-base-sweet = сладко
+flavor-base-salty = солено
+flavor-base-sour = кисло
+flavor-base-bitter = горько
+flavor-base-spicy = остро
+flavor-base-metallic = металлически
+flavor-base-meaty = мясисто
+flavor-base-fishy = рыбно
+flavor-base-crabby = крабово
+flavor-base-cheesy = сырно
+flavor-base-funny = забавно
+flavor-base-tingly = покалывающе
+flavor-base-acid = кислотно
+flavor-base-leafy = лиственно
+flavor-base-minty = мятно
+flavor-base-nutty = орехово
+flavor-base-chalky = мелово
+flavor-base-oily = масляно
+flavor-base-peppery = перечно
+flavor-base-slimy = скользко
+flavor-base-magical = волшебно
+flavor-base-fiber = волокнисто
+flavor-base-cold = холодно
+flavor-base-spooky = страшно
+flavor-base-smokey = дымчато
+flavor-base-fruity = фруктово
+flavor-base-creamy = сливочно
+flavor-base-fizzy = шипуче
+flavor-base-shocking = шокирующе
+flavor-base-cheap = дёшево
+flavor-base-piquant = пикантно
+flavor-base-sharp = резко
+flavor-base-syrupy = сиропово
+flavor-base-spaceshroom = таинственно
+flavor-base-clean = чисто
+flavor-base-alkaline = щёлочно
+flavor-base-holy = свято
+flavor-base-horrible = ужасно
+# lmao
+flavor-base-terrible = ужасающе
+flavor-base-mindful = разумно
+
+# Complex flavors. Put a flavor here when you want something that's more
+# specific.
+
+flavor-complex-nothing = как ничто
+flavor-complex-honey = как мёд
+
+# Food-specific flavors.
+
+flavor-complex-ketchunaise = как помидоры и майонез
+flavor-complex-mayonnaise = как майонез
+flavor-complex-mustard = как горчица
+
+## Food chemicals. In case you get something that has this inside.
+
+flavor-complex-nutriment = как питательные вещества
+flavor-complex-vitamin = как витамины
+flavor-complex-protein = как протеины
+
+## Generic food taste. This should be replaced with an actual flavor profile,
+## if you have food that looks like this.
+
+flavor-complex-food = как еда
+
+## Basic foodstuffs (ingredients, generic flavors)
+
+flavor-complex-bun = как булочка
+flavor-complex-bread = как хлеб
+flavor-complex-batter = как тесто для торта
+flavor-complex-butter = как сливочное масло
+flavor-complex-egg = как яйца
+flavor-complex-raw-egg = как сырые яйца
+flavor-complex-bacon = как бекон
+flavor-complex-chicken = как курочка
+flavor-complex-duck = как уточка
+flavor-complex-chocolate = как шоколад
+flavor-complex-pasta = как паста
+flavor-complex-rice = как рис
+flavor-complex-oats = как овёс
+flavor-complex-jelly = как желе
+flavor-complex-soy = как соя
+flavor-complex-ice-cream = как мороженое
+flavor-complex-dough = как тесто
+flavor-complex-sweet-dough = как сладкое тесто
+flavor-complex-tofu = как тофу
+flavor-complex-miso = как мисо
+flavor-complex-lemoon = как лавр
+flavor-complex-muffin = как маффин
+flavor-complex-peas = как горох
+flavor-complex-pineapple = как ананас
+flavor-complex-onion = как лук
+flavor-complex-eggplant = как баклажан
+flavor-complex-carrot = как морковь
+flavor-complex-cabbage = как капуста
+flavor-complex-potatoes = как картофель
+flavor-complex-pumpkin = как тыква
+flavor-complex-mushroom = как грибы
+flavor-complex-tomato = как помидоры
+flavor-complex-corn = как кукуруза
+flavor-complex-banana = как бананы
+flavor-complex-apple = как яблоки
+flavor-complex-cotton = как хлопок
+flavor-complex-bungo = как бунго
+flavor-complex-raisins = как сушеный виноград
+flavor-complex-orange = как апельсины
+flavor-complex-watermelon = как арбуз
+flavor-complex-garlic = как чеснок
+flavor-complex-grape = как виноград
+flavor-complex-berry = как ягоды
+flavor-complex-meatballs = как фрикадельки
+flavor-complex-nettles = как крапива
+flavor-complex-jungle = как джунгли
+flavor-complex-vegetables = как овощи
+
+## Complex foodstuffs (cooked foods, joke flavors, etc)
+
+flavor-complex-pink = как розовый
+flavor-complex-curry = как карри
+flavor-complex-borsch-1 = как борщ
+flavor-complex-borsch-2 = как бортщ
+flavor-complex-borsch-3 = как борстч
+flavor-complex-borsch-4 = как борш
+flavor-complex-borsch-5 = как борщч
+flavor-complex-mre-brownie = как дешевый брауни
+flavor-complex-fortune-cookie = как случайность
+flavor-complex-nutribrick = как будто вы воюете в джунглях.
+flavor-complex-cheap-noodles = как дешёвая лапша
+flavor-complex-syndi-cakes = как сытный фруктовый пирог
+flavor-complex-sus-jerky = как сас
+flavor-complex-boritos = как гейминг
+flavor-complex-nachos = как начос
+flavor-complex-donk = как дешёвая пицца
+flavor-complex-copypasta = как повторяющаяся шутка
+flavor-complex-memory-leek = как форк-бомба
+flavor-complex-bad-joke = как плохая шутка
+flavor-complex-gunpowder = как порох
+flavor-complex-validhunting = как валидхантинг
+
+# Drink-specific flavors.
+
+flavor-complex-people = как люди
+flavor-complex-cat = как кошка
+flavor-complex-homerun = как хоум-ран
+flavor-complex-grass = как трава
+flavor-complex-flare = как дымовая шашка
+flavor-complex-cobwebs = как паутина
+flavor-complex-sadness = как тоска
+flavor-complex-hope = как надежда
+flavor-complex-chaos = как хаос
+flavor-complex-squirming = как шевеление
+flavor-complex-electrons = как электроны
+flavor-complex-parents = как чьи-то родители
+flavor-complex-plastic = как пластик
+flavor-complex-glue = как клей
+flavor-complex-spaceshroom-cooked = как космический умами
+flavor-complex-lost-friendship = как прошедшая дружба
+flavor-complex-light = как угасший свет
+
+## Generic alcohol/soda taste. This should be replaced with an actual flavor profile.
+
+flavor-complex-profits = как прибыль
+flavor-complex-fishops = как страшная рыбья операция
+flavor-complex-violets = как фиалки
+flavor-complex-alcohol = как алкоголь
+flavor-complex-soda = как газировка
+flavor-complex-juice = как сок
+
+## Basic drinks
+
+flavor-complex-rocksandstones = как скалы и камни
+flavor-complex-water = как вода
+flavor-complex-beer = как моча
+flavor-complex-ale = как хлеб
+flavor-complex-cola = как кола
+flavor-complex-cognac = как сухой пряный алкоголь
+flavor-complex-mead = как забродивший мёд
+flavor-complex-vermouth = как виноградная мякоть
+flavor-complex-vodka = как забродившее зерно
+flavor-complex-tonic-water = как озлобленная вода
+flavor-complex-tequila = как забродившая смерть
+flavor-complex-energy-drink = как аккумуляторная кислота
+flavor-complex-dr-gibb = как халатность
+flavor-complex-ginger-soda = как имбирь
+flavor-complex-grape-soda = как виноградная газировка
+flavor-complex-lemon-lime-soda = как лимонно-лаймовая газировка
+flavor-complex-pwr-game-soda = как гейминг
+flavor-complex-root-beer-soda = как рутбир
+flavor-complex-citrus-soda = как цитрусовая газировка
+flavor-complex-space-up-soda = как космос
+flavor-complex-starkist-soda = как апельсиновая газировка
+flavor-complex-fourteen-loko-soda = как сладкий солод
+flavor-complex-sake = как сладкий, алкогольный рис
+flavor-complex-rum = как забродивший сахар
+flavor-complex-coffee-liquor = как крепкий, горький кофе
+flavor-complex-whiskey = как патока
+flavor-complex-coconut-rum = как ореховый ферментированный сахар
+flavor-complex-shitty-wine = как виноградная кожура
+flavor-complex-iced-tea = как холодный чай
+flavor-complex-champagne = как свежеиспечённый хлеб
+flavor-complex-coffee = как кофе
+flavor-complex-milk = как молоко
+flavor-complex-tea = как чай
+flavor-complex-ice = как лёд
+
+## Cocktails
+
+flavor-complex-mopwata = как застоявшаяся грязная вода
+flavor-complex-long-island = подозрительно похож на холодный чай
+flavor-complex-three-mile-island = как чай, заваренный в ядерных отходах
+flavor-complex-arnold-palmer = как попадание в лунку с первого удара
+flavor-complex-blue-hawaiian = как тропики
+flavor-complex-cosmopolitan = сладко и терпко
+flavor-complex-painkiller = как шипучий ананасовый сок
+flavor-complex-pina-colada = как тропическое солнце
+flavor-complex-whiskey-cola = как газированная патока
+flavor-complex-singulo = как бездонная дыра
+flavor-complex-syndie-bomb = как горький виски
+flavor-complex-root-beer-float = как мороженое в рутбире
+flavor-complex-black-russian = как алкогольный кофе
+flavor-complex-white-russian = как подслащенный алкогольный кофе
+flavor-complex-moonshine = как чистый алкоголь
+flavor-complex-tequila-sunrise = как мексиканское утро
+flavor-complex-irish-coffee = как пробуждение алкоголика
+flavor-complex-iced-beer = как ледяная моча
+flavor-complex-gargle-blaster = как будто кто-то ударил вас по голове золотым слитком, покрытым лимоном.
+flavor-complex-bloody-mary = как тяжелое похмелье
+flavor-complex-beepsky = как нефть и виски
+flavor-complex-banana-honk = как банановый милкшейк
+flavor-complex-atomic-bomb = как ядерная пустошь
+flavor-complex-atomic-cola = как накопление бутылочных крышек
+flavor-complex-cuba-libre = как крепкая кола
+flavor-complex-gin-tonic = как крепкая газировка с лимоном и лаймом
+flavor-complex-screwdriver = как крепкий апельсиновый сок
+flavor-complex-cogchamp = как латунь
+flavor-complex-themartinez = как фиалки и лимонная водка
+flavor-complex-irish-car-bomb = как шипучая пенка колы
+
+### This is exactly what pilk tastes like. I'm not even joking. I might've been a little drunk though
+
+flavor-complex-white-gilgamesh = как слегка газированные сливки
+flavor-complex-antifreeze = как тепло
+flavor-complex-pilk = как сладкое молоко
+
+# Medicine/chemical-specific flavors.
+
+
+## Generic flavors.
+
+flavor-complex-medicine = как лекарство
+flavor-complex-carpet = как горсть шерсти
+flavor-complex-bee = беспчеловечно
+flavor-complex-sax = как джаз
+flavor-complex-bottledlightning = как молния в бутылке
+flavor-complex-punishment = как наказание
+flavor-weh = как вех
diff --git a/Resources/Locale/ru-RU/guidebook/chemistry/conditions.ftl b/Resources/Locale/ru-RU/guidebook/chemistry/conditions.ftl
new file mode 100644
index 0000000000..cc406638b6
--- /dev/null
+++ b/Resources/Locale/ru-RU/guidebook/chemistry/conditions.ftl
@@ -0,0 +1,47 @@
+reagent-effect-condition-guidebook-total-damage =
+ { $max ->
+ [2147483648] тело имеет по крайней мере { NATURALFIXED($min, 2) } общего урона
+ *[other]
+ { $min ->
+ [0] имеет не более { NATURALFIXED($max, 2) } общего урона
+ *[other] имеет между { NATURALFIXED($min, 2) } и { NATURALFIXED($max, 2) } общего урона
+ }
+ }
+reagent-effect-condition-guidebook-reagent-threshold =
+ { $max ->
+ [2147483648] в кровеносной системе имеется по крайней мере { NATURALFIXED($min, 2) }ед. { $reagent }
+ *[other]
+ { $min ->
+ [0] имеется не более { NATURALFIXED($max, 2) }ед. { $reagent }
+ *[other] имеет между { NATURALFIXED($min, 2) }ед. и { NATURALFIXED($max, 2) }ед. { $reagent }
+ }
+ }
+reagent-effect-condition-guidebook-mob-state-condition = пациент в { $state }
+reagent-effect-condition-guidebook-solution-temperature =
+ температура раствора составляет { $max ->
+ [2147483648] не менее { NATURALFIXED($min, 2) }k
+ *[other]
+ { $min ->
+ [0] не более { NATURALFIXED($max, 2) }k
+ *[other] между { NATURALFIXED($min, 2) }k и { NATURALFIXED($max, 2) }k
+ }
+ }
+reagent-effect-condition-guidebook-body-temperature =
+ температура тела составляет { $max ->
+ [2147483648] не менее { NATURALFIXED($min, 2) }k
+ *[other]
+ { $min ->
+ [0] не более { NATURALFIXED($max, 2) }k
+ *[other] между { NATURALFIXED($min, 2) }k и { NATURALFIXED($max, 2) }k
+ }
+ }
+reagent-effect-condition-guidebook-organ-type =
+ метаболизирующий орган { $shouldhave ->
+ [true] это
+ *[false] это не
+ } { $name } орган
+reagent-effect-condition-guidebook-has-tag =
+ цель { $invert ->
+ [true] не имеет
+ *[false] имеет
+ } метку { $tag }
diff --git a/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl b/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl
new file mode 100644
index 0000000000..325f568b48
--- /dev/null
+++ b/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl
@@ -0,0 +1,30 @@
+guidebook-reagent-effect-description =
+ { $chance ->
+ [1] { $effect }
+ *[other] Имеет { NATURALPERCENT($chance, 2) } шанс { $effect }
+ }{ $conditionCount ->
+ [0] .
+ *[other] { " " }, пока { $conditions }.
+ }
+guidebook-reagent-name = [bold][color={ $color }]{ CAPITALIZE($name) }[/color][/bold]
+guidebook-reagent-recipes-header = Рецепт
+guidebook-reagent-recipes-reagent-display = [bold]{ $reagent }[/bold] \[{ $ratio }\]
+guidebook-reagent-sources-header = Источники
+guidebook-reagent-sources-ent-wrapper = [bold]{ $name }[/bold] \[1\]
+guidebook-reagent-sources-gas-wrapper = [bold]{ $name } (газ)[/bold] \[1\]
+guidebook-reagent-effects-header = Эффекты
+guidebook-reagent-effects-metabolism-group-rate = [bold]{ $group }[/bold] [color=gray]({ $rate } единиц в секунду)[/color]
+guidebook-reagent-recipes-mix-info =
+ { $minTemp ->
+ [0]
+ { $hasMax ->
+ [true] { CAPITALIZE($verb) } ниже { $maxTemp }K
+ *[false] { CAPITALIZE($verb) }
+ }
+ *[other]
+ { CAPITALIZE($verb) } { $hasMax ->
+ [true] между { $minTemp }K и { $maxTemp }K
+ *[false] выше { $minTemp }K
+ }
+ }
+guidebook-reagent-physical-description = [italic]На вид вещество { $description }.[/italic].
diff --git a/Resources/Locale/ru-RU/guidebook/chemistry/effects.ftl b/Resources/Locale/ru-RU/guidebook/chemistry/effects.ftl
new file mode 100644
index 0000000000..6841c764a5
--- /dev/null
+++ b/Resources/Locale/ru-RU/guidebook/chemistry/effects.ftl
@@ -0,0 +1,318 @@
+-create-3rd-person =
+ { $chance ->
+ [1] Создаёт
+ *[other] создают
+ }
+-cause-3rd-person =
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ }
+-satiate-3rd-person =
+ { $chance ->
+ [1] Насыщает
+ *[other] насыщают
+ }
+reagent-effect-guidebook-create-entity-reaction-effect =
+ { $chance ->
+ [1] Создаёт
+ *[other] создают
+ } { $amount ->
+ [1] { $entname }
+ *[other] { $amount } { $entname }
+ }
+reagent-effect-guidebook-explosion-reaction-effect =
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } взрыв
+reagent-effect-guidebook-emp-reaction-effect =
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } электромагнитный импульс
+reagent-effect-guidebook-foam-area-reaction-effect =
+ { $chance ->
+ [1] Создаёт
+ *[other] создают
+ } большое количество пены
+reagent-effect-guidebook-foam-area-reaction-effect =
+ { $chance ->
+ [1] Создаёт
+ *[other] создают
+ } большое количество дыма
+reagent-effect-guidebook-satiate-thirst =
+ { $chance ->
+ [1] Утоляет
+ *[other] утоляют
+ } { $relative ->
+ [1] жажду средне
+ *[other] жажду на { NATURALFIXED($relative, 3) }x от обычного
+ }
+reagent-effect-guidebook-satiate-hunger =
+ { $chance ->
+ [1] Насыщает
+ *[other] насыщают
+ } { $relative ->
+ [1] голод средне
+ *[other] голод на { NATURALFIXED($relative, 3) }x от обычного
+ }
+reagent-effect-guidebook-health-change =
+ { $chance ->
+ [1]
+ { $healsordeals ->
+ [heals] Излечивает
+ [deals] Наносит
+ *[both] Изменяет здоровье на
+ }
+ *[other]
+ { $healsordeals ->
+ [heals] излечивать
+ [deals] наносить
+ *[both] изменяют здоровье на
+ }
+ } { $changes }
+reagent-effect-guidebook-status-effect =
+ { $type ->
+ [add]
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } { LOC($key) } минимум на { NATURALFIXED($time, 3) }, эффект накапливается
+ *[set]
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } { LOC($key) } минимум на { NATURALFIXED($time, 3) }, эффект не накапливается
+ [remove]
+ { $chance ->
+ [1] Удаляет
+ *[other] удаляют
+ } { NATURALFIXED($time, 3) } от { LOC($key) }
+ }
+reagent-effect-guidebook-activate-artifact =
+ { $chance ->
+ [1] Пытается
+ *[other] пытаются
+ } активировать артефакт
+reagent-effect-guidebook-set-solution-temperature-effect =
+ { $chance ->
+ [1] Устанавливает
+ *[other] устанавливают
+ } температуру раствора точно { NATURALFIXED($temperature, 2) }k
+reagent-effect-guidebook-adjust-solution-temperature-effect =
+ { $chance ->
+ [1]
+ { $deltasign ->
+ [1] Добавляет
+ *[-1] Удаляет
+ }
+ *[other]
+ { $deltasign ->
+ [1] добавляют
+ *[-1] удаляют
+ }
+ } тепло из раствора, пока температура не достигнет { $deltasign ->
+ [1] не более { NATURALFIXED($maxtemp, 2) }k
+ *[-1] не менее { NATURALFIXED($mintemp, 2) }k
+ }
+reagent-effect-guidebook-adjust-reagent-reagent =
+ { $chance ->
+ [1]
+ { $deltasign ->
+ [1] Добавляют
+ *[-1] Удаляет
+ }
+ *[other]
+ { $deltasign ->
+ [1] добавляют
+ *[-1] удаляют
+ }
+ } { NATURALFIXED($amount, 2) }ед. от { $reagent } { $deltasign ->
+ [1] к
+ *[-1] из
+ } раствора
+reagent-effect-guidebook-adjust-reagent-group =
+ { $chance ->
+ [1]
+ { $deltasign ->
+ [1] Добавляет
+ *[-1] Удаляет
+ }
+ *[other]
+ { $deltasign ->
+ [1] добавляют
+ *[-1] удаляют
+ }
+ } { NATURALFIXED($amount, 2) }ед реагентов в группе { $group } { $deltasign ->
+ [1] к
+ *[-1] из
+ } раствора
+reagent-effect-guidebook-adjust-temperature =
+ { $chance ->
+ [1]
+ { $deltasign ->
+ [1] Добавляют
+ *[-1] Удаляют
+ }
+ *[other]
+ { $deltasign ->
+ [1] добавляют
+ *[-1] удаляют
+ }
+ } { POWERJOULES($amount) } тепла { $deltasign ->
+ [1] к телу
+ *[-1] из тела
+ }, в котором он метабилизируется
+reagent-effect-guidebook-chem-cause-disease =
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } болезнь { $disease }
+reagent-effect-guidebook-chem-cause-random-disease =
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } болезнь { $diseases }
+reagent-effect-guidebook-jittering =
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } тряску
+reagent-effect-guidebook-chem-clean-bloodstream =
+ { $chance ->
+ [1] Очищает
+ *[other] очищают
+ } кровеносную систему от других веществ
+reagent-effect-guidebook-cure-disease =
+ { $chance ->
+ [1] Излечивает
+ *[other] излечивают
+ } болезнь
+reagent-effect-guidebook-cure-eye-damage =
+ { $chance ->
+ [1]
+ { $deltasign ->
+ [1] Наносит
+ *[-1] Излечивает
+ }
+ *[other]
+ { $deltasign ->
+ [1] наносят
+ *[-1] излечивают
+ }
+ } повреждения глаз
+reagent-effect-guidebook-chem-vomit =
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } рвоту
+reagent-effect-guidebook-create-gas =
+ { $chance ->
+ [1] Создаёт
+ *[other] создают
+ } { $moles } { $moles ->
+ [1] моль
+ *[other] моль
+ } газа { $gas }
+reagent-effect-guidebook-drunk =
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } опьянение
+reagent-effect-guidebook-electrocute =
+ { $chance ->
+ [1] Бьёт током
+ *[other] бьют током
+ } употребившего в течении { NATURALFIXED($time, 3) }
+reagent-effect-guidebook-extinguish-reaction =
+ { $chance ->
+ [1] Гасит
+ *[other] гасят
+ } огонь
+reagent-effect-guidebook-flammable-reaction =
+ { $chance ->
+ [1] Повышает
+ *[other] повышают
+ } воспламеняемость
+reagent-effect-guidebook-ignite =
+ { $chance ->
+ [1] Поджигает
+ *[other] поджигают
+ } употребившего
+reagent-effect-guidebook-make-sentient =
+ { $chance ->
+ [1] Делает
+ *[other] делают
+ } употребившего разумным
+reagent-effect-guidebook-make-polymorph =
+ { $chance ->
+ [1] Превращает
+ *[other] превращают
+ } употребившего в { $entityname }
+reagent-effect-guidebook-modify-bleed-amount =
+ { $chance ->
+ [1]
+ { $deltasign ->
+ [1] Усиливает
+ *[-1] Ослабляет
+ }
+ *[other]
+ { $deltasign ->
+ [1] усиливают
+ *[-1] ослабляют
+ }
+ } кровотечение
+reagent-effect-guidebook-modify-blood-level =
+ { $chance ->
+ [1]
+ { $deltasign ->
+ [1] Повышает
+ *[-1] Понижает
+ }
+ *[other]
+ { $deltasign ->
+ [1] повышают
+ *[-1] понижают
+ }
+ } уровень крови в организме
+reagent-effect-guidebook-paralyze =
+ { $chance ->
+ [1] Парализует
+ *[other] парализуют
+ } употребившего минимум на { NATURALFIXED($time, 3) }
+reagent-effect-guidebook-movespeed-modifier =
+ { $chance ->
+ [1] Делает
+ *[other] делают
+ } скорость передвижения { NATURALFIXED($walkspeed, 3) }x от стандартной минимум на { NATURALFIXED($time, 3) }
+reagent-effect-guidebook-reset-narcolepsy =
+ { $chance ->
+ [1] Предотвращает
+ *[other] предотвращают
+ } приступы нарколепсии
+reagent-effect-guidebook-wash-cream-pie-reaction =
+ { $chance ->
+ [1] Смывает
+ *[other] смывают
+ } кремовый пирог с лица
+reagent-effect-guidebook-cure-zombie-infection =
+ { $chance ->
+ [1] Лечит
+ *[other] лечат
+ } зомби-вирус
+reagent-effect-guidebook-cause-zombie-infection =
+ { $chance ->
+ [1] Заражает
+ *[other] заражают
+ } человека зомби-вирусом
+reagent-effect-guidebook-innoculate-zombie-infection =
+ { $chance ->
+ [1] Лечит
+ *[other] лечат
+ } зомби-вирус и обеспечивает иммунитет к нему в будущем
+reagent-effect-guidebook-missing =
+ { $chance ->
+ [1] Вызывает
+ *[other] вызывают
+ } неизвестный эффект, так как никто еще не написал об этом эффекте
diff --git a/Resources/Locale/ru-RU/guidebook/chemistry/healthchange.ftl b/Resources/Locale/ru-RU/guidebook/chemistry/healthchange.ftl
new file mode 100644
index 0000000000..6aa54b9813
--- /dev/null
+++ b/Resources/Locale/ru-RU/guidebook/chemistry/healthchange.ftl
@@ -0,0 +1,5 @@
+health-change-display =
+ { $deltasign ->
+ [-1] [color=green]{ NATURALFIXED($amount, 2) }[/color] ед. { $kind }
+ *[1] [color=red]{ NATURALFIXED($amount, 2) }[/color] ед. { $kind }
+ }
diff --git a/Resources/Locale/ru-RU/guidebook/chemistry/statuseffects.ftl b/Resources/Locale/ru-RU/guidebook/chemistry/statuseffects.ftl
new file mode 100644
index 0000000000..fd6cabc2d5
--- /dev/null
+++ b/Resources/Locale/ru-RU/guidebook/chemistry/statuseffects.ftl
@@ -0,0 +1,13 @@
+reagent-effect-status-effect-Stun = оглушение
+reagent-effect-status-effect-KnockedDown = нокдаун
+reagent-effect-status-effect-Jitter = дрожь
+reagent-effect-status-effect-TemporaryBlindness = слепота
+reagent-effect-status-effect-SeeingRainbows = галлюцинации
+reagent-effect-status-effect-Muted = неспособность разговаривать
+reagent-effect-status-effect-Stutter = заикание
+reagent-effect-status-effect-ForcedSleep = потеря сознания
+reagent-effect-status-effect-Drunk = опьянение
+reagent-effect-status-effect-PressureImmunity = невосприимчивость к давлению
+reagent-effect-status-effect-Pacified = принудительный пацифизм
+reagent-effect-status-effect-RatvarianLanguage = паттерны ратварского языка
+reagent-effect-status-effect-StaminaModifier = модифицированная выносливость
diff --git a/Resources/Locale/ru-RU/guidebook/guidebook.ftl b/Resources/Locale/ru-RU/guidebook/guidebook.ftl
new file mode 100644
index 0000000000..f9808e5517
--- /dev/null
+++ b/Resources/Locale/ru-RU/guidebook/guidebook.ftl
@@ -0,0 +1,6 @@
+guidebook-window-title = Руководство
+guidebook-placeholder-text = Выберите запись.
+guidebook-placeholder-text-2 = Если вы новичок, то начните с самой верхней записи.
+guidebook-filter-placeholder-text = Фильтр
+guidebook-monkey-unspin = Отперевернуть обезьяну
+guidebook-monkey-disco = Диско обезьяна
diff --git a/Resources/Locale/ru-RU/guidebook/guides.ftl b/Resources/Locale/ru-RU/guidebook/guides.ftl
new file mode 100644
index 0000000000..1f6db0b216
--- /dev/null
+++ b/Resources/Locale/ru-RU/guidebook/guides.ftl
@@ -0,0 +1,72 @@
+guide-entry-engineering = Инженерное дело
+guide-entry-construction = Строительство
+guide-entry-airlock-security = Улучшение шлюзов
+guide-entry-atmospherics = Атмосфера
+guide-entry-botany = Ботаника
+guide-entry-fires = Пожары и разгерметизации
+guide-entry-shuttle-craft = Шаттлостроение
+guide-entry-networking = Сетевые соединения
+guide-entry-network-configurator = Конфигуратор сетей
+guide-entry-access-configurator = Конфигуратор доступа
+guide-entry-power = Электропитание
+guide-entry-portable-generator = Портативные генераторы
+guide-entry-ame = Двигатель антиматерии (ДАМ)
+guide-entry-singularity = Сингулярный двигатель
+guide-entry-teg = Термоэлектрический генератор (ТЭГ)
+guide-entry-rtg = РИТЭГ
+guide-entry-science = Научный отдел
+guide-entry-radio = Радиосвязь
+guide-entry-machine-upgrading = Улучшение оборудования
+guide-entry-cargo = Отдел снабжения
+guide-entry-cargo-bounties = Запросы отдела снабжения
+guide-entry-salvage = Утилизация обломков
+guide-entry-controls = Управление
+guide-entry-chemicals = Химические вещества
+guide-entry-elements = Элементы
+guide-entry-narcotics = Наркотики
+guide-entry-pyrotechnics = Пиротехника
+guide-entry-toxins = Токсины
+guide-entry-foods = Пищевые
+guide-entry-biological = Биологические
+guide-entry-others = Другие
+guide-entry-botanical = Ботанические
+guide-entry-jobs = Должности
+guide-entry-janitorial = Уборка станции
+guide-entry-bartender = Бармен
+guide-entry-chef = Шеф-повар
+guide-entry-foodrecipes = Рецепты еды
+guide-entry-medical = Медицинский отдел
+guide-entry-medicaldoctor = Врач
+guide-entry-chemist = Химик
+guide-entry-medicine = Медицина
+guide-entry-brute =
+ Продвинутое лечение
+ механических повреждений
+guide-entry-botanicals = Ботаника
+guide-entry-cloning = Клонирование
+guide-entry-cryogenics = Криогеника
+guide-entry-survival = Выживание
+guide-entry-technologies = Технологии
+guide-entry-anomalous-research = Исследование аномалий
+guide-entry-scanners-and-vessels = Сканеры и сосуды
+guide-entry-ape = М.А.К.А.К.
+guide-entry-xenoarchaeology = Ксеноархеология
+guide-entry-artifact-reports = Отчёты об артефактах
+guide-entry-traversal-distorter = Поперечный искатель
+guide-entry-ss14 = Космическая станция 14
+guide-entry-robotics = Робототехника
+guide-entry-cyborgs = Киборги
+guide-entry-security = Безопасность станции
+guide-entry-forensics = Криминалистика
+guide-entry-defusal = Обезвреживание крупной бомбы
+guide-entry-criminal-records = Криминальные записи
+guide-entry-species = Расы
+guide-entry-antagonists = Антагонисты
+guide-entry-nuclear-operatives = Ядерные оперативники
+guide-entry-traitors = Предатели
+guide-entry-zombies = Зомби
+guide-entry-revolutionaries = Революционеры
+guide-entry-minor-antagonists = Малые антагонисты
+guide-entry-space-ninja = Космический ниндзя
+guide-entry-writing = Разметка письма
+guide-entry-glossary = Словарь терминов
diff --git a/Resources/Locale/ru-RU/guidebook/verb.ftl b/Resources/Locale/ru-RU/guidebook/verb.ftl
new file mode 100644
index 0000000000..bec1dc12e7
--- /dev/null
+++ b/Resources/Locale/ru-RU/guidebook/verb.ftl
@@ -0,0 +1 @@
+guide-help-verb = Помощь
diff --git a/Resources/Locale/ru-RU/nutrition/components/animal-husbandry.ftl b/Resources/Locale/ru-RU/nutrition/components/animal-husbandry.ftl
new file mode 100644
index 0000000000..10bc16aed7
--- /dev/null
+++ b/Resources/Locale/ru-RU/nutrition/components/animal-husbandry.ftl
@@ -0,0 +1,3 @@
+infant-name-prefix = детёныш { $name }
+reproductive-birth-popup = { CAPITALIZE($parent) } родила!
+reproductive-laid-egg-popup = { CAPITALIZE($parent) } отложила яйцо!
diff --git a/Resources/Locale/ru-RU/nutrition/components/drink-component.ftl b/Resources/Locale/ru-RU/nutrition/components/drink-component.ftl
new file mode 100644
index 0000000000..14fbb5671c
--- /dev/null
+++ b/Resources/Locale/ru-RU/nutrition/components/drink-component.ftl
@@ -0,0 +1,23 @@
+drink-component-on-use-is-empty = { $owner } пуст!
+drink-component-on-examine-is-empty = [color=gray]Пусто[/color]
+drink-component-on-examine-is-opened = [color=yellow]Открыто[/color]
+drink-component-on-examine-is-sealed = Пломба не повреждена.
+drink-component-on-examine-is-unsealed = Пломба разорвана.
+drink-component-on-examine-is-full = Полон
+drink-component-on-examine-is-mostly-full = Почти полон
+drink-component-on-examine-is-half-full = Наполовину полон
+drink-component-on-examine-is-half-empty = Наполовину пуст
+drink-component-on-examine-is-mostly-empty = Почти пуст
+drink-component-on-examine-exact-volume = Полон на { $amount }ед.
+drink-component-try-use-drink-not-open = Сначала откройте { $owner }!
+drink-component-try-use-drink-is-empty = { $entity } пуст!
+drink-component-try-use-drink-cannot-drink = Вы не можете ничего пить!
+drink-component-try-use-drink-had-enough = Вы не можете выпить больше!
+drink-component-try-use-drink-cannot-drink-other = Они не могут ничего пить!
+drink-component-try-use-drink-had-enough-other = Они не могут выпить больше!
+drink-component-try-use-drink-success-slurp = Сёрб
+drink-component-try-use-drink-success-slurp-taste = Сёрб. { $flavors }
+drink-component-force-feed = { CAPITALIZE($user) } пытается вас чем-то напоить!
+drink-component-force-feed-success = { CAPITALIZE($user) } вас чем-то напоил! { $flavors }
+drink-component-force-feed-success-user = Вы успешно напоили { $target }
+drink-system-verb-drink = Пить
diff --git a/Resources/Locale/ru-RU/nutrition/components/food-component.ftl b/Resources/Locale/ru-RU/nutrition/components/food-component.ftl
new file mode 100644
index 0000000000..0497bd0641
--- /dev/null
+++ b/Resources/Locale/ru-RU/nutrition/components/food-component.ftl
@@ -0,0 +1,23 @@
+### Interaction Messages
+
+food-you-need-to-hold-utensil = Вы должны держать { $utensil }, чтобы съесть это!
+food-nom = Ням. { $flavors }
+food-swallow = Вы проглатываете { $food }. { $flavors }
+food-has-used-storage = Вы не можете съесть { $food } пока внутри что-то есть.
+food-system-remove-mask = Сначала вам нужно снять { $entity }.
+
+## System
+
+food-system-you-cannot-eat-any-more = В вас больше не лезет!
+food-system-you-cannot-eat-any-more-other = В них больше не лезет!
+food-system-try-use-food-is-empty = В { $entity } пусто!
+food-system-wrong-utensil = Вы не можете есть { $food } с помощью { $utensil }.
+food-system-cant-digest = Вы не можете переварить { $entity }!
+food-system-cant-digest-other = Они не могут переварить { $entity }!
+food-system-verb-eat = Съесть
+
+## Force feeding
+
+food-system-force-feed = { CAPITALIZE($user) } пытается вам что-то скормить!
+food-system-force-feed-success = { CAPITALIZE($user) } вам что-то скормил! { $flavors }
+food-system-force-feed-success-user = Вы успешно накормили { $target }
diff --git a/Resources/Locale/ru-RU/nutrition/components/openable-component.ftl b/Resources/Locale/ru-RU/nutrition/components/openable-component.ftl
new file mode 100644
index 0000000000..efcd656637
--- /dev/null
+++ b/Resources/Locale/ru-RU/nutrition/components/openable-component.ftl
@@ -0,0 +1,2 @@
+openable-component-verb-open = Открыть
+openable-component-verb-close = Закрыть
diff --git a/Resources/Locale/ru-RU/nutrition/components/sliceable-food-component.ftl b/Resources/Locale/ru-RU/nutrition/components/sliceable-food-component.ftl
new file mode 100644
index 0000000000..905872f012
--- /dev/null
+++ b/Resources/Locale/ru-RU/nutrition/components/sliceable-food-component.ftl
@@ -0,0 +1,9 @@
+sliceable-food-component-on-examine-remaining-slices-text =
+ { $remainingCount ->
+ [one] Остался
+ *[other] Осталось
+ } { $remainingCount } { $remainingCount ->
+ [one] кусочек
+ [few] кусочка
+ *[other] кусочков
+ }.
diff --git a/Resources/Prototypes/Chemistry/mixing_types.yml b/Resources/Prototypes/Chemistry/mixing_types.yml
index 20d58e70ab..bf3adb5795 100644
--- a/Resources/Prototypes/Chemistry/mixing_types.yml
+++ b/Resources/Prototypes/Chemistry/mixing_types.yml
@@ -5,8 +5,8 @@
id: DummyMix
verbText: mixing-verb-default-mix
icon:
- sprite: Objects/Specific/Chemistry/beaker_large.rsi
- state: beakerlarge
+ sprite: _CP14/Structures/Specific/Alchemy/alchemy_vat.rsi
+ state: full
- type: mixingCategory
id: DummyGrind
diff --git a/Resources/Prototypes/_CP14/Entities/Effects/alchemy_effects.yml b/Resources/Prototypes/_CP14/Entities/Effects/alchemy_effects.yml
new file mode 100644
index 0000000000..c0d9e35f41
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Effects/alchemy_effects.yml
@@ -0,0 +1,33 @@
+- type: entity
+ parent: BaseFoam
+ id: CP14Mist
+ name: mist
+ components:
+ - type: Sprite
+ sprite: _CP14/Effects/mist.rsi
+ state: chemmist
+ - type: TimedDespawn
+ lifetime: 20
+ - type: Tag
+ tags:
+ - HideContextMenu
+ - type: SolutionContainerManager
+ solutions:
+ solutionArea:
+ maxVol: 100
+
+- type: entity
+ parent: CP14Mist
+ id: CP14MistVitalExtract
+ components:
+ - type: Sprite
+ sprite: _CP14/Effects/mist.rsi
+ layers:
+ - state: chemmist
+ color: "#db2a2a"
+ - type: SolutionContainerManager
+ solutions:
+ solutionArea:
+ reagents:
+ - ReagentId: CP14VitalExtract
+ Quantity: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml
index 98aebf0cc3..ce57084617 100644
--- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml
+++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml
@@ -4,75 +4,73 @@
save: false
abstract: true
components:
- - type: Sprite
- layers:
- - map: [ "enum.HumanoidVisualLayers.Chest" ]
- - map: [ "enum.HumanoidVisualLayers.Head" ]
- - map: [ "enum.HumanoidVisualLayers.Snout" ]
- - map: [ "enum.HumanoidVisualLayers.Eyes" ]
- - map: [ "enum.HumanoidVisualLayers.RArm" ]
- - map: [ "enum.HumanoidVisualLayers.LArm" ]
- - map: [ "enum.HumanoidVisualLayers.RLeg" ]
- - map: [ "enum.HumanoidVisualLayers.LLeg" ]
- - shader: StencilClear
- sprite: Mobs/Species/Human/parts.rsi #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115
- # its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear.
- # sprite refactor when
- state: l_leg
- - shader: StencilMask
- map: [ "enum.HumanoidVisualLayers.StencilMask" ]
- sprite: Mobs/Customization/masking_helpers.rsi
- state: unisex_full
- visible: false
- - map: [ "jumpsuit" ]
- - map: [ "pants" ]
- - map: [ "shirt" ]
- - map: [ "enum.HumanoidVisualLayers.LFoot" ]
- - map: [ "enum.HumanoidVisualLayers.RFoot" ]
- - map: [ "enum.HumanoidVisualLayers.LHand" ]
- - map: [ "enum.HumanoidVisualLayers.RHand" ]
- - map: [ "gloves" ]
- - map: [ "shoes" ]
- - map: [ "ears" ]
- - map: [ "outerClothing" ]
- - map: [ "eyes" ]
- - map: [ "belt" ]
- - map: [ "id" ]
- - map: [ "neck" ]
- - map: [ "cloak" ]
- - map: [ "back" ]
- - map: [ "enum.HumanoidVisualLayers.FacialHair" ]
- - map: [ "enum.HumanoidVisualLayers.Hair" ]
- - map: [ "enum.HumanoidVisualLayers.HeadSide" ]
- - map: [ "enum.HumanoidVisualLayers.HeadTop" ]
- - map: [ "enum.HumanoidVisualLayers.Tail" ]
- - map: [ "mask" ]
- - map: [ "head" ]
- - map: [ "pocket1" ]
- - map: [ "pocket2" ]
- - map: ["enum.HumanoidVisualLayers.Handcuffs"]
- color: "#ffffff"
- sprite: Objects/Misc/handcuffs.rsi
- state: body-overlay-2
- visible: false
- - map: [ "clownedon" ] # Dynamically generated
- sprite: "Effects/creampie.rsi"
- state: "creampie_human"
- visible: false
- - type: HumanoidAppearance
- species: CP14Human
- - type: Body
- prototype: CP14Human
- requiredLegs: 2
+ - type: Sprite
+ layers:
+ - map: [ "enum.HumanoidVisualLayers.Chest" ]
+ - map: [ "enum.HumanoidVisualLayers.Head" ]
+ - map: [ "enum.HumanoidVisualLayers.Snout" ]
+ - map: [ "enum.HumanoidVisualLayers.Eyes" ]
+ - map: [ "enum.HumanoidVisualLayers.RArm" ]
+ - map: [ "enum.HumanoidVisualLayers.LArm" ]
+ - map: [ "enum.HumanoidVisualLayers.RLeg" ]
+ - map: [ "enum.HumanoidVisualLayers.LLeg" ]
+ - shader: StencilClear
+ sprite: Mobs/Species/Human/parts.rsi
+ state: l_leg
+ - shader: StencilMask
+ map: [ "enum.HumanoidVisualLayers.StencilMask" ]
+ sprite: Mobs/Customization/masking_helpers.rsi
+ state: unisex_full
+ visible: false
+ - map: [ "pants" ]
+ - map: [ "shirt" ]
+ - map: [ "enum.HumanoidVisualLayers.LFoot" ]
+ - map: [ "enum.HumanoidVisualLayers.RFoot" ]
+ - map: [ "enum.HumanoidVisualLayers.LHand" ]
+ - map: [ "enum.HumanoidVisualLayers.RHand" ]
+ - map: [ "gloves" ]
+ - map: [ "shoes" ]
+ - map: [ "ears" ]
+ - map: [ "eyes" ]
+ - map: [ "belt1" ]
+ - map: [ "belt2" ]
+ - map: [ "neck" ]
+ - map: [ "cloak" ]
+ - map: [ "back" ]
+ - map: [ "enum.HumanoidVisualLayers.FacialHair" ]
+ - map: [ "enum.HumanoidVisualLayers.Hair" ]
+ - map: [ "enum.HumanoidVisualLayers.HeadSide" ]
+ - map: [ "enum.HumanoidVisualLayers.HeadTop" ]
+ - map: [ "enum.HumanoidVisualLayers.Tail" ]
+ - map: [ "mask" ]
+ - map: [ "head" ]
+ - map: [ "pocket1" ]
+ - map: [ "pocket2" ]
+ - map: ["enum.HumanoidVisualLayers.Handcuffs"]
+ color: "#ffffff"
+ sprite: Objects/Misc/handcuffs.rsi
+ state: body-overlay-2
+ visible: false
+ - map: [ "clownedon" ] # Dynamically generated
+ sprite: "Effects/creampie.rsi"
+ state: "creampie_human"
+ visible: false
+ - type: HumanoidAppearance
+ species: CP14Human
+ - type: Body
+ prototype: CP14Human
+ requiredLegs: 2
- type: entity
parent: BaseMobSpeciesOrganic
id: CP14BaseMobSpeciesOrganic
save: false
abstract: true
- #components:
- # - type: FireVisuals
- # alternateState: Standing #TO DO - custom visual
+ components:
+ - type: Bloodstream
+ bloodReagent: CP14Blood
+# - type: FireVisuals
+# alternateState: Standing #TO DO - custom visual
- type: entity
save: false
@@ -105,7 +103,6 @@
sprite: Mobs/Customization/masking_helpers.rsi
state: unisex_full
visible: false
- - map: ["jumpsuit"]
- map: ["enum.HumanoidVisualLayers.LFoot"]
- map: ["enum.HumanoidVisualLayers.RFoot"]
- map: ["enum.HumanoidVisualLayers.LHand"]
@@ -120,11 +117,9 @@
- map: [ "ring2" ]
- map: [ "shoes" ]
- map: [ "ears" ]
- - map: [ "outerClothing" ]
- map: [ "eyes" ]
- map: [ "belt1" ]
- map: [ "belt2" ]
- - map: [ "id" ]
- map: [ "keys" ]
- map: [ "neck" ]
- map: [ "back" ]
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/cauldron.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/cauldron.yml
new file mode 100644
index 0000000000..0bbf8330ec
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/cauldron.yml
@@ -0,0 +1,70 @@
+- type: entity
+ parent: BaseItem
+ id: CP14Cauldron
+ name: cauldron
+ description: A heavy cauldron. It is not as bulky as a vat, but can be carried in your hands.
+ components:
+ - type: Item
+ size: Ginormous
+ - type: MultiHandedItem
+ - type: ClothingSpeedModifier
+ walkModifier: 0.6
+ sprintModifier: 0.6
+ - type: HeldSpeedModifier
+ - type: Sprite
+ sprite: _CP14/Objects/Specific/Alchemy/cauldron.rsi
+ layers:
+ - state: icon
+ - state: liq-1
+ map: ["enum.SolutionContainerLayers.Fill"]
+ visible: false
+ - type: SolutionContainerManager
+ solutions:
+ vat:
+ maxVol: 100
+ - type: Spillable
+ solution: vat
+ - type: DrainableSolution
+ solution: vat
+ - type: ExaminableSolution
+ solution: vat
+ - type: MixableSolution
+ solution: vat
+ - type: RefillableSolution
+ solution: vat
+ - type: DrawableSolution
+ solution: vat
+ - type: DumpableSolution
+ solution: vat
+ - type: SolutionItemStatus
+ solution: vat
+ - type: Drink
+ solution: vat
+ - type: Injector
+ solutionName: vat
+ injectOnly: false
+ ignoreMobs: true
+ minTransferAmount: 10
+ maxTransferAmount: 100
+ transferAmount: 50
+ toggleState: 1 # draw
+ - type: UserInterface
+ interfaces:
+ enum.TransferAmountUiKey.Key:
+ type: TransferAmountBoundUserInterface
+ - type: Appearance
+ - type: SolutionContainerVisuals
+ maxFillLevels: 5
+ fillBaseName: liq-
+ inHandsMaxFillLevels: 5
+ inHandsFillBaseName: -fill
+ - type: DamageOtherOnHit
+ damage:
+ types:
+ Blunt: 5
+ - type: DamageOnHighSpeedImpact
+ minimumSpeed: 2
+ damage:
+ types:
+ Blunt: 5
+
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/herbals.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/herbals.yml
new file mode 100644
index 0000000000..8ac0150d55
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/herbals.yml
@@ -0,0 +1,37 @@
+- type: entity
+ id: CP14BloodGrass
+ parent: FoodProduceBase
+ name: bloodgrass
+ description: The dullest and most common plant to be found in the wild is the dark brown grass.
+ components:
+ - type: Item
+ size: Tiny
+ - type: Produce
+ - type: Sprite
+ sprite: _CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi
+ layers:
+ - state: base1
+ map: ["random"]
+ - type: RandomSprite
+ available:
+ - random:
+ base1: ""
+ base2: ""
+ base3: ""
+ base4: ""
+ base5: ""
+ - type: FlavorProfile
+ flavors:
+ - CP14Metallic
+ - type: Extractable
+ juiceSolution:
+ reagents:
+ - ReagentId: CP14BloodGrassSap
+ Quantity: 5
+ - type: SolutionContainerManager
+ solutions:
+ food:
+ maxVol: 20
+ reagents:
+ - ReagentId: CP14BloodGrassSap
+ Quantity: 5
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/vials.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/vials.yml
index 2791e2eec2..e37191e4a3 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/vials.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Alchemy/vials.yml
@@ -134,4 +134,19 @@
maxVol: 10
- type: SolutionContainerVisuals
maxFillLevels: 5
- fillBaseName: liq-
\ No newline at end of file
+ fillBaseName: liq-
+
+
+# Filled
+
+- type: entity
+ id: CP14VialSmallVitalExtract
+ parent: CP14VialSmall
+ suffix: Vital extract
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ vial:
+ reagents:
+ - ReagentId: CP14VitalExtract
+ Quantity: 10
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Tools/bucket.yml b/Resources/Prototypes/_CP14/Entities/Objects/Tools/bucket.yml
index 9483233e47..6e72e5a963 100644
--- a/Resources/Prototypes/_CP14/Entities/Objects/Tools/bucket.yml
+++ b/Resources/Prototypes/_CP14/Entities/Objects/Tools/bucket.yml
@@ -3,7 +3,7 @@
id: CP14Bucket
name: bucket
description: It's a boring old bucket.
- suffix: CP14
+ suffix: CP14, need resprite
components:
- type: Drink
solution: bucket
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/barrel.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/barrel.yml
index daed9c24b9..07bec1d397 100644
--- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/barrel.yml
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/barrel.yml
@@ -75,10 +75,8 @@
barrel:
maxVol: 300
- type: SolutionContainerVisuals
- maxFillLevels: 7
+ maxFillLevels: 5
fillBaseName: liq
- - type: Spillable
- solution: barrel
- type: DrainableSolution
solution: barrel
- type: ExaminableSolution
@@ -103,17 +101,17 @@
solutions:
barrel:
reagents:
- - ReagentId: Water
+ - ReagentId: CP14Water
Quantity: 300
- type: entity
id: CP14BarrelBeer
parent: CP14BaseBarrel
- suffix: Beer
+ suffix: Blood
components:
- type: SolutionContainerManager
solutions:
barrel:
reagents:
- - ReagentId: Beer
+ - ReagentId: CP14Blood
Quantity: 300
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml
index 1ef21166f2..63e439bc1e 100644
--- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/bonfire.yml
@@ -1,6 +1,6 @@
- type: entity
id: CP14Bonfire
- parent: BaseStructure
+ parent: CP14BaseFireplace
name: bonfire
description: A pile of logs stacked together, ready to burst into flames at the slightest spark.
components:
@@ -15,20 +15,6 @@
- type: Construction
graph: CP14Bonfire
node: CP14Bonfire
- - type: Fixtures
- fixtures:
- fix1:
- shape:
- !type:PhysShapeAabb
- bounds: "-0.45,-0.45,0.45,0.45"
- density: 55
- mask:
- - TabletopMachineMask
- layer:
- - Impassable
- - MidImpassable
- - LowImpassable
- hard: false
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Wood
@@ -36,25 +22,10 @@
thresholds:
- trigger:
!type:DamageTrigger
- damage: 80
+ damage: 20
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- - trigger:
- !type:DamageTypeTrigger
- damageType: Heat
- damage: 50
- behaviors:
- - !type:DoActsBehavior
- acts: [ "Destruction" ]
- - type: CP14FlammableAmbientSound
- - type: AmbientSound
- enabled: false
- volume: -5
- range: 5
- sound:
- path: /Audio/Ambience/Objects/fireplace.ogg
- - type: Appearance
- type: GenericVisualizer
visuals:
enum.FireplaceFuelVisuals.Status:
@@ -62,30 +33,13 @@
Empty: { visible: false }
Medium: { visible: true, state: full1 }
Full: { visible: true, state: full2 }
- - type: Reactive
- groups:
- Flammable: [ Touch ]
- Extinguish: [ Touch ]
- - type: Flammable
- fireSpread: true
- canResistFire: false
- alwaysCombustible: true
- canExtinguish: true
- firestacksOnIgnite: 0.5
- damage:
- types:
- Heat: 0
- type: FireVisuals
sprite: _CP14/Structures/Furniture/bonfire.rsi
normalState: burning
- - type: ItemPlacer
- maxEntities: 4
- - type: CP14FlammableEntityHeater
- - type: CP14Fireplace
- type: entity
id: CP14Stick
parent: CP14Bucket
name: Stick!!!
components:
- - type: CP14FireplaceFuel
\ No newline at end of file
+ - type: CP14FireplaceFuel
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml
new file mode 100644
index 0000000000..62fe322ed4
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/heater.yml
@@ -0,0 +1,113 @@
+- type: entity
+ id: CP14BaseFireplace
+ parent: BaseStructure
+ abstract: true
+ components:
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.45,-0.45,0.45,0.45"
+ density: 55
+ mask:
+ - TabletopMachineMask
+ layer:
+ - Impassable
+ - MidImpassable
+ - LowImpassable
+ hard: false
+ - type: CP14FlammableAmbientSound
+ - type: AmbientSound
+ enabled: false
+ volume: -5
+ range: 5
+ sound:
+ path: /Audio/Ambience/Objects/fireplace.ogg
+ - type: Appearance
+ - type: Reactive
+ groups:
+ Flammable: [ Touch ]
+ Extinguish: [ Touch ]
+ - type: Flammable
+ fireSpread: true
+ canResistFire: false
+ alwaysCombustible: true
+ canExtinguish: true
+ firestacksOnIgnite: 0.5
+ damage:
+ types:
+ Heat: 0
+ - type: ItemPlacer
+ maxEntities: 4
+ - type: CP14FlammableEntityHeater
+ - type: CP14FlammableSolutionHeater
+ - type: CP14Fireplace
+
+- type: entity
+ id: CP14AlchemyFurnaceDebug
+ parent: CP14AlchemyFurnace
+ suffix: DEBUG
+ components:
+ - type: CP14Fireplace
+ currentFuel: 100
+ fuelDrainingPerUpdate: 0
+
+- type: entity
+ id: CP14AlchemyFurnace
+ name: alchemy furnace
+ parent: CP14BaseFireplace
+ description: A furnace fueled by wood, coal, or any other burning material. Handy for heating your alchemical potions.
+ components:
+ - type: Sprite
+ sprite: _CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi
+ layers:
+ - state: base
+ - state: fuel1
+ visible: false
+ map: ["fuel"]
+ - type: Damageable
+ damageContainer: Inorganic
+ damageModifierSet: Metallic
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 80
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - type: GenericVisualizer
+ visuals:
+ enum.FireplaceFuelVisuals.Status:
+ fuel:
+ Empty: { visible: false }
+ Medium: { visible: true, state: fuel1 }
+ Full: { visible: true, state: fuel2 }
+ - type: FireVisuals
+ sprite: _CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi
+ normalState: burning
+ - type: Climbable
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.45,-0.45,0.45,0.45"
+ density: 55
+ mask:
+ - TabletopMachineMask
+ layer:
+ - Impassable
+ - MidImpassable
+ - LowImpassable
+ hard: false
+ fix2:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.45,-0.45,0.45,0.45"
+ density: 55
+ mask:
+ - TableMask
+ layer:
+ - TableLayer
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/vat.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/vat.yml
index 054237a18a..06f0ed6726 100644
--- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/vat.yml
+++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Alchemy/vat.yml
@@ -2,8 +2,8 @@
id: CP14BaseVat
parent:
- BaseStructureDynamic
- name: vat
- description: VATVATVAT
+ name: big vat
+ description: A very large vat for storing huge amounts of liquid. Heavy, uncomfortable to carry.
placement:
mode: PlaceFree
components:
@@ -18,7 +18,7 @@
shape:
!type:PhysShapeAabb
bounds: "-0.3,-0.3,0.3,0.3"
- density: 155
+ density: 666 # >:)
mask:
- MachineMask
layer:
@@ -67,8 +67,6 @@
solution: vat
- type: DumpableSolution
solution: vat
- - type: Spillable
- solution: vat
- type: Drink
solution: vat
- type: UserInterface
@@ -81,6 +79,7 @@
- type: ThrowInsertContainer
containerId: storagebase
- type: Storage
+ cP14CanStorageSolutionManagers: false
grid:
- 0,0,4,3
blacklist:
diff --git a/Resources/Prototypes/_CP14/Flavors/flavor.yml b/Resources/Prototypes/_CP14/Flavors/flavor.yml
new file mode 100644
index 0000000000..3e7624f941
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Flavors/flavor.yml
@@ -0,0 +1,18 @@
+# Basic
+
+- type: flavor
+ id: CP14Metallic
+ flavorType: Base
+ description: cp14-flavor-base-metallic
+
+- type: flavor
+ id: CP14Invigorating
+ flavorType: Base
+ description: cp14-flavor-base-invigorating
+
+# Complex
+
+- type: flavor
+ id: CP14Water
+ flavorType: Complex
+ description: cp14-flavor-complex-water
diff --git a/Resources/Prototypes/_CP14/Guidebook/Eng/alchemy.yml b/Resources/Prototypes/_CP14/Guidebook/Eng/alchemy.yml
new file mode 100644
index 0000000000..f8cdaff635
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Guidebook/Eng/alchemy.yml
@@ -0,0 +1,23 @@
+- type: guideEntry
+ crystallPunkAllowed: true
+ id: CP14_EN_Alchemy
+ name: cp14-guide-entry-alchemy
+ text: "/ServerInfo/_CP14/Guidebook_EN/Alchemy.xml"
+ children:
+ - CP14_EN_BasicAlchemy
+ - CP14_EN_Biological
+ filterEnabled: True
+
+- type: guideEntry
+ crystallPunkAllowed: true
+ id: CP14_EN_BasicAlchemy
+ name: cp14-guide-entry-basic-alchemy
+ text: "/ServerInfo/_CP14/Guidebook_EN/AlchemyTabs/BasicAlchemy.xml"
+ filterEnabled: True
+
+- type: guideEntry
+ crystallPunkAllowed: true
+ id: CP14_EN_Biological
+ name: cp14-guide-entry-biological
+ text: "/ServerInfo/_CP14/Guidebook_EN/AlchemyTabs/Biological.xml"
+ filterEnabled: True
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Guidebook/Ru/alchemy.yml b/Resources/Prototypes/_CP14/Guidebook/Ru/alchemy.yml
new file mode 100644
index 0000000000..30229923c4
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Guidebook/Ru/alchemy.yml
@@ -0,0 +1,23 @@
+- type: guideEntry
+ crystallPunkAllowed: true
+ id: CP14_RU_Alchemy
+ name: cp14-guide-entry-alchemy
+ text: "/ServerInfo/_CP14/Guidebook_RU/Alchemy.xml"
+ children:
+ - CP14_RU_BasicAlchemy
+ - CP14_RU_Biological
+ filterEnabled: True
+
+- type: guideEntry
+ crystallPunkAllowed: true
+ id: CP14_RU_BasicAlchemy
+ name: cp14-guide-entry-basic-alchemy
+ text: "/ServerInfo/_CP14/Guidebook_RU/AlchemyTabs/BasicAlchemy.xml"
+ filterEnabled: True
+
+- type: guideEntry
+ crystallPunkAllowed: true
+ id: CP14_RU_Biological
+ name: cp14-guide-entry-biological
+ text: "/ServerInfo/_CP14/Guidebook_RU/AlchemyTabs/Biological.xml"
+ filterEnabled: True
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Guidebook/entry.yml b/Resources/Prototypes/_CP14/Guidebook/entry.yml
new file mode 100644
index 0000000000..918a419a4f
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Guidebook/entry.yml
@@ -0,0 +1,15 @@
+- type: guideEntry
+ crystallPunkAllowed: true
+ id: CP14_EN
+ name: cp14-guide-entry-english
+ text: "/ServerInfo/_CP14/Guidebook_EN/Welcome.xml"
+ children:
+ - CP14_EN_Alchemy
+
+- type: guideEntry
+ crystallPunkAllowed: true
+ id: CP14_RU
+ name: cp14-guide-entry-russian
+ text: "/ServerInfo/_CP14/Guidebook_RU/Welcome.xml"
+ children:
+ - CP14_RU_Alchemy
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/drinks.yml b/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/drinks.yml
new file mode 100644
index 0000000000..7c71713db4
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/drinks.yml
@@ -0,0 +1,7 @@
+- type: reagent
+ parent: Water
+ id: CP14Water
+ name: cp14-reagent-name-water
+ desc: cp14-reagent-desc-water
+ flavor: CP14Water
+ color: "#75b1f0"
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Reagents/basic-alchemy.yml b/Resources/Prototypes/_CP14/Reagents/basic-alchemy.yml
new file mode 100644
index 0000000000..81efd024e0
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Reagents/basic-alchemy.yml
@@ -0,0 +1,65 @@
+# 13-1 rule
+# There should be 12 basic alchemical extracts, and 1 forbidden one, for antagonists only
+# 1) Vital extract
+# 2) Death extract
+# 3) Fire extract
+# 4) Ice extract
+# 5) Light extract
+# 6) Void/Dark extract
+# 7) Air extract
+# 8) Earth extract
+# 9) Lightning extract
+# 10)
+# 11)
+# 12)
+# 13)
+
+- type: reagent
+ id: CP14VitalExtract
+ group: CP14BasicAlchemy
+ name: cp14-reagent-name-vital-extract
+ desc: cp14-reagent-desc-vital-extract
+ flavor: CP14Invigorating
+ color: "#db2a2a"
+ physicalDesc: cp14-reagent-physical-desc-scarlet
+ footstepSound:
+ collection: FootstepBlood
+ params:
+ volume: 6
+ metabolisms:
+ Medicine:
+ effects:
+ - !type:HealthChange
+ conditions:
+ - !type:ReagentThreshold
+ min: 0
+ max: 7
+ damage:
+ groups:
+ Burn: -0.1
+ Toxin: -0.1
+ Brute: -0.1
+ - !type:HealthChange
+ conditions:
+ - !type:ReagentThreshold
+ min: 7
+ damage:
+ groups:
+ Burn: -0.2
+ Toxin: -0.2
+ Brute: -0.2
+ types:
+ Cellular: 0.25
+ - !type:PopupMessage
+ conditions:
+ - !type:ReagentThreshold
+ min: 10
+ visualType: Medium
+ messages:
+ - cp14-reagent-vital-extract-feeling-1
+ - cp14-reagent-vital-extract-feeling-2
+ - cp14-reagent-vital-extract-feeling-3
+ - cp14-reagent-vital-extract-feeling-4
+ - cp14-reagent-vital-extract-feeling-5
+ type: Local
+ probability: 0.05
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Reagents/biological.yml b/Resources/Prototypes/_CP14/Reagents/biological.yml
index e69de29bb2..9385f679e7 100644
--- a/Resources/Prototypes/_CP14/Reagents/biological.yml
+++ b/Resources/Prototypes/_CP14/Reagents/biological.yml
@@ -0,0 +1,64 @@
+- type: reagent
+ id: CP14Blood
+ group: CP14Biological
+ name: cp14-reagent-name-blood
+ desc: cp14-reagent-desc-blood
+ flavor: CP14Metallic
+ color: "#800000"
+ recognizable: true
+ physicalDesc: cp14-reagent-physical-desc-ferrous
+ slippery: false
+ footstepSound:
+ collection: FootstepBlood
+ params:
+ volume: 6
+# metabolisms:
+# Drink:
+# effects:
+# - !type:SatiateThirst
+# factor: 1.5
+# conditions:
+# - !type:OrganType
+# type: Human
+# shouldHave: false
+# Food:
+# effects:
+# - !type:AdjustReagent
+# reagent: UncookedAnimalProteins
+# amount: 0.5
+# Medicine:
+# effects:
+# - !type:HealthChange
+# conditions:
+# - !type:OrganType
+# type: Bloodsucker
+# damage:
+# groups:
+# Brute: -3
+# Burn: -1.25
+
+- type: reagent
+ id: CP14BloodGrassSap
+ group: CP14Biological
+ name: cp14-reagent-name-bloodgrasssap
+ desc: cp14-reagent-desc-bloodgrasssap
+ flavor: CP14Metallic
+ color: "#5c1f0a"
+ physicalDesc: cp14-reagent-physical-desc-ferrous
+ slippery: false
+ footstepSound:
+ collection: FootstepBlood
+ params:
+ volume: 6
+ metabolisms:
+ Food:
+ effects:
+ - !type:SatiateHunger
+ factor: 0.5
+ Medicine:
+ effects:
+ - !type:HealthChange
+ damage:
+ types:
+ Poison: 0.25
+
\ No newline at end of file
diff --git a/Resources/Prototypes/_CP14/Recipes/Reactions/biological.yml b/Resources/Prototypes/_CP14/Recipes/Reactions/biological.yml
new file mode 100644
index 0000000000..67e01ea993
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Recipes/Reactions/biological.yml
@@ -0,0 +1,23 @@
+- type: reaction
+ id: CP14VitalExtract
+ minTemp: 350
+ reactants:
+ CP14Blood:
+ amount: 1
+ CP14BloodGrassSap:
+ amount: 2
+ products:
+ CP14VitalExtract: 3
+
+- type: reaction
+ id: CP14VitalExtractOverheating
+ minTemp: 450
+ reactants:
+ CP14VitalExtract:
+ amount: 1
+ effects:
+ - !type:AreaReactionEffect
+ duration: 20
+ prototypeId: CP14MistVitalExtract
+ sound:
+ path: /Audio/Effects/smoke.ogg
\ No newline at end of file
diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/Alchemy.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/Alchemy.xml
new file mode 100644
index 0000000000..f749d9db94
--- /dev/null
+++ b/Resources/ServerInfo/_CP14/Guidebook_EN/Alchemy.xml
@@ -0,0 +1,13 @@
+
+# Alchemy
+
+There are a large number of reagents in the game. Some of them can be extracted from living creatures, some of them can be found in the wild, or you can use alchemy to get new reagents by mixing them together under certain conditions.
+
+Knowing different types of chemicals and their effects is important for being able to manage injury and danger.
+
+## Basic alchemical reagents
+
+
+## Biological
+
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/AlchemyTabs/BasicAlchemy.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/AlchemyTabs/BasicAlchemy.xml
new file mode 100644
index 0000000000..ef71006f75
--- /dev/null
+++ b/Resources/ServerInfo/_CP14/Guidebook_EN/AlchemyTabs/BasicAlchemy.xml
@@ -0,0 +1,9 @@
+
+
+# Basic alchemical reagents
+
+In the world of Eberron, there are 12 basic alchemical reagents called Extracts. They can be obtained in a variety of ways, and act as starting points for more complex alchemical recipes.
+
+
+
+
diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/AlchemyTabs/Biological.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/AlchemyTabs/Biological.xml
new file mode 100644
index 0000000000..d890d30ada
--- /dev/null
+++ b/Resources/ServerInfo/_CP14/Guidebook_EN/AlchemyTabs/Biological.xml
@@ -0,0 +1,9 @@
+
+
+# Biological
+
+There are a large number of biological substances - extracted from plants or living things. Knowledge of their characteristics may be useful to you many times.
+
+
+
+
diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/Welcome.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/Welcome.xml
new file mode 100644
index 0000000000..400446f552
--- /dev/null
+++ b/Resources/ServerInfo/_CP14/Guidebook_EN/Welcome.xml
@@ -0,0 +1,12 @@
+
+# Welcome to the pre-alpha version of CrystallPunk!
+
+This guide is designed to help you understand how all the mechanics in the game work.
+Be prepared for a lot of text - CP14 is a very large game with a lot of deep mechanics. We hope you will find these guides interesting.
+
+## What is CrystallPunk?
+CrystallPunk is an offshoot of the Space Station 14 game... Eeee, I don't think there's much to write about at this point. We'll fill that in later.
+
+## Where to start?
+No idea, good luck. (This block needs to be rewritten too)
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/Alchemy.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/Alchemy.xml
new file mode 100644
index 0000000000..47ec4813f8
--- /dev/null
+++ b/Resources/ServerInfo/_CP14/Guidebook_RU/Alchemy.xml
@@ -0,0 +1,13 @@
+
+# Алхимия
+
+В игре существует большое количество реагентов. Некоторые из них можно добыть из живых существ, некоторые - найти в природе, а другие получить при помощи исскуств алхимии.
+
+Знание различных типов химикатов и их эффектов важно для того, чтобы уметь справляться с травмами и опасностями.
+
+## Базовые алхимические реагенты
+
+
+## Биологические вещества
+
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/AlchemyTabs/BasicAlchemy.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/AlchemyTabs/BasicAlchemy.xml
new file mode 100644
index 0000000000..d6024d7358
--- /dev/null
+++ b/Resources/ServerInfo/_CP14/Guidebook_RU/AlchemyTabs/BasicAlchemy.xml
@@ -0,0 +1,9 @@
+
+
+# Основные алхимические реагенты
+
+В мире Эберрона существует 12 базовых алхимических реагентов, называемых экстрактами. Они могут быть получены различными способами и служат отправной точкой для более сложных алхимических рецептов.
+
+
+
+
diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/AlchemyTabs/Biological.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/AlchemyTabs/Biological.xml
new file mode 100644
index 0000000000..fda17c301f
--- /dev/null
+++ b/Resources/ServerInfo/_CP14/Guidebook_RU/AlchemyTabs/Biological.xml
@@ -0,0 +1,9 @@
+
+
+# Биологические вещества
+
+Существует большое количество биологических веществ - добытых из растений или живых существ. Знание их свойств может не раз пригодиться.
+
+
+
+
diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/Welcome.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/Welcome.xml
new file mode 100644
index 0000000000..319bf4a9e7
--- /dev/null
+++ b/Resources/ServerInfo/_CP14/Guidebook_RU/Welcome.xml
@@ -0,0 +1,12 @@
+
+# Добро пожаловать в пре-альфа версию игры CrystallPunk!
+
+Данное руководство создано, чтобы помочь вам разобраться в работе всех существующих в игре механик.
+Будьте готовы, что здесь будет очень много текста - ведь CP14 очень большая игра с большим количеством глубоких механик. Мы надеемся, что вам будет интересно читать эти руководства.
+
+## Что такое CrystallPunk?
+CrystallPunk - ответвление от игры Space Station 14... Иии, я пока считаю что тут не о чем писать. Мы заполним этот блок позже.
+
+## С чего начать?
+Без понятия, удачи. (Этот блок тоже нужно переписать)
+
\ No newline at end of file
diff --git a/Resources/Textures/_CP14/Effects/mist.rsi/chemmist.png b/Resources/Textures/_CP14/Effects/mist.rsi/chemmist.png
new file mode 100644
index 0000000000..30b58e39f5
Binary files /dev/null and b/Resources/Textures/_CP14/Effects/mist.rsi/chemmist.png differ
diff --git a/Resources/Textures/_CP14/Effects/mist.rsi/meta.json b/Resources/Textures/_CP14/Effects/mist.rsi/meta.json
new file mode 100644
index 0000000000..558e25d526
--- /dev/null
+++ b/Resources/Textures/_CP14/Effects/mist.rsi/meta.json
@@ -0,0 +1,37 @@
+{
+ "version": 1,
+ "size": {
+ "x": 96,
+ "y": 96
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/81b3a082ccdfb425f36bbed6e5bc1f0faed346ec/icons/effects/chemsmoke.dmi and modified with lowered opacity",
+ "states": [
+ {
+ "name": "chemmist",
+ "directions": 4,
+ "delays": [
+ [
+ 0.2,
+ 0.2,
+ 0.2
+ ],
+ [
+ 0.2,
+ 0.2,
+ 0.2
+ ],
+ [
+ 0.2,
+ 0.2,
+ 0.2
+ ],
+ [
+ 0.2,
+ 0.2,
+ 0.2
+ ]
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base1.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base1.png
new file mode 100644
index 0000000000..b190199e30
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base2.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base2.png
new file mode 100644
index 0000000000..ab18c442fd
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base3.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base3.png
new file mode 100644
index 0000000000..4ec474b21f
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base4.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base4.png
new file mode 100644
index 0000000000..fbb769874c
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base5.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base5.png
new file mode 100644
index 0000000000..2fafbb5847
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/base5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/meta.json b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/meta.json
new file mode 100644
index 0000000000..c589efac42
--- /dev/null
+++ b/Resources/Textures/_CP14/Objects/Specific/Alchemy/Herbal/bloodgrass.rsi/meta.json
@@ -0,0 +1,26 @@
+{
+ "version": 1,
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Created by TheShuEd (Github) for CrystallPunk14",
+ "states": [
+ {
+ "name": "base1"
+ },
+ {
+ "name": "base2"
+ },
+ {
+ "name": "base3"
+ },
+ {
+ "name": "base4"
+ },
+ {
+ "name": "base5"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/icon.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/icon.png
new file mode 100644
index 0000000000..aa7842adfd
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/icon.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill1.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill1.png
new file mode 100644
index 0000000000..bfb1b91288
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill2.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill2.png
new file mode 100644
index 0000000000..31f83b0de7
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill3.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill3.png
new file mode 100644
index 0000000000..837326f87f
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill4.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill4.png
new file mode 100644
index 0000000000..9f45d8bd5d
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill5.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill5.png
new file mode 100644
index 0000000000..03bf60432e
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left-fill5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left.png
new file mode 100644
index 0000000000..049d3fdfe0
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill1.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill1.png
new file mode 100644
index 0000000000..bfb1b91288
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill2.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill2.png
new file mode 100644
index 0000000000..31f83b0de7
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill3.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill3.png
new file mode 100644
index 0000000000..837326f87f
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill4.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill4.png
new file mode 100644
index 0000000000..9f45d8bd5d
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill5.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill5.png
new file mode 100644
index 0000000000..03bf60432e
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right-fill5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right.png
new file mode 100644
index 0000000000..049d3fdfe0
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-1.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-1.png
new file mode 100644
index 0000000000..8185152823
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-2.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-2.png
new file mode 100644
index 0000000000..5430821ef8
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-3.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-3.png
new file mode 100644
index 0000000000..488cba2658
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-4.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-4.png
new file mode 100644
index 0000000000..d083e65c33
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-5.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-5.png
new file mode 100644
index 0000000000..22de2f32d3
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/liq-5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/meta.json b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/meta.json
new file mode 100644
index 0000000000..e9bddbf71a
--- /dev/null
+++ b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/meta.json
@@ -0,0 +1,125 @@
+{
+ "version": 1,
+ "license": "CC-BY-NC-SA-3.0",
+ "copyright": "Created by TheShuEd (Github) for CrystallPunk",
+ "size": {
+ "x": 48,
+ "y": 48
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "liq-1"
+ },
+ {
+ "name": "liq-2"
+ },
+ {
+ "name": "liq-3"
+ },
+ {
+ "name": "liq-4"
+ },
+ {
+ "name": "liq-5"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left-fill1",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left-fill2",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left-fill3",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left-fill4",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left-fill5",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right-fill1",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right-fill2",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right-fill3",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right-fill4",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right-fill5",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-left-fill1",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-left-fill2",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-left-fill3",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-left-fill4",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-left-fill5",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-right-fill1",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-right-fill2",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-right-fill3",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-right-fill4",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-right-fill5",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill1.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill1.png
new file mode 100644
index 0000000000..bfb1b91288
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill2.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill2.png
new file mode 100644
index 0000000000..31f83b0de7
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill3.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill3.png
new file mode 100644
index 0000000000..837326f87f
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill4.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill4.png
new file mode 100644
index 0000000000..9f45d8bd5d
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill5.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill5.png
new file mode 100644
index 0000000000..03bf60432e
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left-fill5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left.png
new file mode 100644
index 0000000000..049d3fdfe0
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-left.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill1.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill1.png
new file mode 100644
index 0000000000..bfb1b91288
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill1.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill2.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill2.png
new file mode 100644
index 0000000000..31f83b0de7
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill2.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill3.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill3.png
new file mode 100644
index 0000000000..837326f87f
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill3.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill4.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill4.png
new file mode 100644
index 0000000000..9f45d8bd5d
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill4.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill5.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill5.png
new file mode 100644
index 0000000000..03bf60432e
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right-fill5.png differ
diff --git a/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right.png b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right.png
new file mode 100644
index 0000000000..049d3fdfe0
Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Alchemy/cauldron.rsi/wielded-inhand-right.png differ
diff --git a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards2.png b/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards2.png
index 33af066e82..cec6084383 100644
Binary files a/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards2.png and b/Resources/Textures/_CP14/Structures/Decoration/wallmount_decor.rsi/boards2.png differ
diff --git a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq1.png b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq1.png
index 7244b37f5c..399391923e 100644
Binary files a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq1.png and b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq1.png differ
diff --git a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq2.png b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq2.png
index 7244b37f5c..7167da3be7 100644
Binary files a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq2.png and b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq2.png differ
diff --git a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq3.png b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq3.png
index 7244b37f5c..000b05e03a 100644
Binary files a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq3.png and b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq3.png differ
diff --git a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq4.png b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq4.png
index 7167da3be7..60b06b9927 100644
Binary files a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq4.png and b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq4.png differ
diff --git a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq5.png b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq5.png
index 000b05e03a..4e9303a987 100644
Binary files a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq5.png and b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq5.png differ
diff --git a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq6.png b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq6.png
deleted file mode 100644
index 60b06b9927..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq6.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq7.png b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq7.png
deleted file mode 100644
index 4e9303a987..0000000000
Binary files a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/liq7.png and /dev/null differ
diff --git a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/meta.json b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/meta.json
index 42239042c7..f12f364970 100644
--- a/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/meta.json
+++ b/Resources/Textures/_CP14/Structures/Furniture/barrel.rsi/meta.json
@@ -27,12 +27,6 @@
},
{
"name": "liq5"
- },
- {
- "name": "liq6"
- },
- {
- "name": "liq7"
}
]
}
diff --git a/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/base.png b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/base.png
new file mode 100644
index 0000000000..bef8c056aa
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/base.png differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/burning.png b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/burning.png
new file mode 100644
index 0000000000..b014d4b917
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/burning.png differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/fuel1.png b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/fuel1.png
new file mode 100644
index 0000000000..517f9b1669
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/fuel1.png differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/fuel2.png b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/fuel2.png
new file mode 100644
index 0000000000..03af060812
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/fuel2.png differ
diff --git a/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/meta.json b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/meta.json
new file mode 100644
index 0000000000..0137e091d2
--- /dev/null
+++ b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_furnace.rsi/meta.json
@@ -0,0 +1,49 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Created by Jaraten and TheShuEd (Github) for CrystallPunk 14",
+ "size": {
+ "x": 32,
+ "y": 48
+ },
+ "states": [
+ {
+ "name": "base",
+ "directions": 4
+ },
+ {
+ "name": "fuel1",
+ "directions": 4
+ },
+ {
+ "name": "fuel2",
+ "directions": 4
+ },
+ {
+ "name": "burning",
+ "directions": 4,
+ "delays": [
+ [
+ 0.2,
+ 0.2,
+ 0.2
+ ],
+ [
+ 0.2,
+ 0.2,
+ 0.2
+ ],
+ [
+ 0.2,
+ 0.2,
+ 0.2
+ ],
+ [
+ 0.2,
+ 0.2,
+ 0.2
+ ]
+ ]
+ }
+ ]
+}
diff --git a/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_vat.rsi/full.png b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_vat.rsi/full.png
index 8784c66729..51f324ab98 100644
Binary files a/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_vat.rsi/full.png and b/Resources/Textures/_CP14/Structures/Specific/Alchemy/alchemy_vat.rsi/full.png differ