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 System.Linq;
|
||||||
using Content.Client.UserInterface.Systems.MenuBar.Widgets;
|
using Content.Client.UserInterface.Systems.MenuBar.Widgets;
|
||||||
using Content.Shared.Construction.Prototypes;
|
using Content.Shared.Construction.Prototypes;
|
||||||
|
using Content.Shared.Tag;
|
||||||
using Robust.Client.GameObjects;
|
using Robust.Client.GameObjects;
|
||||||
using Robust.Client.Graphics;
|
using Robust.Client.Graphics;
|
||||||
using Robust.Client.Placement;
|
using Robust.Client.Placement;
|
||||||
|
using Robust.Client.Player;
|
||||||
using Robust.Client.UserInterface;
|
using Robust.Client.UserInterface;
|
||||||
using Robust.Client.UserInterface.Controls;
|
using Robust.Client.UserInterface.Controls;
|
||||||
using Robust.Client.Utility;
|
using Robust.Client.Utility;
|
||||||
@@ -25,6 +27,7 @@ namespace Content.Client.Construction.UI
|
|||||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||||
[Dependency] private readonly IPlacementManager _placementManager = default!;
|
[Dependency] private readonly IPlacementManager _placementManager = default!;
|
||||||
[Dependency] private readonly IUserInterfaceManager _uiManager = default!;
|
[Dependency] private readonly IUserInterfaceManager _uiManager = default!;
|
||||||
|
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||||
|
|
||||||
private readonly IConstructionMenuView _constructionView;
|
private readonly IConstructionMenuView _constructionView;
|
||||||
|
|
||||||
@@ -152,6 +155,11 @@ namespace Content.Client.Construction.UI
|
|||||||
if (recipe.Hide)
|
if (recipe.Hide)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (_playerManager.LocalSession == null
|
||||||
|
|| _playerManager.LocalEntity == null
|
||||||
|
|| (recipe.EntityWhitelist != null && !recipe.EntityWhitelist.IsValid(_playerManager.LocalEntity.Value)))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(search))
|
if (!string.IsNullOrEmpty(search))
|
||||||
{
|
{
|
||||||
if (!recipe.Name.ToLowerInvariant().Contains(search.Trim().ToLowerInvariant()))
|
if (!recipe.Name.ToLowerInvariant().Contains(search.Trim().ToLowerInvariant()))
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ using Content.Shared.Hands.EntitySystems;
|
|||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
using Content.Shared.Inventory;
|
using Content.Shared.Inventory;
|
||||||
using Content.Shared.Storage;
|
using Content.Shared.Storage;
|
||||||
|
using Content.Shared.Tag;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
using Robust.Shared.Player;
|
using Robust.Shared.Player;
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
@@ -29,6 +30,8 @@ namespace Content.Server.Construction
|
|||||||
[Dependency] private readonly ActionBlockerSystem _actionBlocker = default!;
|
[Dependency] private readonly ActionBlockerSystem _actionBlocker = default!;
|
||||||
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
|
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
|
||||||
[Dependency] private readonly EntityLookupSystem _lookupSystem = default!;
|
[Dependency] private readonly EntityLookupSystem _lookupSystem = default!;
|
||||||
|
[Dependency] private readonly StorageSystem _storageSystem = default!;
|
||||||
|
[Dependency] private readonly TagSystem _tagSystem = default!;
|
||||||
|
|
||||||
// --- WARNING! LEGACY CODE AHEAD! ---
|
// --- WARNING! LEGACY CODE AHEAD! ---
|
||||||
// This entire file contains the legacy code for initial construction.
|
// This entire file contains the legacy code for initial construction.
|
||||||
@@ -330,6 +333,12 @@ namespace Content.Server.Construction
|
|||||||
return false;
|
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 startNode = constructionGraph.Nodes[constructionPrototype.StartNode];
|
||||||
var targetNode = constructionGraph.Nodes[constructionPrototype.TargetNode];
|
var targetNode = constructionGraph.Nodes[constructionPrototype.TargetNode];
|
||||||
var pathFind = constructionGraph.Path(startNode.Name, targetNode.Name);
|
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!
|
// LEGACY CODE. See warning at the top of the file!
|
||||||
private async void HandleStartStructureConstruction(TryStartStructureConstructionMessage ev, EntitySessionEventArgs args)
|
private async void HandleStartStructureConstruction(TryStartStructureConstructionMessage ev, EntitySessionEventArgs args)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (!_prototypeManager.TryIndex(ev.PrototypeName, out ConstructionPrototype? constructionPrototype))
|
if (!_prototypeManager.TryIndex(ev.PrototypeName, out ConstructionPrototype? constructionPrototype))
|
||||||
{
|
{
|
||||||
_sawmill.Error($"Tried to start construction of invalid recipe '{ev.PrototypeName}'!");
|
_sawmill.Error($"Tried to start construction of invalid recipe '{ev.PrototypeName}'!");
|
||||||
@@ -404,6 +412,12 @@ namespace Content.Server.Construction
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (constructionPrototype.EntityWhitelist != null && !constructionPrototype.EntityWhitelist.IsValid(user))
|
||||||
|
{
|
||||||
|
_popup.PopupEntity(Loc.GetString("construction-system-cannot-start"), user, user);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (_container.IsEntityInContainer(user))
|
if (_container.IsEntityInContainer(user))
|
||||||
{
|
{
|
||||||
_popup.PopupEntity(Loc.GetString("construction-system-inside-container"), user, 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.Construction.Conditions;
|
||||||
|
using Content.Shared.Whitelist;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
using Robust.Shared.Utility;
|
using Robust.Shared.Utility;
|
||||||
@@ -64,6 +65,13 @@ public sealed partial class ConstructionPrototype : IPrototype
|
|||||||
[DataField("canBuildInImpassable")]
|
[DataField("canBuildInImpassable")]
|
||||||
public bool CanBuildInImpassable { get; private set; }
|
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("category")] public string Category { get; private set; } = "";
|
||||||
|
|
||||||
[DataField("objectType")] public ConstructionType Type { get; private set; } = ConstructionType.Structure;
|
[DataField("objectType")] public ConstructionType Type { get; private set; } = ConstructionType.Structure;
|
||||||
|
|||||||
@@ -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-construct-no-materials = You don't have the materials to build that!
|
||||||
construction-system-already-building = You are already building that!
|
construction-system-already-building = You are already building that!
|
||||||
construction-system-inside-container = You can't build while you're there!
|
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.
|
id: Web # Very flammable, can be easily hacked and slashed, but shooting or hitting it is another story.
|
||||||
coefficients:
|
coefficients:
|
||||||
Blunt: 0.7
|
Blunt: 0.7
|
||||||
Slash: 2.0
|
Slash: 1.4
|
||||||
Piercing: 0.7
|
Piercing: 0.7
|
||||||
Heat: 3.0
|
Heat: 2.0
|
||||||
|
|
||||||
- type: damageModifierSet
|
- type: damageModifierSet
|
||||||
id: Slime
|
id: Slime
|
||||||
|
|||||||
@@ -11,13 +11,30 @@
|
|||||||
- type: HumanoidAppearance
|
- type: HumanoidAppearance
|
||||||
species: Arachnid
|
species: Arachnid
|
||||||
- type: Hunger
|
- type: Hunger
|
||||||
baseDecayRate: 0.0125 # Spiders have slow metabolisms all things considered, so I decided to just make their hunger drain slower.
|
|
||||||
starvationDamage:
|
starvationDamage:
|
||||||
types:
|
types:
|
||||||
Cold: 0.5
|
Cold: 0.5
|
||||||
Bloodloss: 0.5
|
Bloodloss: 0.5
|
||||||
- type: Thirst
|
- 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)
|
# Damage (Self)
|
||||||
- type: Bloodstream
|
- type: Bloodstream
|
||||||
bloodReagent: CopperBlood
|
bloodReagent: CopperBlood
|
||||||
@@ -27,20 +44,8 @@
|
|||||||
soundHit:
|
soundHit:
|
||||||
collection: AlienClaw
|
collection: AlienClaw
|
||||||
damage:
|
damage:
|
||||||
types: # Realisically this is more like 5 slash
|
types:
|
||||||
Slash: 4
|
Slash: 5
|
||||||
# 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
|
|
||||||
# Visual & Audio
|
# Visual & Audio
|
||||||
- type: DamageVisuals
|
- type: DamageVisuals
|
||||||
damageOverlayGroups:
|
damageOverlayGroups:
|
||||||
@@ -93,7 +98,7 @@
|
|||||||
- map: [ "neck" ]
|
- map: [ "neck" ]
|
||||||
- map: [ "back" ]
|
- map: [ "back" ]
|
||||||
- map: [ "enum.HumanoidVisualLayers.FacialHair" ]
|
- 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.HeadSide" ]
|
||||||
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
|
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
|
||||||
- map: [ "mask" ]
|
- map: [ "mask" ]
|
||||||
@@ -109,11 +114,6 @@
|
|||||||
sprite: "Effects/creampie.rsi"
|
sprite: "Effects/creampie.rsi"
|
||||||
state: "creampie_arachnid"
|
state: "creampie_arachnid"
|
||||||
visible: false
|
visible: false
|
||||||
- type: Tag
|
|
||||||
tags:
|
|
||||||
- CanPilot
|
|
||||||
- FootstepSound
|
|
||||||
- DoorBumpOpener
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSpeciesDummy
|
parent: BaseSpeciesDummy
|
||||||
|
|||||||
@@ -222,6 +222,59 @@
|
|||||||
min: 1
|
min: 1
|
||||||
max: 2
|
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)
|
#Magic/Cult Shields (give these to wizard for now)
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
|
|||||||
@@ -966,6 +966,9 @@
|
|||||||
MaterialWebSilk:
|
MaterialWebSilk:
|
||||||
min: 1
|
min: 1
|
||||||
max: 1
|
max: 1
|
||||||
|
- !type:PlaySoundBehavior
|
||||||
|
sound:
|
||||||
|
path: /Audio/Effects/woodhit.ogg
|
||||||
- type: IconSmooth
|
- type: IconSmooth
|
||||||
key: walls
|
key: walls
|
||||||
base: wall
|
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
|
placementMode: SnapgridCenter
|
||||||
canRotate: false
|
canRotate: false
|
||||||
canBuildInImpassable: false
|
canBuildInImpassable: false
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
conditions:
|
conditions:
|
||||||
- !type:TileNotBlocked
|
- !type:TileNotBlocked
|
||||||
|
|
||||||
@@ -31,6 +34,9 @@
|
|||||||
placementMode: SnapgridCenter
|
placementMode: SnapgridCenter
|
||||||
canRotate: false
|
canRotate: false
|
||||||
canBuildInImpassable: false
|
canBuildInImpassable: false
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
conditions:
|
conditions:
|
||||||
- !type:TileNotBlocked
|
- !type:TileNotBlocked
|
||||||
|
|
||||||
@@ -49,6 +55,9 @@
|
|||||||
placementMode: SnapgridCenter
|
placementMode: SnapgridCenter
|
||||||
canRotate: false
|
canRotate: false
|
||||||
canBuildInImpassable: false
|
canBuildInImpassable: false
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
conditions:
|
conditions:
|
||||||
- !type:TileNotBlocked
|
- !type:TileNotBlocked
|
||||||
|
|
||||||
@@ -66,6 +75,9 @@
|
|||||||
objectType: Structure
|
objectType: Structure
|
||||||
placementMode: SnapgridCenter
|
placementMode: SnapgridCenter
|
||||||
canBuildInImpassable: false
|
canBuildInImpassable: false
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
|
|
||||||
- type: construction
|
- type: construction
|
||||||
name: web crate
|
name: web crate
|
||||||
@@ -82,6 +94,9 @@
|
|||||||
placementMode: SnapgridCenter
|
placementMode: SnapgridCenter
|
||||||
canRotate: false
|
canRotate: false
|
||||||
canBuildInImpassable: false
|
canBuildInImpassable: false
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
|
|
||||||
- type: construction
|
- type: construction
|
||||||
name: web door
|
name: web door
|
||||||
@@ -97,5 +112,8 @@
|
|||||||
objectType: Structure
|
objectType: Structure
|
||||||
placementMode: SnapgridCenter
|
placementMode: SnapgridCenter
|
||||||
canBuildInImpassable: false
|
canBuildInImpassable: false
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
conditions:
|
conditions:
|
||||||
- !type:TileNotBlocked
|
- !type:TileNotBlocked
|
||||||
|
|||||||
@@ -36,6 +36,12 @@
|
|||||||
amount: 4
|
amount: 4
|
||||||
doAfter: 6
|
doAfter: 6
|
||||||
|
|
||||||
|
- to: shield
|
||||||
|
steps:
|
||||||
|
- material: WebSilk
|
||||||
|
amount: 12
|
||||||
|
doAfter: 6
|
||||||
|
|
||||||
# Deconstruction
|
# Deconstruction
|
||||||
- node: tile
|
- node: tile
|
||||||
entity: FloorTileItemWeb
|
entity: FloorTileItemWeb
|
||||||
@@ -51,3 +57,6 @@
|
|||||||
|
|
||||||
- node: cloth
|
- node: cloth
|
||||||
entity: MaterialCloth1
|
entity: MaterialCloth1
|
||||||
|
|
||||||
|
- node: shield
|
||||||
|
entity: WebShield
|
||||||
|
|||||||
@@ -6,6 +6,9 @@
|
|||||||
targetNode: tile
|
targetNode: tile
|
||||||
category: construction-category-tiles
|
category: construction-category-tiles
|
||||||
description: "Nice and smooth."
|
description: "Nice and smooth."
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
icon:
|
icon:
|
||||||
sprite: Objects/Tiles/web.rsi
|
sprite: Objects/Tiles/web.rsi
|
||||||
state: icon
|
state: icon
|
||||||
@@ -19,6 +22,9 @@
|
|||||||
targetNode: coat
|
targetNode: coat
|
||||||
category: construction-category-clothing
|
category: construction-category-clothing
|
||||||
description: "Surprisingly warm and durable."
|
description: "Surprisingly warm and durable."
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
icon:
|
icon:
|
||||||
sprite: Clothing/OuterClothing/WinterCoats/coatweb.rsi
|
sprite: Clothing/OuterClothing/WinterCoats/coatweb.rsi
|
||||||
state: icon
|
state: icon
|
||||||
@@ -32,6 +38,9 @@
|
|||||||
targetNode: jumpsuit
|
targetNode: jumpsuit
|
||||||
category: construction-category-clothing
|
category: construction-category-clothing
|
||||||
description: "At least it's something."
|
description: "At least it's something."
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
icon:
|
icon:
|
||||||
sprite: Clothing/Uniforms/Jumpsuit/web.rsi
|
sprite: Clothing/Uniforms/Jumpsuit/web.rsi
|
||||||
state: icon
|
state: icon
|
||||||
@@ -45,6 +54,9 @@
|
|||||||
targetNode: jumpskirt
|
targetNode: jumpskirt
|
||||||
category: construction-category-clothing
|
category: construction-category-clothing
|
||||||
description: "At least it's something."
|
description: "At least it's something."
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
icon:
|
icon:
|
||||||
sprite: Clothing/Uniforms/Jumpskirt/web.rsi
|
sprite: Clothing/Uniforms/Jumpskirt/web.rsi
|
||||||
state: icon
|
state: icon
|
||||||
@@ -58,7 +70,26 @@
|
|||||||
targetNode: cloth
|
targetNode: cloth
|
||||||
category: construction-category-materials
|
category: construction-category-materials
|
||||||
description: "Feels just like cloth, strangely enough."
|
description: "Feels just like cloth, strangely enough."
|
||||||
|
entityWhitelist:
|
||||||
|
tags:
|
||||||
|
- SpiderCraft
|
||||||
icon:
|
icon:
|
||||||
sprite: Objects/Materials/materials.rsi
|
sprite: Objects/Materials/materials.rsi
|
||||||
state: cloth_3
|
state: cloth_3
|
||||||
objectType: Item
|
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
|
- type: Tag
|
||||||
id: SpeedLoaderRifle
|
id: SpeedLoaderRifle
|
||||||
|
|
||||||
|
- type: Tag
|
||||||
|
id: SpiderCraft
|
||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: SpreaderIgnore
|
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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||