Spider web visuals update (#38175)

* web update

* Update Resources/Prototypes/Entities/Structures/spider_web.yml

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update Resources/Prototypes/Entities/Structures/spider_web.yml

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
This commit is contained in:
Red
2025-06-17 03:30:43 +03:00
committed by GitHub
parent 82b67b58d3
commit 52cc834a0e
19 changed files with 183 additions and 215 deletions

View File

@@ -1,31 +1,20 @@
using Content.Shared.Actions;
using Robust.Shared.Network;
using Robust.Shared.Random;
namespace Content.Shared.Spider;
public abstract class SharedSpiderSystem : EntitySystem
{
[Dependency] private readonly SharedActionsSystem _action = default!;
[Dependency] private readonly IRobustRandom _robustRandom = default!;
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<SpiderComponent, MapInitEvent>(OnInit);
SubscribeLocalEvent<SpiderWebObjectComponent, ComponentStartup>(OnWebStartup);
}
private void OnInit(EntityUid uid, SpiderComponent component, MapInitEvent args)
{
_action.AddAction(uid, ref component.Action, component.WebAction, uid);
}
private void OnWebStartup(EntityUid uid, SpiderWebObjectComponent component, ComponentStartup args)
{
// TODO dont use this. use some general random appearance system
_appearance.SetData(uid, SpiderWebVisuals.Variant, _robustRandom.Next(1, 3));
}
}

View File

@@ -1,9 +0,0 @@
using Robust.Shared.Serialization;
namespace Content.Shared.Spider;
[Serializable, NetSerializable]
public enum SpiderWebVisuals
{
Variant
}

View File

@@ -1,172 +0,0 @@
- type: entity
id: SpiderWeb
name: spider web
description: It's stringy and sticky.
placement:
mode: SnapgridCenter
snap:
- Wall
components:
- type: MeleeSound
soundGroups:
Brute:
path:
"/Audio/Weapons/slash.ogg"
- type: Sprite
sprite: Objects/Misc/spiderweb.rsi
layers:
- state: spider_web_1
map: ["spiderWebLayer"]
drawdepth: WallMountedItems
- type: Appearance
- type: GenericVisualizer
visuals:
enum.SpiderWebVisuals.Variant:
spiderWebLayer:
1: {state: spider_web_1}
2: {state: spider_web_2}
- type: Clickable
- type: Transform
anchored: true
- type: Physics
- type: Fixtures
fixtures:
fix1:
hard: false
density: 7
shape:
!type:PhysShapeAabb
bounds: "-0.5,-0.5,0.5,0.5"
layer:
- MidImpassable
- type: Damageable
damageModifierSet: Wood
- type: Destructible
thresholds:
- trigger: # Excess damage, don't spawn entities
!type:DamageTrigger
damage: 50
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger:
!type:DamageTrigger
damage: 10
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
MaterialWebSilk:
min: 0
max: 1
- type: Temperature
heatDamage:
types:
Heat: 5
coldDamage: {}
coldDamageThreshold: 0
- type: Flammable
fireSpread: true
damage:
types:
Heat: 5
- type: Reactive
groups:
Flammable: [Touch]
Extinguish: [Touch]
- type: SpiderWebObject
- type: SpeedModifierContacts
walkSpeedModifier: 0.5
sprintSpeedModifier: 0.5
ignoreWhitelist:
components:
- IgnoreSpiderWeb
- type: entity
id: SpiderWebClown
name: clown spider web
description: It's stringy and slippy.
placement:
mode: SnapgridCenter
snap:
- Wall
components:
- type: MeleeSound
soundGroups:
Brute:
path:
"/Audio/Weapons/slash.ogg"
- type: Sprite
sprite: Objects/Misc/spiderweb.rsi
layers:
- state: spider_web_clown_1
map: ["spiderWebLayer"]
drawdepth: WallMountedItems
- type: Appearance
- type: GenericVisualizer
visuals:
enum.SpiderWebVisuals.Variant:
spiderWebLayer:
1: {state: spider_web_clown_1}
2: {state: spider_web_clown_2}
- type: Clickable
- type: Transform
anchored: true
- type: Slippery
- type: StepTrigger
intersectRatio: 0.2
- type: Physics
- type: Fixtures
fixtures:
slips:
shape:
!type:PhysShapeAabb
bounds: "-0.4,-0.3,0.4,0.3"
hard: false
layer:
- SlipLayer
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.4,-0.3,0.4,0.3"
density: 1000
mask:
- ItemMask
- type: Damageable
damageModifierSet: Wood
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 10
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: Temperature
heatDamage:
types:
Heat: 5
coldDamage: {}
coldDamageThreshold: 0
- type: Flammable
fireSpread: true
damage:
types:
Heat: 5
- type: Reactive
groups:
Flammable: [Touch]
Extinguish: [Touch]
- type: SpiderWebObject
- type: FlavorProfile
flavors:
- sweet
- type: Food
delay: 2
- type: SolutionContainerManager
solutions:
food:
reagents:
- ReagentId: Sugar
Quantity: 2

