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
This commit is contained in:
PixelTK
2023-08-13 08:38:05 +01:00
committed by GitHub
parent f1af1ba8c8
commit f189b73fe5
58 changed files with 860 additions and 62 deletions

View 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;
}

View 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 { }
}

View File

@@ -0,0 +1,7 @@
using Content.Shared.DoAfter;
using Robust.Shared.Serialization;
namespace Content.Shared.Sericulture;
[Serializable, NetSerializable]
public sealed class SericultureDoAfterEvent : SimpleDoAfterEvent { }

View File

@@ -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!

View File

@@ -0,0 +1 @@
construction-step-condition-crafter-whitelist = You need to meet certain requirements.

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -49,6 +49,11 @@
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- !type:SpawnEntitiesBehavior
spawn:
MaterialWebSilk:
min: 0
max: 1
- type: Temperature
heatDamage:
types:

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View 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

View 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

View File

@@ -9,7 +9,7 @@
- !type:SetStackCount
amount: 4
steps:
- material: Steel
- material: WebSilk
amount: 1
- node: steeltile
entity: FloorTileItemSteel

View 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

View 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

View File

@@ -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

View File

@@ -368,3 +368,10 @@
spawn: FloorTileItemGratingMaint
maxCount: 30
itemSize: 5
- type: stack
id: FloorTileWeb
name: web tile
spawn: FloorTileItemWeb
maxCount: 30
itemSize: 5

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

View 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"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

View 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"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

View File

@@ -0,0 +1,14 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "",
"states": [
{
"name": "icon"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

View File

@@ -0,0 +1,15 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "",
"states": [
{
"name": "icon",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

View 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
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 B

View 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"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 802 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 802 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

View 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"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB