]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Star Wars 14: Shuttle weapon update (#23644)
authorEd <96445749+TheShuEd@users.noreply.github.com>
Sun, 21 Jan 2024 08:58:40 +0000 (11:58 +0300)
committerGitHub <noreply@github.com>
Sun, 21 Jan 2024 08:58:40 +0000 (19:58 +1100)
* 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>
93 files changed:
Content.Server/DeviceLinking/Components/GunSignalControlComponent.cs [new file with mode: 0644]
Content.Server/DeviceLinking/Systems/GunSignalControlSystem.cs [new file with mode: 0644]
Content.Server/PneumaticCannon/PneumaticCannonSystem.cs
Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs [new file with mode: 0644]
Content.Server/Weapons/Ranged/Systems/GunSystem.cs
Content.Shared/Weapons/Ranged/Components/AutoShootGunComponent.cs [new file with mode: 0644]
Content.Shared/Weapons/Ranged/Components/GunComponent.cs
Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.AutoFire.cs [new file with mode: 0644]
Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs
Resources/Locale/en-US/research/technologies.ftl
Resources/Prototypes/Damage/modifier_sets.yml
Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
Resources/Prototypes/Entities/Objects/Power/powercells.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/grenade.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml
Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml
Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml
Resources/Prototypes/Entities/Structures/Machines/lathe.yml
Resources/Prototypes/Entities/Structures/Power/chargers.yml
Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml
Resources/Prototypes/Recipes/Lathes/electronics.yml
Resources/Prototypes/Recipes/Lathes/powercells.yml
Resources/Prototypes/Recipes/Lathes/security.yml
Resources/Prototypes/Research/arsenal.yml
Resources/Prototypes/tags.yml
Resources/Textures/Objects/Power/power_cages.rsi/high.png [new file with mode: 0644]
Resources/Textures/Objects/Power/power_cages.rsi/inhand-left.png [new file with mode: 0644]
Resources/Textures/Objects/Power/power_cages.rsi/inhand-right.png [new file with mode: 0644]
Resources/Textures/Objects/Power/power_cages.rsi/medium.png [new file with mode: 0644]
Resources/Textures/Objects/Power/power_cages.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Power/power_cages.rsi/o1.png [new file with mode: 0644]
Resources/Textures/Objects/Power/power_cages.rsi/o2.png [new file with mode: 0644]
Resources/Textures/Objects/Power/power_cages.rsi/small.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/emp.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/meta.json
Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/base.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/icon.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-left.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-right.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-1.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-2.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-3.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-4.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/beam_heavy2.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/impact_beam_heavy2.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/meta.json
Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/muzzle_beam_heavy2.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-1.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-2.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-3.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-4.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-5.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-6.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-7.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/ptk-800.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-1200c.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-400c.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-0.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-1.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-2.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-3.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-4.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-5.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-6.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-7.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-8.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-9.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-2100g.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-320g.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-1.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-2.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-3.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-4.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-5.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-6.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-7.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi/base.png [new file with mode: 0644]
Resources/Textures/Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Structures/Power/cage_recharger.rsi/empty.png [new file with mode: 0644]
Resources/Textures/Structures/Power/cage_recharger.rsi/full.png [new file with mode: 0644]
Resources/Textures/Structures/Power/cage_recharger.rsi/light-charged.png [new file with mode: 0644]
Resources/Textures/Structures/Power/cage_recharger.rsi/light-charging.png [new file with mode: 0644]
Resources/Textures/Structures/Power/cage_recharger.rsi/light-empty.png [new file with mode: 0644]
Resources/Textures/Structures/Power/cage_recharger.rsi/light-off.png [new file with mode: 0644]
Resources/Textures/Structures/Power/cage_recharger.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Structures/Power/cage_recharger.rsi/open.png [new file with mode: 0644]

diff --git a/Content.Server/DeviceLinking/Components/GunSignalControlComponent.cs b/Content.Server/DeviceLinking/Components/GunSignalControlComponent.cs
new file mode 100644 (file)
index 0000000..a906795
--- /dev/null
@@ -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";
+}
diff --git a/Content.Server/DeviceLinking/Systems/GunSignalControlSystem.cs b/Content.Server/DeviceLinking/Systems/GunSignalControlSystem.cs
new file mode 100644 (file)
index 0000000..538a191
--- /dev/null
@@ -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);
+    }
+}
index f16a327e6bfd25ee6e930d1c2d14358798a60557..9db9aa296d839a4db7fc047cae940a27b9ef22b6 100644 (file)
@@ -78,8 +78,8 @@ public sealed class PneumaticCannonSystem : SharedPneumaticCannonSystem
         if (gas == null && component.GasUsage > 0f)
             return;
 
-        if(TryComp<StatusEffectsComponent>(args.User, out var status)
-           && component.Power == PneumaticCannonPower.High)
+        if (TryComp<StatusEffectsComponent>(args.User, out var status)
+            && component.Power == PneumaticCannonPower.High)
         {
             _stun.TryParalyze(args.User, TimeSpan.FromSeconds(component.HighPowerStunTime), true, status);
             Popup.PopupEntity(Loc.GetString("pneumatic-cannon-component-power-stun",
diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs
new file mode 100644 (file)
index 0000000..39cd248
--- /dev/null
@@ -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);
+        }
+    }
+}
index 96108c2e122301433549e54b9774e5339c165895..4f236c0fa7498472feac556b2b4d9c4d57a089cc 100644 (file)
@@ -212,7 +212,9 @@ public sealed partial class GunSystem : SharedGunSystem
                     // can't use map coords above because funny FireEffects
                     var fromEffect = fromCoordinates;
                     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)
                     {
diff --git a/Content.Shared/Weapons/Ranged/Components/AutoShootGunComponent.cs b/Content.Shared/Weapons/Ranged/Components/AutoShootGunComponent.cs
new file mode 100644 (file)
index 0000000..16b3110
--- /dev/null
@@ -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;
+}
index 350dd85d6972d8794cb6b9fc3fcad3e8412065b4..95853bbd2ea8c2d60e58dad725292e9cc64376d6 100644 (file)
@@ -5,7 +5,6 @@ using Robust.Shared.GameStates;
 using Robust.Shared.Map;
 using Robust.Shared.Prototypes;
 using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
 
 namespace Content.Shared.Weapons.Ranged.Components;
 
diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.AutoFire.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.AutoFire.cs
new file mode 100644 (file)
index 0000000..4c19547
--- /dev/null
@@ -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;
+    }
+}
index 4e5d8b9762aed1c8c335d7ed4e41b5b25a729e1d..c7456ed0193dc20284e6b94315840ae3ae91ccad 100644 (file)
@@ -37,7 +37,7 @@ namespace Content.Shared.Weapons.Ranged.Systems;
 
 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 IMapManager MapManager = default!;
     [Dependency] private   readonly INetManager _netManager = default!;
@@ -214,6 +214,17 @@ public abstract partial class SharedGunSystem : EntitySystem
         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)
     {
         if (gun.FireRate <= 0f ||
@@ -385,12 +396,9 @@ public abstract partial class SharedGunSystem : EntitySystem
         var finalLinear = physics.LinearVelocity + targetMapVelocity - currentMapVelocity;
         Physics.SetLinearVelocity(uid, finalLinear, body: physics);
 
-        if (user != null)
-        {
-            var projectile = EnsureComp<ProjectileComponent>(uid);
-            Projectiles.SetShooter(uid, projectile, user.Value);
-            projectile.Weapon = gunUid;
-        }
+        var projectile = EnsureComp<ProjectileComponent>(uid);
+        Projectiles.SetShooter(uid, projectile, user ?? gunUid);
+        projectile.Weapon = gunUid;
 
         TransformSystem.SetWorldRotation(uid, direction.ToWorldAngle());
     }
index 973ef360a9de9aabf6ff82f1c97848752288036b..411ce429ab70e500a5d0c5587ff52dbf00625959 100644 (file)
@@ -45,6 +45,8 @@ research-technology-wave-particle-harnessing = Wave Particle Harnessing
 research-technology-advanced-riot-control = Advanced Riot Control
 research-technology-portable-microfusion-weaponry = Portable Microfusion Weaponry
 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-anomalous-research = Basic Anomalous Research
index 8b63604b227c3371bfbeeac2575eba9e73050fde..bf88837e8da2cd32a373152af97a5bd0005cfc58 100644 (file)
     Heat: 5
     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.
 - type: damageModifierSet
   id: FlimsyMetallic
index 672d6488e356446a611758fc6bebf739f6a02253..6581fecbac8e5d32921d8f27829c37e7d460027e 100644 (file)
     - type: StaticPrice
       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
   id: BorgChargerCircuitboard
   parent: BaseMachineCircuitboard
       Steel: 5
       CableHV: 5
       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
+      
\ No newline at end of file
index 841288c479db2902ec835f5ea710af31e0927032..758d5f7b423e8b7f97f6c771f7342fa0ef868245 100644 (file)
     - type: BatterySelfRecharger
       autoRecharge: true
       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
\ No newline at end of file
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/grenade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/grenade.yml
new file mode 100644 (file)
index 0000000..0b23ebc
--- /dev/null
@@ -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
\ No newline at end of file
index 9d04ee8261719801fb6a109127390b0521686986..152de7e92f2e173784eaac87d16b866d7f7da10e 100644 (file)
   - type: SpentAmmoVisuals
     state: frag
     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
   id: CannonBall
   name: cannonball
   suffix: Pirate
-  parent: BaseGrenade
+  parent: BaseCannonBall
   components:
   - type: CartridgeAmmo
     proto: BulletCannonBall
     state: ball
 
 - type: entity
-  id: Grapeshot
+  id: CannonBallGrapeshot
   name: grapeshot
   suffix: Pirate
-  parent: BaseGrenade
+  parent: BaseCannonBall
   components:
   - type: CartridgeAmmo
     proto: PelletGrapeshot
     state: grapeshot
 
 - type: entity
-  id: Glassshot
+  id: CannonBallGlassshot
   name: glassshot
   suffix: Pirate
-  parent: BaseGrenade
+  parent: BaseCannonBall
   components:
   - type: CartridgeAmmo
     proto: PelletGlass
index 635de1c64bfcf20537767a9774208e320a6a4bad..ecabe2a4abb45d1e8abc0e7020622fcfab1b9af6 100644 (file)
     - type: BallisticAmmoProvider
       whitelist:
         tags:
-          - Grenade
+          - CannonBall
       capacity: 1
       proto: CannonBall
       soundInsert:
index cb4e813943e48a2df9ce6976831aedf423d2f3d9..99c4a7bdf21f2cc85f359e583963fa7f462f1c04 100644 (file)
   impactFlash:
     sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
     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
index a442804b3d5567b7c6aa2d50775382a29afb7d4d..5bfd511dbced467148caab0507a696b670eccb0d 100644 (file)
   - type: TimedDespawn
     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
   id: BulletCharge
   name: charge bolt
     intensitySlope: 1
     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
   id: BulletCap
   name: cap bullet
index 884f68fc22951d299256332297077561514f502c..08e3173334bdb32f711ea0b9d15d2f5a10764f24 100644 (file)
@@ -26,7 +26,7 @@
     drawdepth: Objects
   - type: Damageable
     damageContainer: Inorganic
-    damageModifierSet: Metallic
+    damageModifierSet: Electronic
   - type: Destructible
     thresholds:
     - trigger:
index 7d5d571a092a5f43444b25a3fd17a0b82fbbd666..c3f51df2de88c8fd1f32cda79703a8518d7e9b46 100644 (file)
        - MagazineBoxMagnum
        - MagazineBoxRifle
        - MagazineBoxLightRifle
+       - GrenadeBlast
     emagDynamicRecipes:
       - CartridgePistolRubber
       - CartridgeMagnumRubber
       - MagazineBoxMagnumUranium
       - MagazineBoxLightRifleUranium
       - MagazineBoxRifleUranium
+      - PowerCageSmall
+      - PowerCageMedium
+      - PowerCageHigh
+      - MagazineGrenadeEmpty
+      - GrenadeEMP
+      - GrenadeFlash
 
 - type: entity
   id: AutolatheHyperConvection
       - WallmountGeneratorElectronics
       - WallmountGeneratorAPUElectronics
       - WallmountSubstationElectronics
+      - PowerCageRechargerCircuitboard
       - EmitterCircuitboard
       - ThrusterMachineCircuitboard
       - GyroscopeMachineCircuitboard
       - MiniGravityGeneratorCircuitboard
+      - ShuttleGunKineticCircuitboard
       - GasRecyclerMachineCircuitboard
       - SeedExtractorMachineCircuitboard
       - AnalysisComputerCircuitboard
       - MagazineBoxMagnumRubber
       - MagazineBoxPistolRubber
       - MagazineBoxRifleRubber
+      - MagazineGrenadeEmpty
+      - GrenadeEMP
+      - GrenadeFlash
       - ShellShotgunBeanbag
       - ShellShotgunIncendiary
       - ShellShotgunUranium
       - WeaponLaserCannon
       - WeaponLaserCarbine
       - WeaponXrayCannon
+      - PowerCageSmall
+      - PowerCageMedium
+      - PowerCageHigh
+      - ShuttleGunSvalinnMachineGunCircuitboard
+      - ShuttleGunPerforatorCircuitboard
+      - ShuttleGunFriendshipCircuitboard
+      - ShuttleGunDusterCircuitboard
   - type: MaterialStorage
     whitelist:
       tags:
index a8e20df192997ee03f8bf402d78ec52de42d4f34..44f748307cc01695d0aa7893628009b4ccff0da4 100644 (file)
         blacklist:
           tags:
           - 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
   parent: BaseItemRecharger
diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml b/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml
new file mode 100644 (file)
index 0000000..d3408f5
--- /dev/null
@@ -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
index 787101c5b55480bcef9291b34e953609a8946012..eb299e3f3a6600239d31e24873a078e8d563f752 100644 (file)
@@ -5,6 +5,17 @@
   description: A thruster that allows a shuttle to move.
   abstract: true
   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
       enabled: false
       range: 4
     - type: ExtensionCableReceiver
     - type: Damageable
       damageContainer: Inorganic
-      damageModifierSet: Metallic
+      damageModifierSet: Electronic
     - type: Destructible
       thresholds:
       - trigger:
           !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:
           - !type:DoActsBehavior
             acts: ["Destruction"]
   - type: UpgradePowerDraw
     powerDrawMultiplier: 0.75
     scaling: Exponential
+  - type: Damageable
+    damageContainer: Inorganic
+    damageModifierSet: Electronic
   - type: StaticPrice
     price: 2000
 
index 2e93b9518eac02778b2fe505e30a3f74731beb3b..3af8eb4e5295a9438f42014717bcfb49cc0b1de0 100644 (file)
      Steel: 100
      Glass: 900
      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
index 0b63995a63a9163671f1211fac29ee702484eb62..21928a53d2a31d01821f750cf003a9c238cba15b 100644 (file)
     Glass: 400
     Uranium: 200
     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
\ No newline at end of file
index eb9da60d7810ff5cd8c75ff5268472cf3b49ec6f..dceeb302636be30731884c089f93619a6c836290 100644 (file)
     Steel: 1000
     Glass: 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
+     
\ No newline at end of file
index bf60a9e797da44b2a8b65dd81a5e8d381dac92a1..71e85c691aaec6bce31332158abd7b389f552031 100644 (file)
@@ -11,6 +11,7 @@
   cost: 5000
   recipeUnlocks:
   - WeaponProtoKineticAccelerator
+  - ShuttleGunKineticCircuitboard
   # These are roundstart but not replenishable for salvage
 
 - type: technology
   - HoloprojectorSecurity
   - 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
 
 - type: technology
   cost: 15000
   recipeUnlocks:
   - 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
\ No newline at end of file
index 61e2c56c4a9afe1ffcf692ec5668a62dffe621c9..40736c3fc52b21e519aa238a5971a9c6954c1332 100644 (file)
 - type: Tag
   id: CanPilot
 
+- type: Tag
+  id: CannonBall
+  
 - type: Tag
   id: CannonRestrict
 
 - type: Tag
   id: MagazinePistolSubMachineGun
 
+- type: Tag
+  id: MagazineGrenade
+
 - type: Tag
   id: MailingUnitElectronics
 
 - type: Tag
   id: PowerCellSmall
 
+- type: Tag
+  id: PowerCage
+
 - type: Tag
   id: Powerdrill
 
diff --git a/Resources/Textures/Objects/Power/power_cages.rsi/high.png b/Resources/Textures/Objects/Power/power_cages.rsi/high.png
new file mode 100644 (file)
index 0000000..703cdca
Binary files /dev/null and b/Resources/Textures/Objects/Power/power_cages.rsi/high.png differ
diff --git a/Resources/Textures/Objects/Power/power_cages.rsi/inhand-left.png b/Resources/Textures/Objects/Power/power_cages.rsi/inhand-left.png
new file mode 100644 (file)
index 0000000..43701b4
Binary files /dev/null and b/Resources/Textures/Objects/Power/power_cages.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Objects/Power/power_cages.rsi/inhand-right.png b/Resources/Textures/Objects/Power/power_cages.rsi/inhand-right.png
new file mode 100644 (file)
index 0000000..43701b4
Binary files /dev/null and b/Resources/Textures/Objects/Power/power_cages.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Objects/Power/power_cages.rsi/medium.png b/Resources/Textures/Objects/Power/power_cages.rsi/medium.png
new file mode 100644 (file)
index 0000000..1e2a8b7
Binary files /dev/null and b/Resources/Textures/Objects/Power/power_cages.rsi/medium.png differ
diff --git a/Resources/Textures/Objects/Power/power_cages.rsi/meta.json b/Resources/Textures/Objects/Power/power_cages.rsi/meta.json
new file mode 100644 (file)
index 0000000..705a82d
--- /dev/null
@@ -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"
+        }
+    ]
+}
diff --git a/Resources/Textures/Objects/Power/power_cages.rsi/o1.png b/Resources/Textures/Objects/Power/power_cages.rsi/o1.png
new file mode 100644 (file)
index 0000000..bfc4817
Binary files /dev/null and b/Resources/Textures/Objects/Power/power_cages.rsi/o1.png differ
diff --git a/Resources/Textures/Objects/Power/power_cages.rsi/o2.png b/Resources/Textures/Objects/Power/power_cages.rsi/o2.png
new file mode 100644 (file)
index 0000000..9e2ae02
Binary files /dev/null and b/Resources/Textures/Objects/Power/power_cages.rsi/o2.png differ
diff --git a/Resources/Textures/Objects/Power/power_cages.rsi/small.png b/Resources/Textures/Objects/Power/power_cages.rsi/small.png
new file mode 100644 (file)
index 0000000..fb7df07
Binary files /dev/null and b/Resources/Textures/Objects/Power/power_cages.rsi/small.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/emp.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/emp.png
new file mode 100644 (file)
index 0000000..ea8f235
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/emp.png differ
index 3faf26ebe573256ff1011ac0460d2ff48cff170b..15ed620c3e0334fe649280b783b2585ff38c1d7e 100644 (file)
@@ -5,7 +5,7 @@
         "y": 32
     },
     "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": [
         {
             "name": "baton"
@@ -25,6 +25,9 @@
         {
             "name": "ball"
         },
+        {
+            "name": "emp"
+        },
         {
             "name": "grapeshot"
         },
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/base.png
new file mode 100644 (file)
index 0000000..27c6f16
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/base.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/icon.png
new file mode 100644 (file)
index 0000000..93359d8
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/icon.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-left.png
new file mode 100644 (file)
index 0000000..14265b1
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-right.png
new file mode 100644 (file)
index 0000000..826d0bb
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-1.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-1.png
new file mode 100644 (file)
index 0000000..6b233be
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-1.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-2.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-2.png
new file mode 100644 (file)
index 0000000..6b233be
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-2.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-3.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-3.png
new file mode 100644 (file)
index 0000000..f8e3f08
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-3.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-4.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-4.png
new file mode 100644 (file)
index 0000000..b3ea88e
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-4.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/meta.json
new file mode 100644 (file)
index 0000000..32d2f5b
--- /dev/null
@@ -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"
+        }
+    ]
+}
diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/beam_heavy2.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/beam_heavy2.png
new file mode 100644 (file)
index 0000000..b171a56
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/beam_heavy2.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/impact_beam_heavy2.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/impact_beam_heavy2.png
new file mode 100644 (file)
index 0000000..b5d43d2
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/impact_beam_heavy2.png differ
index 804ab0bc91019acd8377810e37b7eba36a7c398b..0a835a14d76d16f0c4a17a607bbcaff732d70d7f 100644 (file)
         ]
       ]
     },
+    {
+      "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",
       "delays": [
         ]
       ]
     },
+    {
+      "name": "impact_beam_heavy2",
+      "delays": [
+        [
+          0.060000002,
+          0.060000002,
+          0.060000002,
+          0.060000002,
+          0.060000002,
+          0.060000002,
+          0.060000002,
+          0.060000002
+        ]
+      ]
+    },
     {
       "name": "muzzle_omni",
       "delays": [
diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/muzzle_beam_heavy2.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/muzzle_beam_heavy2.png
new file mode 100644 (file)
index 0000000..fe3365b
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/muzzle_beam_heavy2.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-1.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-1.png
new file mode 100644 (file)
index 0000000..99f8264
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-1.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-2.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-2.png
new file mode 100644 (file)
index 0000000..9ccfc11
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-2.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-3.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-3.png
new file mode 100644 (file)
index 0000000..6facc2d
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-3.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-4.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-4.png
new file mode 100644 (file)
index 0000000..7247334
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-4.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-5.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-5.png
new file mode 100644 (file)
index 0000000..cea633b
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-5.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-6.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-6.png
new file mode 100644 (file)
index 0000000..4a892b1
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-6.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-7.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-7.png
new file mode 100644 (file)
index 0000000..f2540aa
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-7.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/meta.json
new file mode 100644 (file)
index 0000000..537e6f8
--- /dev/null
@@ -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"
+    }
+    ]
+}
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/ptk-800.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/ptk-800.png
new file mode 100644 (file)
index 0000000..7a11cb9
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/ptk-800.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-1200c.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-1200c.png
new file mode 100644 (file)
index 0000000..600ff52
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-1200c.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-400c.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-400c.png
new file mode 100644 (file)
index 0000000..7bbc575
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-400c.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-0.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-0.png
new file mode 100644 (file)
index 0000000..135ff86
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-0.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-1.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-1.png
new file mode 100644 (file)
index 0000000..e617be2
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-1.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-2.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-2.png
new file mode 100644 (file)
index 0000000..eb16f29
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-2.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-3.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-3.png
new file mode 100644 (file)
index 0000000..a7c4b3d
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-3.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-4.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-4.png
new file mode 100644 (file)
index 0000000..3541031
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-4.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-5.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-5.png
new file mode 100644 (file)
index 0000000..1d76b9e
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-5.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-6.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-6.png
new file mode 100644 (file)
index 0000000..591fda5
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-6.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-7.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-7.png
new file mode 100644 (file)
index 0000000..bbab730
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-7.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-8.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-8.png
new file mode 100644 (file)
index 0000000..7cdab88
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-8.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-9.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-9.png
new file mode 100644 (file)
index 0000000..8bba7f1
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-9.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/meta.json
new file mode 100644 (file)
index 0000000..3760eca
--- /dev/null
@@ -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
+                ]
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-2100g.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-2100g.png
new file mode 100644 (file)
index 0000000..c6e151a
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-2100g.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-320g.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-320g.png
new file mode 100644 (file)
index 0000000..bc76168
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-320g.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-1.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-1.png
new file mode 100644 (file)
index 0000000..20c6f27
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-1.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-2.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-2.png
new file mode 100644 (file)
index 0000000..eef8e7a
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-2.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-3.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-3.png
new file mode 100644 (file)
index 0000000..0dd49f1
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-3.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-4.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-4.png
new file mode 100644 (file)
index 0000000..5615c7b
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-4.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-5.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-5.png
new file mode 100644 (file)
index 0000000..e32c827
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-5.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-6.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-6.png
new file mode 100644 (file)
index 0000000..efdb0bd
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-6.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-7.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-7.png
new file mode 100644 (file)
index 0000000..1e1dfae
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-7.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/meta.json
new file mode 100644 (file)
index 0000000..75a018b
--- /dev/null
@@ -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"
+    }
+    ]
+}
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi/base.png
new file mode 100644 (file)
index 0000000..eb000ac
Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi/base.png differ
diff --git a/Resources/Textures/Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi/meta.json
new file mode 100644 (file)
index 0000000..7219f46
--- /dev/null
@@ -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"
+    }
+    ]
+}
diff --git a/Resources/Textures/Structures/Power/cage_recharger.rsi/empty.png b/Resources/Textures/Structures/Power/cage_recharger.rsi/empty.png
new file mode 100644 (file)
index 0000000..28d040c
Binary files /dev/null and b/Resources/Textures/Structures/Power/cage_recharger.rsi/empty.png differ
diff --git a/Resources/Textures/Structures/Power/cage_recharger.rsi/full.png b/Resources/Textures/Structures/Power/cage_recharger.rsi/full.png
new file mode 100644 (file)
index 0000000..ed52d08
Binary files /dev/null and b/Resources/Textures/Structures/Power/cage_recharger.rsi/full.png differ
diff --git a/Resources/Textures/Structures/Power/cage_recharger.rsi/light-charged.png b/Resources/Textures/Structures/Power/cage_recharger.rsi/light-charged.png
new file mode 100644 (file)
index 0000000..bf313a1
Binary files /dev/null and b/Resources/Textures/Structures/Power/cage_recharger.rsi/light-charged.png differ
diff --git a/Resources/Textures/Structures/Power/cage_recharger.rsi/light-charging.png b/Resources/Textures/Structures/Power/cage_recharger.rsi/light-charging.png
new file mode 100644 (file)
index 0000000..869aee6
Binary files /dev/null and b/Resources/Textures/Structures/Power/cage_recharger.rsi/light-charging.png differ
diff --git a/Resources/Textures/Structures/Power/cage_recharger.rsi/light-empty.png b/Resources/Textures/Structures/Power/cage_recharger.rsi/light-empty.png
new file mode 100644 (file)
index 0000000..b241479
Binary files /dev/null and b/Resources/Textures/Structures/Power/cage_recharger.rsi/light-empty.png differ
diff --git a/Resources/Textures/Structures/Power/cage_recharger.rsi/light-off.png b/Resources/Textures/Structures/Power/cage_recharger.rsi/light-off.png
new file mode 100644 (file)
index 0000000..1bdf052
Binary files /dev/null and b/Resources/Textures/Structures/Power/cage_recharger.rsi/light-off.png differ
diff --git a/Resources/Textures/Structures/Power/cage_recharger.rsi/meta.json b/Resources/Textures/Structures/Power/cage_recharger.rsi/meta.json
new file mode 100644 (file)
index 0000000..8a1714e
--- /dev/null
@@ -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
+                ]
+            ]
+        }
+    ]
+}
diff --git a/Resources/Textures/Structures/Power/cage_recharger.rsi/open.png b/Resources/Textures/Structures/Power/cage_recharger.rsi/open.png
new file mode 100644 (file)
index 0000000..28d040c
Binary files /dev/null and b/Resources/Textures/Structures/Power/cage_recharger.rsi/open.png differ