Arachnid rework (#18631)
* Merge before I fuck up anything again * craft whitelist * Sericulture * Spider * gone * quickly fixed * and coders taketh away * And we take more away * sericulture improvements * arachnid * better webbed * OH WAIT * test fail
27
Content.Server/Sericulture/SericultureComponent.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
namespace Content.Server.Sericulture;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed class SericultureComponent : Component
|
||||
{
|
||||
|
||||
[DataField("popupText")]
|
||||
public string PopupText = "sericulture-failure-hunger";
|
||||
|
||||
/// <summary>
|
||||
/// What will be produced at the end of the action.
|
||||
/// </summary>
|
||||
[DataField("entityProduced", required: true)]
|
||||
public string EntityProduced = "";
|
||||
|
||||
[DataField("actionProto", required: true)]
|
||||
public string ActionProto = "";
|
||||
|
||||
/// <summary>
|
||||
/// How long will it take to make.
|
||||
/// </summary>
|
||||
[DataField("productionLength", required: true), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float ProductionLength = 0;
|
||||
|
||||
[DataField("hungerCost"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float HungerCost = 0f;
|
||||
}
|
||||
101
Content.Server/Sericulture/SericultureSystem.cs
Normal file
@@ -0,0 +1,101 @@
|
||||
using Content.Server.Actions;
|
||||
using Content.Server.DoAfter;
|
||||
using Content.Server.Popups;
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Actions.ActionTypes;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Nutrition.Components;
|
||||
using Content.Shared.Nutrition.EntitySystems;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Content.Shared.Sericulture;
|
||||
using Content.Server.Stack;
|
||||
|
||||
namespace Content.Server.Sericulture;
|
||||
|
||||
public sealed class SericultureSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ActionsSystem _actionsSystem = default!;
|
||||
[Dependency] private readonly DoAfterSystem _doAfterSystem = default!;
|
||||
[Dependency] private readonly IPrototypeManager _protoManager = default!;
|
||||
[Dependency] private readonly HungerSystem _hungerSystem = default!;
|
||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||
[Dependency] private readonly StackSystem _stackSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<SericultureComponent, ComponentInit>(OnCompInit);
|
||||
SubscribeLocalEvent<SericultureComponent, ComponentShutdown>(OnCompRemove);
|
||||
SubscribeLocalEvent<SericultureComponent, SericultureActionEvent>(OnSericultureStart);
|
||||
SubscribeLocalEvent<SericultureComponent, SericultureDoAfterEvent>(OnSericultureDoAfter);
|
||||
}
|
||||
|
||||
private void OnCompInit(EntityUid uid, SericultureComponent comp, ComponentInit args)
|
||||
{
|
||||
if (!_protoManager.TryIndex<InstantActionPrototype>(comp.ActionProto, out var actionProto))
|
||||
return;
|
||||
|
||||
_actionsSystem.AddAction(uid, new InstantAction(actionProto), uid);
|
||||
}
|
||||
|
||||
private void OnCompRemove(EntityUid uid, SericultureComponent comp, ComponentShutdown args)
|
||||
{
|
||||
if (!_protoManager.TryIndex<InstantActionPrototype>(comp.ActionProto, out var actionProto))
|
||||
return;
|
||||
|
||||
_actionsSystem.RemoveAction(uid, new InstantAction(actionProto));
|
||||
}
|
||||
|
||||
private void OnSericultureStart(EntityUid uid, SericultureComponent comp, SericultureActionEvent args)
|
||||
{
|
||||
if (IsHungry(uid))
|
||||
{
|
||||
_popupSystem.PopupEntity(Loc.GetString(comp.PopupText), uid, uid);
|
||||
return;
|
||||
}
|
||||
|
||||
var doAfter = new DoAfterArgs(uid, comp.ProductionLength, new SericultureDoAfterEvent(), uid)
|
||||
{
|
||||
BreakOnUserMove = true,
|
||||
BlockDuplicate = true,
|
||||
BreakOnDamage = true,
|
||||
CancelDuplicate = true,
|
||||
};
|
||||
|
||||
_doAfterSystem.TryStartDoAfter(doAfter);
|
||||
}
|
||||
|
||||
private void OnSericultureDoAfter(EntityUid uid, SericultureComponent comp, SericultureDoAfterEvent args)
|
||||
{
|
||||
if (args.Cancelled || args.Handled || comp.Deleted)
|
||||
return;
|
||||
|
||||
if (IsHungry(uid))
|
||||
{
|
||||
_popupSystem.PopupEntity(Loc.GetString(comp.PopupText), uid, uid);
|
||||
return;
|
||||
}
|
||||
|
||||
_hungerSystem.ModifyHunger(uid, -comp.HungerCost);
|
||||
|
||||
var newEntity = Spawn(comp.EntityProduced, Transform(uid).Coordinates);
|
||||
|
||||
_stackSystem.TryMergeToHands(newEntity, uid);
|
||||
|
||||
args.Repeat = true;
|
||||
}
|
||||
|
||||
private bool IsHungry(EntityUid uid, HungerComponent? comp = null)
|
||||
{
|
||||
if (!Resolve(uid, ref comp))
|
||||
return false;
|
||||
|
||||
if (_hungerSystem.GetHungerThreshold(comp) <= HungerThreshold.Peckish)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public sealed class SericultureActionEvent : InstantActionEvent { }
|
||||
}
|
||||
7
Content.Shared/Sericulture/SericultureEvents.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
using Content.Shared.DoAfter;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Sericulture;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class SericultureDoAfterEvent : SimpleDoAfterEvent { }
|
||||
@@ -2,4 +2,8 @@ spider-web-action-name = Spider Web
|
||||
spider-web-action-description = Spawns a web that slows your prey down.
|
||||
spider-web-action-nogrid = There is no floor under you!
|
||||
spider-web-action-success = You place webs around you.
|
||||
spider-web-action-fail = You can't place webs here! All cardinal directions already have webs!
|
||||
spider-web-action-fail = You can't place webs here! All cardinal directions already have webs!
|
||||
|
||||
sericulture-action-name = Weave silk
|
||||
sericulture-action-description = Weave a bit of silk for use in arts and crafts.
|
||||
sericulture-failure-hunger = Your stomach is too empty to make any more webs!
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
construction-step-condition-crafter-whitelist = You need to meet certain requirements.
|
||||
@@ -100,4 +100,5 @@ tiles-basalt-floor = basalt floor
|
||||
tiles-snow-floor = snow floor
|
||||
tiles-wood3 = wood broken floor
|
||||
tiles-hull = exterior hull plating
|
||||
tiles-hull-reinforced = exterior reinforced hull plating
|
||||
tiles-hull-reinforced = exterior reinforced hull plating
|
||||
tiles-web = web tile
|
||||
|
||||
@@ -5,3 +5,11 @@
|
||||
description: spider-web-action-description
|
||||
serverEvent: !type:SpiderWebActionEvent
|
||||
useDelay: 25
|
||||
|
||||
- type: instantAction
|
||||
id: SericultureAction
|
||||
icon: Interface/Actions/web.png
|
||||
name: sericulture-action-name
|
||||
description: sericulture-action-description
|
||||
serverEvent: !type:SericultureActionEvent
|
||||
useDelay: 1
|
||||
|
||||
@@ -91,8 +91,6 @@
|
||||
sprite: Mobs/Species/Arachnid/parts.rsi
|
||||
state: "l_leg"
|
||||
- type: MovementBodyPart
|
||||
walkSpeed: 3.0
|
||||
sprintSpeed: 5.0
|
||||
|
||||
- type: entity
|
||||
id: RightLegArachnid
|
||||
@@ -103,8 +101,6 @@
|
||||
sprite: Mobs/Species/Arachnid/parts.rsi
|
||||
state: "r_leg"
|
||||
- type: MovementBodyPart
|
||||
walkSpeed: 3.0
|
||||
sprintSpeed: 5.0
|
||||
|
||||
- type: entity
|
||||
id: LeftFootArachnid
|
||||
|
||||
@@ -27,14 +27,20 @@
|
||||
part: RightArmArachnid
|
||||
connections:
|
||||
- right hand
|
||||
- secondary right hand
|
||||
left arm:
|
||||
part: LeftArmArachnid
|
||||
connections:
|
||||
- left hand
|
||||
- secondary left hand
|
||||
right hand:
|
||||
part: RightHandArachnid
|
||||
left hand:
|
||||
part: LeftHandArachnid
|
||||
secondary right hand:
|
||||
part: RightHandArachnid
|
||||
secondary left hand:
|
||||
part: LeftHandArachnid
|
||||
right leg:
|
||||
part: RightLegArachnid
|
||||
connections:
|
||||
|
||||
@@ -91,6 +91,14 @@
|
||||
flatReductions:
|
||||
Blunt: 5
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Web # Very flammable, can be easily hacked and slashed, but shooting or hitting it is another story.
|
||||
coefficients:
|
||||
Blunt: 0.7
|
||||
Slash: 2.0
|
||||
Piercing: 0.7
|
||||
Heat: 3.0
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Slime
|
||||
coefficients:
|
||||
@@ -131,13 +139,10 @@
|
||||
Shock: 1.2
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Arachnid # Don't do too well with high temperatures, venomous (well some kinds anyways) and have an exo-skeleton (so probably harder to stab but easier to... break?)
|
||||
id: Arachnid # Exo-skeleton, should have simillarities to skeleton resistances.
|
||||
coefficients:
|
||||
Blunt: 1.15
|
||||
Piercing: 1.15
|
||||
Slash: 0.85
|
||||
Heat: 1.25
|
||||
Poison: 0.8
|
||||
Blunt: 1.1
|
||||
Heat: 1.5
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Moth # Slightly worse at everything but cold
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
- type: Respirator
|
||||
damage:
|
||||
types:
|
||||
Asphyxiation: 2 # Make sure you have O2 on you at all times
|
||||
Asphyxiation: 1.5 # Make sure you have O2 on you at all times
|
||||
damageRecovery:
|
||||
types:
|
||||
Asphyxiation: -0.5 # Recovery will suck without chems
|
||||
@@ -6,50 +6,40 @@
|
||||
abstract: true
|
||||
components:
|
||||
# The important nessessities
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed: 3.0
|
||||
baseSprintSpeed: 5.0
|
||||
- type: Body
|
||||
prototype: Arachnid
|
||||
requiredLegs: 2
|
||||
- type: Perishable
|
||||
- type: HumanoidAppearance
|
||||
species: Arachnid
|
||||
- type: Damageable
|
||||
damageContainer: Biological
|
||||
damageModifierSet: Arachnid # spooder
|
||||
- type: Hunger
|
||||
starvationDamage:
|
||||
baseDecayRate: 0.0125
|
||||
starvationDamage: # Not sure if this should be changed.
|
||||
types:
|
||||
Cold: 0.5
|
||||
Bloodloss: 0.5
|
||||
- type: Thirst
|
||||
- type: Icon
|
||||
sprite: Mobs/Species/Arachnid/parts.rsi
|
||||
state: full
|
||||
# Damage and speed
|
||||
baseDecayRate: 0.0125
|
||||
# Damage (Self)
|
||||
- type: Damageable
|
||||
damageContainer: Biological
|
||||
damageModifierSet: Arachnid
|
||||
- type: Bloodstream
|
||||
bloodReagent: SpiderBlood
|
||||
- type: Temperature
|
||||
heatDamageThreshold: 400
|
||||
coldDamageThreshold: 285
|
||||
currentTemperature: 310.15
|
||||
specificHeat: 46
|
||||
coldDamage:
|
||||
types:
|
||||
Cold : 0.2 #per second, scales with temperature & other constants
|
||||
heatDamage:
|
||||
types:
|
||||
Heat : 0.1 #per second, scales with temperature & other constants
|
||||
- type: Barotrauma
|
||||
# Damage (Others)
|
||||
- type: MeleeWeapon
|
||||
animation: WeaponArcClaw
|
||||
soundHit:
|
||||
collection: AlienClaw
|
||||
damage:
|
||||
types:
|
||||
Blunt: 0.20 #per second, scales with pressure and other constants.
|
||||
- type: SlowOnDamage
|
||||
speedModifierThresholds: # This is an ouch, but it does make up for their extra speed
|
||||
65: 0.7
|
||||
80: 0.4
|
||||
# Misc
|
||||
types: # Realisically this is more like 5 slash
|
||||
Slash: 4
|
||||
# Visual & Audio
|
||||
- type: DamageVisuals
|
||||
damageOverlayGroups:
|
||||
Brute:
|
||||
sprite: Mobs/Effects/brute_damage.rsi
|
||||
color: "#162581"
|
||||
- type: Speech
|
||||
speechSounds: Arachnid
|
||||
- type: Vocal
|
||||
@@ -57,20 +47,66 @@
|
||||
Male: UnisexArachnid
|
||||
Female: UnisexArachnid
|
||||
Unsexed: UnisexArachnid
|
||||
- type: Inventory
|
||||
templateId: arachnid
|
||||
- type: MeleeWeapon
|
||||
hidden: true
|
||||
soundHit:
|
||||
path: /Audio/Weapons/pierce.ogg
|
||||
angle: 30
|
||||
animation: WeaponArcClaw
|
||||
attackRate: 1.5
|
||||
damage:
|
||||
types:
|
||||
# Actually does 3 + 1 damage due to +25% damage bonus on all single target melee attacks
|
||||
Slash: 2.4
|
||||
Poison: 0.8
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
drawdepth: Mobs
|
||||
layers:
|
||||
- map: [ "enum.HumanoidVisualLayers.Chest" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Head" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Snout" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Eyes" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.RArm" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.LArm" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
|
||||
- shader: StencilClear
|
||||
sprite: Mobs/Species/Human/parts.rsi #PJB on stencil clear being on the left leg: "...this is 'fine'" -https://github.com/space-wizards/space-station-14/pull/12217#issuecomment-1291677115
|
||||
# its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear.
|
||||
# sprite refactor when
|
||||
state: l_leg
|
||||
- shader: StencilMask
|
||||
map: ["enum.HumanoidVisualLayers.StencilMask"]
|
||||
sprite: Mobs/Customization/masking_helpers.rsi
|
||||
state: unisex_full
|
||||
visible: false
|
||||
- map: ["jumpsuit"]
|
||||
- map: ["enum.HumanoidVisualLayers.LFoot"]
|
||||
- map: ["enum.HumanoidVisualLayers.RFoot"]
|
||||
- map: ["enum.HumanoidVisualLayers.LHand"]
|
||||
- map: ["enum.HumanoidVisualLayers.RHand"]
|
||||
- map: [ "id" ]
|
||||
- map: [ "gloves" ]
|
||||
- map: [ "shoes" ]
|
||||
- map: [ "ears" ]
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Tail" ] # Better here?
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.FacialHair" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Hair" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadSide" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
|
||||
- map: [ "mask" ]
|
||||
- map: [ "head" ]
|
||||
- map: [ "pocket1" ]
|
||||
- map: [ "pocket2" ]
|
||||
- map: ["enum.HumanoidVisualLayers.Handcuffs"]
|
||||
color: "#ffffff"
|
||||
sprite: Objects/Misc/handcuffs.rsi
|
||||
state: body-overlay-2
|
||||
visible: false
|
||||
- map: [ "clownedon" ] # Dynamically generated
|
||||
sprite: "Effects/creampie.rsi"
|
||||
state: "creampie_human"
|
||||
visible: false
|
||||
# Misc
|
||||
- type: Sericulture
|
||||
actionProto: SericultureAction
|
||||
productionLength: 3
|
||||
entityProduced: MaterialWebSilk1
|
||||
hungerCost: 5
|
||||
- type: Butcherable
|
||||
butcheringType: Spike
|
||||
spawned:
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
- ReagentId: Fiber
|
||||
Quantity: 5
|
||||
- type: Tag
|
||||
tags:
|
||||
tags:
|
||||
- ClothMade
|
||||
- DroneUsable
|
||||
- Gauze
|
||||
@@ -193,7 +193,7 @@
|
||||
- ReagentId: Fiber
|
||||
Quantity: 5
|
||||
- type: Tag
|
||||
tags:
|
||||
tags:
|
||||
- ClothMade
|
||||
- DroneUsable
|
||||
- RawMaterial
|
||||
@@ -372,7 +372,7 @@
|
||||
- ReagentId: Fiber
|
||||
Quantity: 5
|
||||
- type: Tag
|
||||
tags:
|
||||
tags:
|
||||
- ClothMade
|
||||
- DroneUsable
|
||||
- RawMaterial
|
||||
@@ -453,3 +453,42 @@
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 2
|
||||
|
||||
- type: entity
|
||||
parent: MaterialBase
|
||||
id: MaterialWebSilk
|
||||
name: silk
|
||||
description: A webby material
|
||||
suffix: Full
|
||||
components:
|
||||
- type: PhysicalComposition
|
||||
materialComposition:
|
||||
WebSilk: 100
|
||||
- type: Sprite
|
||||
sprite: Objects/Materials/silk.rsi
|
||||
state: icon
|
||||
- type: Stack
|
||||
count: 50
|
||||
stackType: WebSilk
|
||||
- type: Item
|
||||
size: 50
|
||||
|
||||
- type: entity
|
||||
parent: MaterialWebSilk
|
||||
id: MaterialWebSilk25
|
||||
suffix: 25
|
||||
components:
|
||||
- type: Stack
|
||||
count: 25
|
||||
- type: Item
|
||||
size: 25
|
||||
|
||||
- type: entity
|
||||
parent: MaterialWebSilk
|
||||
id: MaterialWebSilk1
|
||||
suffix: 1
|
||||
components:
|
||||
- type: Stack
|
||||
count: 1
|
||||
- type: Item
|
||||
size: 1
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
MaterialWebSilk:
|
||||
min: 0
|
||||
max: 1
|
||||
- type: Temperature
|
||||
heatDamage:
|
||||
types:
|
||||
|
||||
@@ -810,3 +810,19 @@
|
||||
- type: Stack
|
||||
stackType: FloorTileGratingMaint
|
||||
|
||||
- type: entity
|
||||
name: web tile
|
||||
parent: FloorTileItemBase
|
||||
id: FloorTileItemWeb
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Tiles/web.rsi
|
||||
state: icon
|
||||
- type: FloorTile
|
||||
outputs:
|
||||
- FloorWebTile
|
||||
- type: Stack
|
||||
stackType: FloorTileWeb
|
||||
- type: Construction
|
||||
graph: TileWeb
|
||||
node: webtile
|
||||
|
||||
@@ -478,6 +478,35 @@
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
|
||||
- type: entity
|
||||
id: TableWeb
|
||||
parent: TableBase
|
||||
name: web table
|
||||
description: Really smooth and surprisingly durable.
|
||||
components:
|
||||
- type: Damageable
|
||||
damageModifierSet: Web
|
||||
- type: Sprite
|
||||
sprite: Structures/Furniture/Web/table.rsi
|
||||
- type: Icon
|
||||
sprite: Structures/Furniture/Web/table.rsi
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 50
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- type: MeleeSound
|
||||
soundGroups:
|
||||
Brute:
|
||||
path:
|
||||
"/Audio/Weapons/slash.ogg"
|
||||
- type: Construction
|
||||
graph: TableWeb
|
||||
node: table
|
||||
|
||||
- type: entity
|
||||
id: TableDebug
|
||||
parent: TableBase
|
||||
|
||||
@@ -122,3 +122,31 @@
|
||||
state: mattress
|
||||
- type: Damageable
|
||||
damageModifierSet: Inflatable
|
||||
|
||||
- type: entity
|
||||
parent: Bed
|
||||
id: WebBed
|
||||
name: web bed
|
||||
description: You got webbed.
|
||||
components:
|
||||
- type: Damageable
|
||||
damageModifierSet: Web
|
||||
- type: Sprite
|
||||
sprite: Structures/Furniture/Web/bed.rsi
|
||||
state: icon
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 50
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/woodhit.ogg
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
MaterialWebSilk:
|
||||
min: 1
|
||||
max: 1
|
||||
|
||||
@@ -247,6 +247,45 @@
|
||||
graph: RitualSeat
|
||||
node: chairCursed
|
||||
|
||||
- type: entity
|
||||
name: web chair
|
||||
id: WebChair
|
||||
description: For true web developers.
|
||||
parent: SeatBase
|
||||
components:
|
||||
- type: Transform
|
||||
anchored: true
|
||||
- type: Physics
|
||||
bodyType: Static
|
||||
- type: Anchorable
|
||||
- type: Rotatable
|
||||
- type: Sprite
|
||||
sprite: Structures/Furniture/Web/chair.rsi
|
||||
state: icon
|
||||
- type: MeleeSound
|
||||
soundGroups:
|
||||
Brute:
|
||||
path:
|
||||
"/Audio/Weapons/slash.ogg"
|
||||
- type: Damageable
|
||||
damageModifierSet: Web
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 50
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/woodhit.ogg
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
MaterialWebSilk:
|
||||
min: 1
|
||||
max: 1
|
||||
|
||||
- type: entity
|
||||
parent: [SeatBase, BaseFoldable]
|
||||
id: ChairFolding
|
||||
|
||||
@@ -927,6 +927,48 @@
|
||||
key: walls
|
||||
base: wood
|
||||
|
||||
- type: entity
|
||||
parent: BaseWall
|
||||
id: WallWeb
|
||||
name: web wall
|
||||
description: Keeps the spiders in and the greytide out.
|
||||
components:
|
||||
- type: Clickable
|
||||
- type: MeleeSound
|
||||
soundGroups:
|
||||
Brute:
|
||||
path:
|
||||
"/Audio/Weapons/slash.ogg"
|
||||
- type: Damageable
|
||||
damageModifierSet: Web
|
||||
- type: Tag
|
||||
tags:
|
||||
- Wall
|
||||
- RCDDeconstructWhitelist
|
||||
- type: Sprite
|
||||
sprite: Structures/Walls/web.rsi
|
||||
- type: Icon
|
||||
sprite: Structures/Walls/web.rsi
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 30
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
MaterialWebSilk:
|
||||
min: 1
|
||||
max: 1
|
||||
- type: IconSmooth
|
||||
key: walls
|
||||
base: wall
|
||||
- type: Construction
|
||||
graph: WallWeb
|
||||
node: wall
|
||||
|
||||
|
||||
# Vault Walls
|
||||
|
||||
@@ -975,7 +1017,6 @@
|
||||
sprite: Structures/Walls/vault.rsi
|
||||
state: sandstonevault
|
||||
|
||||
|
||||
# Mime
|
||||
|
||||
- type: entity
|
||||
|
||||
@@ -76,3 +76,10 @@
|
||||
icon: { sprite: Objects/Materials/Sheets/meaterial.rsi, state: meat }
|
||||
color: "#c53648"
|
||||
price: 0.05
|
||||
|
||||
- type: material
|
||||
id: WebSilk
|
||||
name: materials-web
|
||||
icon: { sprite: Objects/Materials/silk.rsi, state: icon }
|
||||
color: "#eeeeee" #eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
|
||||
price: 0 # Maybe better for it to be priceless, knowing how greedy cargo is.
|
||||
|
||||
35
Resources/Prototypes/Recipes/Construction/Graphs/web.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
- type: constructionGraph
|
||||
id: WallWeb
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
edges:
|
||||
- to: wall
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
southRotation: true
|
||||
steps:
|
||||
- material: WebSilk
|
||||
amount: 4
|
||||
doAfter: 3
|
||||
|
||||
- node: wall
|
||||
entity: WallWeb
|
||||
|
||||
- type: constructionGraph
|
||||
id: TableWeb
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
edges:
|
||||
- to: table
|
||||
completed:
|
||||
- !type:SnapToGrid
|
||||
southRotation: true
|
||||
steps:
|
||||
- material: WebSilk
|
||||
amount: 4
|
||||
doAfter: 3
|
||||
|
||||
- node: table
|
||||
entity: TableWeb
|
||||
35
Resources/Prototypes/Recipes/Construction/web.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
- type: construction
|
||||
name: web wall
|
||||
id: WallWeb
|
||||
graph: WallWeb
|
||||
startNode: start
|
||||
targetNode: wall
|
||||
category: construction-category-structures
|
||||
description: A fairly weak yet silky smooth wall.
|
||||
icon:
|
||||
sprite: /Textures/Structures/Walls/web.rsi
|
||||
state: full
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canRotate: false
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
name: web table
|
||||
id: TableWeb
|
||||
graph: TableWeb
|
||||
startNode: start
|
||||
targetNode: table
|
||||
category: construction-category-structures
|
||||
description: Essential for any serious web development.
|
||||
icon:
|
||||
sprite: /Textures/Structures/Furniture/Web/table.rsi
|
||||
state: full
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canRotate: false
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
@@ -9,7 +9,7 @@
|
||||
- !type:SetStackCount
|
||||
amount: 4
|
||||
steps:
|
||||
- material: Steel
|
||||
- material: WebSilk
|
||||
amount: 1
|
||||
- node: steeltile
|
||||
entity: FloorTileItemSteel
|
||||
|
||||
15
Resources/Prototypes/Recipes/Crafting/Graphs/web.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
- type: constructionGraph
|
||||
id: TileWeb
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
edges:
|
||||
- to: webtile
|
||||
completed:
|
||||
- !type:SetStackCount
|
||||
amount: 2
|
||||
steps:
|
||||
- material: WebSilk
|
||||
amount: 1
|
||||
- node: webtile
|
||||
entity: FloorTileItemWeb
|
||||
10
Resources/Prototypes/Recipes/Crafting/web.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
- type: construction
|
||||
name: web tile
|
||||
id: TileWeb
|
||||
graph: TileWeb
|
||||
startNode: start
|
||||
targetNode: webtile
|
||||
category: construction-category-tiles
|
||||
description: "Nice and smooth."
|
||||
icon: { sprite: Objects/Tiles/web.rsi, state: icon }
|
||||
objectType: Item
|
||||
@@ -69,3 +69,11 @@
|
||||
spawn: MaterialSheetMeat1
|
||||
maxCount: 30
|
||||
itemSize: 1
|
||||
|
||||
- type: stack
|
||||
id: WebSilk
|
||||
name: silk
|
||||
icon: { sprite: /Textures/Objects/Materials/silk.rsi, state: icon }
|
||||
spawn: MaterialWebSilk1
|
||||
maxCount: 50
|
||||
itemSize: 1
|
||||
|
||||
@@ -368,3 +368,10 @@
|
||||
spawn: FloorTileItemGratingMaint
|
||||
maxCount: 30
|
||||
itemSize: 5
|
||||
|
||||
- type: stack
|
||||
id: FloorTileWeb
|
||||
name: web tile
|
||||
spawn: FloorTileItemWeb
|
||||
maxCount: 30
|
||||
itemSize: 5
|
||||
|
||||
@@ -1438,6 +1438,20 @@
|
||||
itemDrop: MaterialWoodPlank1
|
||||
heatCapacity: 10000
|
||||
|
||||
- type: tile
|
||||
id: FloorWebTile
|
||||
name: tiles-web
|
||||
sprite: /Textures/Tiles/Misc/Web/web_tile.png
|
||||
baseTurf: Plating
|
||||
isSubfloor: false
|
||||
canCrowbar: true
|
||||
footstepSounds:
|
||||
collection: FootstepCarpet
|
||||
barestepSounds:
|
||||
collection: BarestepCarpet
|
||||
itemDrop: FloorTileItemWeb
|
||||
heatCapacity: 10000
|
||||
|
||||
#Hull tiles
|
||||
- type: tile
|
||||
id: FloorHull
|
||||
|
||||
BIN
Resources/Textures/Objects/Materials/silk.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 391 B |
12
Resources/Textures/Objects/Materials/silk.rsi/meta.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Made by PixelTheKermit (github) for SS14",
|
||||
"size": {"x": 32, "y": 32},
|
||||
"states":
|
||||
[
|
||||
{
|
||||
"name": "icon"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Resources/Textures/Objects/Tiles/web.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 302 B |
14
Resources/Textures/Objects/Tiles/web.rsi/meta.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Made by PixelTheKermit (github) for SS14",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Resources/Textures/Structures/Furniture/Web/bed.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 491 B |
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "",
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Resources/Textures/Structures/Furniture/Web/chair.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 967 B |
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "",
|
||||
"states": [
|
||||
{
|
||||
"name": "icon",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Resources/Textures/Structures/Furniture/Web/table.rsi/full.png
Normal file
|
After Width: | Height: | Size: 566 B |
163
Resources/Textures/Structures/Furniture/Web/table.rsi/meta.json
Normal file
@@ -0,0 +1,163 @@
|
||||
{
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "",
|
||||
"states": [
|
||||
{
|
||||
"name": "full",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "state_0",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "state_1",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "state_2",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "state_3",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "state_4",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "state_5",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "state_6",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "state_7",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
],
|
||||
[
|
||||
1.0
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 780 B |
|
After Width: | Height: | Size: 616 B |
|
After Width: | Height: | Size: 780 B |
|
After Width: | Height: | Size: 616 B |
|
After Width: | Height: | Size: 652 B |
|
After Width: | Height: | Size: 624 B |
|
After Width: | Height: | Size: 652 B |
|
After Width: | Height: | Size: 254 B |
BIN
Resources/Textures/Structures/Walls/web.rsi/full.png
Normal file
|
After Width: | Height: | Size: 507 B |
46
Resources/Textures/Structures/Walls/web.rsi/meta.json
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "",
|
||||
"states": [
|
||||
{
|
||||
"name": "wall0",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wall1",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wall2",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wall3",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wall4",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wall5",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wall6",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wall7",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "full"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Resources/Textures/Structures/Walls/web.rsi/wall0.png
Normal file
|
After Width: | Height: | Size: 802 B |
BIN
Resources/Textures/Structures/Walls/web.rsi/wall1.png
Normal file
|
After Width: | Height: | Size: 596 B |
BIN
Resources/Textures/Structures/Walls/web.rsi/wall2.png
Normal file
|
After Width: | Height: | Size: 802 B |
BIN
Resources/Textures/Structures/Walls/web.rsi/wall3.png
Normal file
|
After Width: | Height: | Size: 596 B |
BIN
Resources/Textures/Structures/Walls/web.rsi/wall4.png
Normal file
|
After Width: | Height: | Size: 593 B |
BIN
Resources/Textures/Structures/Walls/web.rsi/wall5.png
Normal file
|
After Width: | Height: | Size: 697 B |
BIN
Resources/Textures/Structures/Walls/web.rsi/wall6.png
Normal file
|
After Width: | Height: | Size: 593 B |
BIN
Resources/Textures/Structures/Walls/web.rsi/wall7.png
Normal file
|
After Width: | Height: | Size: 239 B |
14
Resources/Textures/Tiles/Misc/Web/meta.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Made by PixelTheKermit (github) for ss14",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "web_tile"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Resources/Textures/Tiles/Misc/Web/web_tile.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |