enum.TransferAmountUiKey.Key:
type: TransferAmountBoundUserInterface
-## Misc
+## Misc bases
# This drink is empty trash
- type: entity
tags:
- Trash
-## For drinks with a lid
+## Bases for drinks with a lid
# Un-opened
- type: entity
- type: Sealable
sealed: false
-## For visuals
+## Bases for visuals
-# Basic visualizer for an openable entity, often paired with BaseDrinkOpenable
+# Basic visualizer for an openable entity, usually paired with BaseDrinkOpenable
- type: entity
abstract: true
id: DrinkVisualsOpenable
- state: icon
map: ["enum.OpenableVisuals.Layer"]
+# Basic visualizer for an entity with fill levels
+- type: entity
+ abstract: true
+ id: DrinkVisualsFill
+ components:
+ - type: Appearance
+ - type: Sprite
+ layers:
+ - state: icon_empty
+ - state: fill-1
+ map: ["enum.SolutionContainerLayers.Fill"]
+ visible: false
+ - type: SolutionContainerVisuals
+ maxFillLevels: 5
+ fillBaseName: fill-
+ inHandsMaxFillLevels: 3
+ inHandsFillBaseName: -fill-
+
+# Layered visualizer for an entity with fill levels
+- type: entity
+ abstract: true
+ parent: DrinkVisualsFill
+ id: DrinkVisualsFillOverlay
+ components:
+ - type: Sprite
+ layers:
+ - state: icon_empty
+ map: [ "enum.SolutionContainerLayers.Base" ]
+ - state: fill-1
+ map: [ "enum.SolutionContainerLayers.Fill" ]
+ visible: false
+ - state: icon-front
+ map: [ "enum.SolutionContainerLayers.Overlay" ]
+
+# Basic visualizer for an entity with fill levels, already filled
+- type: entity
+ abstract: true
+ parent: DrinkVisualsFill
+ id: DrinkVisualsFillFilled
+ components:
+ - type: Sprite
+ layers:
+ - state: icon
+ - state: fill-5 # this will need to be different with a different maxFillLevels
+ map: ["enum.SolutionContainerLayers.Fill"]
+
# Visualizer for an openable entity with fill levels
- type: entity
abstract: true
False: {state: "icon_empty"}
- type: Sprite
layers:
- - state: icon
+ - state: icon_empty
map: ["enum.OpenableVisuals.Layer"]
- state: fill-1
map: ["enum.SolutionContainerLayers.Fill"]
components:
- type: Sprite
layers:
- - state: icon
+ - state: icon_empty
map: ["enum.OpenableVisuals.Layer"]
- state: fill-5 # this will need to be different with a different maxFillLevels
map: ["enum.SolutionContainerLayers.Fill"]
-# Material costs to apply to a drink
+## Material costs to apply to a drink
# Adding one of these bases as the first parent will override a previous inherited material
# Fragile glass
damageModifierSet: FlimsyGlass
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger # Overkill threshold
+ - trigger: # Overkill threshold
+ !type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
damageModifierSet: FlimsyGlass
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger # Overkill threshold
+ - trigger: # Overkill threshold
+ !type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
components:
- type: Damageable
damageContainer: Inorganic
-#TODO damageModifierSet:
+#TODO damageModifierSet: FlimsyPlastic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger # Overkill threshold
+ - trigger: # Overkill threshold
+ !type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
damageModifierSet: FlimsyWood
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger # Overkill threshold
+ - trigger: # Overkill threshold
+ !type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
damageModifierSet: FlimsyMetallic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger # Overkill threshold
+ - trigger: # Overkill threshold
+ !type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
damageModifierSet: Metallic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger # Overkill threshold
+ - trigger: # Overkill threshold
+ !type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
materialComposition:
Steel: 300
-# Weak gold
+# Flimsy gold
- type: entity
abstract: true
id: DrinkBaseMaterialGold
damageModifierSet: FlimsyMetallic
- type: Destructible
thresholds:
- - trigger:
- !type:DamageTrigger # Overkill threshold
+ - trigger: # Overkill threshold
+ !type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
- damage: 10 # Gold is very weak
+ damage: 5 # Gold is very weak
behaviors:
- !type:PlaySoundBehavior
sound:
- type: SolutionTransfer
canChangeTransferAmount: true
maxTransferAmount: 10
- - type: Sprite
- state: icon
- type: Tag
tags:
- DrinkCup
# A mug is a type of cup.[2]
- type: entity
abstract: true
- parent: [DrinkBaseCup, DrinkBaseMaterialPorcelain]
+ parent: [DrinkBaseCup, DrinkBaseMaterialPorcelain] # Should use DrinkVisualsFill, but sprites have no in-hand
id: DrinkBaseMug
name: mug
description: A mug.
- type: SolutionContainerVisuals
maxFillLevels: 3
fillBaseName: icon-
- - type: StaticPrice
- price: 10
- - type: Tag
- tags:
- - DrinkCup
## Misc Cups
price: 125
- type: entity
- parent: [DrinkBaseCup, DrinkBaseMaterialPorcelain]
+ parent: DrinkBaseMug
id: DrinkTeacupEmpty
name: teacup
description: A plain white porcelain teacup.
sprite: Objects/Consumable/Drinks/teacup.rsi
layers:
- state: icon-0
- - map: ["enum.SolutionContainerLayers.Fill"]
- state: icon-4
+ - state: icon-4
+ map: ["enum.SolutionContainerLayers.Fill"]
+ visible: false
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 4
- type: entity
- parent: [ DrinkBase, DrinkBaseMaterialPlastic, DrinkBaseOpenable, DrinkVisualsOpenable ]
+ parent: [ DrinkBase, DrinkBaseMaterialPlastic, DrinkBaseOpenable, DrinkVisualsOpenable ] # Should use DrinkVisualAll, but sprite has no inhand
id: DrinkSpaceGlue
name: space glue tube
description: High performance glue intended for maintenance of extremely complex mechanical equipment. DON'T DRINK!
solution: drink
- type: entity
- parent: [ DrinkBase, DrinkBaseMaterialPlastic, DrinkBaseOpenable, DrinkVisualsOpenable ]
+ parent: [ DrinkBase, DrinkBaseMaterialPlastic, DrinkBaseOpenable, DrinkVisualsOpenable ] # Should use DrinkVisualAll, but sprite has no inhand
id: DrinkSpaceLube
name: space lube tube
description: High performance lubricant intended for maintenance of extremely complex mechanical equipment.
- type: Sprite
sprite: Objects/Consumable/Drinks/glass_clear.rsi
layers:
- - state: icon
+ - state: icon # TODO add "icon_empty" state to match "DrinkVisualsFillOverlay"
map: [ "enum.SolutionContainerLayers.Base" ]
- state: fill1
map: [ "enum.SolutionContainerLayers.Fill" ]
maxVol: 30
- type: SolutionContainerVisuals
maxFillLevels: 9
- fillBaseName: fill
+ fillBaseName: fill # todo rename to "fill-", add in-hands, then add parent "DrinkVisualsFillOverlay"
metamorphic: true
metamorphicDefaultSprite:
sprite: Objects/Consumable/Drinks/glass_clear.rsi
- type: entity
- parent: [DrinkBase, DrinkBaseMaterialGlass]
+ parent: [DrinkBase, DrinkBaseMaterialGlass, DrinkVisualsFillOverlay]
id: DrinkShotGlass
name: shot glass
description: Perfect for slamming down onto the table angrily.
- type: Sprite
sprite: Objects/Consumable/Drinks/shotglass.rsi
layers:
- - state: icon
+ - state: icon # TODO add "icon_empty" state to match "DrinkVisualsFillOverlay"
map: [ "enum.SolutionContainerLayers.Base" ]
- state: fill1
map: [ "enum.SolutionContainerLayers.Fill" ]
visible: false
- state: icon-front
map: [ "enum.SolutionContainerLayers.Overlay" ]
- - type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 2
- fillBaseName: fill
+ fillBaseName: fill # TODO rename to "fill-" to match "DrinkVisualsFillOverlay"
inHandsMaxFillLevels: 1
- inHandsFillBaseName: -fill-
- type: ExaminableSolution
solution: drink
- type: FitsInDispenser
- type: SolutionContainerManager
solutions:
drink:
- maxVol: 20
+ maxVol: 20 # 20 might be too much
- type: Item
size: Tiny
- type: SolutionTransfer
Steel: 20
- type: entity
- parent: [DrinkBase, DrinkBaseMaterialStrongMetal]
+ parent: [DrinkBase, DrinkBaseMaterialStrongMetal, DrinkVisualsFill]
id: Pitcher
name: metal pitcher
description: A stainless steel insulated pitcher. Everyone's best friend in the morning.
- type: Sprite
sprite: Objects/Consumable/Drinks/pitcher.rsi
layers:
- - state: icon
- map: ["enum.SolutionContainerLayers.Base"]
- - state: fill-6
+ - state: icon # TODO add "icon_empty" state to match "DrinkVisualsFill"
+ - state: fill-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- - type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 6
- fillBaseName: fill-
inHandsMaxFillLevels: 2
- inHandsFillBaseName: -fill-
- type: FitsInDispenser
solution: drink