diff --git a/Content.Shared/_NF/Containers/CondimentCupComponent.cs b/Content.Shared/_NF/Containers/CondimentCupComponent.cs
new file mode 100644
index 00000000000..01ef61f9ed0
--- /dev/null
+++ b/Content.Shared/_NF/Containers/CondimentCupComponent.cs
@@ -0,0 +1,11 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared._NF.Containers.Components;
+///
+/// CondimentCup empty component
+///
+[RegisterComponent, NetworkedComponent]
+public sealed partial class CondimentCupComponent : Component
+{
+
+}
diff --git a/Content.Shared/_NF/Containers/CondimentSqueezeBottleComponent.cs b/Content.Shared/_NF/Containers/CondimentSqueezeBottleComponent.cs
new file mode 100644
index 00000000000..7d7711f1a3b
--- /dev/null
+++ b/Content.Shared/_NF/Containers/CondimentSqueezeBottleComponent.cs
@@ -0,0 +1,11 @@
+using Robust.Shared.GameStates;
+
+namespace Content.Shared._NF.Containers.Components;
+///
+/// CondimentSqueezeBottle empty component
+///
+[RegisterComponent, NetworkedComponent]
+public sealed partial class CondimentSqueezeBottleComponent : Component
+{
+
+}
diff --git a/Resources/Locale/en-US/_NF/reagents/meta/consumable/food/condiments.ftl b/Resources/Locale/en-US/_NF/reagents/meta/consumable/food/condiments.ftl
new file mode 100644
index 00000000000..f89397fcb53
--- /dev/null
+++ b/Resources/Locale/en-US/_NF/reagents/meta/consumable/food/condiments.ftl
@@ -0,0 +1,2 @@
+reagent-name-coldsauce = coldsauce
+reagent-desc-coldsauce = Coldsauce. Leaves the tongue numb in its passage.
diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
index 45e157b6e91..8af06f49954 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
@@ -517,6 +517,7 @@
- SalvageTechFabCircuitboardNF # Frontier
- NFScrapProcessorCircuitboard # Frontier
- BlueprintLithographMachineCircuitboard # Frontier
+ - CondimentDispenserCircuitboard # Frontier
dynamicRecipes:
- ThermomachineFreezerMachineCircuitBoard
- HellfireFreezerMachineCircuitBoard
diff --git a/Resources/Prototypes/_NF/Catalog/ReagentDispensers/condiments.yml b/Resources/Prototypes/_NF/Catalog/ReagentDispensers/condiments.yml
new file mode 100644
index 00000000000..366a7b6c185
--- /dev/null
+++ b/Resources/Prototypes/_NF/Catalog/ReagentDispensers/condiments.yml
@@ -0,0 +1,11 @@
+- type: reagentDispenserInventory
+ id: CondimentDispenserInventory
+ inventory:
+ - DrinkAstrotameJug
+ - DrinkBbqSauceJug
+ - DrinkColdsauceJug
+ - DrinkHorseradishSauceJug
+ - DrinkHotsauceJug
+ - DrinkKetchupJug
+ - DrinkMustardJug
+ - DrinkSoysauceJug
diff --git a/Resources/Prototypes/_NF/Entities/Objects/Consumable/Drinks/condiments_bottles.yml b/Resources/Prototypes/_NF/Entities/Objects/Consumable/Drinks/condiments_bottles.yml
new file mode 100644
index 00000000000..aea59ed3e51
--- /dev/null
+++ b/Resources/Prototypes/_NF/Entities/Objects/Consumable/Drinks/condiments_bottles.yml
@@ -0,0 +1,135 @@
+- type: entity
+ parent: DrinkBottlePlasticBaseFull
+ id: DrinkAstrotameJug
+ name: astrotame jug
+ description: The sweetness of a thousand sugars but none of the calories. Put it in your coffee.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 150
+ reagents:
+ - ReagentId: Astrotame
+ Quantity: 150
+ - type: Drink
+ - type: Label
+ currentLabel: reagent-name-astrotame
+
+- type: entity
+ parent: DrinkBottlePlasticBaseFull
+ id: DrinkBbqSauceJug
+ name: bbq sauce jug
+ description: Finally, ketchup for grownups.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 150
+ reagents:
+ - ReagentId: BbqSauce
+ Quantity: 150
+ - type: Drink
+ - type: Label
+ currentLabel: reagent-name-bbq-sauce
+
+- type: entity
+ parent: DrinkBottlePlasticBaseFull
+ id: DrinkColdsauceJug
+ name: coldsauce jug
+ description: Something to make every meal a little cooler.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 150
+ reagents:
+ - ReagentId: Frostoil
+ Quantity: 150
+ - type: Drink
+ - type: Label
+ currentLabel: reagent-name-coldsauce
+
+- type: entity
+ parent: DrinkBottlePlasticBaseFull
+ id: DrinkHorseradishSauceJug
+ name: horseradish sauce jug
+ description: Now with 50% more horse.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 150
+ reagents:
+ - ReagentId: HorseradishSauce
+ Quantity: 150
+ - type: Drink
+ - type: Label
+ currentLabel: reagent-name-horseradish-sauce
+
+- type: entity
+ parent: DrinkBottlePlasticBaseFull
+ id: DrinkHotsauceJug
+ name: hotsauce jug
+ description: The antithesis of no more tears shampoo.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 150
+ reagents:
+ - ReagentId: Hotsauce
+ Quantity: 150
+ - type: Drink
+ - type: Label
+ currentLabel: reagent-name-hotsauce
+
+- type: entity
+ parent: DrinkBottlePlasticBaseFull
+ id: DrinkKetchupJug
+ name: ketchup jug
+ description: Someone filled a tomato with sugar until it burst. Delicious.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 150
+ reagents:
+ - ReagentId: Ketchup
+ Quantity: 150
+ - type: Drink
+ - type: Label
+ currentLabel: reagent-name-ketchup
+
+- type: entity
+ parent: DrinkBottlePlasticBaseFull
+ id: DrinkMustardJug
+ name: mustard jug
+ description: All of the implications of real mustard with none of the flavor.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 150
+ reagents:
+ - ReagentId: Mustard
+ Quantity: 150
+ - type: Drink
+ - type: Label
+ currentLabel: reagent-name-mustard
+
+- type: entity
+ parent: DrinkBottlePlasticBaseFull
+ id: DrinkSoysauceJug
+ name: soy sauce jug
+ description: You can only dream of putting some of this on a bowl of rice.
+ components:
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 150
+ reagents:
+ - ReagentId: Soysauce
+ Quantity: 150
+ - type: Drink
+ - type: Label
+ currentLabel: reagent-name-soysauce
diff --git a/Resources/Prototypes/_NF/Entities/Objects/Consumable/Drinks/drinks.yml b/Resources/Prototypes/_NF/Entities/Objects/Consumable/Drinks/drinks.yml
index 761d49039ee..61a58dbf889 100644
--- a/Resources/Prototypes/_NF/Entities/Objects/Consumable/Drinks/drinks.yml
+++ b/Resources/Prototypes/_NF/Entities/Objects/Consumable/Drinks/drinks.yml
@@ -95,3 +95,20 @@
- type: Icon
sprite: _NF/Objects/Consumable/Drinks/beesknees.rsi
state: icon
+
+# condiment cup
+- type: entity
+ parent: DrinkWaterCup
+ id: CondimentCup
+ name: condiment cup
+ description: A flimsy cup that can be filled with condiments. Warranty void if filled with other things.
+ components:
+ - type: Sprite
+ sprite: _NF/Objects/Consumable/Drinks/condiment_cup.rsi
+ - type: Clothing
+ sprite: _NF/Clothing/Head/Hats/condiment_cup.rsi
+ - type: CondimentCup
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 10
diff --git a/Resources/Prototypes/_NF/Entities/Objects/Consumable/Food/Containers/condiments.yml b/Resources/Prototypes/_NF/Entities/Objects/Consumable/Food/Containers/condiments.yml
index a6ab68876f6..6b43a731960 100644
--- a/Resources/Prototypes/_NF/Entities/Objects/Consumable/Food/Containers/condiments.yml
+++ b/Resources/Prototypes/_NF/Entities/Objects/Consumable/Food/Containers/condiments.yml
@@ -28,16 +28,9 @@
sprite: _NF/Objects/Consumable/Food/condiments.rsi
- type: Icon
sprite: _NF/Objects/Consumable/Food/condiments.rsi
- # - type: EmitSoundOnActivate
- # sound:
- # collection: squeezeBottleUseSounds
- # params:
- # variation: 0.125
- # - type: EmitSoundOnLand
- # sound:
- # collection: squeezeBottleUseSounds
- # params:
- # variation: 0.125
+ - type: CondimentSqueezeBottle
+ - type: FitsInDispenser
+ solution: food
- type: entity
parent: BaseFoodCondimentSqueezeBottle
diff --git a/Resources/Prototypes/_NF/Entities/Objects/Devices/production.yml b/Resources/Prototypes/_NF/Entities/Objects/Devices/production.yml
index bfd5c43d1db..182d5c2add6 100644
--- a/Resources/Prototypes/_NF/Entities/Objects/Devices/production.yml
+++ b/Resources/Prototypes/_NF/Entities/Objects/Devices/production.yml
@@ -348,3 +348,22 @@
stackRequirements:
Steel: 5
Plastic: 5
+
+- type: entity
+ id: CondimentDispenserCircuitboard
+ parent: BaseMachineCircuitboard
+ name: condiment dispenser machine board
+ description: A machine printed circuit board for a condiment dispenser.
+ components:
+ - type: Sprite
+ state: service
+ - type: MachineBoard
+ prototype: CondimentDispenserEmpty
+ requirements: # Frontier
+ MatterBin: 1 # Frontier
+ stackRequirements:
+ Steel: 5
+ tagRequirements:
+ GlassBeaker:
+ amount: 1
+ defaultPrototype: Beaker
diff --git a/Resources/Prototypes/_NF/Entities/Objects/Specific/Service/condimentcup.yml b/Resources/Prototypes/_NF/Entities/Objects/Specific/Service/condimentcup.yml
new file mode 100644
index 00000000000..5d236032593
--- /dev/null
+++ b/Resources/Prototypes/_NF/Entities/Objects/Specific/Service/condimentcup.yml
@@ -0,0 +1,43 @@
+- type: entity
+ name: condiment cup dispenser
+ description: It holds little condiment cups. They claim to be recyled.
+ id: CondimentCupDispenser
+ parent: [BaseItem, PaperBin]
+ components:
+ - type: Sprite
+ sprite: _NF/Objects/Specific/Service/condiment_cup_dispenser.rsi
+ state: dispenser0
+ - type: ItemMapper
+ sprite: _NF/Objects/Specific/Service/condiment_cup_dispenser.rsi
+ mapLayers:
+ dispenser1:
+ whitelist:
+ components:
+ - CondimentCup
+ - type: Bin
+ whitelist:
+ components:
+ - CondimentCup
+
+- type: entity
+ name: condiment cup dispenser
+ suffix: 10
+ description: It holds little condiment cups. They claim to be recyled.
+ id: CondimentCupDispenser10
+ parent: CondimentCupDispenser
+ components:
+ - type: Bin
+ initialContents:
+ - CondimentCup
+ - CondimentCup
+ - CondimentCup
+ - CondimentCup
+ - CondimentCup
+ - CondimentCup
+ - CondimentCup
+ - CondimentCup
+ - CondimentCup
+ - CondimentCup
+ whitelist:
+ components:
+ - CondimentCup
diff --git a/Resources/Prototypes/_NF/Entities/Structures/Dispensers/condiments.yml b/Resources/Prototypes/_NF/Entities/Structures/Dispensers/condiments.yml
new file mode 100644
index 00000000000..f0b25439ebb
--- /dev/null
+++ b/Resources/Prototypes/_NF/Entities/Structures/Dispensers/condiments.yml
@@ -0,0 +1,36 @@
+- type: entity
+ parent: ReagentDispenserBase
+ id: CondimentDispenser
+ name: condiment dispenser
+ suffix: Filled
+ description: A condiment dispenser with a single slot for a condiment cup.
+ components:
+ - type: Rotatable
+ - type: Sprite
+ sprite: _NF/Structures/smalldispensers.rsi
+ drawdepth: SmallObjects
+ state: icon
+ - type: ReagentDispenser
+ storageWhitelist:
+ tags:
+ - DrinkBottle
+ pack: CondimentDispenserInventory
+ - type: Transform
+ noRot: false
+ - type: Machine
+ board: CondimentDispenserCircuitboard
+ - type: GuideHelp
+ guides:
+ - Bartender
+ - Drinks
+
+- type: entity
+ id: CondimentDispenserEmpty
+ suffix: Empty
+ parent: CondimentDispenser
+ components:
+ - type: ReagentDispenser
+ storageWhitelist:
+ tags:
+ - DrinkBottle
+ pack: EmptyInventory
diff --git a/Resources/Prototypes/_NF/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/_NF/Entities/Structures/Machines/lathe.yml
index ae15f942792..9a8a5e67723 100644
--- a/Resources/Prototypes/_NF/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/_NF/Entities/Structures/Machines/lathe.yml
@@ -134,6 +134,8 @@
- FoodPlateSmallPlastic
- NapkinDrum
- Napkin
+ - CondimentCupDispenser
+ - CondimentCup
- FoodCondimentSqueezeBottleClear
## EVA
- ClothingOuterEVASuitHydro
diff --git a/Resources/Prototypes/_NF/Recipes/Lathes/electronics.yml b/Resources/Prototypes/_NF/Recipes/Lathes/electronics.yml
index 96cd0950d1c..4de8b2c445e 100644
--- a/Resources/Prototypes/_NF/Recipes/Lathes/electronics.yml
+++ b/Resources/Prototypes/_NF/Recipes/Lathes/electronics.yml
@@ -46,6 +46,14 @@
Steel: 800
Glass: 900
+- type: latheRecipe
+ parent: BaseCircuitboardRecipe
+ id: CondimentDispenserCircuitboard
+ result: CondimentDispenserCircuitboard
+ materials:
+ Steel: 100
+ Glass: 500
+
# Thrusters
- type: latheRecipe
id: ThrusterSecurityMachineCircuitboard
@@ -105,4 +113,4 @@
result: PortableGeneratorHyperPacmanMachineCircuitboard
materials:
Steel: 350
- Glass: 350
\ No newline at end of file
+ Glass: 350
diff --git a/Resources/Prototypes/_NF/Recipes/Lathes/service.yml b/Resources/Prototypes/_NF/Recipes/Lathes/service.yml
index 853acc01279..0d693561ceb 100644
--- a/Resources/Prototypes/_NF/Recipes/Lathes/service.yml
+++ b/Resources/Prototypes/_NF/Recipes/Lathes/service.yml
@@ -58,6 +58,21 @@
Plastic: 100
Steel: 100
+- type: latheRecipe
+ id: CondimentCupDispenser
+ result: CondimentCupDispenser
+ parent: BaseServiceItemsRecipe
+ applyMaterialDiscount: false
+
+- type: latheRecipe
+ id: CondimentCup
+ result: CondimentCup
+ parent: BaseServiceItemsRecipe
+ completetime: 0.1
+ applyMaterialDiscount: false
+ materials:
+ Steel: 10
+
- type: latheRecipe
id: FoodCondimentSqueezeBottleClear
result: FoodCondimentSqueezeBottleClear
diff --git a/Resources/Prototypes/_NF/tags.yml b/Resources/Prototypes/_NF/tags.yml
index e22609d87a2..1a7e9b6ff15 100644
--- a/Resources/Prototypes/_NF/tags.yml
+++ b/Resources/Prototypes/_NF/tags.yml
@@ -152,4 +152,4 @@
id: NFVGRoidInterior
- type: Tag
- id: NFFoamRPG
\ No newline at end of file
+ id: NFFoamRPG
diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/condiment_cup.rsi/equipped-HELMET.png b/Resources/Textures/_NF/Clothing/Head/Hats/condiment_cup.rsi/equipped-HELMET.png
new file mode 100644
index 00000000000..c2b156524af
Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Head/Hats/condiment_cup.rsi/equipped-HELMET.png differ
diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/condiment_cup.rsi/icon.png b/Resources/Textures/_NF/Clothing/Head/Hats/condiment_cup.rsi/icon.png
new file mode 100644
index 00000000000..0d9a9acb692
Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Head/Hats/condiment_cup.rsi/icon.png differ
diff --git a/Resources/Textures/_NF/Clothing/Head/Hats/condiment_cup.rsi/meta.json b/Resources/Textures/_NF/Clothing/Head/Hats/condiment_cup.rsi/meta.json
new file mode 100644
index 00000000000..e53406df8f1
--- /dev/null
+++ b/Resources/Textures/_NF/Clothing/Head/Hats/condiment_cup.rsi/meta.json
@@ -0,0 +1,18 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "equipped-HELMET, icon by wallflowerghost(discord), edited by dvir001 (GitHub)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-HELMET",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_NF/Objects/Consumable/Drinks/condiment_cup.rsi/icon-0.png b/Resources/Textures/_NF/Objects/Consumable/Drinks/condiment_cup.rsi/icon-0.png
new file mode 100644
index 00000000000..e570dc439c8
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Consumable/Drinks/condiment_cup.rsi/icon-0.png differ
diff --git a/Resources/Textures/_NF/Objects/Consumable/Drinks/condiment_cup.rsi/icon-1.png b/Resources/Textures/_NF/Objects/Consumable/Drinks/condiment_cup.rsi/icon-1.png
new file mode 100644
index 00000000000..589dcf55b36
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Consumable/Drinks/condiment_cup.rsi/icon-1.png differ
diff --git a/Resources/Textures/_NF/Objects/Consumable/Drinks/condiment_cup.rsi/meta.json b/Resources/Textures/_NF/Objects/Consumable/Drinks/condiment_cup.rsi/meta.json
new file mode 100644
index 00000000000..90542ff7b90
--- /dev/null
+++ b/Resources/Textures/_NF/Objects/Consumable/Drinks/condiment_cup.rsi/meta.json
@@ -0,0 +1,17 @@
+{
+ "version": 1,
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "icon-0/1 by wallflowerghost(discord)",
+ "states": [
+ {
+ "name": "icon-0"
+ },
+ {
+ "name": "icon-1"
+ }
+ ]
+}
diff --git a/Resources/Textures/_NF/Objects/Specific/Service/condiment_cup_dispenser.rsi/dispenser0.png b/Resources/Textures/_NF/Objects/Specific/Service/condiment_cup_dispenser.rsi/dispenser0.png
new file mode 100644
index 00000000000..c6d594488b7
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Specific/Service/condiment_cup_dispenser.rsi/dispenser0.png differ
diff --git a/Resources/Textures/_NF/Objects/Specific/Service/condiment_cup_dispenser.rsi/dispenser1.png b/Resources/Textures/_NF/Objects/Specific/Service/condiment_cup_dispenser.rsi/dispenser1.png
new file mode 100644
index 00000000000..85e367189d3
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Specific/Service/condiment_cup_dispenser.rsi/dispenser1.png differ
diff --git a/Resources/Textures/_NF/Objects/Specific/Service/condiment_cup_dispenser.rsi/meta.json b/Resources/Textures/_NF/Objects/Specific/Service/condiment_cup_dispenser.rsi/meta.json
new file mode 100644
index 00000000000..6c27c69df8f
--- /dev/null
+++ b/Resources/Textures/_NF/Objects/Specific/Service/condiment_cup_dispenser.rsi/meta.json
@@ -0,0 +1,17 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Created by dustylens",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "dispenser0"
+ },
+ {
+ "name": "dispenser1"
+ }
+ ]
+}
diff --git a/Resources/Textures/_NF/Structures/smalldispensers.rsi/icon.png b/Resources/Textures/_NF/Structures/smalldispensers.rsi/icon.png
new file mode 100644
index 00000000000..de1dfe52b9c
Binary files /dev/null and b/Resources/Textures/_NF/Structures/smalldispensers.rsi/icon.png differ
diff --git a/Resources/Textures/_NF/Structures/smalldispensers.rsi/meta.json b/Resources/Textures/_NF/Structures/smalldispensers.rsi/meta.json
new file mode 100644
index 00000000000..7f3397b2939
--- /dev/null
+++ b/Resources/Textures/_NF/Structures/smalldispensers.rsi/meta.json
@@ -0,0 +1,14 @@
+{
+ "version": 1,
+ "license": "CC0-1.0",
+ "copyright": "wallflowerghost(discord)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ }
+ ]
+}