From e7e4b556e589295dd70cb4503313bbf577bb11bb Mon Sep 17 00:00:00 2001 From: SleepyScarecrow Date: Fri, 9 Aug 2024 17:07:49 -0400 Subject: [PATCH] this doesn't even build lol ignore this --- Content.Server/Chat/SuicideSystem.cs | 2 +- .../Components/ActiveKettleComponent.cs | 13 ++ .../Components/ActivelyBoilingComponent.cs | 11 ++ .../Kitchen/Components/KettleComponent.cs | 62 ++++++ .../Kitchen/EntitySystems/KettleSystem.cs | 177 ++++++++++++++++++ .../Kitchen/Components/SharedKettle.cs | 12 ++ .../Kitchen/KettleRecipePrototype.cs | 58 ++++++ .../Kitchen/MicrowaveMealRecipePrototype.cs | 2 +- .../Items/Kettle/kettle_boiling_water.ogg | Bin 0 -> 27581 bytes Resources/Audio/Items/Kettle/kettle_done.ogg | Bin 0 -> 5173 bytes .../Audio/Items/Kettle/kettle_switch_on.ogg | Bin 0 -> 4826 bytes .../Locale/en-US/flavors/flavor-profiles.ftl | 3 + .../en-US/reagents/meta/physical-desc.ftl | 2 +- Resources/Locale/en-US/reagents/meta/tea.ftl | 2 + .../Consumable/Drinks/drinks_special.yml | 79 ++++++++ .../Reagents/Consumable/Drink/teas.yml | 13 ++ Resources/Prototypes/Recipes/tea_recipes.yml | 10 + .../electrickettle.rsi/electrickettle.png | Bin 0 -> 826 bytes .../electrickettle.rsi/electrickettle1.png | Bin 0 -> 201 bytes .../electrickettle.rsi/electrickettle2.png | Bin 0 -> 238 bytes .../electrickettle.rsi/electrickettle3.png | Bin 0 -> 255 bytes .../electrickettle.rsi/electrickettle4.png | Bin 0 -> 298 bytes .../electrickettle.rsi/electrickettle5.png | Bin 0 -> 322 bytes .../electrickettle.rsi/electrickettle6.png | Bin 0 -> 347 bytes .../electrickettleboiling.png | Bin 0 -> 1019 bytes .../Drinks/electrickettle.rsi/inhand-left.png | Bin 0 -> 474 bytes .../electrickettle.rsi/inhand-right.png | Bin 0 -> 462 bytes .../Drinks/electrickettle.rsi/meta.json | 44 +++++ .../Drinks/kettle.rsi/inhand-left.png | Bin 0 -> 474 bytes .../Drinks/kettle.rsi/inhand-right.png | Bin 0 -> 462 bytes .../Consumable/Drinks/kettle.rsi/kettle.png | Bin 0 -> 699 bytes .../Consumable/Drinks/kettle.rsi/kettle1.png | Bin 0 -> 200 bytes .../Consumable/Drinks/kettle.rsi/kettle2.png | Bin 0 -> 237 bytes .../Consumable/Drinks/kettle.rsi/kettle3.png | Bin 0 -> 284 bytes .../Consumable/Drinks/kettle.rsi/meta.json | 31 +++ 35 files changed, 518 insertions(+), 3 deletions(-) create mode 100644 Content.Server/Kitchen/Components/ActiveKettleComponent.cs create mode 100644 Content.Server/Kitchen/Components/ActivelyBoilingComponent.cs create mode 100644 Content.Server/Kitchen/Components/KettleComponent.cs create mode 100644 Content.Server/Kitchen/EntitySystems/KettleSystem.cs create mode 100644 Content.Shared/Kitchen/Components/SharedKettle.cs create mode 100644 Content.Shared/Kitchen/KettleRecipePrototype.cs create mode 100644 Resources/Audio/Items/Kettle/kettle_boiling_water.ogg create mode 100644 Resources/Audio/Items/Kettle/kettle_done.ogg create mode 100644 Resources/Audio/Items/Kettle/kettle_switch_on.ogg create mode 100644 Resources/Locale/en-US/reagents/meta/tea.ftl create mode 100644 Resources/Prototypes/Reagents/Consumable/Drink/teas.yml create mode 100644 Resources/Prototypes/Recipes/tea_recipes.yml create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle4.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle5.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle6.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettleboiling.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/meta.json create mode 100644 Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/kettle.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/kettle1.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/kettle2.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/kettle3.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/meta.json diff --git a/Content.Server/Chat/SuicideSystem.cs b/Content.Server/Chat/SuicideSystem.cs index 1cc478696ca..c7fcdccc1aa 100644 --- a/Content.Server/Chat/SuicideSystem.cs +++ b/Content.Server/Chat/SuicideSystem.cs @@ -55,7 +55,7 @@ public bool Suicide(EntityUid victim) if (suicideEvent.AttemptBlocked) return false; - DefaultSuicideHandler(victim, suicideEvent); + DefaultSuicideHandler(victim, Event); ApplyDeath(victim, suicideEvent.Kind!.Value); _adminLogger.Add(LogType.Mind, $"{EntityManager.ToPrettyString(victim):player} suicided{(environmentSuicide ? " (environment)" : "")}"); diff --git a/Content.Server/Kitchen/Components/ActiveKettleComponent.cs b/Content.Server/Kitchen/Components/ActiveKettleComponent.cs new file mode 100644 index 00000000000..f2cf757aa98 --- /dev/null +++ b/Content.Server/Kitchen/Components/ActiveKettleComponent.cs @@ -0,0 +1,13 @@ +using Content.Shared.Kitchen; + +namespace Content.Server.Kitchen.Components; + +/// +/// Attached to a microwave that is currently in the process of cooking +/// +[RegisterComponent] +public sealed partial class ActiveKettleComponent : Component +{ + [ViewVariables] + public (DrinkRecipePrototype?, int) PortionedRecipe; +} diff --git a/Content.Server/Kitchen/Components/ActivelyBoilingComponent.cs b/Content.Server/Kitchen/Components/ActivelyBoilingComponent.cs new file mode 100644 index 00000000000..333b4b34af0 --- /dev/null +++ b/Content.Server/Kitchen/Components/ActivelyBoilingComponent.cs @@ -0,0 +1,11 @@ +using Content.Shared.Kitchen; + +namespace Content.Server.Kitchen.Components; + +/// +/// Attached to an object that's actively being boiled into tea +/// +[RegisterComponent] +public sealed partial class ActivelyBoilingComponent : Component +{ +} diff --git a/Content.Server/Kitchen/Components/KettleComponent.cs b/Content.Server/Kitchen/Components/KettleComponent.cs new file mode 100644 index 00000000000..b065465c850 --- /dev/null +++ b/Content.Server/Kitchen/Components/KettleComponent.cs @@ -0,0 +1,62 @@ +using Content.Shared.Construction.Prototypes; +using Content.Shared.DeviceLinking; +using Content.Shared.Item; +using Robust.Shared.Audio; +using Robust.Shared.Containers; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Kitchen.Components +{ + [RegisterComponent] + public sealed partial class KettleComponent : Component + { + + [DataField("baseHeatMultiplier"), ViewVariables(VVAccess.ReadWrite)] + public float BaseHeatMultiplier = 100; + + public Container Storage = default!; + + [DataField, ViewVariables(VVAccess.ReadWrite)] + public int Capacity = 3; + + [DataField("objectHeatMultiplier"), ViewVariables(VVAccess.ReadWrite)] + public float ObjectHeatMultiplier = 100; + + [DataField("failureResult", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string BadRecipeEntityId = "FoodBadRecipe"; + + #region audio + [DataField("beginBoilSound")] + public SoundSpecifier StartBoilingSound = new SoundPathSpecifier("/Audio/Items/Kettle/kettle_switch_on.ogg"); + + [DataField("boilDoneSound")] + public SoundSpecifier BoilDoneSound = new SoundPathSpecifier("/Audio/Machines/kettle_done.ogg"); + + public EntityUid? PlayingStream; + + [DataField("loopingSound")] + public SoundSpecifier LoopingSound = new SoundPathSpecifier("/Audio/Machines/kettle_boiling_water.ogg"); + #endregion + + + /// + /// Max Temp the kettle can heat to + /// + [DataField("temperatureLimit")] + public float TemperatureUpperThreshold = 373.15f; // boiling point of water :v + + } + + public sealed class BeingBoiledEvent : HandledEntityEventArgs + { + public EntityUid Kettle; + public EntityUid? User; + + public BeingBoiledEvent(EntityUid kettle, EntityUid? user) + { + Kettle = kettle; + User = user; + } + } +} diff --git a/Content.Server/Kitchen/EntitySystems/KettleSystem.cs b/Content.Server/Kitchen/EntitySystems/KettleSystem.cs new file mode 100644 index 00000000000..f8830bd1819 --- /dev/null +++ b/Content.Server/Kitchen/EntitySystems/KettleSystem.cs @@ -0,0 +1,177 @@ +using Content.Server.Body.Systems; +using Content.Server.Chemistry.Containers.EntitySystems; +using Content.Server.Construction; +using Content.Server.Explosion.EntitySystems; +using Content.Server.DeviceLinking.Events; +using Content.Server.DeviceLinking.Systems; +using Content.Server.Hands.Systems; +using Content.Server.Kitchen.Components; +using Content.Server.Power.Components; +using Content.Server.Power.EntitySystems; +using Content.Server.Temperature.Components; +using Content.Server.Temperature.Systems; +using Content.Shared.Body.Components; +using Content.Shared.Body.Part; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Construction.EntitySystems; +using Content.Shared.Destructible; +using Content.Shared.FixedPoint; +using Content.Shared.Interaction; +using Content.Shared.Interaction.Events; +using Robust.Shared.Random; +using Robust.Shared.Audio; +using Content.Server.Lightning; +using Content.Shared.Item; +using Content.Shared.Kitchen; +using Content.Shared.Kitchen.Components; +using Content.Shared.Popups; +using Content.Shared.Power; +using Content.Shared.Tag; +using Robust.Server.GameObjects; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Containers; +using Robust.Shared.Player; +using System.Linq; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; + +namespace Content.Server.Kitchen.EntitySystems +{ + public sealed class KettleSystem : EntitySystem + { + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly RecipeManager _recipeManager = default!; + [Dependency] private readonly TemperatureSystem _temperature = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedItemSystem _item = default!; + [Dependency] private readonly SolutionContainerSystem _solutionContainer = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnBoilStart); + SubscribeLocalEvent(OnBoilStop); + } + + public void OnBoilStart(Entity ent, ref ComponentStartup args) + { + if (!TryComp(ent, out var kettleComponent)) + return; + SetAppearance(ent.Owner, KettleVisualState.Boiling, kettleComponent); + + kettleComponent.PlayingStream = + _audio.PlayPvs(kettleComponent.LoopingSound, ent, AudioParams.Default.WithLoop(true).WithMaxDistance(5)).Value.Entity; + } + + private void OnBoilStop(Entity ent, ref ComponentShutdown args) + { + if (!TryComp(ent, out var kettleComponent)) + return; + + SetAppearance(ent.Owner, KettleVisualState.Idle, kettleComponent); + kettleComponent.PlayingStream = _audio.Stop(kettleComponent.PlayingStream); + } + + private void AddTemperature(KettleComponent component, float time) + { + var heatToAdd = time * component.BaseHeatMultiplier; + foreach (var entity in component.Storage.ContainedEntities) + { + if (TryComp(entity, out var tempComp)) + _temperature.ChangeHeat(entity, heatToAdd * component.ObjectHeatMultiplier, false, tempComp); + + if (!TryComp(entity, out var solutions)) + continue; + foreach (var (_, soln) in _solutionContainer.EnumerateSolutions((entity, solutions))) + { + var solution = soln.Comp.Solution; + if (solution.Temperature > component.TemperatureUpperThreshold) + continue; + + _solutionContainer.AddThermalEnergy(soln, heatToAdd); + } + } + } + + private void SubtractContents(KettleComponent component, DrinkRecipePrototype recipe) + { + + var totalReagentsToRemove = new Dictionary(recipe.Reagents); + + // yoinked this spaghetti from microwaves :p + foreach (var item in component.Storage.ContainedEntities) + { + if (!TryComp(item, out var solMan)) + continue; + + // go over every solution + foreach (var (_, soln) in _solutionContainer.EnumerateSolutions((item, solMan))) + { + var solution = soln.Comp.Solution; + foreach (var (reagent, _) in recipe.Reagents) + { + // removed everything + if (!totalReagentsToRemove.ContainsKey(reagent)) + continue; + + var quant = solution.GetTotalPrototypeQuantity(reagent); + + if (quant >= totalReagentsToRemove[reagent]) + { + quant = totalReagentsToRemove[reagent]; + totalReagentsToRemove.Remove(reagent); + } + else + { + totalReagentsToRemove[reagent] -= quant; + } + + _solutionContainer.RemoveReagent(soln, reagent, quant); + } + } + } + + foreach (var recipeLeaf in recipe.Leaves) + { + for (var i = 0; i < recipeLeaf.Value; i++) + { + foreach (var item in component.Storage.ContainedEntities) + { + var metaData = MetaData(item); + if (metaData.EntityPrototype == null) + { + continue; + } + + if (metaData.EntityPrototype.ID == recipeLeaf.Key) + { + _container.Remove(item, component.Storage); + EntityManager.DeleteEntity(item); + break; + } + } + } + } + } + + public static bool HasContents(KettleComponent component) + { + return component.Storage.ContainedEntities.Any(); + } + private void OnInit(Entity ent, ref ComponentInit args) + { + // this does have to be in ComponentInit, do I know why? No :3 + ent.Comp.Storage = _container.EnsureContainer(ent, "storagebase"); + } + + public void SetAppearance(EntityUid uid, KettleVisualState state, KettleComponent? component = null, AppearanceComponent? appearanceComponent = null) + { + if (!Resolve(uid, ref component, ref appearanceComponent, false)) + return; + _appearance.SetData(uid, PowerDeviceVisuals.VisualState, state, appearanceComponent); + } + } +} \ No newline at end of file diff --git a/Content.Shared/Kitchen/Components/SharedKettle.cs b/Content.Shared/Kitchen/Components/SharedKettle.cs new file mode 100644 index 00000000000..2c03939a5e5 --- /dev/null +++ b/Content.Shared/Kitchen/Components/SharedKettle.cs @@ -0,0 +1,12 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Kitchen.Components +{ + + [Serializable, NetSerializable] + public enum KettleVisualState + { + Idle, + Boiling + } +} diff --git a/Content.Shared/Kitchen/KettleRecipePrototype.cs b/Content.Shared/Kitchen/KettleRecipePrototype.cs new file mode 100644 index 00000000000..1f2653ec8ad --- /dev/null +++ b/Content.Shared/Kitchen/KettleRecipePrototype.cs @@ -0,0 +1,58 @@ +using Content.Shared.Chemistry.Reagent; +using Content.Shared.FixedPoint; +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; + +namespace Content.Shared.Kitchen +{ + /// + /// Kettle Recipes, teas and stuff + /// + + [Prototype("kettleDrinkRecipe")] + public sealed partial class DrinkRecipePrototype : IPrototype + { + [ViewVariables] + [IdDataField] + public string ID { get; private set; } = default!; + + + [DataField("minTemp")] + public float MinimumTemperature = 0.0f; + + [DataField("name")] + private string _name = string.Empty; + + [DataField("reagents")] + public Dictionary Reagents { get; private set; } = new(); + + [DataField("leaves")] + public IReadOnlyDictionary Leaves => Leaves; + + [DataField("products")] + public Dictionary Products { get; private set; } = new(); + + public string Name => Loc.GetString(_name); + + [DataDefinition] + public sealed partial class ReactantPrototype + { + [DataField("amount")] + private FixedPoint2 _amount = FixedPoint2.New(1); + + public FixedPoint2 Amount => _amount; + } + public FixedPoint2 IngredientCount() + { + FixedPoint2 n = 0; + n += Reagents.Count; // number of distinct reagents + foreach (FixedPoint2 i in Leaves.Values) // sum the number of solid ingredients + { + n += i; + } + return n; + } + } +} \ No newline at end of file diff --git a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs index b0991b54605..1ed87acb82d 100644 --- a/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs +++ b/Content.Shared/Kitchen/MicrowaveMealRecipePrototype.cs @@ -19,7 +19,7 @@ public sealed partial class FoodRecipePrototype : IPrototype [DataField("name")] private string _name = string.Empty; - [DataField("reagents", customTypeSerializer:typeof(PrototypeIdDictionarySerializer))] + [DataField("reagents", customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] private Dictionary _ingsReagents = new(); [DataField("solids", customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] diff --git a/Resources/Audio/Items/Kettle/kettle_boiling_water.ogg b/Resources/Audio/Items/Kettle/kettle_boiling_water.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3042c8f6d8ccf8d4ba9e28f97c0b3813f658f8a6 GIT binary patch literal 27581 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 Ef-d!god5s; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle1.png b/Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle1.png new file mode 100644 index 0000000000000000000000000000000000000000..d63673bf0c093eb8156d463544b505aa9eb612e9 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP*A$W zHKHUqKdq!Zu_%?nIW?!avREOwq%Ce ck!4_*{HyWcn~$!|Ku0imy85}Sb4q9e0PB}s)&Kwi literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle3.png b/Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle3.png new file mode 100644 index 0000000000000000000000000000000000000000..fe5b5d3d173ca8c6fd4483a68d75348cf93bc79a GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP*A$W zHKHUqKdq!Zu_%?nIW?!avREOwq%$qR9z vhb$C23!a_o{eSuJUrG1P55cx9k!4_*ga|F;JrY zFF zg_#Kq%n}C}*bEvNd47m(*p)iPv-3dY0gb1vVhujQ728^~b}nH5P-VAaOIk*V*DFRx zCC!~jHk{S0Ds{F!uz#PXmHfkVzF(qEzcQ%rx|}GS^meC2$*fn5&-9jE_+D@;-|)@0 s)@l4b$Apc#EI-ayPGVrLWBb7P-Dl;&%U^_^0zJUs>FVdQ&MBb@0N~(t_W%F@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle5.png b/Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettle5.png new file mode 100644 index 0000000000000000000000000000000000000000..4f2f4f9c9a919538e911408917c6ff938bdc7449 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP*A$W zHKHUqKdq!Zu_%?nIW?!avREOwq%Z4 zqxtq1_q@MwO>=t7F7d)`)r3|rO)l2mFBe@fu3(uS=h(6A$>}AT7q$g*EOgV@R;rfw ze{ahfg>%JC_upOY;4r!@;=l+(5B!(1FeyNKcTS#g`!f_H^uZ4}N(K3&bT z?PtTmrHXO_H8sJ%<{hXtGTgIEfWP39scw9d%f9Zw{pxZF=Zw3U<@3A4d-B&EWoCHr p?cKbd$Ft^$uaMPlVEPkQ9l7)B!DrVbw*!65;OXk;vd$@?2>>T3j4S{E literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettleboiling.png b/Resources/Textures/Objects/Consumable/Drinks/electrickettle.rsi/electrickettleboiling.png new file mode 100644 index 0000000000000000000000000000000000000000..189968e3b6f6e5670345e7adf06aafd992c60916 GIT binary patch literal 1019 zcmV001Be1^@s6m49>f00001b5ch_0Itp) z=>Px&n@L1LRCt{2n@exvFcgK410|s_EXamdWHnuN(MA9NZe?nmT~R?cD0*@j%B5~x#!Ta7*6Q`Wn$QC1ESKOEFH~&LneCfQk7oT_<$DqDnWux^9qvNOfo5qlMec z1|=(^Oa?rdi5lXQ=TVi7e#!_?MdN>W{&54QhhU&l1F9H2k0$r`Fbo4vPfyKtfKEPkv0a8j35j@WW5kX1`&N-f+pZA`3>Li4S8t3m0J(^!1KbHXk z;PLU1?(Xj3`#x5y6~Zu7a499iFof^>>OKepmM4HLC2=&#KlJXS`StK~uLCBI_kAB> z7=kedDJ6su;G9DU0V0BBSujl#*VosTPM$#BmJH zIfw|Z>oOujuh)ZRS(R0S=C_kyXeXr8>8O-yOn!qgrc!b`Z7-M0T3(JdzkU4D2287| zts>2DAHR?R4a3O&Qd>u*XnyYnkL5MF$p0M$8oNLY5ryNGc%y$IAq&4hQlFT*M$&51%NPA@bm`&uCA`ilvVRD zjGt*hqRoEaXf(ph%Zm!&<0A&**R24$-V&U1SgUo}@}A5mBF+Cn{7eHT`+ad7iv z&N+b1Vx(!Bux(qV<|vA=Ua#>s8~~_xfmHL`&CfI-=Nz1K<$fZ95CTCEY^B}w_lc_b zOQz2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107*jo6978H@y}jkzeaJw7 z?SZ-HR9nJYN^0)jE?!$o-yRP7bZ)}5qsF#X)R*N+%AP6vImX*XnJ z*l_=SXo&vi_4qZa1gwqUeihZ~G!2NJVk1;dM^@%`*$ z(WmUUJXoM%laA_XBOS5s=Qp*zZz|X>$dvkcFIj>uMsK2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107$ZGh978H@y}jkz-E1Jh z_P|_mk;u~J&lGkJ7H6+sf-|4;Cs9kFQ{!WqCrwKDzjJ#X~iZz%78W>m< z7#KMm7~sqg%3X^D)|zg)CLq`%V8GMd#daV{+j9~FgA2;co3R=odMVe{|ovr1keOe>IV12Sba&pqGF z;4o{M!LbKryH{>!&aq`?5O4w+_dN0~Yk}3=gdRo)6W`Bu4B2aQxTB`Ap0liYU(UEA zMsHH;&F4P^7!HJ=KVWk{Vp{5U`N!`W_V4{UJ=-BP^wAt=4#wE)Z>KS3&QkIeidla> znQ=<0=3@(|?7i8yedaw+>baTPH=SY4)<<&=TlCd$OK*6O2nL6Sh{wz-Ic^h}GFDjv P2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107*jo6978H@y}jkzeaJw7 z?SZ-HR9nJYN^0)jE?!$o-yRP7bZ)}5qsF#X)R*N+%AP6vImX*XnJ z*l_=SXo&vi_4qZa1gwqUeihZ~G!2NJVk1;dM^@%`*$ z(WmUUJXoM%laA_XBOS5s=Qp*zZz|X>$dvkcFIj>uMsK2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107$ZGh978H@y}jkz-E1Jh z_P|_mk;u~J&lGkJ7H6+sf-|4;Cs9kFQ{!WqCrwKDzjJ#X~iZz%78W>m< z7#KMm7~sqg%3X^D)|zg)CLq`%V8GMd#daV{+j9~FgA2;co3R=odMVe{|ovr1keOe>IV12Sba&pqGF z;4o{M!LbKryH{>!&aq`?5O4w+_dN0~Yk}3=gdRo)6W`Bu4B2aQxTB`Ap0liYU(UEA zMsHH;&F4P^7!HJ=KVWk{Vp{5U`N!`W_V4{UJ=-BP^wAt=4#wE)Z>KS3&QkIeidla> znQ=<0=3@(|?7i8yedaw+>baTPH=SY4)<<&=TlCd$OK*6O2nL6Sh{wz-Ic^h}GFDjv PYAX9X8WNB|8RBvx=!KdMT0006; zNkls?HCaIS#LQ$}-r4q1` zlnv2jzs~8^Zlg7VdQmTSZkA!rp7WbwK8&jJKbxrmHJ}F6fErK(YQVDx92|Vq?d`W_ z(RioRQDY2Ak}S+Io6XFl0G~b|>5sEB0CsoZ8{hY})oNj_#c>=OjRw|QilQJ*Q_j!N z|0(3UuHJ`O2-x5Mpj%s80PO6%quFd?t;JgV_h)0OuZRGUrYVELz}!YW7yuB4p)M^g z5d;BydwU!n9&&tqOp+vAip#Q@;y4bfiinV=DMe8LpsHk9Mv^23z;PVS^V~cL(ChVd zb#;|yv&qKB21iFnTwY${tiNIS>jH*9>2x}Ho<~s>WLZ{0R25ZyJYZ#IMf?3e0NrjE z5n(VGFdB_$ti5J5IEV2CK@e1cJkJpkMC9o!u)e;oy%1_;9tYc2hLpOcdlM1=8pj4Z!o^6d*C_`ZJw zQ0@m+CC~H61J>5o)c1X&C?bwy;y6Y`m`oc6adfja9y`5SkAuemz(mg<-ZpY zMUl4KZGs?RI2=+G1!e4HGU4j#>PB%9sbb2wCjq+Mt_DF+B`ME&*{-jzab34s?h;TQ z!Fj-<;`ai=Fx0X@S=<;y6h%0WQ{8?^l3j$^VcV?N*f9(dGM?0H@_csp*se^(A; h%)M_w{Tx3Vz#qhD_|T5r;O77U002ovPDHLkV1hTxIq?7h literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/kettle1.png b/Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/kettle1.png new file mode 100644 index 0000000000000000000000000000000000000000..0aca677d3a1f0329dd4a0c7b3836d679b9e8477d GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP*A$W zHKHUqKdq!Zu_%?nIW?!avREOwq%pwrQW7epx?wu~z;6`dFLu1@FK4wtZVAbd1rH**HA!&wROe=PhP&gN$VG bVr2O7yYb+|#?W-28yGxY{an^LB{Ts5NOE3x literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/kettle3.png b/Resources/Textures/Objects/Consumable/Drinks/kettle.rsi/kettle3.png new file mode 100644 index 0000000000000000000000000000000000000000..a8091579e7c3de6323d01310acc4e5f5a15491ae GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP*A$W zHKHUqKdq!Zu_%?nIW?!avREOwq%e*vz{=NLa_;*m;>z7Q1WQO_>3_v@4YTf3i2zPr2c