]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
no commit discipline
authoriaada <iaada@users.noreply.github.com>
Sat, 26 Jul 2025 07:58:28 +0000 (02:58 -0500)
committeriaada <iaada@users.noreply.github.com>
Sat, 26 Jul 2025 07:58:28 +0000 (02:58 -0500)
16 files changed:
Resources/Prototypes/Damage/modifier_sets.yml
Resources/Prototypes/Entities/Debugging/drugs.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/base_drinks.yml [deleted file]
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base_materials.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_glass.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles_plastic.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_flasks.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_fun.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_metamorphic.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/trash_drinks.yml
Resources/Textures/Objects/Consumable/Drinks/cafe_latte.rsi/meta.json

index 0f023e247014b323bdc996160959a62da85389af..35a5f491340213a3b7f1af1b8ed8e4ed91a6c7ec 100644 (file)
     Heat: 5
     Structural: 5
 
+# Glass without the flat reductions
+- type: damageModifierSet
+  id: FlimsyGlass
+  coefficients:
+    Blunt: 1.2
+    Slash: 0.5
+    Piercing: 1.0
+    Heat: 0.8
+    Shock: 0 #glass is an insulator!
+
 - type: damageModifierSet
   id: RGlass
   coefficients:
index 932fdad2c2b863acbf54bdf38044dcb3ffc9e49f..2c222b89059f64ced4f9a1da91986a56ee296c64 100644 (file)
@@ -1,5 +1,5 @@
 - type: entity
-  parent: DrinkGlassBase
+  parent: [DrinkBase, DrinkGlassBase]
   id: DrinkMeth
   name: meth  # beer it is. coffee. beer? coff-ee? be-er? c-o... b-e
   description: Just a whole glass of meth.
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/base_drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/base_drinks.yml
deleted file mode 100644 (file)
index 8393033..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-# For cups, bottles, beakers, and other freely accessible solutions
-- type: entity
-  abstract: true
-  parent: BaseItem
-  id: DrinkBase
-  components:
-  - type: Sprite
-    state: icon
-  - type: MeleeWeapon
-    soundNoDamage:
-      path: "/Audio/Effects/Fluids/splat.ogg"
-    damage:
-      types:
-        Blunt: 0
-  - type: DnaSubstanceTrace
-  - type: Drink
-  - type: Spillable
-    solution: drink
-  - type: MixableSolution
-    solution: drink
-  - type: DrawableSolution
-    solution: drink
-  - type: RefillableSolution
-    solution: drink
-  - type: DrainableSolution
-    solution: drink
-  - type: SolutionContainerManager
-    solutions:
-      drink:
-        maxVol: 30
-  - type: SolutionTransfer
-    canChangeTransferAmount: true
-  - type: UserInterface
-    interfaces:
-      enum.TransferAmountUiKey.Key:
-        type: TransferAmountBoundUserInterface
-
-# A fragile, transparent glass cup
-- type: entity
-  abstract: true
-  parent: DrinkBase
-  id: DrinkGlassBase
-  components:
-  - type: Damageable
-    damageContainer: Inorganic
-    damageModifierSet: Glass
-  - type: Destructible
-    thresholds:
-    - trigger:
-        !type:DamageTrigger
-        damage: 5
-      behaviors:
-      - !type:PlaySoundBehavior
-        sound:
-          collection: GlassBreak
-      - !type:SpillBehavior { }
-      - !type:SpawnEntitiesBehavior
-        spawn:
-          ShardGlass:
-            min: 1
-            max: 1
-        transferForensics: true
-      - !type:DoActsBehavior
-        acts: [ "Destruction" ]
-  - type: DamageOnLand
-    ignoreResistances: true
-    damage:
-      types:
-        Blunt: 5
-  - type: DamageOtherOnHit
-    damage:
-      types:
-        Blunt: 5
-  - type: PhysicalComposition
-    materialComposition:
-      Glass: 25
-  - type: ExaminableSolution
-    solution: drink
-  - type: FitsInDispenser
-    solution: drink
-  - type: Tag
-    tags:
-    - DrinkGlass
-
-# A destructible, opaque plastic bottle
-- type: entity
-  abstract: true
-  parent: DrinkBase
-  id: DrinkPlasticBase
-  components:
-  - type: Damageable
-    damageContainer: Inorganic
-  - type: Destructible
-    thresholds:
-    - trigger:
-        !type:DamageTrigger
-        damage: 5
-      behaviors:
-      - !type:SpillBehavior { }
-      - !type:DoActsBehavior
-        acts: [ "Destruction" ]
-        #In future maybe add generic plastic scrap trash/debris
-  - type: PhysicalComposition
-    materialComposition:
-      Plastic: 25
-
-# A destructible, opaque cardboard bottle
-- type: entity
-  abstract: true
-  parent: DrinkBase
-  id: DrinkCardboardBase
-  components:
-  - type: Damageable
-    damageContainer: Inorganic
-  - type: Destructible
-    thresholds:
-    - trigger:
-        !type:DamageTrigger
-        damage: 5
-      behaviors:
-      - !type:SpillBehavior { }
-      - !type:DoActsBehavior
-        acts: [ "Destruction" ]
-  - type: PhysicalComposition
-    materialComposition:
-      Cardboard: 25
-
-# A destructible, opaque metal can
-- type: entity
-  abstract: true
-  parent: DrinkBase
-  id: DrinkMetalBase
-  components:
-  - type: Damageable
-    damageContainer: Inorganic
-    damageModifierSet: FlimsyMetallic
-  - type: Destructible
-    thresholds:
-    - trigger:
-        !type:DamageTrigger
-        damage: 10
-      behaviors:
-      - !type:SpillBehavior { }
-      - !type:DoActsBehavior
-        acts: [ "Destruction" ]
-        #In future maybe add generic metal scrap trash/debris
-  - type: PhysicalComposition
-    materialComposition:
-      Steel: 25
-
-# Un-opened cans and bottles
-- type: entity
-  abstract: true
-  id: BaseDrinkOpenable
-  components:
-  - type: Openable
-  - type: PressurizedSolution
-    solution: drink
-  - type: Shakeable
-  - type: Sealable
-
-# Pre-opened cans and bottles
-- type: entity
-  abstract: true
-  parent: BaseDrinkOpenable
-  id: BaseDrinkOpenableOpen
-  components:
-  - type: Sprite
-    layers:
-    - state: icon_open
-  - type: Openable
-    opened: true
-  - type: Sealable
-    sealed: false
-
-# An empty drink, often paired with BaseDrinkOpenableOpen
-- type: entity
-  abstract: true
-  id: BaseDrinkEmptyTrash
-  suffix: Empty
-  components:
-  - type: SpaceGarbage
-  - type: TrashOnSolutionEmpty
-    solution: drink
-  - type: Tag
-    tags:
-    - Trash
-
-# Basic visualizer for an openable entity, often paired with BaseDrinkOpenable
-- type: entity
-  abstract: true
-  id: DrinkVisualsOpenable
-  components:
-  - type: Appearance
-  - type: GenericVisualizer
-    visuals:
-      enum.OpenableVisuals.Opened:
-        enum.OpenableVisuals.Layer:
-          True: {state: "icon_open"}
-          False: {state: "icon"}
-  - type: Sprite
-    layers:
-    - state: icon
-      map: ["enum.OpenableVisuals.Layer"]
-
-# Visualizer for an openable entity with fill levels
-- type: entity
-  abstract: true
-  id: DrinkVisualsAll
-  components:
-  - type: Appearance
-  - type: GenericVisualizer
-    visuals:
-      enum.OpenableVisuals.Opened:
-        enum.OpenableVisuals.Layer:
-          True: {state: "icon_open"}
-          False: {state: "icon_empty"}
-  - type: Sprite
-    sprite: Objects/Consumable/Drinks/alco-bottle.rsi
-    layers:
-    - state: icon
-      map: ["enum.OpenableVisuals.Layer"]
-    - state: fill-1
-      map: ["enum.SolutionContainerLayers.Fill"]
-      visible: false
-  - type: SolutionContainerVisuals
-    maxFillLevels: 5
-    fillBaseName: fill-
-    inHandsMaxFillLevels: 3
-    inHandsFillBaseName: -fill-
index 27bb1dcdb8c99eba4816e6ed26d2948d2c97a84e..5bf736d6cdbff8009b53ec36734749fc289273a3 100644 (file)
@@ -1,7 +1,7 @@
 - type: entity
   abstract: true
-  parent: [ DrinkCardboardBase, BaseDrinkOpenable ]
-  id: DrinkCartonBaseFull
+  parent: [ DrinkBase, DrinkCardboardBase, DrinkOpenableBase ]
+  id: DrinkCartonBaseLargeFull
   suffix: Full
   components:
   - type: Openable
   - type: SolutionContainerManager
     solutions:
       drink:
-        maxVol: 50
+        maxVol: 100
   - type: TrashOnSolutionEmpty
     solution: drink
+  - type: Item
+    size: Normal
 
 - type: entity
   abstract: true
-  parent: DrinkCartonBaseFull
-  id: DrinkCartonBaseLargeFull
+  parent: DrinkCartonBaseLargeFull
+  id: DrinkCartonBaseFull
   components:
   - type: SolutionContainerManager
     solutions:
       drink:
-        maxVol: 100
+        maxVol: 50
   - type: Item
-    size: Normal
+    size: Small
 
 - type: entity
   abstract: true
-  parent: DrinkCartonBaseFull
+  parent: DrinkCartonBaseLargeFull
   id: DrinkCartonBaseXtraLargeFull
   components:
   - type: SolutionContainerManager
     solutions:
       drink:
         maxVol: 150
-  - type: Item
-    size: Normal
 
 # Small carton
 
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base.yml
new file mode 100644 (file)
index 0000000..95feee5
--- /dev/null
@@ -0,0 +1,125 @@
+# When adding new drinks also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\drinks_soda.yml
+
+# A drink is a freely accessible solution like cups, teapots, cans, flasks, bottles, or beakers.
+- type: entity
+  abstract: true
+  parent: BaseItem
+  id: DrinkBase
+  components:
+  - type: Sprite
+    state: icon
+  - type: MeleeWeapon
+    soundNoDamage:
+      path: "/Audio/Effects/Fluids/splat.ogg"
+    damage:
+      types:
+        Blunt: 0
+  - type: DnaSubstanceTrace
+  - type: Drink
+  - type: Spillable
+    solution: drink
+  - type: MixableSolution
+    solution: drink
+  - type: DrawableSolution
+    solution: drink
+  - type: RefillableSolution
+    solution: drink
+  - type: DrainableSolution
+    solution: drink
+  - type: SolutionContainerManager
+    solutions:
+      drink:
+        maxVol: 30
+  - type: SolutionTransfer
+    canChangeTransferAmount: true
+  - type: UserInterface
+    interfaces:
+      enum.TransferAmountUiKey.Key:
+        type: TransferAmountBoundUserInterface
+
+## Misc
+
+# This drink is empty trash
+- type: entity
+  abstract: true
+  id: DrinkEmptyTrashBase
+  suffix: Empty
+  components:
+  - type: SpaceGarbage
+  - type: TrashOnSolutionEmpty
+    solution: drink
+  - type: Tag
+    tags:
+    - Trash
+
+## For drinks with a lid
+
+# Un-opened
+- type: entity
+  abstract: true
+  id: DrinkOpenableBase
+  components:
+  - type: Openable
+  - type: PressurizedSolution
+    solution: drink
+  - type: Shakeable
+  - type: Sealable
+
+# Pre-opened
+- type: entity
+  abstract: true
+  parent: DrinkOpenableBase
+  id: DrinkOpenableOpenBase
+  components:
+  - type: Sprite
+    layers:
+    - state: icon_open
+  - type: Openable
+    opened: true
+  - type: Sealable
+    sealed: false
+
+## For visuals
+
+# Basic visualizer for an openable entity, often paired with BaseDrinkOpenable
+- type: entity
+  abstract: true
+  id: DrinkVisualsOpenable
+  components:
+  - type: Appearance
+  - type: GenericVisualizer
+    visuals:
+      enum.OpenableVisuals.Opened:
+        enum.OpenableVisuals.Layer:
+          True: {state: "icon_open"}
+          False: {state: "icon"}
+  - type: Sprite
+    layers:
+    - state: icon
+      map: ["enum.OpenableVisuals.Layer"]
+
+# Visualizer for an openable entity with fill levels
+- type: entity
+  abstract: true
+  id: DrinkVisualsAll
+  components:
+  - type: Appearance
+  - type: GenericVisualizer
+    visuals:
+      enum.OpenableVisuals.Opened:
+        enum.OpenableVisuals.Layer:
+          True: {state: "icon_open"}
+          False: {state: "icon_empty"}
+  - type: Sprite
+    sprite: Objects/Consumable/Drinks/alco-bottle.rsi
+    layers:
+    - state: icon
+      map: ["enum.OpenableVisuals.Layer"]
+    - state: fill-1
+      map: ["enum.SolutionContainerLayers.Fill"]
+      visible: false
+  - type: SolutionContainerVisuals
+    maxFillLevels: 5
+    fillBaseName: fill-
+    inHandsMaxFillLevels: 3
+    inHandsFillBaseName: -fill-
diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base_materials.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_base_materials.yml
new file mode 100644 (file)
index 0000000..0a9e2d6
--- /dev/null
@@ -0,0 +1,154 @@
+# Material costs to apply to a drink
+
+# Fragile glass
+- type: entity
+  abstract: true
+  id: DrinkGlassBase
+  components:
+  - type: Damageable
+    damageContainer: Inorganic
+    damageModifierSet: FlimsyGlass
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 5
+      behaviors:
+      - !type:PlaySoundBehavior
+        sound:
+          collection: GlassBreak
+      - !type:SpillBehavior { }
+      - !type:SpawnEntitiesBehavior
+        spawn:
+          ShardGlass:
+            min: 1
+            max: 1
+        transferForensics: true
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
+  # so fragile it smashes when thrown
+  - type: DamageOnLand
+    ignoreResistances: true
+    damage:
+      types:
+        Blunt: 5
+  - type: DamageOtherOnHit
+    damage:
+      types:
+        Blunt: 5
+  - type: PhysicalComposition
+    materialComposition:
+      Glass: 25
+
+# Fragile plastic
+- type: entity
+  abstract: true
+  id: DrinkPlasticBase
+  components:
+  - type: Damageable
+    damageContainer: Inorganic
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 5
+      behaviors:
+#      - !type:PlaySoundBehavior TODO
+#        sound:
+      - !type:SpillBehavior { }
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
+  - type: PhysicalComposition
+    materialComposition:
+      Plastic: 25
+
+# Fragile cardboard
+- type: entity
+  abstract: true
+  id: DrinkCardboardBase
+  components:
+  - type: Damageable
+    damageContainer: Inorganic
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 5
+      behaviors:
+#      - !type:PlaySoundBehavior TODO
+#        sound:
+      - !type:SpillBehavior { }
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
+  - type: PhysicalComposition
+    materialComposition:
+      Cardboard: 25
+
+# Weak metal
+- type: entity
+  abstract: true
+  id: DrinkMetalBase
+  components:
+  - type: Damageable
+    damageContainer: Inorganic
+    damageModifierSet: FlimsyMetallic
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 10
+      behaviors:
+#      - !type:PlaySoundBehavior TODO
+#        sound:
+      - !type:SpillBehavior { }
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
+  - type: PhysicalComposition
+    materialComposition:
+      Steel: 25
+
+# strong metal
+- type: entity
+  abstract: true
+  id: DrinkStrongMetalBase
+  components:
+  - type: Damageable
+    damageContainer: Inorganic
+    damageModifierSet: Metallic
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 25
+      behaviors:
+#      - !type:PlaySoundBehavior TODO
+#        sound:
+      - !type:SpillBehavior { }
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
+  - type: PhysicalComposition
+    materialComposition:
+      Steel: 300
+
+# Weak gold
+- type: entity
+  abstract: true
+  id: DrinkGoldBase
+  components:
+  - type: Damageable
+    damageContainer: Inorganic
+    damageModifierSet: FlimsyMetallic
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 10
+      behaviors:
+#      - !type:PlaySoundBehavior TODO
+#        sound:
+      - !type:SpillBehavior { }
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
+  - type: PhysicalComposition
+    materialComposition:
+      Gold: 25
index 61d97558a446887ef2ead4f36832081b1a5c79d7..c5bbe7e190529138a9770fe8c5d5f7930a6b406f 100644 (file)
@@ -1,12 +1,13 @@
 # When adding new drinks also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\drinks_bottles.yml
 
