Arachnid 2: Episode 2 (#19984)
* Shield * minor sprite changes and buffs * structure buff * Crafting stuff * tweaks * 88-88 * Better web pocket sprites. * yeah it's fine now.
@@ -1,9 +1,11 @@
|
||||
using System.Linq;
|
||||
using Content.Client.UserInterface.Systems.MenuBar.Widgets;
|
||||
using Content.Shared.Construction.Prototypes;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.Placement;
|
||||
using Robust.Client.Player;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.Utility;
|
||||
@@ -25,6 +27,7 @@ namespace Content.Client.Construction.UI
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly IPlacementManager _placementManager = default!;
|
||||
[Dependency] private readonly IUserInterfaceManager _uiManager = default!;
|
||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||
|
||||
private readonly IConstructionMenuView _constructionView;
|
||||
|
||||
@@ -152,6 +155,11 @@ namespace Content.Client.Construction.UI
|
||||
if (recipe.Hide)
|
||||
continue;
|
||||
|
||||
if (_playerManager.LocalSession == null
|
||||
|| _playerManager.LocalEntity == null
|
||||
|| (recipe.EntityWhitelist != null && !recipe.EntityWhitelist.IsValid(_playerManager.LocalEntity.Value)))
|
||||
continue;
|
||||
|
||||
if (!string.IsNullOrEmpty(search))
|
||||
{
|
||||
if (!recipe.Name.ToLowerInvariant().Contains(search.Trim().ToLowerInvariant()))
|
||||
|
||||
@@ -15,6 +15,7 @@ using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Storage;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Timing;
|
||||
@@ -29,6 +30,8 @@ namespace Content.Server.Construction
|
||||
[Dependency] private readonly ActionBlockerSystem _actionBlocker = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
|
||||
[Dependency] private readonly EntityLookupSystem _lookupSystem = default!;
|
||||
[Dependency] private readonly StorageSystem _storageSystem = default!;
|
||||
[Dependency] private readonly TagSystem _tagSystem = default!;
|
||||
|
||||
// --- WARNING! LEGACY CODE AHEAD! ---
|
||||
// This entire file contains the legacy code for initial construction.
|
||||
@@ -330,6 +333,12 @@ namespace Content.Server.Construction
|
||||
return false;
|
||||
}
|
||||
|
||||
if (constructionPrototype.EntityWhitelist != null && !constructionPrototype.EntityWhitelist.IsValid(user))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("construction-system-cannot-start"), user, user);
|
||||
return false;
|
||||
}
|
||||
|
||||
var startNode = constructionGraph.Nodes[constructionPrototype.StartNode];
|
||||
var targetNode = constructionGraph.Nodes[constructionPrototype.TargetNode];
|
||||
var pathFind = constructionGraph.Path(startNode.Name, targetNode.Name);
|
||||
@@ -383,7 +392,6 @@ namespace Content.Server.Construction
|
||||
// LEGACY CODE. See warning at the top of the file!
|
||||
private async void HandleStartStructureConstruction(TryStartStructureConstructionMessage ev, EntitySessionEventArgs args)
|
||||
{
|
||||
|
||||
if (!_prototypeManager.TryIndex(ev.PrototypeName, out ConstructionPrototype? constructionPrototype))
|
||||
{
|
||||
_sawmill.Error($"Tried to start construction of invalid recipe '{ev.PrototypeName}'!");
|
||||
@@ -404,6 +412,12 @@ namespace Content.Server.Construction
|
||||
return;
|
||||
}
|
||||
|
||||
if (constructionPrototype.EntityWhitelist != null && !constructionPrototype.EntityWhitelist.IsValid(user))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("construction-system-cannot-start"), user, user);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_container.IsEntityInContainer(user))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("construction-system-inside-container"), user, user);
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
using Content.Shared.Construction.EntitySystems;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared.Construction.Conditions;
|
||||
|
||||
/// <summary>
|
||||
/// A check to see if the entity itself can be crafted.
|
||||
/// </summary>
|
||||
[DataDefinition]
|
||||
public sealed partial class EntityWhitelistCondition : IConstructionCondition
|
||||
{
|
||||
/// <summary>
|
||||
/// What is told to the player attempting to construct the recipe using this condition. This will be localised.
|
||||
/// </summary>
|
||||
[DataField("conditionString")]
|
||||
public string ConditionString = "construction-step-condition-entity-whitelist";
|
||||
|
||||
/// <summary>
|
||||
/// The icon shown to the player beside the condition string.
|
||||
/// </summary>
|
||||
[DataField("conditionIcon")]
|
||||
public SpriteSpecifier? ConditionIcon = null;
|
||||
|
||||
/// <summary>
|
||||
/// The whitelist that allows only certain entities to use this.
|
||||
/// </summary>
|
||||
[DataField("whitelist", required: true)]
|
||||
public EntityWhitelist Whitelist = new();
|
||||
|
||||
public bool Condition(EntityUid user, EntityCoordinates location, Direction direction)
|
||||
{
|
||||
return Whitelist.IsValid(user);
|
||||
}
|
||||
|
||||
public ConstructionGuideEntry GenerateGuideEntry()
|
||||
{
|
||||
return new ConstructionGuideEntry
|
||||
{
|
||||
Localization = ConditionString,
|
||||
Icon = ConditionIcon
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using Content.Shared.Construction.Conditions;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Utility;
|
||||
@@ -20,7 +21,7 @@ public sealed partial class ConstructionPrototype : IPrototype
|
||||
/// Friendly name displayed in the construction GUI.
|
||||
/// </summary>
|
||||
[DataField("name")]
|
||||
public string Name= string.Empty;
|
||||
public string Name = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// "Useful" description displayed in the construction GUI.
|
||||
@@ -31,7 +32,7 @@ public sealed partial class ConstructionPrototype : IPrototype
|
||||
/// <summary>
|
||||
/// The <see cref="ConstructionGraphPrototype"/> this construction will be using.
|
||||
/// </summary>
|
||||
[DataField("graph", customTypeSerializer:typeof(PrototypeIdSerializer<ConstructionGraphPrototype>), required: true)]
|
||||
[DataField("graph", customTypeSerializer: typeof(PrototypeIdSerializer<ConstructionGraphPrototype>), required: true)]
|
||||
public string Graph = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
@@ -64,6 +65,13 @@ public sealed partial class ConstructionPrototype : IPrototype
|
||||
[DataField("canBuildInImpassable")]
|
||||
public bool CanBuildInImpassable { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// If not null, then this is used to check if the entity trying to construct this is whitelisted.
|
||||
/// If they're not whitelisted, hide the item.
|
||||
/// </summary>
|
||||
[DataField("entityWhitelist")]
|
||||
public EntityWhitelist? EntityWhitelist = null;
|
||||
|
||||
[DataField("category")] public string Category { get; private set; } = "";
|
||||
|
||||
[DataField("objectType")] public ConstructionType Type { get; private set; } = ConstructionType.Structure;
|
||||
@@ -84,11 +92,11 @@ public sealed partial class ConstructionPrototype : IPrototype
|
||||
/// <summary>
|
||||
/// Construction to replace this construction with when the current one is 'flipped'
|
||||
/// </summary>
|
||||
[DataField("mirror", customTypeSerializer:typeof(PrototypeIdSerializer<ConstructionPrototype>))]
|
||||
[DataField("mirror", customTypeSerializer: typeof(PrototypeIdSerializer<ConstructionPrototype>))]
|
||||
public string? Mirror;
|
||||
|
||||
public IReadOnlyList<IConstructionCondition> Conditions => _conditions;
|
||||
public IReadOnlyList<SpriteSpecifier> Layers => _layers ?? new List<SpriteSpecifier>{Icon};
|
||||
public IReadOnlyList<SpriteSpecifier> Layers => _layers ?? new List<SpriteSpecifier> { Icon };
|
||||
}
|
||||
|
||||
public enum ConstructionType
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
construction-step-condition-crafter-whitelist = You need to meet certain requirements.
|
||||
@@ -4,3 +4,4 @@ construction-system-construct-cannot-start-another-construction = You can't star
|
||||
construction-system-construct-no-materials = You don't have the materials to build that!
|
||||
construction-system-already-building = You are already building that!
|
||||
construction-system-inside-container = You can't build while you're there!
|
||||
construction-system-cannot-start = You cannot craft this!
|
||||
|
||||
@@ -95,9 +95,9 @@
|
||||
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
|
||||
Slash: 1.4
|
||||
Piercing: 0.7
|
||||
Heat: 3.0
|
||||
Heat: 2.0
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Slime
|
||||
|
||||
@@ -11,13 +11,30 @@
|
||||
- type: HumanoidAppearance
|
||||
species: Arachnid
|
||||
- type: Hunger
|
||||
baseDecayRate: 0.0125 # Spiders have slow metabolisms all things considered, so I decided to just make their hunger drain slower.
|
||||
starvationDamage:
|
||||
types:
|
||||
Cold: 0.5
|
||||
Bloodloss: 0.5
|
||||
- type: Thirst
|
||||
baseDecayRate: 0.0125 # Read comment in hunger
|
||||
- type: Sericulture
|
||||
action: ActionSericulture
|
||||
productionLength: 2
|
||||
entityProduced: MaterialWebSilk1
|
||||
hungerCost: 4 # Should total to 25 total silk on full hunger
|
||||
- type: Tag
|
||||
tags:
|
||||
- CanPilot
|
||||
- FootstepSound
|
||||
- DoorBumpOpener
|
||||
- SpiderCraft
|
||||
- type: Perishable
|
||||
- type: Butcherable
|
||||
butcheringType: Spike
|
||||
spawned:
|
||||
- id: FoodMeatSpider
|
||||
amount: 5
|
||||
- type: Inventory
|
||||
templateId: arachnid
|
||||
# Damage (Self)
|
||||
- type: Bloodstream
|
||||
bloodReagent: CopperBlood
|
||||
@@ -27,20 +44,8 @@
|
||||
soundHit:
|
||||
collection: AlienClaw
|
||||
damage:
|
||||
types: # Realisically this is more like 5 slash
|
||||
Slash: 4
|
||||
# Fun
|
||||
- type: Sericulture
|
||||
action: ActionSericulture
|
||||
productionLength: 3
|
||||
entityProduced: MaterialWebSilk1
|
||||
hungerCost: 9 # Should total to 12 total silk on full hunger
|
||||
- type: Perishable
|
||||
- type: Butcherable
|
||||
butcheringType: Spike
|
||||
spawned:
|
||||
- id: FoodMeatSpider
|
||||
amount: 5
|
||||
types:
|
||||
Slash: 5
|
||||
# Visual & Audio
|
||||
- type: DamageVisuals
|
||||
damageOverlayGroups:
|
||||
@@ -93,7 +98,7 @@
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.FacialHair" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Hair" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Hair" ] # Do these need to be here? (arachnid hair arachnid hair)
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadSide" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
|
||||
- map: [ "mask" ]
|
||||
@@ -109,11 +114,6 @@
|
||||
sprite: "Effects/creampie.rsi"
|
||||
state: "creampie_arachnid"
|
||||
visible: false
|
||||
- type: Tag
|
||||
tags:
|
||||
- CanPilot
|
||||
- FootstepSound
|
||||
- DoorBumpOpener
|
||||
|
||||
- type: entity
|
||||
parent: BaseSpeciesDummy
|
||||
|
||||
@@ -222,6 +222,59 @@
|
||||
min: 1
|
||||
max: 2
|
||||
|
||||
- type: entity
|
||||
name: web shield
|
||||
parent: BaseShield
|
||||
id: WebShield
|
||||
description: A stringy shield. It's weak, and doesn't seem to do well against heat.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Melee/web-shield.rsi
|
||||
state: icon
|
||||
- type: Item
|
||||
sprite: Objects/Weapons/Melee/web-shield.rsi
|
||||
heldPrefix: icon
|
||||
- type: Blocking
|
||||
passiveBlockModifier:
|
||||
coefficients:
|
||||
Blunt: 0.95
|
||||
Slash: 0.95
|
||||
Piercing: 0.95
|
||||
activeBlockModifier:
|
||||
coefficients:
|
||||
Blunt: 0.85
|
||||
Slash: 0.85
|
||||
Piercing: 0.85
|
||||
flatReductions:
|
||||
Blunt: 0.5
|
||||
Slash: 0.5
|
||||
Piercing: 0.5
|
||||
- type: Construction
|
||||
graph: WebObjects
|
||||
node: shield
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 40
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 20
|
||||
behaviors:
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- !type:SpawnEntitiesBehavior
|
||||
spawn:
|
||||
MaterialWebSilk:
|
||||
min: 1
|
||||
max: 1
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/woodhit.ogg
|
||||
|
||||
#Magic/Cult Shields (give these to wizard for now)
|
||||
|
||||
- type: entity
|
||||
|
||||
@@ -966,6 +966,9 @@
|
||||
MaterialWebSilk:
|
||||
min: 1
|
||||
max: 1
|
||||
- !type:PlaySoundBehavior
|
||||
sound:
|
||||
path: /Audio/Effects/woodhit.ogg
|
||||
- type: IconSmooth
|
||||
key: walls
|
||||
base: wall
|
||||
|
||||
@@ -0,0 +1,134 @@
|
||||
- type: inventoryTemplate
|
||||
id: arachnid
|
||||
slots:
|
||||
- name: shoes
|
||||
slotTexture: shoes
|
||||
slotFlags: FEET
|
||||
stripTime: 3
|
||||
uiWindowPos: 1,3
|
||||
strippingWindowPos: 1,3
|
||||
displayName: Shoes
|
||||
- name: jumpsuit
|
||||
slotTexture: uniform
|
||||
slotFlags: INNERCLOTHING
|
||||
stripTime: 6
|
||||
uiWindowPos: 0,2
|
||||
strippingWindowPos: 0,2
|
||||
displayName: Jumpsuit
|
||||
- name: gloves
|
||||
slotTexture: gloves
|
||||
slotFlags: GLOVES
|
||||
uiWindowPos: 2,2
|
||||
strippingWindowPos: 2,2
|
||||
displayName: Gloves
|
||||
- name: neck
|
||||
slotTexture: neck
|
||||
slotFlags: NECK
|
||||
uiWindowPos: 0,1
|
||||
strippingWindowPos: 0,1
|
||||
displayName: Neck
|
||||
- name: mask
|
||||
slotTexture: mask
|
||||
slotFlags: MASK
|
||||
uiWindowPos: 1,1
|
||||
strippingWindowPos: 1,1
|
||||
displayName: Mask
|
||||
- name: eyes
|
||||
slotTexture: glasses
|
||||
slotFlags: EYES
|
||||
stripTime: 3
|
||||
uiWindowPos: 0,0
|
||||
strippingWindowPos: 0,0
|
||||
displayName: Eyes
|
||||
- name: ears
|
||||
slotTexture: ears
|
||||
slotFlags: EARS
|
||||
stripTime: 3
|
||||
uiWindowPos: 2,0
|
||||
strippingWindowPos: 2,0
|
||||
displayName: Ears
|
||||
- name: head
|
||||
slotTexture: head
|
||||
slotFlags: HEAD
|
||||
uiWindowPos: 1,0
|
||||
strippingWindowPos: 1,0
|
||||
displayName: Head
|
||||
- name: suitstorage
|
||||
slotTexture: suit_storage
|
||||
slotFlags: SUITSTORAGE
|
||||
stripTime: 3
|
||||
uiWindowPos: 2,0
|
||||
strippingWindowPos: 2,5
|
||||
dependsOn: outerClothing
|
||||
displayName: Suit Storage
|
||||
- name: id
|
||||
slotTexture: id
|
||||
slotFlags: IDCARD
|
||||
slotGroup: SecondHotbar
|
||||
stripTime: 6
|
||||
uiWindowPos: 2,1
|
||||
strippingWindowPos: 2,4
|
||||
dependsOn: jumpsuit
|
||||
displayName: ID
|
||||
- name: belt
|
||||
slotTexture: belt
|
||||
slotFlags: BELT
|
||||
slotGroup: SecondHotbar
|
||||
stripTime: 6
|
||||
uiWindowPos: 3,1
|
||||
strippingWindowPos: 1,5
|
||||
displayName: Belt
|
||||
- name: back
|
||||
slotTexture: back
|
||||
slotFlags: BACK
|
||||
slotGroup: SecondHotbar
|
||||
stripTime: 6
|
||||
uiWindowPos: 3,0
|
||||
strippingWindowPos: 0,5
|
||||
displayName: Back
|
||||
|
||||
- name: pocket4
|
||||
slotTexture: web
|
||||
slotFlags: POCKET
|
||||
slotGroup: MainHotbar
|
||||
stripTime: 3
|
||||
uiWindowPos: 2,4
|
||||
strippingWindowPos: 1,5
|
||||
displayName: Pocket 4
|
||||
- name: pocket3
|
||||
slotTexture: web
|
||||
slotFlags: POCKET
|
||||
slotGroup: MainHotbar
|
||||
stripTime: 3
|
||||
uiWindowPos: 0,4
|
||||
strippingWindowPos: 0,5
|
||||
displayName: Pocket 3
|
||||
|
||||
- name: outerClothing
|
||||
slotTexture: suit
|
||||
slotFlags: OUTERCLOTHING
|
||||
slotGroup: SecondHotbar
|
||||
stripTime: 6
|
||||
uiWindowPos: 1,2
|
||||
strippingWindowPos: 1,2
|
||||
displayName: Suit
|
||||
- name: pocket1
|
||||
slotTexture: pocket
|
||||
slotFlags: POCKET
|
||||
slotGroup: MainHotbar
|
||||
stripTime: 3
|
||||
uiWindowPos: 0,3
|
||||
strippingWindowPos: 0,4
|
||||
dependsOn: jumpsuit
|
||||
displayName: Pocket 1
|
||||
stripHidden: true
|
||||
- name: pocket2
|
||||
slotTexture: pocket
|
||||
slotFlags: POCKET
|
||||
slotGroup: MainHotbar
|
||||
stripTime: 3
|
||||
uiWindowPos: 2,3
|
||||
strippingWindowPos: 1,4
|
||||
dependsOn: jumpsuit
|
||||
displayName: Pocket 2
|
||||
stripHidden: true
|
||||
@@ -13,6 +13,9 @@
|
||||
placementMode: SnapgridCenter
|
||||
canRotate: false
|
||||
canBuildInImpassable: false
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
@@ -31,6 +34,9 @@
|
||||
placementMode: SnapgridCenter
|
||||
canRotate: false
|
||||
canBuildInImpassable: false
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
@@ -49,6 +55,9 @@
|
||||
placementMode: SnapgridCenter
|
||||
canRotate: false
|
||||
canBuildInImpassable: false
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
@@ -66,6 +75,9 @@
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
|
||||
- type: construction
|
||||
name: web crate
|
||||
@@ -82,6 +94,9 @@
|
||||
placementMode: SnapgridCenter
|
||||
canRotate: false
|
||||
canBuildInImpassable: false
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
|
||||
- type: construction
|
||||
name: web door
|
||||
@@ -97,5 +112,8 @@
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
@@ -36,6 +36,12 @@
|
||||
amount: 4
|
||||
doAfter: 6
|
||||
|
||||
- to: shield
|
||||
steps:
|
||||
- material: WebSilk
|
||||
amount: 12
|
||||
doAfter: 6
|
||||
|
||||
# Deconstruction
|
||||
- node: tile
|
||||
entity: FloorTileItemWeb
|
||||
@@ -51,3 +57,6 @@
|
||||
|
||||
- node: cloth
|
||||
entity: MaterialCloth1
|
||||
|
||||
- node: shield
|
||||
entity: WebShield
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
targetNode: tile
|
||||
category: construction-category-tiles
|
||||
description: "Nice and smooth."
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
icon:
|
||||
sprite: Objects/Tiles/web.rsi
|
||||
state: icon
|
||||
@@ -19,6 +22,9 @@
|
||||
targetNode: coat
|
||||
category: construction-category-clothing
|
||||
description: "Surprisingly warm and durable."
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
icon:
|
||||
sprite: Clothing/OuterClothing/WinterCoats/coatweb.rsi
|
||||
state: icon
|
||||
@@ -32,6 +38,9 @@
|
||||
targetNode: jumpsuit
|
||||
category: construction-category-clothing
|
||||
description: "At least it's something."
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
icon:
|
||||
sprite: Clothing/Uniforms/Jumpsuit/web.rsi
|
||||
state: icon
|
||||
@@ -45,6 +54,9 @@
|
||||
targetNode: jumpskirt
|
||||
category: construction-category-clothing
|
||||
description: "At least it's something."
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
icon:
|
||||
sprite: Clothing/Uniforms/Jumpskirt/web.rsi
|
||||
state: icon
|
||||
@@ -58,7 +70,26 @@
|
||||
targetNode: cloth
|
||||
category: construction-category-materials
|
||||
description: "Feels just like cloth, strangely enough."
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
icon:
|
||||
sprite: Objects/Materials/materials.rsi
|
||||
state: cloth_3
|
||||
objectType: Item
|
||||
|
||||
- type: construction
|
||||
name: web shield
|
||||
id: WebShield
|
||||
graph: WebObjects
|
||||
startNode: start
|
||||
targetNode: shield
|
||||
category: construction-category-clothing
|
||||
description: "It's thick enough to handle a few blows, but probably not heat."
|
||||
entityWhitelist:
|
||||
tags:
|
||||
- SpiderCraft
|
||||
icon:
|
||||
sprite: Objects/Weapons/Melee/web-shield.rsi
|
||||
state: icon
|
||||
objectType: Item
|
||||
|
||||
@@ -972,6 +972,9 @@
|
||||
- type: Tag
|
||||
id: SpeedLoaderRifle
|
||||
|
||||
- type: Tag
|
||||
id: SpiderCraft
|
||||
|
||||
- type: Tag
|
||||
id: SpreaderIgnore
|
||||
|
||||
|
||||
BIN
Resources/Textures/Interface/Classic/Slots/web.png
Normal file
|
After Width: | Height: | Size: 908 B |
|
Before Width: | Height: | Size: 668 B After Width: | Height: | Size: 790 B |
BIN
Resources/Textures/Interface/Modernized/Slots/web.png
Normal file
|
After Width: | Height: | Size: 523 B |
|
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 231 B |
|
Before Width: | Height: | Size: 138 B After Width: | Height: | Size: 151 B |
|
Before Width: | Height: | Size: 391 B After Width: | Height: | Size: 423 B |
|
After Width: | Height: | Size: 816 B |
|
After Width: | Height: | Size: 845 B |
BIN
Resources/Textures/Objects/Weapons/Melee/web-shield.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 409 B |
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"version": 1,
|
||||
"size": {"x": 32, "y": 32},
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Made by PixelTheKermit (github) for SS14",
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "icon-inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "icon-inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||