View File

@@ -0,0 +1,137 @@
- type: entity
id: SpiderWebBase
abstract: true
placement:
mode: SnapgridCenter
snap:
- Wall
components:
- type: PlacementReplacement
key: web
- type: MeleeSound
soundGroups:
Brute:
path:
"/Audio/Weapons/slash.ogg"
- type: Sprite
sprite: Structures/floor_web.rsi
drawdepth: WallMountedItems
- type: Appearance
- type: Clickable
- type: Transform
anchored: true
- type: Physics
- type: Damageable
damageModifierSet: Wood
- type: Temperature
heatDamage:
types:
Heat: 5
coldDamage: {}
coldDamageThreshold: 0
- type: Flammable
fireSpread: true
damage:
types:
Heat: 5
- type: Reactive
groups:
Flammable: [Touch]
Extinguish: [Touch]
- type: SpiderWebObject
- type: IconSmooth
key: web
additionalKeys:
- walls
base: web_
- type: entity
id: SpiderWeb
parent: SpiderWebBase
name: spider web
description: It's stringy and sticky.
components:
- type: Sprite
color: "#ffffffdd"
- type: Fixtures
fixtures:
fix1:
hard: false
density: 7
shape:
!type:PhysShapeAabb
bounds: "-0.5,-0.5,0.5,0.5"
layer:
- MidImpassable
- type: Destructible
thresholds:
- trigger: # Excess damage, don't spawn entities
!type:DamageTrigger
damage: 50
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger:
!type:DamageTrigger
damage: 10
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
MaterialWebSilk:
min: 0
max: 1
- type: SpeedModifierContacts
walkSpeedModifier: 0.5
sprintSpeedModifier: 0.5
ignoreWhitelist:
components:
- IgnoreSpiderWeb
- type: entity
id: SpiderWebClown
parent: SpiderWebBase
name: clown spider web
description: It's stringy and slippy.
components:
- type: Sprite
color: "#ffa3fc"
- type: Slippery
- type: StepTrigger
intersectRatio: 0.2
- type: Fixtures
fixtures:
slips:
shape:
!type:PhysShapeAabb
bounds: "-0.4,-0.4,0.4,0.4"
hard: false
layer:
- SlipLayer
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.4,-0.4,0.4,0.4"
density: 1000
mask:
- ItemMask
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 10
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: FlavorProfile
flavors:
- sweet
- type: Food
delay: 2
- type: SolutionContainerManager
solutions:
food:
reagents:
- ReagentId: Sugar
Quantity: 2

View File

@@ -1,23 +0,0 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/tgstation/tgstation/commit/788b2576cd9511ced86e74222b6395fd3ef9affe",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "spider_web_1"
},
{
"name": "spider_web_clown_1"
},
{
"name": "spider_web_clown_2"
},
{
"name": "spider_web_2"
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

View File

@@ -0,0 +1,46 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Made by TheShuEd (github)",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "full"
},
{
"name": "web_0",
"directions": 4
},
{
"name": "web_1",
"directions": 4
},
{
"name": "web_2",
"directions": 4
},
{
"name": "web_3",
"directions": 4
},
{
"name": "web_4",
"directions": 4
},
{
"name": "web_5",
"directions": 4
},
{
"name": "web_6",
"directions": 4
},
{
"name": "web_7",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 987 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB