Star Wars 14: Shuttle weapon update (#23644)

* setup codebase

* make auto-fire, but its broken

* collider problem

* fix rate, add toggle port

* add laser

* power cages

* ginormous cells

* fix inhand

* add pirate cannon

* salvage gun

* functional Nuke cannon

* rewrite to standart grenade

* fix naming, add emp sprite

* grenade cartridge

* thruster fix

* nuke cannon

* audio + visual polish

* balance tweak

* tweaks

* laser balance tweak: new Electronic damage modifier set, reduce structural cannon damage

* resprite energy cages, start implementing in game

* fix cage recharger craft

* add small laser gun

* fix colliders

* add  lasers and ptk to research and crafting

* finish implementing weapon to rnd and sec

* some fixes

* splitted grenades and cannon balls

* integrate new cannon balls

* tweaks stick

* move circuits to sectechfab, fix

* fix?

* add ability to E shoot, without signals

* fix!

* fix?!?! and naming tweak

* go!

* Lank fix

* oh

* mornings don't start with coffee.

* the morning starts with bug fixes.

* fucking bugs!

* finally

* it is now possible to craft projectiles separately from cartridges

* +2 fix

* refactor

* piu

* More weight

* add AutoShootGunComponent

* move autoshoot to partial

* SetEnabled()

* some fixes

* remove CanShootWithoutUser field

* remove null-checks ToCoordinates from AttemptShoot()

* war without reason

* return to home

* ?

* forgot remove it

* review

* Fix formatting and update path

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
This commit is contained in:
Ed
2024-01-21 11:58:40 +03:00
committed by GitHub
parent 2cf77d3a57
commit a2d5d74b46
93 changed files with 1570 additions and 21 deletions

View File

@@ -0,0 +1,24 @@
using Content.Server.DeviceLinking.Systems;
using Content.Shared.DeviceLinking;
using Robust.Shared.Prototypes;
namespace Content.Server.DeviceLinking.Components;
/// <summary>
/// A system that allows you to fire GunComponent + AmmoProvider by receiving signals from DeviceLinking
/// </summary>
[RegisterComponent, Access(typeof(GunSignalControlSystem))]
public sealed partial class GunSignalControlComponent : Component
{
[DataField]
public ProtoId<SinkPortPrototype> TriggerPort = "Trigger";
[DataField]
public ProtoId<SinkPortPrototype> TogglePort = "Toggle";
[DataField]
public ProtoId<SinkPortPrototype> OnPort = "On";
[DataField]
public ProtoId<SinkPortPrototype> OffPort = "Off";
}

View File

@@ -0,0 +1,46 @@
using Content.Server.DeviceLinking.Components;
using Content.Server.DeviceLinking.Events;
using Content.Shared.Weapons.Ranged.Components;
using Content.Shared.Weapons.Ranged.Systems;
using Robust.Shared.Map;
using System.Numerics;
namespace Content.Server.DeviceLinking.Systems;
public sealed partial class GunSignalControlSystem : EntitySystem
{
[Dependency] private readonly DeviceLinkSystem _signalSystem = default!;
[Dependency] private readonly SharedGunSystem _gun = default!;
public override void Initialize()
{
SubscribeLocalEvent<GunSignalControlComponent, MapInitEvent>(OnInit);
SubscribeLocalEvent<GunSignalControlComponent, SignalReceivedEvent>(OnSignalReceived);
}
private void OnInit(Entity<GunSignalControlComponent> gunControl, ref MapInitEvent args)
{
_signalSystem.EnsureSinkPorts(gunControl, gunControl.Comp.TriggerPort, gunControl.Comp.TogglePort, gunControl.Comp.OnPort, gunControl.Comp.OffPort);
}
private void OnSignalReceived(Entity<GunSignalControlComponent> gunControl, ref SignalReceivedEvent args)
{
if (!TryComp<GunComponent>(gunControl, out var gun))
return;
if (args.Port == gunControl.Comp.TriggerPort)
_gun.AttemptShoot(gunControl, gun);
if (!TryComp<AutoShootGunComponent>(gunControl, out var autoShoot))
return;
if (args.Port == gunControl.Comp.TogglePort)
_gun.SetEnabled(gunControl, autoShoot, !autoShoot.Enabled);
if (args.Port == gunControl.Comp.OnPort)
_gun.SetEnabled(gunControl, autoShoot, true);
if (args.Port == gunControl.Comp.OffPort)
_gun.SetEnabled(gunControl, autoShoot, false);
}
}

View File

@@ -78,8 +78,8 @@ public sealed class PneumaticCannonSystem : SharedPneumaticCannonSystem
if (gas == null && component.GasUsage > 0f) if (gas == null && component.GasUsage > 0f)
return; return;
if(TryComp<StatusEffectsComponent>(args.User, out var status) if (TryComp<StatusEffectsComponent>(args.User, out var status)
&& component.Power == PneumaticCannonPower.High) && component.Power == PneumaticCannonPower.High)
{ {
_stun.TryParalyze(args.User, TimeSpan.FromSeconds(component.HighPowerStunTime), true, status); _stun.TryParalyze(args.User, TimeSpan.FromSeconds(component.HighPowerStunTime), true, status);
Popup.PopupEntity(Loc.GetString("pneumatic-cannon-component-power-stun", Popup.PopupEntity(Loc.GetString("pneumatic-cannon-component-power-stun",

View File

@@ -0,0 +1,29 @@
using Content.Shared.Weapons.Ranged.Components;
namespace Content.Server.Weapons.Ranged.Systems;
public sealed partial class GunSystem
{
public override void Update(float frameTime)
{
base.Update(frameTime);
/*
* On server because client doesn't want to predict other's guns.
*/
// Automatic firing without stopping if the AutoShootGunComponent component is exist and enabled
var query = EntityQueryEnumerator<AutoShootGunComponent, GunComponent>();
while (query.MoveNext(out var uid, out var autoShoot, out var gun))
{
if (!autoShoot.Enabled)
continue;
if (gun.NextFire > Timing.CurTime)
continue;
AttemptShoot(uid, gun);
}
}
}

View File

@@ -212,7 +212,9 @@ public sealed partial class GunSystem : SharedGunSystem
// can't use map coords above because funny FireEffects // can't use map coords above because funny FireEffects
var fromEffect = fromCoordinates; var fromEffect = fromCoordinates;
var dir = mapDirection.Normalized(); var dir = mapDirection.Normalized();
var lastUser = user;
//in the situation when user == null, means that the cannon fires on its own (via signals). And we need the gun to not fire by itself in this case
var lastUser = user ?? gunUid;
if (hitscan.Reflective != ReflectType.None) if (hitscan.Reflective != ReflectType.None)
{ {

View File

@@ -0,0 +1,14 @@
using Content.Shared.Weapons.Ranged.Systems;
using Robust.Shared.GameStates;
namespace Content.Shared.Weapons.Ranged.Components;
/// <summary>
/// Allows GunSystem to automatically fire while this component is enabled
/// </summary>
[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunSystem)), AutoGenerateComponentState]
public sealed partial class AutoShootGunComponent : Component
{
[DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
public bool Enabled;
}

View File

@@ -5,7 +5,6 @@ using Robust.Shared.GameStates;
using Robust.Shared.Map; using Robust.Shared.Map;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
namespace Content.Shared.Weapons.Ranged.Components; namespace Content.Shared.Weapons.Ranged.Components;

View File

@@ -0,0 +1,11 @@
using Content.Shared.Weapons.Ranged.Components;
namespace Content.Shared.Weapons.Ranged.Systems;
public partial class SharedGunSystem
{
public void SetEnabled(EntityUid uid, AutoShootGunComponent component, bool status)
{
component.Enabled = status;
}
}

View File

@@ -37,7 +37,7 @@ namespace Content.Shared.Weapons.Ranged.Systems;
public abstract partial class SharedGunSystem : EntitySystem public abstract partial class SharedGunSystem : EntitySystem
{ {
[Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!;
[Dependency] protected readonly IGameTiming Timing = default!; [Dependency] protected readonly IGameTiming Timing = default!;
[Dependency] protected readonly IMapManager MapManager = default!; [Dependency] protected readonly IMapManager MapManager = default!;
[Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly INetManager _netManager = default!;
@@ -214,6 +214,17 @@ public abstract partial class SharedGunSystem : EntitySystem
gun.ShotCounter = 0; gun.ShotCounter = 0;
} }
/// <summary>
/// Shoots by assuming the gun is the user at default coordinates.
/// </summary>
public void AttemptShoot(EntityUid gunUid, GunComponent gun)
{
var coordinates = new EntityCoordinates(gunUid, new Vector2(0, -1));
gun.ShootCoordinates = coordinates;
AttemptShoot(gunUid, gunUid, gun);
gun.ShotCounter = 0;
}
private void AttemptShoot(EntityUid user, EntityUid gunUid, GunComponent gun) private void AttemptShoot(EntityUid user, EntityUid gunUid, GunComponent gun)
{ {
if (gun.FireRate <= 0f || if (gun.FireRate <= 0f ||
@@ -385,12 +396,9 @@ public abstract partial class SharedGunSystem : EntitySystem
var finalLinear = physics.LinearVelocity + targetMapVelocity - currentMapVelocity; var finalLinear = physics.LinearVelocity + targetMapVelocity - currentMapVelocity;
Physics.SetLinearVelocity(uid, finalLinear, body: physics); Physics.SetLinearVelocity(uid, finalLinear, body: physics);
if (user != null) var projectile = EnsureComp<ProjectileComponent>(uid);
{ Projectiles.SetShooter(uid, projectile, user ?? gunUid);
var projectile = EnsureComp<ProjectileComponent>(uid); projectile.Weapon = gunUid;
Projectiles.SetShooter(uid, projectile, user.Value);
projectile.Weapon = gunUid;
}
TransformSystem.SetWorldRotation(uid, direction.ToWorldAngle()); TransformSystem.SetWorldRotation(uid, direction.ToWorldAngle());
} }

View File

@@ -45,6 +45,8 @@ research-technology-wave-particle-harnessing = Wave Particle Harnessing
research-technology-advanced-riot-control = Advanced Riot Control research-technology-advanced-riot-control = Advanced Riot Control
research-technology-portable-microfusion-weaponry = Portable Microfusion Weaponry research-technology-portable-microfusion-weaponry = Portable Microfusion Weaponry
research-technology-experimental-battery-ammo = Experimental Battery Ammo research-technology-experimental-battery-ammo = Experimental Battery Ammo
research-technology-basic-shuttle-armament = Shuttle basic armament
research-technology-advanced-shuttle-weapon = Advanced shuttle weapons
research-technology-basic-robotics = Basic Robotics research-technology-basic-robotics = Basic Robotics
research-technology-basic-anomalous-research = Basic Anomalous Research research-technology-basic-anomalous-research = Basic Anomalous Research

View File

@@ -60,6 +60,16 @@
Heat: 5 Heat: 5
Piercing: 10 Piercing: 10
# for fragile electronics like consoles or shuttle engines.
- type: damageModifierSet
id: Electronic
coefficients:
Blunt: 0.7
Slash: 0.5
Piercing: 0.7
Shock: 2
Heat: 3
# Like metallic, but without flat reduction so it can be damaged with fists. # Like metallic, but without flat reduction so it can be damaged with fists.
- type: damageModifierSet - type: damageModifierSet
id: FlimsyMetallic id: FlimsyMetallic

View File

@@ -661,6 +661,29 @@
- type: StaticPrice - type: StaticPrice
price: 15 price: 15
- type: entity
id: PowerCageRechargerCircuitboard
parent: BaseMachineCircuitboard
name: cage recharger machine board
description: A machine printed circuit board for a energy cage recharger.
components:
- type: Sprite
sprite: Objects/Misc/module.rsi
state: charger_APC
- type: MachineBoard
prototype: PowerCageRecharger
requirements:
Capacitor: 4
materialRequirements:
Steel: 5
Cable: 10
- type: PhysicalComposition
materialComposition:
Steel: 30
Plastic: 30
- type: StaticPrice
price: 30
- type: entity - type: entity
id: BorgChargerCircuitboard id: BorgChargerCircuitboard
parent: BaseMachineCircuitboard parent: BaseMachineCircuitboard
@@ -1229,3 +1252,90 @@
Steel: 5 Steel: 5
CableHV: 5 CableHV: 5
Uranium: 2 Uranium: 2
- type: entity
id: ShuttleGunSvalinnMachineGunCircuitboard
parent: BaseMachineCircuitboard
name: LSE-400c "Svalinn machine gun" machine board
description: A machine printed circuit board for an LSE-400c "Svalinn machine gun"
components:
- type: Sprite
state: security
- type: MachineBoard
prototype: ShuttleGunSvalinnMachineGun
requirements:
MatterBin: 2
Manipulator: 4
materialRequirements:
Steel: 5
CableHV: 5
- type: entity
id: ShuttleGunPerforatorCircuitboard
parent: BaseMachineCircuitboard
name: LSE-1200c "Perforator" machine board
description: A machine printed circuit board for an LSE-1200c "Perforator"
components:
- type: Sprite
state: security
- type: MachineBoard
prototype: ShuttleGunPerforator
requirements:
MatterBin: 4
Manipulator: 6
materialRequirements:
Steel: 10
CableHV: 5
- type: entity
id: ShuttleGunFriendshipCircuitboard
parent: BaseMachineCircuitboard
name: EXP-320g "Friendship" machine board
description: A machine printed circuit board for an EXP-320g "Friendship"
components:
- type: Sprite
state: security
- type: MachineBoard
prototype: ShuttleGunFriendship
requirements:
MatterBin: 3
Manipulator: 2
materialRequirements:
Steel: 7
CableHV: 5
- type: entity
id: ShuttleGunDusterCircuitboard
parent: BaseMachineCircuitboard
name: EXP-2100g "Duster" machine board
description: A machine printed circuit board for an EXP-2100g "Duster"
components:
- type: Sprite
state: security
- type: MachineBoard
prototype: ShuttleGunDuster
requirements:
MatterBin: 6
Manipulator: 4
materialRequirements:
Steel: 10
CableHV: 5
Uranium: 2
- type: entity
id: ShuttleGunKineticCircuitboard
parent: BaseMachineCircuitboard
name: PTK-800 "Matter Dematerializer" machine board
description: A machine printed circuit board for an PTK-800 "Matter Dematerializer"
components:
- type: Sprite
state: security
- type: MachineBoard
prototype: ShuttleGunKinetic
requirements:
MatterBin: 2
Manipulator: 3
materialRequirements:
Steel: 5
CableHV: 2

View File

@@ -267,3 +267,139 @@
- type: BatterySelfRecharger - type: BatterySelfRecharger
autoRecharge: true autoRecharge: true
autoRechargeRate: 40 autoRechargeRate: 40
# Power cage (big heavy power cell for big devices)
- type: entity
id: BasePowerCage
abstract: true
parent: BasePowerCell
components:
- type: Item
size: Ginormous
- type: MultiHandedItem
- type: SolutionContainerManager
solutions:
battery:
maxVol: 15
- type: Extractable
juiceSolution:
reagents:
- ReagentId: Zinc
Quantity: 15
- type: Tag
tags:
- PowerCage
- type: HitscanBatteryAmmoProvider
proto: RedShuttleLaser
fireCost: 150
- type: ClothingSpeedModifier
walkModifier: 0.8
sprintModifier: 0.8
- type: HeldSpeedModifier
- type: entity
id: PowerCageSmall
parent: BasePowerCage
name: small-capacity power cage
description: A rechargeable power cage for big devices. This is the cheapest kind you can find.
components:
- type: Sprite
sprite: Objects/Power/power_cages.rsi
layers:
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: small
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 1400
startingCharge: 1400
- type: entity
id: PowerCageMedium
parent: BasePowerCage
name: medium-capacity power cage
description: A rechargeable power cage for big devices. The gold standard of capacity and cost.
components:
- type: Sprite
sprite: Objects/Power/power_cages.rsi
layers:
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: medium
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 2700
startingCharge: 2700
- type: entity
id: PowerCageHigh
parent: BasePowerCage
name: high-capacity power cage
description: A rechargeable power cage for big devices. Increased capacity for increased power levels.
components:
- type: Sprite
sprite: Objects/Power/power_cages.rsi
layers:
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: high
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 6200
startingCharge: 6200
- type: entity
id: PowerCageSmallEmpty
parent: PowerCageSmall
suffix: Empty
components:
- type: Sprite
sprite: Objects/Power/power_cages.rsi
layers:
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: small
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
visible: false
- type: Battery
maxCharge: 1400
startingCharge: 0
- type: entity
id: PowerCageMediumEmpty
parent: PowerCageMedium
suffix: Empty
components:
- type: Sprite
sprite: Objects/Power/power_cages.rsi
layers:
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: small
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
visible: false
- type: Battery
startingCharge: 0
- type: entity
id: PowerCageHighEmpty
parent: PowerCageHigh
suffix: Empty
components:
- type: Sprite
sprite: Objects/Power/power_cages.rsi
layers:
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: small
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
visible: false
- type: Battery
startingCharge: 0

View File

@@ -0,0 +1,87 @@
- type: entity
id: BaseMagazineGrenade
name: grenade cartridge
parent: BaseItem
abstract: true
components:
- type: Tag
tags:
- MagazineGrenade
- type: BallisticAmmoProvider
mayTransfer: true
whitelist:
tags:
- Grenade
capacity: 5
soundRack:
path: /Audio/Weapons/Guns/Bolt/lmg_bolt_closed.ogg
params:
variation: 0.05
soundInsert:
path: /Audio/Weapons/Guns/MagIn/rifle_load.ogg
params:
variation: 0.05
- type: Item
size: Large
- type: ContainerContainer
containers:
ballistic-ammo: !type:Container
- type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi
layers:
- state: base
map: ["enum.GunVisualLayers.Base"]
- state: mag-4
map: ["enum.GunVisualLayers.Mag"]
- type: MagazineVisuals
magState: mag
steps: 5
zeroVisible: false
- type: Appearance
- type: entity
id: MagazineGrenadeEmpty
name: grenade cartridge
parent: BaseMagazineGrenade
components:
- type: BallisticAmmoProvider
- type: entity
id: MagazineGrenadeFrag
name: frag grenade cartridge
parent: BaseMagazineGrenade
components:
- type: BallisticAmmoProvider
proto: GrenadeFrag
- type: entity
id: MagazineGrenadeEMP
name: EMP grenade cartridge
parent: BaseMagazineGrenade
components:
- type: BallisticAmmoProvider
proto: GrenadeEMP
- type: entity
id: MagazineGrenadeFlash
name: flash grenade cartridge
parent: BaseMagazineGrenade
components:
- type: BallisticAmmoProvider
proto: GrenadeFlash
- type: entity
id: MagazineGrenadeBlast
name: blast grenade cartridge
parent: BaseMagazineGrenade
components:
- type: BallisticAmmoProvider
proto: GrenadeBlast
- type: entity
id: MagazineGrenadeBaton
name: baton grenade cartridge
parent: BaseMagazineGrenade
components:
- type: BallisticAmmoProvider
proto: GrenadeBaton

View File

@@ -122,12 +122,44 @@
- type: SpentAmmoVisuals - type: SpentAmmoVisuals
state: frag state: frag
suffix: false suffix: false
- type: entity
id: GrenadeEMP
name: EMP grenade
parent: BaseGrenade
components:
- type: CartridgeAmmo
proto: BulletGrenadeEMP
- type: Sprite
sprite: Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi
layers:
- state: emp
map: ["enum.AmmoVisualLayers.Base"]
- type: Appearance
- type: SpentAmmoVisuals
state: frag
suffix: false
# Cannon Balls
- type: entity
id: BaseCannonBall
name: base cannon ball
parent: BaseItem
abstract: true
components:
- type: Tag
tags:
- CannonBall
- type: Item
size: Small
- type: Sprite
- type: entity - type: entity
id: CannonBall id: CannonBall
name: cannonball name: cannonball
suffix: Pirate suffix: Pirate
parent: BaseGrenade parent: BaseCannonBall
components: components:
- type: CartridgeAmmo - type: CartridgeAmmo
proto: BulletCannonBall proto: BulletCannonBall
@@ -137,10 +169,10 @@
state: ball state: ball
- type: entity - type: entity
id: Grapeshot id: CannonBallGrapeshot
name: grapeshot name: grapeshot
suffix: Pirate suffix: Pirate
parent: BaseGrenade parent: BaseCannonBall
components: components:
- type: CartridgeAmmo - type: CartridgeAmmo
proto: PelletGrapeshot proto: PelletGrapeshot
@@ -152,10 +184,10 @@
state: grapeshot state: grapeshot
- type: entity - type: entity
id: Glassshot id: CannonBallGlassshot
name: glassshot name: glassshot
suffix: Pirate suffix: Pirate
parent: BaseGrenade parent: BaseCannonBall
components: components:
- type: CartridgeAmmo - type: CartridgeAmmo
proto: PelletGlass proto: PelletGlass

View File

@@ -144,7 +144,7 @@
- type: BallisticAmmoProvider - type: BallisticAmmoProvider
whitelist: whitelist:
tags: tags:
- Grenade - CannonBall
capacity: 1 capacity: 1
proto: CannonBall proto: CannonBall
soundInsert: soundInsert:

View File

@@ -121,3 +121,20 @@
impactFlash: impactFlash:
sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
state: impact_blue state: impact_blue
- type: hitscan
id: RedShuttleLaser
maxLength: 60
damage:
types:
Heat: 45
Structural: 10
muzzleFlash:
sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
state: muzzle_beam_heavy2
travelFlash:
sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
state: beam_heavy2
impactFlash:
sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
state: impact_beam_heavy2

View File

@@ -420,6 +420,32 @@
- type: TimedDespawn - type: TimedDespawn
lifetime: 0.4 lifetime: 0.4
- type: entity
id: BulletKineticShuttle
parent: BaseBullet
noSpawn: true
components:
- type: Sprite
noRot: false
sprite: Objects/Weapons/Guns/Projectiles/magic.rsi
layers:
- state: chronobolt
shader: unshaded
- type: Projectile
impactEffect: BulletImpactEffectKinetic
damage:
types:
Blunt: 30
Structural: 35
- type: Ammo
muzzleFlash: HitscanEffect
- type: TimedDespawn
lifetime: 1.5
- type: PointLight
radius: 2.5
color: white
energy: 0.5
- type: entity - type: entity
id: BulletCharge id: BulletCharge
name: charge bolt name: charge bolt
@@ -692,6 +718,27 @@
intensitySlope: 1 intensitySlope: 1
maxIntensity: 10 maxIntensity: 10
- type: entity
id: BulletGrenadeEMP
name: EMP rocket
parent: BaseBulletTrigger
noSpawn: true
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi
layers:
- state: frag
- type: EmpOnTrigger
range: 5
energyConsumption: 50000
disableDuration: 10
- type: Ammo
muzzleFlash: null
- type: PointLight
radius: 3.5
color: blue
energy: 0.5
- type: entity - type: entity
id: BulletCap id: BulletCap
name: cap bullet name: cap bullet

View File

@@ -26,7 +26,7 @@
drawdepth: Objects drawdepth: Objects
- type: Damageable - type: Damageable
damageContainer: Inorganic damageContainer: Inorganic
damageModifierSet: Metallic damageModifierSet: Electronic
- type: Destructible - type: Destructible
thresholds: thresholds:
- trigger: - trigger:

View File

@@ -169,6 +169,7 @@
- MagazineBoxMagnum - MagazineBoxMagnum
- MagazineBoxRifle - MagazineBoxRifle
- MagazineBoxLightRifle - MagazineBoxLightRifle
- GrenadeBlast
emagDynamicRecipes: emagDynamicRecipes:
- CartridgePistolRubber - CartridgePistolRubber
- CartridgeMagnumRubber - CartridgeMagnumRubber
@@ -197,6 +198,12 @@
- MagazineBoxMagnumUranium - MagazineBoxMagnumUranium
- MagazineBoxLightRifleUranium - MagazineBoxLightRifleUranium
- MagazineBoxRifleUranium - MagazineBoxRifleUranium
- PowerCageSmall
- PowerCageMedium
- PowerCageHigh
- MagazineGrenadeEmpty
- GrenadeEMP
- GrenadeFlash
- type: entity - type: entity
id: AutolatheHyperConvection id: AutolatheHyperConvection
@@ -422,10 +429,12 @@
- WallmountGeneratorElectronics - WallmountGeneratorElectronics
- WallmountGeneratorAPUElectronics - WallmountGeneratorAPUElectronics
- WallmountSubstationElectronics - WallmountSubstationElectronics
- PowerCageRechargerCircuitboard
- EmitterCircuitboard - EmitterCircuitboard
- ThrusterMachineCircuitboard - ThrusterMachineCircuitboard
- GyroscopeMachineCircuitboard - GyroscopeMachineCircuitboard
- MiniGravityGeneratorCircuitboard - MiniGravityGeneratorCircuitboard
- ShuttleGunKineticCircuitboard
- GasRecyclerMachineCircuitboard - GasRecyclerMachineCircuitboard
- SeedExtractorMachineCircuitboard - SeedExtractorMachineCircuitboard
- AnalysisComputerCircuitboard - AnalysisComputerCircuitboard
@@ -691,6 +700,9 @@
- MagazineBoxMagnumRubber - MagazineBoxMagnumRubber
- MagazineBoxPistolRubber - MagazineBoxPistolRubber
- MagazineBoxRifleRubber - MagazineBoxRifleRubber
- MagazineGrenadeEmpty
- GrenadeEMP
- GrenadeFlash
- ShellShotgunBeanbag - ShellShotgunBeanbag
- ShellShotgunIncendiary - ShellShotgunIncendiary
- ShellShotgunUranium - ShellShotgunUranium
@@ -706,6 +718,13 @@
- WeaponLaserCannon - WeaponLaserCannon
- WeaponLaserCarbine - WeaponLaserCarbine
- WeaponXrayCannon - WeaponXrayCannon
- PowerCageSmall
- PowerCageMedium
- PowerCageHigh
- ShuttleGunSvalinnMachineGunCircuitboard
- ShuttleGunPerforatorCircuitboard
- ShuttleGunFriendshipCircuitboard
- ShuttleGunDusterCircuitboard
- type: MaterialStorage - type: MaterialStorage
whitelist: whitelist:
tags: tags:

View File

@@ -107,6 +107,46 @@
blacklist: blacklist:
tags: tags:
- PotatoBattery - PotatoBattery
- type: entity
parent: [ BaseItemRecharger, ConstructibleMachine ]
id: PowerCageRecharger
name: cage recharger
components:
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.25,-0.35,0.25,0.35"
density: 190
mask:
- MachineMask
layer:
- MachineLayer
- type: LitOnPowered
- type: PointLight
radius: 1.5
color: "#03fc4e"
energy: 0.7
- type: Charger
chargeRate: 50
- type: Sprite
sprite: Structures/Power/cage_recharger.rsi
- type: PowerCellSlot
cellSlotId: charger_slot
- type: ItemSlots
slots:
charger_slot:
ejectOnInteract: true
name: Power cage
whitelist:
tags:
- PowerCage
- type: Machine
board: PowerCageRechargerCircuitboard
- type: StaticPrice
price: 500
- type: entity - type: entity
parent: BaseItemRecharger parent: BaseItemRecharger

View File

@@ -0,0 +1,375 @@
- type: entity
id: ShuttleGunBase
name: shittle gun
abstract: true
placement:
mode: SnapgridCenter
components:
- type: Appearance
- type: Clickable
- type: InteractionOutline
- type: Anchorable
- type: Pullable
- type: Rotatable
- type: Physics
bodyType: Static
- type: ContainerContainer
- type: Gun
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.45,-0.45,0.45,0.45"
density: 450
mask:
- MachineMask
layer:
- MachineLayer
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Electronic
- type: Transform
anchored: true
- type: DeviceNetwork
deviceNetId: Wireless
receiveFrequencyId: BasicDevice
- type: WirelessNetworkConnection
range: 200
- type: DeviceLinkSink
ports:
- Trigger
- Toggle
- On
- Off
- type: AutoShootGun
- type: GunSignalControl
- type: StaticPrice
price: 1500
# ---- Laser weapon branch ----
# naming: LSE (Laser) + conventional power + suffix (c for PowerCage, e for wired energy) + Name
# example: LSE-100e "Clown destroyer" (powered by the wiring, very weak)
- type: entity
id: ShuttleGunSvalinnMachineGun
parent: [ ShuttleGunBase, ConstructibleMachine]
name: LSE-400c "Svalinn machine gun"
description: Basic stationary laser unit. Effective against live targets and electronics. Uses regular power cells to fire, and has an extremely high rate of fire
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Shuttles/laser.rsi
layers:
- state: lse-400c
- state: mag-unshaded-9
map: ["enum.GunVisualLayers.MagUnshaded"]
shader: unshaded
- type: ContainerContainer
containers:
machine_board: !type:Container
machine_parts: !type:Container
gun_magazine: !type:ContainerSlot
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 150
behaviors:
- !type:ChangeConstructionNodeBehavior
node: machineFrame
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Gun
fireRate: 5
useKey: false
selectedMode: SemiAuto
availableModes:
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
params:
variation: 0.05
- type: MagazineVisuals
magState: mag
steps: 10
zeroVisible: true
- type: Machine
board: ShuttleGunSvalinnMachineGunCircuitboard
- type: ItemSlots
slots:
gun_magazine:
name: Magazine
insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
ejectSound: /Audio/Weapons/Guns/MagOut/batrifle_magout.ogg
whitelist:
tags:
- PowerCell
- PowerCellSmall
- type: MagazineAmmoProvider
- type: entity
id: ShuttleGunPerforator
parent: [ ShuttleGunBase, ConstructibleMachine]
name: LSE-1200c "Perforator"
description: Advanced stationary laser unit. Annihilates electronics and is extremely dangerous to health! Uses the power cage to fire.
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Shuttles/laser.rsi
layers:
- state: lse-1200c
- state: mag-unshaded-9
map: ["enum.GunVisualLayers.MagUnshaded"]
shader: unshaded
- type: ContainerContainer
containers:
machine_board: !type:Container
machine_parts: !type:Container
gun_magazine: !type:ContainerSlot
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:ChangeConstructionNodeBehavior
node: machineFrame
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Gun
fireRate: 1
useKey: false
selectedMode: SemiAuto
availableModes:
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/laser_cannon2.ogg
params:
variation: 0.05
- type: MagazineVisuals
magState: mag
steps: 10
zeroVisible: true
- type: Machine
board: ShuttleGunPerforatorCircuitboard
- type: ItemSlots
slots:
gun_magazine:
name: Magazine
insertSound: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
ejectSound: /Audio/Weapons/Guns/MagOut/batrifle_magout.ogg
whitelist:
tags:
- PowerCage
- type: MagazineAmmoProvider
# ---- Launchers ----
# naming: EXP (Explosion) + conventional power + suffix (g for Grenade, c for RPG Cartridge) + Name
# example: EXP-100c "Poppy"
- type: entity
id: ShuttleGunFriendship
parent: [ShuttleGunBase, ConstructibleMachine]
name: EXP-320g "Friendship"
description: A small stationary grenade launcher that holds 2 grenades.
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Shuttles/launcher.rsi
layers:
- state: exp-320g
- state: mag-7
map: ["enum.GunVisualLayers.Mag"]
- type: ContainerContainer
containers:
machine_board: !type:Container
machine_parts: !type:Container
ballistic-ammo: !type:Container
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:ChangeConstructionNodeBehavior
node: machineFrame
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Gun
projectileSpeed: 80
fireRate: 4
angleDecay: 45
minAngle: 0
maxAngle: 15
selectedMode: FullAuto
availableModes:
- FullAuto
soundGunshot:
path: /Audio/Items/Mining/fultext_launch.ogg
params:
pitch: 0.8
soundEmpty:
path: /Audio/Weapons/Guns/Empty/empty.ogg
- type: BallisticAmmoProvider
whitelist:
tags:
- Grenade
capacity: 2
soundInsert:
path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg
- type: Machine
board: ShuttleGunFriendshipCircuitboard
- type: MagazineVisuals
magState: mag
steps: 8
zeroVisible: false
- type: entity
id: ShuttleGunDuster
parent: [ShuttleGunBase, ConstructibleMachine]
name: EXP-2100g "Duster"
description: A powerful stationary grenade launcher. A cartridge is required for use.
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Shuttles/launcher.rsi
layers:
- state: exp-2100g
- state: mag-7
map: ["enum.GunVisualLayers.Mag"]
- type: ContainerContainer
containers:
machine_board: !type:Container
machine_parts: !type:Container
gun_magazine: !type:ContainerSlot
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 350
behaviors:
- !type:ChangeConstructionNodeBehavior
node: machineFrame
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Gun
projectileSpeed: 40
fireRate: 0.3
selectedMode: FullAuto
availableModes:
- FullAuto
soundGunshot:
path: /Audio/Items/Mining/fultext_launch.ogg
params:
variation: 0.05
pitch: 0.8
soundEmpty:
path: /Audio/Weapons/Guns/Empty/empty.ogg
- type: Machine
board: ShuttleGunDusterCircuitboard
- type: MagazineAmmoProvider
- type: MagazineVisuals
magState: mag
steps: 8
zeroVisible: false
- type: ItemSlots
slots:
gun_magazine:
name: Magazine
priority: 2
whitelist:
tags:
- MagazineGrenade
insertSound:
path: /Audio/Weapons/Guns/MagIn/kinetic_reload.ogg
params:
pitch: 2
ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg
# ---- Other weapon ----
- type: entity
id: ShuttleGunPirateCannon
parent: ShuttleGunBase
name: pirate ship cannon
description: Kaboom!
components:
- type: ContainerContainer
containers:
ballistic-ammo: !type:Container
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 300
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Sprite
sprite: Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi
layers:
- state: base
- type: Gun
fireRate: 1
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/mateba.ogg
- type: BallisticAmmoProvider
whitelist:
tags:
- CannonBall
capacity: 1
proto: CannonBall
soundInsert:
path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg
- type: entity
id: ShuttleGunKinetic
parent: [ ShuttleGunBase, ConstructibleMachine]
name: PTK-800 "Matter Dematerializer"
description: Salvage stationary mining turret. Gradually accumulates charges on its own, extremely effective for asteroid excavation.
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Shuttles/kinetic.rsi
layers:
- state: ptk-800
- state: mag-7
- type: ContainerContainer
containers:
machine_board: !type:Container
machine_parts: !type:Container
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 100
behaviors:
- !type:ChangeConstructionNodeBehavior
node: machineFrame
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Gun
projectileSpeed: 20
fireRate: 2
selectedMode: SemiAuto
angleDecay: 45
minAngle: 5
maxAngle: 15
availableModes:
- SemiAuto
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/kinetic_accel.ogg
params:
variation: 0.12
- type: RechargeBasicEntityAmmo
rechargeCooldown: 2
rechargeSound:
path: /Audio/Weapons/Guns/Bolt/lmg_bolt_closed.ogg
params:
pitch: 1.2
variation: 0.08
- type: BasicEntityAmmoProvider
proto: BulletKineticShuttle
capacity: 5
count: 5
- type: Machine
board: ShuttleGunKineticCircuitboard

View File

@@ -5,6 +5,17 @@
description: A thruster that allows a shuttle to move. description: A thruster that allows a shuttle to move.
abstract: true abstract: true
components: components:
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.45,-0.45,0.45,0.45"
density: 60
mask:
- MachineMask
layer:
- MachineLayer
- type: AmbientSound - type: AmbientSound
enabled: false enabled: false
range: 4 range: 4
@@ -30,12 +41,12 @@
- type: ExtensionCableReceiver - type: ExtensionCableReceiver
- type: Damageable - type: Damageable
damageContainer: Inorganic damageContainer: Inorganic
damageModifierSet: Metallic damageModifierSet: Electronic
- type: Destructible - type: Destructible
thresholds: thresholds:
- trigger: - trigger:
!type:DamageTrigger !type:DamageTrigger
damage: 300 # Considering we need a lot of thrusters didn't want to make an individual one too tanky damage: 100 # Considering we need a lot of thrusters didn't want to make an individual one too tanky
behaviors: behaviors:
- !type:DoActsBehavior - !type:DoActsBehavior
acts: ["Destruction"] acts: ["Destruction"]
@@ -185,6 +196,9 @@
- type: UpgradePowerDraw - type: UpgradePowerDraw
powerDrawMultiplier: 0.75 powerDrawMultiplier: 0.75
scaling: Exponential scaling: Exponential
- type: Damageable
damageContainer: Inorganic
damageModifierSet: Electronic
- type: StaticPrice - type: StaticPrice
price: 2000 price: 2000

View File

@@ -895,3 +895,54 @@
Steel: 100 Steel: 100
Glass: 900 Glass: 900
Gold: 100 Gold: 100
- type: latheRecipe
id: PowerCageRechargerCircuitboard
result: PowerCageRechargerCircuitboard
completetime: 6
materials:
Steel: 100
Glass: 900
- type: latheRecipe
id: ShuttleGunSvalinnMachineGunCircuitboard
result: ShuttleGunSvalinnMachineGunCircuitboard
completetime: 6
materials:
Steel: 100
Glass: 900
- type: latheRecipe
id: ShuttleGunPerforatorCircuitboard
result: ShuttleGunPerforatorCircuitboard
completetime: 10
materials:
Steel: 100
Glass: 900
Gold: 100
- type: latheRecipe
id: ShuttleGunKineticCircuitboard
result: ShuttleGunKineticCircuitboard
completetime: 6
materials:
Steel: 100
Glass: 900
- type: latheRecipe
id: ShuttleGunFriendshipCircuitboard
result: ShuttleGunFriendshipCircuitboard
completetime: 8
materials:
Steel: 100
Glass: 900
Gold: 50
- type: latheRecipe
id: ShuttleGunDusterCircuitboard
result: ShuttleGunDusterCircuitboard
completetime: 12
materials:
Steel: 100
Glass: 900
Gold: 100

View File

@@ -39,3 +39,31 @@
Glass: 400 Glass: 400
Uranium: 200 Uranium: 200
Gold: 100 Gold: 100
- type: latheRecipe
id: PowerCageSmall
result: PowerCageSmall
completetime: 3
materials:
Steel: 200
Plastic: 100
- type: latheRecipe
id: PowerCageMedium
result: PowerCageMedium
completetime: 6
materials:
Steel: 500
Glass: 500
Plastic: 250
Gold: 40
- type: latheRecipe
id: PowerCageHigh
result: PowerCageHigh
completetime: 10
materials:
Steel: 600
Glass: 800
Plastic: 400
Gold: 100

View File

@@ -605,3 +605,39 @@
Steel: 1000 Steel: 1000
Glass: 500 Glass: 500
Plastic: 500 Plastic: 500
- type: latheRecipe
id: MagazineGrenadeEmpty
result: MagazineGrenadeEmpty
completetime: 3
materials:
Steel: 150
Plastic: 50
- type: latheRecipe
id: GrenadeEMP
result: GrenadeEMP
completetime: 3
materials:
Steel: 150
Plastic: 100
Glass: 20
- type: latheRecipe
id: GrenadeBlast
result: GrenadeBlast
completetime: 3
materials:
Steel: 150
Plastic: 100
Gold: 50
- type: latheRecipe
id: GrenadeFlash
result: GrenadeFlash
completetime: 3
materials:
Steel: 150
Plastic: 100
Glass: 20

View File

@@ -11,6 +11,7 @@
cost: 5000 cost: 5000
recipeUnlocks: recipeUnlocks:
- WeaponProtoKineticAccelerator - WeaponProtoKineticAccelerator
- ShuttleGunKineticCircuitboard
# These are roundstart but not replenishable for salvage # These are roundstart but not replenishable for salvage
- type: technology - type: technology
@@ -145,6 +146,27 @@
- HoloprojectorSecurity - HoloprojectorSecurity
- WeaponDisablerSMG - WeaponDisablerSMG
- type: technology
id: BasicShuttleArmament
name: research-technology-basic-shuttle-armament
icon:
sprite: Structures/Power/cage_recharger.rsi
state: full
discipline: Arsenal
tier: 2
cost: 10500
recipeUnlocks:
- PowerCageRechargerCircuitboard
- PowerCageSmall
- PowerCageMedium
- MagazineGrenadeEmpty
- GrenadeFlash
- ShuttleGunSvalinnMachineGunCircuitboard
- ShuttleGunPerforatorCircuitboard
- ShuttleGunFriendshipCircuitboard
technologyPrerequisites:
- SalvageWeapons
# Tier 3 # Tier 3
- type: technology - type: technology
@@ -170,3 +192,19 @@
cost: 15000 cost: 15000
recipeUnlocks: recipeUnlocks:
- WeaponLaserSvalinn - WeaponLaserSvalinn
- type: technology
id: AdvancedShuttleWeapon
name: research-technology-advanced-shuttle-weapon
icon:
sprite: Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi
state: icon
discipline: Arsenal
tier: 3
cost: 15000
recipeUnlocks:
- GrenadeEMP
- PowerCageHigh
- ShuttleGunDusterCircuitboard
technologyPrerequisites:
- BasicShuttleArmament

View File

@@ -250,6 +250,9 @@
- type: Tag - type: Tag
id: CanPilot id: CanPilot
- type: Tag
id: CannonBall
- type: Tag - type: Tag
id: CannonRestrict id: CannonRestrict
@@ -784,6 +787,9 @@
- type: Tag - type: Tag
id: MagazinePistolSubMachineGun id: MagazinePistolSubMachineGun
- type: Tag
id: MagazineGrenade
- type: Tag - type: Tag
id: MailingUnitElectronics id: MailingUnitElectronics
@@ -940,6 +946,9 @@
- type: Tag - type: Tag
id: PowerCellSmall id: PowerCellSmall
- type: Tag
id: PowerCage
- type: Tag - type: Tag
id: Powerdrill id: Powerdrill

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

View File

@@ -0,0 +1,34 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Created by TheShuEd (github) for Space Station 14",
"states": [
{
"name": "small"
},
{
"name": "medium"
},
{
"name": "high"
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
},
{
"name": "o1"
},
{
"name": "o2"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

View File

@@ -5,7 +5,7 @@
"y": 32 "y": 32
}, },
"license": "CC-BY-SA-3.0", "license": "CC-BY-SA-3.0",
"copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi, ball, glassshot and grapeshot Made by Alekshhh (Github) for ss14", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi, ball, glassshot and grapeshot Made by Alekshhh (Github) for ss1, emp made by TheShuEd (github)",
"states": [ "states": [
{ {
"name": "baton" "name": "baton"
@@ -25,6 +25,9 @@
{ {
"name": "ball" "name": "ball"
}, },
{
"name": "emp"
},
{ {
"name": "grapeshot" "name": "grapeshot"
}, },

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 B

View File

@@ -0,0 +1,37 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "created by TheShuEd (github) for Space Station 14",
"states": [
{
"name": "base"
},
{
"name": "icon"
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
},
{
"name": "mag-1"
},
{
"name": "mag-2"
},
{
"name": "mag-3"
},
{
"name": "mag-4"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -73,6 +73,36 @@
] ]
] ]
}, },
{
"name": "muzzle_beam_heavy2",
"delays": [
[
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002
]
]
},
{
"name": "beam_heavy2",
"delays": [
[
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002
]
]
},
{ {
"name": "beam_heavy", "name": "beam_heavy",
"delays": [ "delays": [
@@ -103,6 +133,21 @@
] ]
] ]
}, },
{
"name": "impact_beam_heavy2",
"delays": [
[
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002,
0.060000002
]
]
},
{ {
"name": "muzzle_omni", "name": "muzzle_omni",
"delays": [ "delays": [

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

View File

@@ -0,0 +1,35 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Created by TheShuEd (github) for Space Station 14",
"size": {
"x": 64,
"y": 64
},
"states": [
{
"name": "ptk-800"
},
{
"name": "mag-1"
},
{
"name": "mag-2"
},
{
"name": "mag-3"
},
{
"name": "mag-4"
},
{
"name": "mag-5"
},
{
"name": "mag-6"
},
{
"name": "mag-7"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

View File

@@ -0,0 +1,107 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Created by TheShuEd (github) for Space Station 14",
"size": {
"x": 64,
"y": 64
},
"states": [
{
"name": "lse-400c"
},
{
"name": "lse-1200c"
},
{
"name": "mag-unshaded-0",
"delays": [
[
0.6,
0.6
]
]
},
{
"name": "mag-unshaded-1",
"delays": [
[
0.3,
0.3
]
]
},
{
"name": "mag-unshaded-2",
"delays": [
[
0.3,
0.3
]
]
},
{
"name": "mag-unshaded-3",
"delays": [
[
0.3,
0.3
]
]
},
{
"name": "mag-unshaded-4",
"delays": [
[
0.3,
0.3
]
]
},
{
"name": "mag-unshaded-5",
"delays": [
[
0.3,
0.3
]
]
},
{
"name": "mag-unshaded-6",
"delays": [
[
0.3,
0.3
]
]
},
{
"name": "mag-unshaded-7",
"delays": [
[
0.3,
0.3
]
]
},
{
"name": "mag-unshaded-8",
"delays": [
[
0.3,
0.3
]
]
},
{
"name": "mag-unshaded-9",
"delays": [
[
0.3,
0.3
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

View File

@@ -0,0 +1,38 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Created by TheShuEd (github) for Space Station 14",
"size": {
"x": 64,
"y": 64
},
"states": [
{
"name": "exp-320g"
},
{
"name": "exp-2100g"
},
{
"name": "mag-1"
},
{
"name": "mag-2"
},
{
"name": "mag-3"
},
{
"name": "mag-4"
},
{
"name": "mag-5"
},
{
"name": "mag-6"
},
{
"name": "mag-7"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,14 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Created by TheShuEd (github) for Space Station 14",
"size": {
"x": 64,
"y": 64
},
"states": [
{
"name": "base"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 919 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 803 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,52 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Created by TheShuEd (github) for Space Station 14",
"states": [
{
"name": "light-off"
},
{
"name": "empty"
},
{
"name": "full"
},
{
"name": "open"
},
{
"name": "light-charging",
"delays": [
[
0.3,
0.3,
0.3,
0.3
]
]
},
{
"name": "light-charged",
"delays": [
[
0.6,
0.6
]
]
},
{
"name": "light-empty",
"delays": [
[
0.8,
0.8
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 775 B