-
 - type: entity
   abstract: true
-  parent: [ DrinkGlassBase, BaseDrinkOpenable ]
-  id: DrinkBottleGlassSmallBaseFull
+  parent: [ DrinkBase, DrinkGlassBase, DrinkOpenableBase ]
+  id: DrinkBottleGlassBaseFull
   suffix: Full
   components:
+  - type: Item
+    size: Normal
   - type: Openable
     sound:
       collection: bottleOpenSounds
@@ -16,9 +17,9 @@
   - type: SolutionContainerManager
     solutions:
       drink:
-        maxVol: 50
+        maxVol: 100
   - type: Sprite
-    sprite: Objects/Consumable/Drinks/beer.rsi # fallback
+    sprite: Objects/Consumable/Drinks/alco-bottle.rsi # fallback
   - type: Tool
     qualities:
     - Rolling
   - type: Tag
     tags:
     - DrinkBottle
+  - type: ExaminableSolution
+    solution: drink
 
 - type: entity
   abstract: true
-  parent: DrinkBottleGlassSmallBaseFull
-  id: DrinkBottleGlassBaseFull
+  parent: DrinkBottleGlassBaseFull
+  id: DrinkBottleGlassSmallBaseFull
   components:
   - type: SolutionContainerManager
     solutions:
       drink:
-        maxVol: 100
-  - type: Sprite
-    sprite: Objects/Consumable/Drinks/alco-bottle.rsi # fallback
+        maxVol: 50
   - type: Item
-    size: Normal
+    size: Small
+  - type: Sprite
+    sprite: Objects/Consumable/Drinks/beer.rsi # fallback
+  - type: FitsInDispenser
+    solution: drink
 
 # Large Glass Bottles
 
index 5e526831d74514f260e83f9da585cf1701a418b7..9a7402c8b38a1901ee7e6cac9aca22db6449ea15 100644 (file)
@@ -1,47 +1,49 @@
 - type: entity
   abstract: true
-  parent: [ DrinkPlasticBase, BaseDrinkOpenable ]
-  id: DrinkBottlePlasticSmallBaseFull
+  parent: [ DrinkBase, DrinkPlasticBase, DrinkOpenableBase ]
+  id: DrinkBottlePlasticBaseFull
   suffix: Full
   components:
+  - type: Item
+    size: Normal
   - type: Openable
     sound:
       collection: bottleOpenSounds
     closeable: true
     closeSound:
       collection: bottleCloseSounds
-  - type: Tag
-    tags:
-    - DrinkCup
   - type: SolutionContainerManager
     solutions:
       drink:
-        maxVol: 30
-  - type: FitsInDispenser
-    solution: drink
+        maxVol: 100
   - type: Sprite
     state: icon
-    sprite: Objects/Consumable/Drinks/waterbottle.rsi # fallback
+    sprite: Objects/Consumable/Drinks/generic_jug.rsi # fallback to generic plastic jug
   - type: TrashOnSolutionEmpty
     solution: drink
+  - type: Tag
+    tags:
+    - DrinkCup
 
 - type: entity
   abstract: true
-  parent: DrinkBottlePlasticSmallBaseFull
-  id: DrinkBottlePlasticBaseFull
+  parent: DrinkBottlePlasticBaseFull
+  id: DrinkBottlePlasticSmallBaseFull
   components:
-  - type: Tag
-    tags:
-    - DrinkBottle
+  - type: Item
+    size: Small
   - type: SolutionContainerManager
     solutions:
       drink:
-        maxVol: 100
+        maxVol: 30
   - type: Sprite
     state: icon
-    sprite: Objects/Consumable/Drinks/generic_jug.rsi # fallback to generic plastic jug
-  - type: Item
-    size: Normal
+    sprite: Objects/Consumable/Drinks/waterbottle.rsi # fallback
+  - type: Tag
+    tags:
+    - DrinkBottle
+  - type: FitsInDispenser
+    solution: drink
 
 # Empty
 
   # TODO new sprite
 
 # Xtra large
+# TODO these have too much volume
 
 - type: entity
   parent: [DrinkVisualsOpenable, DrinkBottlePlasticBaseFull]
index 55902897bafecf160b5f52909c897874774ae0a5..82c998a2ea84f278b7733a59a210be63093d7038 100644 (file)
@@ -1,8 +1,9 @@
 # When adding new drinks also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\drinks_soda.yml
 - type: entity
   abstract: true
-  parent: [ DrinkMetalBase, BaseDrinkOpenable, DrinkVisualsOpenable ]
+  parent: [ DrinkBase, DrinkMetalBase, DrinkOpenableBase, DrinkVisualsOpenable ]
   id: DrinkCanBaseFull
+  suffix: Full
   components:
   - type: SolutionContainerManager
     solutions:
@@ -67,7 +68,7 @@
 
 # created when taking apart an ied
 - type: entity
-  parent: [ BaseDrinkOpenableOpen, DrinkColaCan ]
+  parent: [ DrinkOpenableOpenBase, DrinkColaCan ]
   id: DrinkColaCanEmpty
   suffix: Empty
   components:
index a74f61824a1ec8cc67586f89ccc3dbbb49005be7..0c0a15f14d5cb4c9693a4425b1cb8bcd8b56fd72 100644 (file)
@@ -1,5 +1,4 @@
-# Empty drink containers; different from bottles in that these are intended to be spawned empty
-# When adding new drinks also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\drinks_soda.yml
+# A cup is a small container used to hold liquids for drinking.[1]
 - type: entity
   abstract: true
   parent: DrinkBase
   - type: Tag
     tags:
     - DrinkCup
+  - type: StaticPrice
+    price: 10
 
+# A mug is a type of cup.[2]
 - type: entity
   abstract: true
-  parent: DrinkBaseCup
+  parent: [DrinkBaseCup, DrinkGlassBase]
   id: DrinkBaseMug
   name: mug
   description: A mug.
   - type: SolutionContainerVisuals
     maxFillLevels: 3
     fillBaseName: icon-
-  - type: PhysicalComposition
-    materialComposition:
-      Glass: 25
+  - type: StaticPrice
+    price: 10
+
+## Misc Cups
 
-# Misc Cups
 - type: entity
-  parent: DrinkBaseCup
+  parent: [DrinkBaseCup, DrinkGoldBase]
   id: DrinkGoldenCup
   name: golden cup
   description: A golden cup.
     sprite: Objects/Consumable/Drinks/golden_cup.rsi
   - type: StaticPrice
     price: 125
-  - type: PhysicalComposition
-    materialComposition:
-      Gold: 100
 
 - type: entity
-  parent: DrinkBaseCup
+  parent: [DrinkBaseCup, DrinkGlassBase]
   id: DrinkTeacupEmpty
   name: teacup
   description: A plain white porcelain teacup.
     fillBaseName: icon-
 
 - type: entity
-  parent: DrinkGlassBase
+  parent: [ DrinkBase, DrinkGlassBase ]
   id: DrinkGlassCoupeShaped
   name: coupe glass
   description: A classic thin neck coupe glass, the icon of fragile labels on crates around the galaxy.
   components:
+  - type: SolutionContainerManager
+    solutions:
+      drink:
+        maxVol: 30
   - type: Sprite
     sprite: Objects/Consumable/Drinks/glass_coupe_shape.rsi
     layers:
     - state: icon-front
       map: [ "enum.SolutionContainerLayers.Overlay" ]
   - type: Appearance
-  - type: SolutionContainerManager
-    solutions:
-      drink:
-        maxVol: 30
   - type: SolutionContainerVisuals
     maxFillLevels: 5
     fillBaseName: fill
     inHandsMaxFillLevels: 1
     inHandsFillBaseName: -fill-
+  - type: ExaminableSolution
+    solution: drink
+  - type: FitsInDispenser
+    solution: drink
+  - type: Tag
+    tags:
+    - DrinkGlass
 
 - type: entity
-  parent: DrinkBaseCup
+  parent: [DrinkBase, DrinkCardboardBase]
   id: DrinkWaterCup
   name: water cup
   description: A paper water cup.
   components:
+  - type: SolutionContainerManager
+    solutions:
+      drink:
+        maxVol: 5 # One sip at a time. No rushing at the water cooler
+  - type: FitsInDispenser
+    solution: drink
   - type: Sprite
     sprite: Objects/Consumable/Drinks/water_cup.rsi
     layers:
     sprite: Objects/Consumable/Drinks/mug_red.rsi
 
 ## Filled
+# TODO these a material for destruction
 
 - type: entity
   parent: DrinkBaseCup
     sprite: Objects/Consumable/Drinks/lean.rsi
   - type: TrashOnSolutionEmpty
     solution: drink
+
+#[1] https://en.wikipedia.org/wiki/Cup
+#[2] https://en.wikipedia.org/wiki/Mug
index ed623f15cad2c73244199e768eff61efa0d32fa4..b0c4247f4db7d37d47673838114b2e647766d716 100644 (file)
@@ -1,6 +1,6 @@
 - type: entity
   abstract: true
-  parent: DrinkBase
+  parent: [DrinkBase, DrinkOpenableBase, DrinkStrongMetalBase]
   id: FlaskBase
   components:
   - type: SolutionContainerManager
@@ -10,9 +10,6 @@
   - type: Sprite
     state: icon
     sprite: Objects/Consumable/Drinks/flask.rsi
-  - type: PhysicalComposition
-    materialComposition:
-      Steel: 300
   - type: FitsInDispenser
     solution: drink
   - type: Openable
index e4817febf23a1f63dfd495371fa1271474c4737e..747e079c53bc2d7fc2d7453b72c97df850c44be2 100644 (file)
@@ -1,5 +1,5 @@
 - type: entity
-  parent: [DrinkVisualsOpenable, DrinkBase]
+  parent: [DrinkBase, DrinkPlasticBase, DrinkVisualsOpenable ]
   id: DrinkSpaceGlue
   name: space glue tube
   description: High performance glue intended for maintenance of extremely complex mechanical equipment. DON'T DRINK!
@@ -35,7 +35,7 @@
     solution: drink
 
 - type: entity
-  parent: [DrinkVisualsOpenable, DrinkBase]
+  parent: [DrinkBase, DrinkPlasticBase, DrinkVisualsOpenable ]
   id: DrinkSpaceLube
   name: space lube tube
   description: High performance lubricant intended for maintenance of extremely complex mechanical equipment.
         Quantity: 200
 
 - type: entity
-  parent: DrinkGlassBase
+  parent: [DrinkBase, DrinkGlassBase]
   id: DrinkJarWhat
   name: jar of something
   description: You can't really tell what this is.
   components:
-  - type: Drink
   - type: Sprite
     sprite: Objects/Consumable/Drinks/jar_what.rsi
+  - type: ExaminableSolution
+    solution: drink
+  - type: FitsInDispenser
+    solution: drink
+  - type: Tag
+    tags:
+    - DrinkGlass
 
 # Mopwata
 - type: weightedRandomFillSolution
index 6912b2cfa2a0be1b554b83851e24e6bd91d95b74..7f2b5eb67404c58e3977aa1c2ac126f355f88e62 100644 (file)
@@ -4,10 +4,10 @@
 
 # Transformable container - normal glass
 - type: entity
+  parent: [DrinkBase, DrinkGlassBase]
+  id: DrinkGlass
   name: metamorphic glass
   description: A metamorphic glass that automagically turns into a glass appropriate for the drink within. There's a sanded off patent number on the bottom.
-  parent: DrinkGlassBase
-  id: DrinkGlass
   components:
   - type: Sprite
     sprite: Objects/Consumable/Drinks/glass_clear.rsi
     metamorphicDefaultSprite:
       sprite: Objects/Consumable/Drinks/glass_clear.rsi
       state: icon
+  - type: ExaminableSolution
+    solution: drink
+  - type: FitsInDispenser
+    solution: drink
+  - type: Tag
+    tags:
+    - DrinkGlass
   - type: TransformableContainer
 
 - type: entity
-  parent: DrinkGlassBase
+  parent: [DrinkBase, DrinkGlassBase]
   id: DrinkJar
   name: jar
   description: The hipster's cup.
     metamorphicDefaultSprite:
       sprite: Objects/Consumable/Drinks/jar.rsi
       state: icon
+  - type: ExaminableSolution
+    solution: drink
+  - type: FitsInDispenser
+    solution: drink
+  - type: Tag
+    tags:
+    - DrinkGlass
   - type: TransformableContainer
 
 ## Filled
+# TODO entities without IconComponent need a metamorphic sprite on the reagent
 
 - type: entity
   parent: DrinkGlass
         reagents:
         - ReagentId: Antifreeze
           Quantity: 30
+  - type: Icon
+    sprite: Objects/Consumable/Drinks/antifreeze.rsi
+    state: icon
 
 - type: entity
   parent: DrinkGlass
         reagents:
         - ReagentId: CoconutWater
           Quantity: 30
+#TODO  - type: Icon
 
 - type: entity
   parent: DrinkGlass
         - ReagentId: GreenTea
           Quantity: 30
   - type: Icon
-    sprite: Objects/Consumable/Drinks/glass_green.rsi #Placeholder
+    sprite: Objects/Consumable/Drinks/greenteaglass.rsi
     state: icon
 
 - type: entity
         - ReagentId: IcedGreenTea
           Quantity: 30
   - type: Icon
-    sprite: Objects/Consumable/Drinks/glass_green.rsi #Placeholder
+    sprite: Objects/Consumable/Drinks/icedgreenteaglass.rsi
     state: icon
 
 - type: entity
         reagents:
         - ReagentId: JuiceLime
           Quantity: 30
+#TODO Icon
 
 - type: entity
   parent: DrinkGlass
     state: icon
 
 - type: entity
-  parent: DrinkGlassBase
+  parent: DrinkGlass
   id: DrinkWaterJug
   name: water jug
   description: Stay hydrated.
         reagents:
         - ReagentId: Water
           Quantity: 30
-  - type: Drink
-  - type: Sprite
+  - type: Icon
     sprite: Objects/Consumable/Drinks/water.rsi
+    state: icon
 
 - type: entity
   parent: DrinkGlass
         reagents:
         - ReagentId: JuiceWatermelon
           Quantity: 30
+  - type: Icon
+    sprite: Objects/Consumable/Drinks/watermelonglass.rsi
+    state: icon
 
 - type: entity
   parent: DrinkGlass
index 12e3422e3413d5e0b7457cb9703970655265fc53..16cc64c1bd250fffb5c7eeeef5b51549429a7b15 100644 (file)
@@ -1,5 +1,5 @@
 - type: entity
-  parent: DrinkGlassBase
+  parent: [DrinkBase, DrinkGlassBase]
   id: DrinkShotGlass
   name: shot glass
   description: Perfect for slamming down onto the table angrily.
     fillBaseName: fill
     inHandsMaxFillLevels: 1
     inHandsFillBaseName: -fill-
+  - type: ExaminableSolution
+    solution: drink
+  - type: FitsInDispenser
+    solution: drink
+  - type: Tag
+    tags:
+    - DrinkGlass
 
 - type: entity
   parent: DrinkBase
@@ -45,7 +52,7 @@
       Steel: 75
 
 - type: entity
-  parent: DrinkGlassBase
+  parent: [DrinkBase, DrinkGlassBase]
   id: DrinkTeapot
   name: teapot  # short and stout
   description: An elegant teapot. It simply oozes class.
           Quantity: 100
   - type: Sprite
     sprite: Objects/Consumable/Drinks/teapot.rsi
+  - type: FitsInDispenser
+    solution: drink
+  - type: Tag
+    tags:
+    - DrinkGlass
 
 - type: entity
   id: DrinkCanPack
 # Weird empty shakes
 
 - type: entity
-  parent: DrinkGlassBase
+  abstract: true
+  parent: [DrinkBase, DrinkGlassBase]
+  id: DrinkShakeBase
+  description: ''
+  components:
+  - type: ExaminableSolution
+    solution: drink
+  - type: FitsInDispenser
+    solution: drink
+  - type: Tag
+    tags:
+    - DrinkGlass
+
+- type: entity
+  parent: DrinkShakeBase
   id: DrinkShakeBlue
   name: blue milkshake
-  description: ''
   components:
-  - type: Drink
   - type: Sprite
     sprite: Objects/Consumable/Drinks/shake-blue.rsi
 
 - type: entity
-  parent: DrinkGlassBase
+  parent: DrinkShakeBase
   id: DrinkShakeEmpty
   name: shakeempty
-  description: ''
   components:
-  - type: Drink
   - type: Sprite
     sprite: Objects/Consumable/Drinks/shake-empty.rsi
 
 - type: entity
-  parent: DrinkGlassBase
+  parent: DrinkShakeBase
   id: DrinkShakeMeat
   name: meat shake
-  description: ''
   components:
-  - type: Drink
   - type: Sprite
     sprite: Objects/Consumable/Drinks/shake-meat.rsi
 
 - type: entity
-  parent: DrinkGlassBase
+  parent: DrinkShakeBase
   id: DrinkShakeRobo
   name: robo shake
-  description: ''
   components:
-  - type: Drink
   - type: Sprite
     sprite: Objects/Consumable/Drinks/shake-robo.rsi
 
 - type: entity
-  parent: DrinkGlassBase
+  parent: DrinkShakeBase
   id: DrinkShakeWhite
   name: white shake
-  description: ''
   components:
-  - type: Drink
   - type: Sprite
     sprite: Objects/Consumable/Drinks/shake-white.rsi
index 4f7aeeb99293b70b7083953cb24cb2ae8abeaeab..aebe9cf7e05efba7bfa0673afd02a165c52d7a91 100644 (file)
@@ -1,8 +1,9 @@
 # File for containers like bottles or milk jugs that are empty
 
+# When used as the first parent, this empties a bottle's reagent and spawns it opened
 - type: entity
   abstract: true
-  parent: [ BaseDrinkOpenableOpen, BaseDrinkEmptyTrash ]
+  parent: [ DrinkOpenableOpenBase, DrinkEmptyTrashBase ]
   id: DrinkBottleBaseEmpty
   components:
   - type: SolutionContainerManager
@@ -16,7 +17,7 @@
 
 - type: entity
   abstract: true
-  parent: [ BaseDrinkOpenableOpen, BaseDrinkEmptyTrash ]
+  parent: [ DrinkOpenableOpenBase, DrinkEmptyTrashBase ]
   id: DrinkBottleBaseSmallEmpty
   components:
   - type: SolutionContainerManager
@@ -30,7 +31,7 @@
 
 - type: entity
   abstract: true
-  parent: [ BaseDrinkOpenableOpen, BaseDrinkEmptyTrash ]
+  parent: [ DrinkOpenableOpenBase, DrinkEmptyTrashBase ]
   id: DrinkCartonBaseEmpty
   components:
   - type: SolutionContainerManager
@@ -40,7 +41,7 @@
 
 - type: entity
   abstract: true
-  parent: [ BaseDrinkOpenableOpen, BaseDrinkEmptyTrash ]
+  parent: [ DrinkOpenableOpenBase, DrinkEmptyTrashBase ]
   id: DrinkCartonBaseLargeEmpty
   components:
   - type: SolutionContainerManager
index c92d6f1b0ef314b6ede0f8e53bc44b79336b3c0f..066f70507d619def7b9e14ca2ca41f708e5bad1a 100644 (file)
@@ -6,7 +6,7 @@
         "y": 32
     },
     "license": "CC-BY-SA-3.0",
-    "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi. Fill levels by Tayrtahn on GitHub.",
+    "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks. Fill levels by Tayrtahn on GitHub.",
     "states":
     [
         {