Spray Paint (Review Ready) (#23003)

* Spray Paint (Draft)

* paint colors, paints in maints loot, cargo crate of paints.

* fix

* remove paint (sort of)

* moved paintcleaner into own system

* Moved paint to server (had to unfortunately)

* doafter now breaks when moving away.

* cant paint mobstatecomp

* loads of fixes

* fixes

* fixes

* nopaintshadercomp

* fixes

* fix

* use locale for paint remove string

* remove nopaintshadercomponent and use blacklist

* remove enabled.true from visualizer

* paint doafter event.

* add verbs for paint and remove paint and icon for paint verb.

* fixes

* no longer replaces shader when shader exists.

* replace forloop with foreach, check shader before adding and removing.

* paint doafter now separate so no copy paste code

* Entities in sprayed targets item slots are also now correctly sprayed.

* fix

* fix

* fix airlock psray painter now removes painted before painting door.

* spray paints now use openablecomponent.

* fix

* fix damn accesstypes.

* fix

* fix
This commit is contained in:
brainfood1183
2024-03-18 21:29:48 +00:00
committed by GitHub
parent 3b8320dbbe
commit e4d5e7f1ae
41 changed files with 1008 additions and 11 deletions

View File

@@ -0,0 +1,8 @@
paint-success = {THE($target)} has been covered in paint!
paint-failure = Can't cover {THE($target)} in paint!
paint-failure-painted = {THE($target)} is already covered in paint!
paint-empty = {THE($used)} is empty!
paint-removed = You clean off the paint!
paint-closed = You must open {THE($used)} first!
paint-verb = Paint
paint-remove-verb = Remove Paint

View File

@@ -68,6 +68,16 @@
category: cargoproduct-category-name-fun
group: market
- type: cargoProduct
id: FunSprayPaints
icon:
sprite: Objects/Fun/spraycans.rsi
state: death2_cap
product: CrateFunSprayPaints
cost: 2000
category: Fun
group: market
- type: cargoProduct
id: FunParty
icon:

View File

@@ -290,14 +290,21 @@
contents:
- id: SnapPopBox
- id: CrazyGlue
amount: 2
- id: PlasticBanana
- id: FunnyPaint
orGroup: Paint
prob: 0.5
- id: FunnyPaintYellow
orGroup: Paint
prob: 0.5
- id: WhoopieCushion
- id: ToyHammer
- id: MrChips
orGroup: GiftPool
prob: 0.5
orGroup: Dummy
- id: MrDips
orGroup: Giftpool
prob: 0.5
orGroup: Dummy
- id: RevolverCapGun
- id: BalloonNT
- id: ClothingShoesClownLarge
@@ -330,6 +337,41 @@
amount: 15
prob: 0.05
- type: entity
id: CrateFunSprayPaints
name: spray paint crate
description: a crate filled with spray paint.
parent: CratePlastic
suffix: Spray Paint
components:
- type: StorageFill
contents:
- id: SprayPaintBlue
amount: 2
prob: 0.33
- id: SprayPaintRed
amount: 2
prob: 0.33
- id: SprayPaintOrange
amount: 2
prob: 0.33
- id: SprayPaintBlack
amount: 2
prob: 0.33
- id: SprayPaintGreen
amount: 2
prob: 0.33
- id: SprayPaintPurple
amount: 2
prob: 0.33
- id: SprayPaintWhite
amount: 2
prob: 0.33
- id: DeathPaint
amount: 2
- id: DeathPaintTwo
amount: 2
- type: entity
name: dartboard box set
description: A box with everything you need for a fun game of darts.

View File

@@ -145,6 +145,10 @@
prob: 0.25
- id: StrangePill
prob: 0.20
- id: DeathPaint
prob: 0.05
- id: DeathPaintTwo
prob: 0.05
- id: DrinkMopwataBottleRandom
prob: 0.20
- id: ModularReceiver

View File

@@ -44,6 +44,7 @@
- CrateMaterialPlastic
- CrateMaterialWood
- CrateMaterialPlasteel
- CrateFunSprayPaints
- CrateFunArtSupplies
- CrateEngineeringCableLV
- CrateEngineeringCableMV

View File

@@ -173,7 +173,12 @@
- MaterialCloth10
- MaterialWoodPlank10
- ResearchDisk
- DeathPaint
- Plunger
- SprayPaintBlue
- SprayPaintRed
- SprayPaintGreen
- SprayPaintOrange
- TechnologyDisk
- PowerCellMedium
- PowerCellSmall

View File

@@ -70,6 +70,7 @@
tags:
- Carp
- DoorBumpOpener
- NoPaint
- type: ReplacementAccent
accent: genericAggressive
- type: Speech

View File

@@ -93,3 +93,6 @@
- RevenantTheme
- type: Speech
speechVerb: Ghost
- type: Tag
tags:
- NoPaint

View File

@@ -104,6 +104,7 @@
- type: Tag
tags:
- CannotSuicide
- NoPaint
# From the uplink injector
- type: entity
@@ -212,6 +213,7 @@
tags:
- CannotSuicide
- FootstepSound
- NoPaint
- type: Inventory
templateId: holoclown
- type: Hands

View File

@@ -0,0 +1,292 @@
# Base Paints
- type: entity
parent: BaseItem
id: PaintBase
name: spray paint
description: A tin of spray paint.
noSpawn: true
components:
- type: Appearance
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
state: clown_cap
layers:
- state: clown_cap
map: ["enum.OpenableVisuals.Layer"]
- type: Paint
consumptionUnit: 10
blacklist:
tags:
- NoPaint
- type: Item
sprite: Objects/Fun/spraycans.rsi
heldPrefix: spray
- type: SolutionContainerManager
solutions:
drink:
maxVol: 50
reagents:
- ReagentId: SpaceGlue
Quantity: 50
- type: TrashOnSolutionEmpty
solution: drink
- type: Sealable
- type: Openable
sound:
path: /Audio/Effects/pop_high.ogg
closeable: true
closeSound:
path: /Audio/Effects/pop_high.ogg
# Paints
# funnypaint
- type: entity
parent: PaintBase
id: FunnyPaint
name: funny paint
description: A tin of funny paint, manufactured by Honk! Co.
components:
- type: Paint
color: "#fa74df"
- type: Item
sprite: Objects/Fun/spraycans.rsi
heldPrefix: clown
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "clown"}
False: {state: "clown_cap"}
- type: entity
parent: PaintBase
id: FunnyPaintYellow
name: funny paint
description: A tin of funny paint, manufactured by Honk! Co.
components:
- type: Paint
color: "#d5e028"
- type: Item
sprite: Objects/Fun/spraycans.rsi
heldPrefix: clown
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
state: clown2_cap
layers:
- state: clown2_cap
map: ["enum.OpenableVisuals.Layer"]
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "clown2"}
False: {state: "clown2_cap"}
#death paint
- type: entity
parent: PaintBase
id: DeathPaint
components:
- type: Paint
color: "#ff20c8"
- type: Item
sprite: Objects/Fun/spraycans.rsi
heldPrefix: spray
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
state: death_cap
layers:
- state: death_cap
map: ["enum.OpenableVisuals.Layer"]
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "death"}
False: {state: "death_cap"}
- type: entity
parent: PaintBase
id: DeathPaintTwo
components:
- type: Paint
color: "#ff2020"
- type: Item
sprite: Objects/Fun/spraycans.rsi
heldPrefix: spray
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
state: death2_cap
layers:
- state: death2_cap
map: ["enum.OpenableVisuals.Layer"]
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "death2"}
False: {state: "death2_cap"}
#Sprays
#Blue
- type: entity
parent: PaintBase
id: SprayPaintBlue
suffix: Blue
components:
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
layers:
- state: spray
map: ["Base"]
- state: spray_cap_colors
map: ["enum.OpenableVisuals.Layer"]
color: "#5890f7"
- type: Paint
color: "#5890f7"
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "spray_colors" , color: "#5890f7"}
False: {state: "spray_cap_colors" , color: "#5890f7"}
#Red
- type: entity
parent: PaintBase
id: SprayPaintRed
suffix: Red
components:
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
layers:
- state: spray
map: ["Base"]
- state: spray_cap_colors
map: ["enum.OpenableVisuals.Layer"]
color: "#ff3b3b"
- type: Paint
color: "#ff3b3b"
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "spray_colors" , color: "#ff3b3b"}
False: {state: "spray_cap_colors" , color: "#ff3b3b"}
#Green
- type: entity
parent: PaintBase
id: SprayPaintGreen
suffix: Green
components:
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
layers:
- state: spray
map: ["Base"]
- state: spray_cap_colors
map: ["enum.OpenableVisuals.Layer"]
color: "#73f170"
- type: Paint
color: "#73f170"
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "spray_colors" , color: "#73f170"}
False: {state: "spray_cap_colors" , color: "#73f170"}
#Black
- type: entity
parent: PaintBase
id: SprayPaintBlack
suffix: Black
components:
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
layers:
- state: spray
map: ["Base"]
- state: spray_cap_colors
map: ["enum.OpenableVisuals.Layer"]
color: "#3a3a3a"
- type: Paint
color: "#3a3a3a"
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "spray_colors" , color: "#3a3a3a"}
False: {state: "spray_cap_colors" , color: "#3a3a3a"}
#Orange
- type: entity
parent: PaintBase
id: SprayPaintOrange
suffix: Orange
components:
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
layers:
- state: spray
map: ["Base"]
- state: spray_cap_colors
map: ["enum.OpenableVisuals.Layer"]
color: "#f6a44b"
- type: Paint
color: "#f6a44b"
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "spray_colors" , color: "#f6a44b"}
False: {state: "spray_cap_colors" , color: "#f6a44b"}
#Purple
- type: entity
parent: PaintBase
id: SprayPaintPurple
suffix: Purple
components:
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
layers:
- state: spray
map: ["Base"]
- state: spray_cap_colors
map: ["enum.OpenableVisuals.Layer"]
color: "#c063f5"
- type: Paint
color: "#c063f5"
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "spray_colors" , color: "#c063f5"}
False: {state: "spray_cap_colors" , color: "#c063f5"}
#White
- type: entity
parent: PaintBase
id: SprayPaintWhite
suffix: White
components:
- type: Sprite
sprite: Objects/Fun/spraycans.rsi
layers:
- state: spray
map: ["Base"]
- state: spray_cap_colors
map: ["enum.OpenableVisuals.Layer"]
color: "#f2f2f2"
- type: Paint
color: "#f2f2f2"
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "spray_colors" , color: "#f2f2f2"}
False: {state: "spray_cap_colors" , color: "#f2f2f2"}

View File

@@ -15,6 +15,7 @@
- type: Tag
tags:
- Sheet
- NoPaint
- type: Material
- type: Damageable
damageContainer: Inorganic

View File

@@ -15,6 +15,7 @@
tags:
- Sheet
- Metal
- NoPaint
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic

View File

@@ -12,6 +12,7 @@
- type: Tag
tags:
- Sheet
- NoPaint
- type: Damageable
damageContainer: Inorganic
- type: Destructible
@@ -110,6 +111,7 @@
- type: Tag
tags:
- Sheet
- NoPaint
- type: entity
parent: SheetPlasma
@@ -132,6 +134,7 @@
tags:
- Plastic
- Sheet
- NoPaint
- type: Material
- type: PhysicalComposition
materialComposition:

View File

@@ -12,6 +12,7 @@
- type: Tag
tags:
- RawMaterial
- NoPaint
- type: Damageable
damageContainer: Inorganic
- type: Destructible

View File

@@ -15,6 +15,9 @@
Blunt: 5
- type: Stack
count: 1
- type: Tag
tags:
- NoPaint
- type: Damageable
damageContainer: Inorganic
- type: Destructible

View File

@@ -62,6 +62,7 @@
solution: soap
- type: DeleteOnSolutionEmpty
solution: soap
- type: PaintRemover
- type: FlavorProfile
flavors:
- clean

View File

@@ -78,6 +78,9 @@
malus: 0
- type: Reflect
enabled: false
- type: Tag
tags:
- NoPaint
- type: IgnitionSource
temperature: 700
@@ -156,6 +159,7 @@
- type: Tag
tags:
- Write
- NoPaint
- type: DisarmMalus
malus: 0

View File

@@ -31,6 +31,9 @@
sound:
path: /Audio/Ambience/Objects/fireplace.ogg
- type: AlwaysHot
- type: Tag
tags:
- NoPaint
- type: entity
id: LegionnaireBonfire

View File

@@ -25,6 +25,9 @@
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: Tag
tags:
- NoPaint
- type: entity
id: HoloFan

View File

@@ -92,6 +92,9 @@
- type: GuideHelp
guides:
- Botany
- type: Tag
tags:
- NoPaint
- type: entity
parent: hydroponicsTray

View File

@@ -908,6 +908,9 @@
- type: Tag
id: NoBlockAnchoring
- type: Tag
id: NoPaint
- type: Tag
id: NozzleBackTank

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
version="1.1"
id="svg834"
sodipodi:docname="plus.svg"
inkscape:version="1.1.2 (b8e25be833, 2022-02-05)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs838" />
<sodipodi:namedview
id="namedview836"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="33.666667"
inkscape:cx="11.985149"
inkscape:cy="7.2475248"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg834" />
<path
d="M 22.69307,10.252475 H 13.806931 V 1.3663366 H 10.252475 V 10.252475 H 1.3663366 v 3.554455 h 8.8861384 v 8.886139 h 3.554456 V 13.80693 h 8.886139 z"
id="path832"
inkscape:label="path832"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:0.888614" />
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,2 @@
sample:
filter: true

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -58,9 +58,6 @@
{
"name": "spray"
},
{
"name": "spray_cap"
},
{
"name": "spray_cap_colors"
},
@@ -70,6 +67,22 @@
{
"name": "equipped-BELT",
"directions": 4
},
{
"name": "clown-inhand-right",
"directions": 4
},
{
"name": "clown-inhand-left",
"directions": 4
},
{
"name": "spray-inhand-right",
"directions": 4
},
{
"name": "spray-inhand-left",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 B