From a2d5d74b46060d330e5aa14e166692f32dcce7a9 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sun, 21 Jan 2024 11:58:40 +0300 Subject: [PATCH] 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 --- .../Components/GunSignalControlComponent.cs | 24 ++ .../Systems/GunSignalControlSystem.cs | 46 +++ .../PneumaticCannon/PneumaticCannonSystem.cs | 4 +- .../Ranged/Systems/GunSystem.AutoFire.cs | 29 ++ .../Weapons/Ranged/Systems/GunSystem.cs | 4 +- .../Components/AutoShootGunComponent.cs | 14 + .../Weapons/Ranged/Components/GunComponent.cs | 1 - .../Systems/SharedGunSystem.AutoFire.cs | 11 + .../Weapons/Ranged/Systems/SharedGunSystem.cs | 22 +- .../Locale/en-US/research/technologies.ftl | 2 + Resources/Prototypes/Damage/modifier_sets.yml | 10 + .../Circuitboards/Machine/production.yml | 110 +++++ .../Entities/Objects/Power/powercells.yml | 136 +++++++ .../Guns/Ammunition/Magazines/grenade.yml | 87 ++++ .../Weapons/Guns/Ammunition/explosives.yml | 42 +- .../Weapons/Guns/Launchers/launchers.yml | 2 +- .../Weapons/Guns/Projectiles/hitscan.yml | 17 + .../Weapons/Guns/Projectiles/projectiles.yml | 47 +++ .../Structures/Machines/Computers/frame.yml | 2 +- .../Entities/Structures/Machines/lathe.yml | 19 + .../Entities/Structures/Power/chargers.yml | 40 ++ .../Entities/Structures/Shuttles/cannons.yml | 375 ++++++++++++++++++ .../Structures/Shuttles/thrusters.yml | 18 +- .../Prototypes/Recipes/Lathes/electronics.yml | 51 +++ .../Prototypes/Recipes/Lathes/powercells.yml | 28 ++ .../Prototypes/Recipes/Lathes/security.yml | 36 ++ Resources/Prototypes/Research/arsenal.yml | 38 ++ Resources/Prototypes/tags.yml | 9 + .../Objects/Power/power_cages.rsi/high.png | Bin 0 -> 376 bytes .../Power/power_cages.rsi/inhand-left.png | Bin 0 -> 748 bytes .../Power/power_cages.rsi/inhand-right.png | Bin 0 -> 748 bytes .../Objects/Power/power_cages.rsi/medium.png | Bin 0 -> 433 bytes .../Objects/Power/power_cages.rsi/meta.json | 34 ++ .../Objects/Power/power_cages.rsi/o1.png | Bin 0 -> 186 bytes .../Objects/Power/power_cages.rsi/o2.png | Bin 0 -> 198 bytes .../Objects/Power/power_cages.rsi/small.png | Bin 0 -> 399 bytes .../Explosives/explosives.rsi/emp.png | Bin 0 -> 393 bytes .../Explosives/explosives.rsi/meta.json | 5 +- .../Grenade/grenade_cartridge.rsi/base.png | Bin 0 -> 509 bytes .../Grenade/grenade_cartridge.rsi/icon.png | Bin 0 -> 653 bytes .../grenade_cartridge.rsi/inhand-left.png | Bin 0 -> 409 bytes .../grenade_cartridge.rsi/inhand-right.png | Bin 0 -> 415 bytes .../Grenade/grenade_cartridge.rsi/mag-1.png | Bin 0 -> 155 bytes .../Grenade/grenade_cartridge.rsi/mag-2.png | Bin 0 -> 155 bytes .../Grenade/grenade_cartridge.rsi/mag-3.png | Bin 0 -> 200 bytes .../Grenade/grenade_cartridge.rsi/mag-4.png | Bin 0 -> 317 bytes .../Grenade/grenade_cartridge.rsi/meta.json | 37 ++ .../projectiles.rsi/beam_heavy2.png | Bin 0 -> 308 bytes .../projectiles.rsi/impact_beam_heavy2.png | Bin 0 -> 1472 bytes .../Projectiles/projectiles.rsi/meta.json | 45 +++ .../projectiles.rsi/muzzle_beam_heavy2.png | Bin 0 -> 962 bytes .../Guns/Shuttles/kinetic.rsi/mag-1.png | Bin 0 -> 154 bytes .../Guns/Shuttles/kinetic.rsi/mag-2.png | Bin 0 -> 187 bytes .../Guns/Shuttles/kinetic.rsi/mag-3.png | Bin 0 -> 205 bytes .../Guns/Shuttles/kinetic.rsi/mag-4.png | Bin 0 -> 207 bytes .../Guns/Shuttles/kinetic.rsi/mag-5.png | Bin 0 -> 210 bytes .../Guns/Shuttles/kinetic.rsi/mag-6.png | Bin 0 -> 212 bytes .../Guns/Shuttles/kinetic.rsi/mag-7.png | Bin 0 -> 214 bytes .../Guns/Shuttles/kinetic.rsi/meta.json | 35 ++ .../Guns/Shuttles/kinetic.rsi/ptk-800.png | Bin 0 -> 1096 bytes .../Guns/Shuttles/laser.rsi/lse-1200c.png | Bin 0 -> 1391 bytes .../Guns/Shuttles/laser.rsi/lse-400c.png | Bin 0 -> 843 bytes .../Shuttles/laser.rsi/mag-unshaded-0.png | Bin 0 -> 143 bytes .../Shuttles/laser.rsi/mag-unshaded-1.png | Bin 0 -> 197 bytes .../Shuttles/laser.rsi/mag-unshaded-2.png | Bin 0 -> 207 bytes .../Shuttles/laser.rsi/mag-unshaded-3.png | Bin 0 -> 244 bytes .../Shuttles/laser.rsi/mag-unshaded-4.png | Bin 0 -> 249 bytes .../Shuttles/laser.rsi/mag-unshaded-5.png | Bin 0 -> 253 bytes .../Shuttles/laser.rsi/mag-unshaded-6.png | Bin 0 -> 256 bytes .../Shuttles/laser.rsi/mag-unshaded-7.png | Bin 0 -> 259 bytes .../Shuttles/laser.rsi/mag-unshaded-8.png | Bin 0 -> 261 bytes .../Shuttles/laser.rsi/mag-unshaded-9.png | Bin 0 -> 263 bytes .../Weapons/Guns/Shuttles/laser.rsi/meta.json | 107 +++++ .../Guns/Shuttles/launcher.rsi/exp-2100g.png | Bin 0 -> 1404 bytes .../Guns/Shuttles/launcher.rsi/exp-320g.png | Bin 0 -> 977 bytes .../Guns/Shuttles/launcher.rsi/mag-1.png | Bin 0 -> 144 bytes .../Guns/Shuttles/launcher.rsi/mag-2.png | Bin 0 -> 159 bytes .../Guns/Shuttles/launcher.rsi/mag-3.png | Bin 0 -> 178 bytes .../Guns/Shuttles/launcher.rsi/mag-4.png | Bin 0 -> 176 bytes .../Guns/Shuttles/launcher.rsi/mag-5.png | Bin 0 -> 177 bytes .../Guns/Shuttles/launcher.rsi/mag-6.png | Bin 0 -> 177 bytes .../Guns/Shuttles/launcher.rsi/mag-7.png | Bin 0 -> 191 bytes .../Guns/Shuttles/launcher.rsi/meta.json | 38 ++ .../Guns/Shuttles/pirate_cannon.rsi/base.png | Bin 0 -> 1440 bytes .../Guns/Shuttles/pirate_cannon.rsi/meta.json | 14 + .../Power/cage_recharger.rsi/empty.png | Bin 0 -> 775 bytes .../Power/cage_recharger.rsi/full.png | Bin 0 -> 919 bytes .../cage_recharger.rsi/light-charged.png | Bin 0 -> 803 bytes .../cage_recharger.rsi/light-charging.png | Bin 0 -> 1047 bytes .../Power/cage_recharger.rsi/light-empty.png | Bin 0 -> 271 bytes .../Power/cage_recharger.rsi/light-off.png | Bin 0 -> 1886 bytes .../Power/cage_recharger.rsi/meta.json | 52 +++ .../Power/cage_recharger.rsi/open.png | Bin 0 -> 775 bytes 93 files changed, 1570 insertions(+), 21 deletions(-) create mode 100644 Content.Server/DeviceLinking/Components/GunSignalControlComponent.cs create mode 100644 Content.Server/DeviceLinking/Systems/GunSignalControlSystem.cs create mode 100644 Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs create mode 100644 Content.Shared/Weapons/Ranged/Components/AutoShootGunComponent.cs create mode 100644 Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.AutoFire.cs create mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/grenade.yml create mode 100644 Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml create mode 100644 Resources/Textures/Objects/Power/power_cages.rsi/high.png create mode 100644 Resources/Textures/Objects/Power/power_cages.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Power/power_cages.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Power/power_cages.rsi/medium.png create mode 100644 Resources/Textures/Objects/Power/power_cages.rsi/meta.json create mode 100644 Resources/Textures/Objects/Power/power_cages.rsi/o1.png create mode 100644 Resources/Textures/Objects/Power/power_cages.rsi/o2.png create mode 100644 Resources/Textures/Objects/Power/power_cages.rsi/small.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/emp.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/base.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-1.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-3.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/mag-4.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/beam_heavy2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/impact_beam_heavy2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles.rsi/muzzle_beam_heavy2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-1.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-3.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-4.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-5.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-6.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/mag-7.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/ptk-800.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-1200c.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/lse-400c.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-0.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-1.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-3.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-4.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-5.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-6.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-7.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-8.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/mag-unshaded-9.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/laser.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-2100g.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/exp-320g.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-1.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-3.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-4.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-5.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-6.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/mag-7.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi/base.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Shuttles/pirate_cannon.rsi/meta.json create mode 100644 Resources/Textures/Structures/Power/cage_recharger.rsi/empty.png create mode 100644 Resources/Textures/Structures/Power/cage_recharger.rsi/full.png create mode 100644 Resources/Textures/Structures/Power/cage_recharger.rsi/light-charged.png create mode 100644 Resources/Textures/Structures/Power/cage_recharger.rsi/light-charging.png create mode 100644 Resources/Textures/Structures/Power/cage_recharger.rsi/light-empty.png create mode 100644 Resources/Textures/Structures/Power/cage_recharger.rsi/light-off.png create mode 100644 Resources/Textures/Structures/Power/cage_recharger.rsi/meta.json create mode 100644 Resources/Textures/Structures/Power/cage_recharger.rsi/open.png diff --git a/Content.Server/DeviceLinking/Components/GunSignalControlComponent.cs b/Content.Server/DeviceLinking/Components/GunSignalControlComponent.cs new file mode 100644 index 0000000000..a9067951ed --- /dev/null +++ b/Content.Server/DeviceLinking/Components/GunSignalControlComponent.cs @@ -0,0 +1,24 @@ +using Content.Server.DeviceLinking.Systems; +using Content.Shared.DeviceLinking; +using Robust.Shared.Prototypes; + +namespace Content.Server.DeviceLinking.Components; + +/// +/// A system that allows you to fire GunComponent + AmmoProvider by receiving signals from DeviceLinking +/// +[RegisterComponent, Access(typeof(GunSignalControlSystem))] +public sealed partial class GunSignalControlComponent : Component +{ + [DataField] + public ProtoId TriggerPort = "Trigger"; + + [DataField] + public ProtoId TogglePort = "Toggle"; + + [DataField] + public ProtoId OnPort = "On"; + + [DataField] + public ProtoId OffPort = "Off"; +} diff --git a/Content.Server/DeviceLinking/Systems/GunSignalControlSystem.cs b/Content.Server/DeviceLinking/Systems/GunSignalControlSystem.cs new file mode 100644 index 0000000000..538a191ab9 --- /dev/null +++ b/Content.Server/DeviceLinking/Systems/GunSignalControlSystem.cs @@ -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(OnInit); + SubscribeLocalEvent(OnSignalReceived); + } + + private void OnInit(Entity gunControl, ref MapInitEvent args) + { + _signalSystem.EnsureSinkPorts(gunControl, gunControl.Comp.TriggerPort, gunControl.Comp.TogglePort, gunControl.Comp.OnPort, gunControl.Comp.OffPort); + } + + private void OnSignalReceived(Entity gunControl, ref SignalReceivedEvent args) + { + if (!TryComp(gunControl, out var gun)) + return; + + if (args.Port == gunControl.Comp.TriggerPort) + _gun.AttemptShoot(gunControl, gun); + + if (!TryComp(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); + } +} diff --git a/Content.Server/PneumaticCannon/PneumaticCannonSystem.cs b/Content.Server/PneumaticCannon/PneumaticCannonSystem.cs index f16a327e6b..9db9aa296d 100644 --- a/Content.Server/PneumaticCannon/PneumaticCannonSystem.cs +++ b/Content.Server/PneumaticCannon/PneumaticCannonSystem.cs @@ -78,8 +78,8 @@ public sealed class PneumaticCannonSystem : SharedPneumaticCannonSystem if (gas == null && component.GasUsage > 0f) return; - if(TryComp(args.User, out var status) - && component.Power == PneumaticCannonPower.High) + if (TryComp(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 index 0000000000..39cd2486ed --- /dev/null +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs @@ -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(); + + 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); + } + } +} diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs index 96108c2e12..4f236c0fa7 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs @@ -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 index 0000000000..16b3110b85 --- /dev/null +++ b/Content.Shared/Weapons/Ranged/Components/AutoShootGunComponent.cs @@ -0,0 +1,14 @@ +using Content.Shared.Weapons.Ranged.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Weapons.Ranged.Components; + +/// +/// Allows GunSystem to automatically fire while this component is enabled +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunSystem)), AutoGenerateComponentState] +public sealed partial class AutoShootGunComponent : Component +{ + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public bool Enabled; +} diff --git a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs index 350dd85d69..95853bbd2e 100644 --- a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs @@ -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 index 0000000000..4c19547a39 --- /dev/null +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.AutoFire.cs @@ -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; + } +} diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 4e5d8b9762..c7456ed019 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -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; } + /// + /// Shoots by assuming the gun is the user at default coordinates. + /// + 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(uid); - Projectiles.SetShooter(uid, projectile, user.Value); - projectile.Weapon = gunUid; - } + var projectile = EnsureComp(uid); + Projectiles.SetShooter(uid, projectile, user ?? gunUid); + projectile.Weapon = gunUid; TransformSystem.SetWorldRotation(uid, direction.ToWorldAngle()); } diff --git a/Resources/Locale/en-US/research/technologies.ftl b/Resources/Locale/en-US/research/technologies.ftl index 973ef360a9..411ce429ab 100644 --- a/Resources/Locale/en-US/research/technologies.ftl +++ b/Resources/Locale/en-US/research/technologies.ftl @@ -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 diff --git a/Resources/Prototypes/Damage/modifier_sets.yml b/Resources/Prototypes/Damage/modifier_sets.yml index 8b63604b22..bf88837e8d 100644 --- a/Resources/Prototypes/Damage/modifier_sets.yml +++ b/Resources/Prototypes/Damage/modifier_sets.yml @@ -60,6 +60,16 @@ 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 diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 672d6488e3..6581fecbac 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -661,6 +661,29 @@ - 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 @@ -1229,3 +1252,90 @@ 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 diff --git a/Resources/Prototypes/Entities/Objects/Power/powercells.yml b/Resources/Prototypes/Entities/Objects/Power/powercells.yml index 841288c479..758d5f7b42 100644 --- a/Resources/Prototypes/Entities/Objects/Power/powercells.yml +++ b/Resources/Prototypes/Entities/Objects/Power/powercells.yml @@ -267,3 +267,139 @@ - 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 index 0000000000..0b23ebc966 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/grenade.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml index 9d04ee8261..152de7e92f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml @@ -122,12 +122,44 @@ - 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 @@ -137,10 +169,10 @@ state: ball - type: entity - id: Grapeshot + id: CannonBallGrapeshot name: grapeshot suffix: Pirate - parent: BaseGrenade + parent: BaseCannonBall components: - type: CartridgeAmmo proto: PelletGrapeshot @@ -152,10 +184,10 @@ state: grapeshot - type: entity - id: Glassshot + id: CannonBallGlassshot name: glassshot suffix: Pirate - parent: BaseGrenade + parent: BaseCannonBall components: - type: CartridgeAmmo proto: PelletGlass diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index 635de1c64b..ecabe2a4ab 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -144,7 +144,7 @@ - type: BallisticAmmoProvider whitelist: tags: - - Grenade + - CannonBall capacity: 1 proto: CannonBall soundInsert: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml index cb4e813943..99c4a7bdf2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml @@ -121,3 +121,20 @@ 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 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index a442804b3d..5bfd511dbc 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -420,6 +420,32 @@ - 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 @@ -692,6 +718,27 @@ 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 diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml index 884f68fc22..08e3173334 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml @@ -26,7 +26,7 @@ drawdepth: Objects - type: Damageable damageContainer: Inorganic - damageModifierSet: Metallic + damageModifierSet: Electronic - type: Destructible thresholds: - trigger: diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 7d5d571a09..c3f51df2de 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -169,6 +169,7 @@ - MagazineBoxMagnum - MagazineBoxRifle - MagazineBoxLightRifle + - GrenadeBlast emagDynamicRecipes: - CartridgePistolRubber - CartridgeMagnumRubber @@ -197,6 +198,12 @@ - MagazineBoxMagnumUranium - MagazineBoxLightRifleUranium - MagazineBoxRifleUranium + - PowerCageSmall + - PowerCageMedium + - PowerCageHigh + - MagazineGrenadeEmpty + - GrenadeEMP + - GrenadeFlash - type: entity id: AutolatheHyperConvection @@ -422,10 +429,12 @@ - WallmountGeneratorElectronics - WallmountGeneratorAPUElectronics - WallmountSubstationElectronics + - PowerCageRechargerCircuitboard - EmitterCircuitboard - ThrusterMachineCircuitboard - GyroscopeMachineCircuitboard - MiniGravityGeneratorCircuitboard + - ShuttleGunKineticCircuitboard - GasRecyclerMachineCircuitboard - SeedExtractorMachineCircuitboard - AnalysisComputerCircuitboard @@ -691,6 +700,9 @@ - MagazineBoxMagnumRubber - MagazineBoxPistolRubber - MagazineBoxRifleRubber + - MagazineGrenadeEmpty + - GrenadeEMP + - GrenadeFlash - ShellShotgunBeanbag - ShellShotgunIncendiary - ShellShotgunUranium @@ -706,6 +718,13 @@ - WeaponLaserCannon - WeaponLaserCarbine - WeaponXrayCannon + - PowerCageSmall + - PowerCageMedium + - PowerCageHigh + - ShuttleGunSvalinnMachineGunCircuitboard + - ShuttleGunPerforatorCircuitboard + - ShuttleGunFriendshipCircuitboard + - ShuttleGunDusterCircuitboard - type: MaterialStorage whitelist: tags: diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml index a8e20df192..44f748307c 100644 --- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml +++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml @@ -107,6 +107,46 @@ 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 index 0000000000..d3408f54e5 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml index 787101c5b5..eb299e3f3a 100644 --- a/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml +++ b/Resources/Prototypes/Entities/Structures/Shuttles/thrusters.yml @@ -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 @@ -30,12 +41,12 @@ - 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"] @@ -185,6 +196,9 @@ - type: UpgradePowerDraw powerDrawMultiplier: 0.75 scaling: Exponential + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Electronic - type: StaticPrice price: 2000 diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 2e93b9518e..3af8eb4e52 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -895,3 +895,54 @@ 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 diff --git a/Resources/Prototypes/Recipes/Lathes/powercells.yml b/Resources/Prototypes/Recipes/Lathes/powercells.yml index 0b63995a63..21928a53d2 100644 --- a/Resources/Prototypes/Recipes/Lathes/powercells.yml +++ b/Resources/Prototypes/Recipes/Lathes/powercells.yml @@ -39,3 +39,31 @@ 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 diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index eb9da60d78..dceeb30263 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -605,3 +605,39 @@ 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 diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index bf60a9e797..71e85c691a 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -11,6 +11,7 @@ cost: 5000 recipeUnlocks: - WeaponProtoKineticAccelerator + - ShuttleGunKineticCircuitboard # These are roundstart but not replenishable for salvage - type: technology @@ -145,6 +146,27 @@ - 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 @@ -170,3 +192,19 @@ 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 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 61e2c56c4a..40736c3fc5 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -250,6 +250,9 @@ - type: Tag id: CanPilot +- type: Tag + id: CannonBall + - type: Tag id: CannonRestrict @@ -784,6 +787,9 @@ - type: Tag id: MagazinePistolSubMachineGun +- type: Tag + id: MagazineGrenade + - type: Tag id: MailingUnitElectronics @@ -940,6 +946,9 @@ - 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 index 0000000000000000000000000000000000000000..703cdcac080c28a6882789ffd26565a95e5029b7 GIT binary patch literal 376 zcmV-;0f+vHP)Px$GD$>1R9J=Wld(zzK@f(&h+Qrmq{;(`u!Ti7AXtixL4>QsE|3?n(Zbd`!6KDl zD~MACl%z@^Z6H^s4+j#Fz=Hi)$U!1zueI0@mMLa_=AT&x0)apv5ctp3faBy`Ye3R& zsfg%TcV9(Bm4>DmO);u8HgZY3rR!QByG17AYL%Xd_9tVkwcN}S_?$AjJ=rXrO&O7J zoml#lF+CA|8oU+`=`}FGXt!L(TFYoQrStf}@L6!q{cSdm0jNX~*8Uh7V6@J>w5`XE z&p@4dsS-sjvaE2D-z>6>N)+L1UT7f2==*XBKpvfQ#Bu!R%Qv&GNipi{;r)Up^O9NZ z>C5m9w_0)4YWvCoxHvuI?!H5=X%=k2OARPx%rb$FWRCt{2*-K~>Q4|K?KjO+v2n@CD+J#tbga!--O0{l8uq2@3LNO9VtN22V z=ti*!T2mib!3R>T*oBSagfz6S5<{UP1rZ`EDk^jA%qY@2qAjrMMN!JAu_=5q3v)gg~+yx9hd&0(lmr5v=%c@w;Zij>8*!9Ju$8qic9hAyt z2qUAKb^fOlS1u`!Zr-k2e~nghzt;%|$03u;sm7}}T9joJWmz>=mC5Dc;5hVqoyK-< z5#NTtn)8|uU@$(9yeI+y`vfX)08sgPIC)+*RvViaMGVI04QzWUe=wlvi92-qB#ZM0 z1Ipu>qGr728ITrYwhn)vGCmbYQI>Hw5L_rUr#=K>y&i^kSh38i)U@OQoC+tcSY}mfn)(S8 zWf`5_U8-vU*y-L10QfvRYi4=I*V79Cm`*0^)-=lUe}NPx%rb$FWRCt{2*-K~>Q4|K?KjO+v2n@CD+J#tbga!--O0{l8uq2@3LNO9VtN22V z=ti*!T2mib!3R>T*oBSagfz6S5<{UP1rZ`EDk^jA%qY@2qAjrMMN!JAu_=5q3v)gg~+yx9hd&0(lmr5v=%c@w;Zij>8*!9Ju$8qic9hAyt z2qUAKb^fOlS1u`!Zr-k2e~nghzt;%|$03u;sm7}}T9joJWmz>=mC5Dc;5hVqoyK-< z5#NTtn)8|uU@$(9yeI+y`vfX)08sgPIC)+*RvViaMGVI04QzWUe=wlvi92-qB#ZM0 z1Ipu>qGr728ITrYwhn)vGCmbYQI>Hw5L_rUr#=K>y&i^kSh38i)U@OQoC+tcSY}mfn)(S8 zWf`5_U8-vU*y-L10QfvRYi4=I*V79Cm`*0^)-=lUe}NPx$Ye_^wR9J=W(7`JNVHn5p?@B52Zj*^{aokOAZ(i72o%zV}3?_-_R#^C#gt4{t=J_a0}OetD8sJ`Z~25__0;DQ#>fe)^*&DnKD?l2nSPvy0eGzIr;lAgL6EtQmPPvVo=DD@@CR zPPh#Mdb_&`!|;96ubR!=2EqHxQtkft0cxe4M8A`h@br%G<(^sBi+l`Va%_Tym1UYU zwbIUy^~VMPXaoU+Cl86PY#@z#ovpTK)&_Bn&34N_IWlwtlg)@u+r@wM&>~`r=?kHoJ^fXvfLPA1D za!%lr@5XOh4L5rhvT$$YYiK-wUP7{B=|AP@4n=n^g`14q=lxGlsOaPx$Nl8ROR9J=Wld(&~KorKmh?BVx2uSr$C~gNzG6_zK7CMRG5Xd0i{2$y31&2QAllt7BTfQy6ogX4~S@7;ax;|@?L6bgmnkI`ho z4FL6KLqtKS*`6y-4~~l1+52lL_j+r$Sl>QBVchF$dF`jiL);Gs;8})q*OMLw0LS}>xVY>fuZePx$LrFwIR9J=WmAgspGE)m295wutW$%2q(3keAULBwr@kl2Z&$RGFxR-(mX zjD;T|7Gfz%Ak7AwpeU&}wGW~aun|QGWGof~DZNNUoYTw$?!AXQ%nWEWnqS6{1O-6= zK)upY0LvS31HkjVZ|5>40$;_~^V4LKHhY^#N}5L`P_J}UCTS1tNhQP`n0I?L!?D3S zJ+Uat6O#m;IBlkiCWmv8e{bi7JEtuY5O?6G5DA#27%TBr%85SZL?6SR!7PcIDLaB< zHN|B9f!S~g0O#hIbTvh5R06HHbDH5A*SC*DdlEzf-S>NTTl)amjz#zRRa9Jz@-3xm zo>Ctd(db)B`PK;Efou-kLNs>^(OSsgyoOq!F}`JRunkWEglBMdNn_zu^tFqERLxVk ng+XxuvN?==Aj+rFX#O{!;Pzj-AXbMH00000NkvXXu0mjfa`vE@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/meta.json index 3faf26ebe5..15ed620c3e 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/meta.json @@ -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 index 0000000000000000000000000000000000000000..27c6f16dc7534b23c2a8aeb82cc5ffb6c78feb0c GIT binary patch literal 509 zcmVPx$w@E}nR9J=WRy|L`P!v6W#29E=qa6^EvcSOL0JDF?!C4k2V_23+r}=`@QZ$b`F7Z}hn0MV6_x^@h$XEZv}bn200000NkvXXu0mjfkEh=Q literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..93359d84096671b3ff661c42df0b1ddd7a69c846 GIT binary patch literal 653 zcmV;80&@L{P)Px%M@d9MR9J=WmQP5NaTv!xR)lP01Dm)%v0VnC(P0vFDYk+jI(V>K&}|nFVl_`j zN=?Fp7VY9?N6*GCp&{GCKuC0mtZlf<)?O1C=*C77h90JG?$7(a+k6S3eJ{V~_k4fP z_xbYvp7-U2HvV^X$dMz@ULM+Q){0zjep-y(8J65j z<<0l<;@I+v{P5Ee99v#e7PGX-BQu*{H(E20&ImQRgZ!=-$M-fk$nO&0lWriT(~yDf zo$Xo!xqUGfi~m?(f=uSKUZsAoW@F`&~Ju;ymPoM0Tnnwv#14mE778miAgv$LZ53^aQ8 zO&e%*2I}2?B9T11fpb3tQhX>9ru*)5$vV|$px)hwB4K=spYTsDoZW!Z3{>BJC=$jw z_5uIY0^&bvbt@wajtL#BUjE3d7A3c00000NkvXXu0mjf_x3cN literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..14265b1c7da6a6a8be502387e415f8fe7a8b67ac GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zgFRgwLn`LH zy|vNrP=Ls>kNk&~cT7AWETG&xdHur&Zx#t3lr&3|EiEj&aB;^32IdwQo+BF`aCl0y znM-=UO7L1SLFuhy@ZbMxRg>y;pU->3w^s;g0}y;zzeMM-p5FSse-6eiFsrD#SoyN# z@$-nZR?q0R-eY}k$?lV;RPLU%xmwIxJMWy8^|ZuyN2aPg-6Xk``>KO(R@kn9P`%lm zQ$>$$Vcd7|#>F+^W+!KTJ@t9zEw;;SJniczH39Nr#Cq6pSsFix-sfX z=l_K0ix4zPRH14E-!zY-Hdf$_Kb$st9A4Jrf1!s z_=3%2KD*{0d-a%s=&>I%P`Ap1OB{an^LB{Ts5y$rVi literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..826d0bb3f7a87faaf81b1c647df0b721654622a7 GIT binary patch literal 415 zcmV;Q0bu@#P)Px$SxH1eRCt{2+ObZ;P!z`T55pt4k-!rWBZHH#;o$6|6TulaW*v2LcEHiNkN^XO zL=42R;0Q?@1~(Z=>R?J*;HIsBwDJF&$hj@~dhSU&^hy8#00000z`v3*E!^DRJNc6% zUv2pMuItjJ@t%GAP3E*|VLY)ko>yjJ%Vv}=RDCrQV*_0CetFT=q!>>u&HLq0*9JDgI{~B7$7acP%+2SWfFMkOX<>P{ z8?B~>gLZ7+0FpEuv{Q{%(^m_cTH^!dk58TDKi?$WUrKUz0000000000fcPkuDo(xA zb?Tk2Q!G`S;5*{YctFC$p4xhTdRhEVy1=i)UT5bQD?7ffmL!oHP`N+7gmLyC- zl#9K){WY7d)RHJt1Eik=2kyhi{m4uhk>3K6)O+h~I|l&l#W%nDjOzeYYC!-1002ov JPDHLkV1keFy}JMa literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..6b233bee38f1be13aa2e808b2d1c50cf01f940dc GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}p`I>|ArY;~ z2@*Z%JJ?(4iZEx+O`@A9W6?1ii2|Ceh;egA);k=f$v w1s#?-UDy8B7yU7Co;zPadF>mJ#tH_8?mA)fMdJCdffg`$y85}Sb4q9e0Ip>;egFUf literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..6b233bee38f1be13aa2e808b2d1c50cf01f940dc GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}p`I>|ArY;~ z2@*Z%JJ?(4iZEx+O`@A9W6?1ii2|Ceh;egA);k=f$v w1s#?-UDy8B7yU7Co;zPadF>mJ#tH_8?mA)fMdJCdffg`$y85}Sb4q9e0Ip>;egFUf literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..f8e3f08c8fe6d07257ec2747356e402a128a0565 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}O`a}}ArY;~ z2@gwp+uXXKY82|S&U_#^L8S7`p+`2xz! z%*@Tr&CH^6thn3`YJhbIFwE(?_V>8zahL4V=6im%T`ro{yyNQn|JI^wf7d@az&Ix> qLyXDK_4Pk{%Q}gBYG6GNm>4?WDp>SLPIwJ;4TGnvpUXO@geCx+j7d=d literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..b3ea88e15fc6b39ebe34b92b93271786af2067ac GIT binary patch literal 317 zcmV-D0mA-?P)Px#_en%SR9J=W)-g-NKp4jHf5f4XO_5d*x(Eel!Ab526hy(Hd;JD3`2cN+i{Hah zINA=SV?u@wrK=z~cG9&`x7W!+(K8?f2jAa#&wF?BQ7?@VPc5XDZGvz)RYky7ddPbfk7_kEQ4 P00000NkvXXu0mjf;aiKM literal 0 HcmV?d00001 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 index 0000000000..32d2f5b7f0 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Grenade/grenade_cartridge.rsi/meta.json @@ -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 index 0000000000000000000000000000000000000000..b171a562cb0d742c3dd04b493eb7bc4e1a003f7c GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D$|-g&w>hE&XX zd;6fLv!ejpgGvM28O`R7Q>IK{a`8}K`8={Sf%V>AkEREX9~XqK@oo9j{&yeSzr-^6 ze179lpniq}t~xK7?tSA|p83D(kLR)Q{`ID}8ty+2HriKq@yn{z9zolNUv*u_mOtfB zD4MI6@J)ZgWnPc}%>Ux-7X6HKd>AeOG6W3Lx2-Y1y|TTSfByT6FAvg6_1kbtMFpUXO@geCwm27N*R literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..b5d43d2bf06e037592225ce7383fe5abfacdf283 GIT binary patch literal 1472 zcmV;x1wZPx)dPzh*K~mh+@EEs9 zEU{_Q(USs!kSG!%0Z%bom}3Sr#^W*Lz~1w#B4aqm=gj~4#sL_HVHk#C7=~dO=G<6{ zp0xe0cT7iqCq_YA);m`KfJShQC3^DD@Sj@I-zofsQ(+XelTz0b52*bWI)9d>=*jh9 zwsWl|9)M;S`0QKxaCS9-0$=Z3p%Gli7n@zk4@j3u5SO?6c2$~PjDlx*7rhqp!72gN z=8+?-XbPL^2ke$)6OsTlyW5MOed_>FU=QKnTmS&pgIQeS3G!iM-v&>92)hnMG1v(D z)@>lQqlZvSdZsU*{rI<{*FyFwxF$Yj`ccBZXPdb_2k>b1Rc&?N`)zmZl;}Jh`119A zfa3t4y8W+Dz-RyP=dJ^kXJ5rh4JhJ(O1cxYWED+w?s&}a14{57KJQ)2?gRQq_rq%B za;l@C_rLGqaufvM;3&w({@G2$vgQG{6CqQ?<*oew;~N0Yz+sb!-y#9T|79k8wh8!3 zC=u#fP?=_!DM^{tP=;X`hG7_nVHk#C7=~dOhG7`SF<-8VC;~~sRlDoKtnfy-Elbgp z=?(cW-HKd_o|IBb`5|Og+j66zEtjGv<%dXYkAk)|k(ZRUOSaPXm!fBF-%1%r#@2%w z)`NSrUjB_mOQFrL6=OJA0Fwp$!3_1z6pijr)H_r705Bgru}L-WJ$%;M2OeYXkcEBY zs-vC=Aw@u1v1X%-F@X~9-&~;Hx!SeAk%Uli!ui-qbD;V_B$5=w&u(MiGp#zq$pSuN zL6lY>~>YXVtS(NhS5aE1W6PLGgI9VhGA%Udn7WO@zK3*lQ zlg!j<9#NmKv;Tcl;#biWt7y8XPHP0$@CUQP&46hEBtO+wK#fHs=v&$Mat|Yj{5&-*yaVkTTj&sxT0^4}JhtFsU zl=i{PbwK%?oM;5s+d~=3NMt>@FYG{`eP6xr=?(tPh4x(6Dw>)FGllW6aXyYa?2J*6 zt$okb0d*em9zJi!;U$h}0tNw~2gi0Eu(jV$<^d*6Ng2}ffb=NHrtkp;X2N&TYmJ7O zNlDl|bn7J!f~z%|BuVoz#AFc%V)I#}yKR?UO~R<~tp~HDl>0Xq@o=~ctoo1E_N|s8 z$k6h~H`(a^OsZfNP%Thr!D?V!a2LJSMu2RI2SBa;8~cD^U!s9mLkn%HtB4sk!r;Tx7 z`_{x&G{vu{H>b8;VzeorrH?0JQdRnV+W#e0#&>K*xdM>qn1nxy+&okiV#CQIdFw1~ zRJ&{v)Xn#BKCXrHaqZXB8-U{a&QroD0e8`B^01Ty|K?&V#b|b&2SF$MP?dTnD(6!q zvkB6b=CnT2S3a}V=bK=nxv@E$a0+No$e8|9gF^4#FNv;wKj)^0(4LSf^j|GXV%l%0 z_nl*Bn}t>#?Q3pKCq;Km$Oe;Oip$%x9O0OtS4S&~>{0Q7E4&nVoR@ zVd;b*u&dc`ZT_~^$D6P-;>y6aJlz#W!_ZOCPTrkQ!BFP}Rp|3|eHA6eW%6B9NS>~i zMD?VKYkfWtH+v&MCNp6GR4C51^aF+o$kWGHrO&4%0K02JuGgVX23`$i7=~dOhG7_n aDbIh*4ubH(u~6jz0000V6O3WaSW-L z^Y-pWzsCj=>>uivRI_)L?2=YmIM3?B+_l_JT@t?}I!_&FHfXqWdYr5~bmU)2{Z^G4& zsc&4Z4nDs;d$NVA@el8stM$rtYnctiZC9qv_S=(qasS257gsS_GHV{1_U2w$fY|-k zJ=#CL|C}|e`4axtL;crlt;tH|3}4oSZ(ir-D6nR$UWwH*!Q50Tp&^J7WHBZ|R9g<`ZW(@4C()JiqBxE!VBnF<+KU z30md&(XmAr=u8>6=|w=j`?xjlx6bLF_hqYeT(|zx%RlawP1IW{`|@-}Tk?HQ`L*vq zZB|f10l)TX{dKDc270JuKzZ#2waszQV`7+3bSqt)!_GM zliR-gC$)~$Olg}To9A+N>!TI#a*w}eSYb2cXk=({z%Rwm4M%qFxOO#h{Yhnpi17Be zw+cQ_U|~p~ni(qee3M@0YfeeiOWD&(C%*dnu1GD!Om^x%S6?RMpAKf4Yu*a%?^u<* zl{4OgA??%Wu7az%3=yi!CY5Zsd^=>5bf7TM8D)mrN6c4N@7*aE8d~L+6V1A1@~aoR zPk*X?u9*>4Gxvt!Kef`XV_`2DUKqV?djE4#p7koV%Qr;>0*z!@cR1IEJ6OxII6KUX znfuaZHgjUM`2O|NKk~#b*0oC#3+yfcN;0iT=e@vq%=oWJ%C!@#S$?dT7~Va1*Y|uo zCb=$-=xfiXc;`D>9Vlse(=}s(;QhxjYtFs;r6m|1-ndIh|4R0}?~D%H)M6E^b@;CA z;6HJA?uOlS4FoZOWm@dX)M|%=&*S&~m5=-{EdM%KOH4ha;qiQiYs>{NxSl$zPw0Sy cvXA@^4gMH4|K9ipm?;@NUHx3vIVCg!08Z4qGynhq literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..99f8264d14a1980702e04d86b62e0d84e482a9d3 GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|LOfj@Ln`LH zJ!dHD5WvuO@&D0)LwOS&xSC^yb~|!$>XfM-sYtSDuja0aX96k*g8c#aI`l3_wC`Jz sxm)FA?cAIFvnub#{bYp5GBE6W&3Jq|7n7&-IgsrPp00i_>zopr03WL_(*OVf literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..9ccfc11bb381b4bb751a8f628bffb7893002dbed GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|NHq)$ literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..6facc2d8f6a45a0b8f26edb54c304def49b7fefb GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|+C5zyLn`LH zy|j?`5QB*8#p^5wxj1BIafz@6@_L6nn90(gz*WM^7RtDb?;zKXO$@tyAIxFBclNwL zP%jWX&=*PWk^5e{|E|bP-Rqu{u0Ni3dh7XzC31Vxr!a?fht5}dS~E*!r~Q4;Nz1a? v-_PW+ouRUO)tT-58N14QWFTfRFx1^*FRYN#IsYy;5hUd4>gTe~DWM4f(0@k( literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..72473343c8dee8a5d1a69a61f53ef70f8b5f713a GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|Iz3$+Ln`LH zy|j?`5Ca3tf&8WfRu(>AR<7n1ZK?tlY6q2PFvT`HhBmBo-oUg@ry)ehtq@zS=XvUCGym{c-`@ec#8r{fC&sz|gS&JL?;JMcu`QQpO-LPgg&ebxsLQ06i&4KmY&$ literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..cea633b3bcea46125cef5cf3491feaf3c3a26ba9 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|dOTemLn`LH zy`(6_n8?8TV7qaXHpi@-<|Q0P(*;V@FS0J5V6HLA;hx%#rfqr(|FeJWRR@rer>mdKI;Vst0Ck>C A?EnA( literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..4a892b1ef2ab8af98be17b44874174da8de4c842 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|`aE46Ln`LH zy`(6_n8?8TAljF{7g?82V0FFaa8GSV(>6VY|JiB#-!r{GJ9|1% zD-aw|==sHA`>yN#f7t6Q2_@muko`CbyV<&}d_MG(O<1ZD@b-BTN z&hIEmn3VHcYrkAU?(9dgHVaA;9x>K`g_y;_Akm=DFJTy-nx5VZ67qEQb6Mw<&;$TC Cj7+Nl literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..f2540aac061c2a6681cfb12c65588de84e7373e2 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|CV09yhE&XX zdr47zopr E0K+O!cK`qY literal 0 HcmV?d00001 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 index 0000000000..537e6f8538 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Shuttles/kinetic.rsi/meta.json @@ -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 index 0000000000000000000000000000000000000000..7a11cb93a5b297ea4047398cab89997744968cff GIT binary patch literal 1096 zcmV-O1h@N%P)Px(0!c(cRCt{2nafWbR}_aoOcWfVAmhr^9z5{_A}9-^hDZ)cSBZpB(_I$nvfXsS zrhh?Mq<=v-S!C00yI|K!5fa@s#8MxMD^;;Vz?Q)#wFCx>#Di)ki{XyP#7UIab8jE_ zTX{V9j?X#%orkYMqtR$I8jVJy(P%UpjYgx<$YRvU+M`C+R%yd2RUbTRWbOW;3@vk- zQLwivxjq$k1XO&eaNhptW6pf?A^k%cR4GA8003I%Gz0Iauzua3WlpOyLtP5=mml){ zoA&FLB0Hq#T{>>OR_g1U6{$A$TmiztZjPkmhJE?s6p7d{6Nz&j_X?#3rRpw#{i?mM zdhXw$rvXUE4g1!OtK{+<038NlB++0E&-KY+ixr)G+X}$x!%oKydvRf&q-g+74M+xK09ckqeQ%%o-hNyD#|i)^ z6&4rf-RJmar!NW+ju%P|w-W#)V#6e2!?5C9cbx-(2gmCRr3SZdTouKzr~O~xTM86P z4Y&OXO4VHwv0<{;(;Yp1`gpxq15hki+;#{lzs&Tn3!KbhaV@4nXb(1C=O6s?JKgsE zYuligZb1-qb6y5g&jW;GkDhG0QU}NRM^838*2qH1fym@o+;te7fJ~0XRhXjYKxDgC zXL2m=s$g;~&UUS?!W1<%0B~mmfz0vOi*yAfO~V~_<}RNHoGuWJgq%sy69^eduK`Dg z2?DhXFLeP`DIh%nfzu_9B9GbmDN5nH^Gr;=2jHqgHp)(g!};K)@Y_4Y z)ug_QvKk=R{9u)EsX?Q1OZQPx)DM>^@RCt{2n$K$!TNKAXc|7ou+(}6%g5gPE9yGCJX+SKlo4p{o73{WKp$iu- z1h;Nm=pWEOAf#)5Y;+mabTJSj37Tnee(@9@^A`4A^J8jLI(K|N=L><%+@I&%bI$kN zdj~RP$dDmJh77+da%m1GgosSjJhj|$9DLtTbxyyhHINj(SS*sy=P8v+s%$cu5Qd?A zjM7xXZ)puQjW7(EOeVmB@Tntp1-PzzuJ^i;x&n&D;KKtcR7xMr7O{39R=p!5*V@%a^ zU6%q-St(;5dxT-A`j_J+fkYHw7)ERmTwh-YP)q=D`SRsc`;jal@!{h~6-ej%ACJdL zOkJM^*tU)9x?H((W$Au`69vef;%GEdIlzC~0^%SOp?bZ}yLaz^uX%qE1U!58Y@zg%U-0SUQc)oPX1)m56!Ch&Cyr658GHa9nU_39PJ$H(;h{h45@6RDgB zbUGdS{XR!WM;sm=;`_c5-t#H9-Ba!N_xE}6;>7|BbUGd6 zT|%u^n?4Un>`){T3-EnEXWO=-s#>k4_Vh9Unx@Ix+8Udin+PE=jIY~d!!Qs+U|AMx zYil#Y16qZL1YICb2@-KEP%f7-41;pHjPLu{wjIj?I)w)fr^3_jAfx^~PRj)2&}cNY z2@e_)p%Y7pWZ;@VF6(x?Jb(T?wr!))Q1ztHI)w*~_X5%qwzjsYR4ND|*xTEi$p?Jj z&&ktdDg6EW_wjw7;c&?A?ygqhA*Be#koE@?i9!ew2_d2z zH*Q4of0Ff+fcCwBWP?_#MWfL;^}x7eYjHUxaFB0j(||FH7X7 xG0Pwb0!pP)Y804?uT9h0Sr)KNy$l(W!@uUs>V`6) literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..7bbc5758479855fd5f81b03fa881110a5ac3c369 GIT binary patch literal 843 zcmV-R1GM~!P)Px&1xZ9fRCt{2n!jt~NEF9EzB{-(YwWXZrMYejgG0)#HnuO-7RNb_TqUbD+P6k#=)kjB1=6f8+or&;M7lXbf#8iKp^8bWnHvA$nh*GMa zOePG6L;C&xtA15g@$m2fP)mvM!v#=E)wTBry+1v20OvP$pFY3v(;q*O|NM>Kz@zSc zLkWo>QUiWhj%n{ceMW1|U@$Nrt#wP3r~W@0kz3#?`s0Te8Ib4s_Y5ct>2PEOaPlt< zdcOkD|Lc*bk3hr2BUE1jsPiv8N(6?G0EdT%IL`O9J~%jd)$i`^4uG;OiK0j%G#LS| zuC5pkhXCB(-oENrRTV()6-L955v%iP?n|f zmq28)(ail_*CmP~mdhm<7Z)T+g6DahoSYB@0rUBsEXzdK1|su-q9}TC9Gic3JRXxI z33;BABnjj37(o2TgYaS~j$_l#^SpI^ZkIxAE#Uh;j^i+yOqk7PE&FUXW4T;%e}7L| zmTWc~v9*9$1~`txbUJ0RSfG?@*_2W&77M1+sVS6Fh)spdvgGFGhBQq%K0a>QilX51 z^3r60Bq9P7MbX=AHfBGdDS8dp*VhC=(DIjv3xtcH*4nfOgF);1+%ARaYOvW1Nz)Y1 z^8oNXk2FnNc1c79a9x-Ad`=Jqt(jmm3F-pz{Q$>t@O_{2^K;YZ`#ykp0R+JsP!vTk ziXyh#ZL6oUazG?0Xh(1wOZl2ZmZ9AT~@1=bSQwZ z0L`LkG#a(~N25_^r$g`lWJpv1rBto8X20LJ`uF=iTI+vxdh}mmi=gy?wg}oH__nY` zPaDyiWwBT+7K_DVu~^<0e*;m% VX|WYLg@ynC002ovPDHLkV1o7Kk>~&b literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..135ff86ab5863ce6b2ece46739e7a7eed6612673 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4ay&g<978JR zygg^g$e_T%V6ds+;*n(`Mto%-9^MqvVFIdvfQJ0Jrr)2GT+4}viJ;ICUl|&9v&n6p R(|!ab?&<31vd$@?2>{FeBq9I+ literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..e617be2bf91b31a5c7fbe4088969347adab27e5a GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4a_T)@978JR zyuGlSlgUwp^}_bfl?j~8hn6&%CF@=@J}Z&4YePbY#*A5K+?FllpHnQgV?GB^7X&qT~fW}k>CHiD(@csx^YR#$xnY1j=W`HI4~h<<=;x{?_pWz-%U#V@)xEL bP9MmZ_KcE!p=x%<1SIC^>gTe~DWM4f?`TB4 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..eb16f29278eeca62642dfd4715855dc52b2a6724 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4aymU-978JR zyuF~y<>V;Bc475FtsO0liK`aOF4SF@ZuYq;RG{Y=`}(M3DO=+T&)q!mU6>K53j+Q$ zhq`5GZHqrjXuRO?`K=s=V``nsaESYQ+`bS`})j> m)LF)lFZb?~hZzB*8`j@rOHsD7m)WNR67qEQb6Mw<&;$UJs7ERQ literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..a7c4b3df0619df93f08881f4fc1bea520fd11782 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4a@KjeIEGZr zd3(b!?@)jM%LT`-J8p~oQaPVoV-4phf6%axr`20vnnjapl+^M@ySr{5tIz6}r)|CJ z57Y|*4gV8@4NEe1FTHR3x$?%d!gB+l!a<_-1 zulx}Ht3HJHUHSQ%+V_+1OsWp;vU*=X!LB&-|0ZUM*r# literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..3541031ce54b188b17415c239b99728cba7721fe GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4ayEOqIEGZr zd3!_A?}&p0>x1KMS0=4-GmQ+2J}7#_y5K+@TOj96HCrd)9ACpLkN@%hwKM*-*F5Qn z3Q#Wu9H{>gAZWGa?zQ-9HhbrN{<|?{&a6G><5goVR)dJ;9Toe5;l_Z(;g!vrL&i d%o-S7|AqO$30)(rtJmc~LY}UEF6*2UngI2dUYP&@ literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..1d76b9e0d45bf1bee88d4be5dc890ee735c687fe GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4a<+TAIEGZr zd3(b!>#&0W>xK6MSEPcL3*A@|I#K&b`3c6-nIc-kIv)gC^6qN*-dQd^xpw`{Pv_&s z*vuG#x*_0SbFAx&EBv=BcBKCQHtF^AS(Pt875>zlx%AXuzNj~R3=AfjuiD?fzLFno zpL2C{NX3+Y=R*%ZemL#=_vA^%MJs15I`>yT#&0W>xK6MSEPcL3*A@|I#K&b`3c6-nIc-kIv)gC^6qN*)-;49Z+dSUeeVBh zk<)5G-4Jk~e#2@BtFMR6 zwXe1EZgqe8KgP7e=FX>Ibv{LYdZC)H?)-N=wr1(y`LEnQbLcoc2BK5<7(QQ8wfsNt n?ab+V$=A|;GsA3y&>z(8k6zO?J9d{-2qfU?>gTe~DWM4fdURz% literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..bbab730d892ef72e72abe12ebaa4bba2fdc909de GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4a`t+#&0W>xK6MSEPcL3*A@|I#K&b`3c6-nIc-kIv)gC^6qN*)-;49Z+dSUeeVBh zk<)5G-4Jk~e#2@BtFMR6 zwXe1EZgqe8KgP7e=FX>Ibv{LYdZC)H?)-N=wr1(y`LEnQbLcochM-e&jh`>6TK=E+ ncII@wXR2sI4g9JQX{an^LB{Ts5rB7w7 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..7cdab8829a50ee8c157c8d38f659de44fea9324d GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4a`t<=IEGZr zd3(b!>#&0W>xK6MSEPcL3*A@|I#K&b`3c6-nIc-kIv)gC^6qN*)-;+VZ+dSUeeTaw z^WB_4-4O6W{*6|f-`@?r?a|-z^>@~-n>k%ie){`Kv8(R9UvTsd(E7>C>Tc}w`)l^~ zaM)h&R`-+tV@xY-?tJ=H=TqdT7aDzK=l|xONbk?~S9_lcYB)R=Sy0Gz!Gbj-=B9Q+ t+%A>p_cz;qzLa|AR!$wvN(lY$0sF2yx>l=#-cJJwc)I$ztaD0e0svvUXP5v0 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..8bba7f1a0f5a8530d1a432a1e2f3102dbdf0890a GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^4M6O`!3HERU8}DLQjEnx?oJHr&dIz4at?aBIEGZr zd3(b!>#&0W>xK6MSEPcL3*A@|I#K&b`3c6-nIc-kIv)gC^6qN*)-;+VZ+dSUeeTaw z^WB_4-4O6W{*6|f-`@?r?a|-z^>@~-n>k%ie){`Kv8(R9UvTsd(E7>C>Tc}w`)l^~ zaM)h&R`-+tV@xY-?tJ=H=TqdT7aDzK=l|xONbk?~S9_lcYB)R=Sy0Gz!Gbko4wK2c vHPx)Hc3Q5RCt{2nn7#ZNECp->=tL&Qe8vSP|2|1L!k{AN^&*i=p1rs&-w}e1^EH~ z1^x*-H`Tgwdj8dt@=g*%3zUh8;b_PJF(~?d?l#u7a{f&~Y3& z@*5i)Se6Aqzu#X;cB9b%W?pu3azdxm;r;vfxUQ>Y5me;?Yp&}~#mL{idsn)0tJT6N zm%mGHdU{HlrlJi_PEJUYM49rS$O8mo(W=+$)M_;V48xEHC>zF&oi)I4I3x%H zKhYntY?Ua!mVK@jl# zA9(TWY;^5fjc&KQv~IiICK?WTad;@}EXw-dtN~&Q1VO+bzx@t>eW7d^bi3Wz*0``E zq-jdG+r@Dl09i-K$;%Uz?gCd~tgq8(G;m#aPWf`VO!<6$FbsoMtA*>jG#U+z^>rOx z(_?^#_8t2D{w3uFi$>`8`#iLBbIv)m7~n@HR|ELI|3k>Qj@=pw((&nkE40*RS%KtCU|X6Ln0}q}6H> z1i@UQMHR{nV4CK%-ELE@R&g8$&-1Wt8-Vc7FTjO@BBix>WuFmsY}>~3JQ+Z>+ij&r zP@WI4EQ?;RC!;!nNNQM?#b7WXj$>I?sZ;=X^yrby^kkDNLiwGY9Y&*((tNaq$gw%%7U{wtXRVy?qX zNimAqQ4*dJh9TqeSO!7j8jr_>VMwpnlSVjCv;eb=P}VrvHdjH(E+9Jg^5sk5;!u-y zQ86vXvp?S$8m_F2$-!4i=OhmDDeQXh}pJHrBYcsKPQt3 zM@L6Xl@}O>!O_tXlgVW6ci{<@N<}KK$^a{SK$0YDdwY8~dSi2)^8fWrk|b-LPDlBh zA!SKX6>@H)9W5P)*=`{YLur~WJr0X9&-1hyRnL(t!%ahBU1&cI-ZT`}g;o#9hQiAj zjYjP5?&5i#wmxZ@XQpXRv!QUW*OTFI9LH2D72-ISp)SlqVIAv$Ru9OY6GTu05JeH? za+zMQH)jMLXf;4K8hmh``xj)RKyixHfi?p~QFP-_SSQ+cfmK4`Jkh!ht`Z98#ZR9V zzLiiI=HCkdoSvQnXb**ddJoWk765qs_%Xm-UJx$4KquM_VB0ot-n>~__Vnpf27`gt z{%AFTVHmu7_wL%aJ)4`G8hfO94LCkNzE*kP_c=a3*4U$4SOo9izyDojd7*6^gxOZu zY&QAu;ltAMCr_T>`@Xg<5HuSAE{w1Y-O9r)7yz#R`@C-D0saM_pTcKR%4bLb0000< KMNUMnLSTXgy`sqg literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..bc76168636a21ca488878e2b67226c75e3e601bd GIT binary patch literal 977 zcmV;?11|iDP)Px&i%CR5RCt{2n!QfzNEF9^cXi1Xc=#xyXfYBZ(nW$I9c3g+*W?Y-Q&9T>@&xH= zQYUpveDeU2Qh=5s70wE!2$Aj8WmobRVJw@Ee3%)ytDT<|IX<5Mc+SBy=Zpgw3rqYHvS`}nlqKnM|+%jNX>-1b2bB;SX_q4pqX?OZxP91e5o zrB-JUv~?_mh>OJ{)!M)sjA2*2s*G)O^}0 z9v>e8czAeN`6#tI`H(5_9&}FuEuFrW_8i9nz}ncDs|}+FfNr<@;+l>id{y0{5F$Q5 zKgYIhc6WCH7>!1_u1oFgj19|L*hjn5q0wk$^uF)YY&K)nK~Nq5AaTB4uO~Lgagx98 zJi;i#aU5LNO>CE!mpX)L{#Z4D?E zi)?Ogt{i|U41w8`AOisUszT*yFzx(XWpAt1TFUm+A27=XdG{3aP!a$kL@YlSYwL4U zU#r#PVr@O+@N2f`jK^ax*48ukQZe>-uL0>*-*sKAZ{OhWzW^8v2AQ_CvonB98%f&M z?sPKO^)mYbU!0FI81I6OQ|oH_jdJ*f(#FicYB zBAsfq1i<%wf*`>2JPr;H0Ps8yfa!EPJOA+`mrga>-UxY~N2ydw&P%0I;tb3xyYy#S zooci^0h7rD>y=H9Wm!xn6X4}aE`*4e(Wyq;ZqRWYEX&GNbYU3M?RMW>$nxsmgZ7uA zzd9xWpFM!j#suKA2k_Zw55WHZK07-*AEsLstpTuY8_)CT_xsqktzDM~ZF>RBvgr5w z^m@I-magzr>++&40QdLzTwh-&=jrb{ba~PG<7l;7O&mBrKBm{}Ev)A9>hhxfKSZk4 zD!@ukNnD+w`yZc&t`^T$#S) h+t%02KyfH&Fy`I3nw?Rwc;y?Ah^MQc%Q~loCIE60EFu5^ literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..eef8e7aca58894a5328129b69f45cb15405f194c GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|B0XIkLn`LH zy|j_D!9l>~qHB-H5g(m{2VQJoj^6yvbSvX|=X==?{0#(wY8mz@uQ&X@_57Y=f2vLg whbtH51-n@$&1~-|y5g~I`Biq15-9jz!W^T;?-B2ByA&ki>FVdQ&MBb@02{V5oB#j- literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..0dd49f106519d23e75b45f471d7d42208c3f7b49 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|ay(reLn`LH zJ-3ke5Q9X^#pV!4r-Bwi0gX$%5xr|~ELi!Dr)0cvWfypkM$ zy*T*ty1$y9+q`@3=(nF*d-mmy(_8*8h)jB7xyStFZmIbBOWuFd2C9aF12Ow*(xp9i S>`8tN67h8Pb6Mw<&;$Uj^+I<5 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..5615c7b5c3be42d7fcbed91eeddd155d9739ab8e GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|vOHZJLn`LH zJ-3ke5Q9X^#pV!4r-Bwi0gX$%5xr|~ELi!Dr>YPI2yUr+uLTgMGl3FDv6r)<)>SC&nTAJ?DD-1q4o3s6(T{}s2l z`5oVPZOha3zTFdF?^r!Y-||iSnoRH7?uoyXUmE#;t=T)d^3--FpkgTa^NLxs)%03N Rry|H&22WQ%mvv4FO#nI1L)riU literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..1e1dfaef55c771131a40f101f03a95f6c7536ed4 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|Dm`5sLn`LH zy|9tFAOAkRwUGtm#ASK@t1bJ=bF@kE;T;Fc~`&+O2XJm`3oP7E%%c%G1#~Ss^GvYs2{WtM` f!wk|00sqd6?_BM)VZZ1%0g!;FtDnm{r-UW|te-|^ literal 0 HcmV?d00001 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 index 0000000000..75a018b665 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Shuttles/launcher.rsi/meta.json @@ -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 index 0000000000000000000000000000000000000000..eb000ac7b504d1aaa8c151ca2d7e1a2156bc9c93 GIT binary patch literal 1440 zcmV;R1z-A!P)Px)T1iAfRCt{2nqO#BR~W#5DI2+0cYB*&O{eE)91$H&LV$H&LV$H&LV$LFaq6pwpD@woRi)^1R>P(1;K z;0Js55silH&XLVCDi#@v$GvDY%#mEwJD*MmgrJ7512A%KoR>R0RcxgO=?WN%$2}ov zJQBff?eK25Zlxt`kq4GCSzhSc&$UdJ%;H_y+o>U-Vv(VE+?&tkaCdgoXc`opBDrj~ zYEH9d(P$cE7Vk1KaY4zxK#>9f5{Z5<+`6?a{O{S{s_t*Gwm%gmNIe4Ltk36i*lT0; zga^uFjiv#>U}vWn(lkb=rlcxDS`-kD?{X?dJQ6|EH40AgZ=WkTMKoO_77AhLy7b5( zJq$jncQ-AAA7*Aa*t1Wn5~L|$bZRPaF7uEdA8z7oZW;K?ydOuSY2es4W3zW?Xz$_F z)g|(-D{Gtb6wuo@;Ay&6HP#ZgXtpf2Slesn3n$nTwyMT8U1PDOUDh_`IKke&0Z(}I z7yrl-?bycHY!cYm3Ysm8j*d1aE=^K$3mog%MmnA0S1iJ(_^}#l<8u*QaST4Vo>h>S{ENvhV=ubcVd^GBI%>P;iR>==eMd%4&h*-P4Q@2LVXk zO5xac)s?!HqU07B9}aT7dz!rKa%N^mdM=<$0fO=2ASJg@_Yw*Muqh3B>KJ4si{CZ zodIBQM5mavH+-&`v>6=HtHu(Eeoy!m8A#J|Z{L6i;Fer$CsT9(`>#3x2ySj?<=z~x zyg6Glr^yT>LaB@h0FsNLM55mVu$>IYyQevNcvsCYyq+^BN__jvO-^6wqR9*cNG*({ zpEHrhUMM}}%!v}fhDxZse`8jS50JWuXoi@U!Px8_bghxGcb70?O#tZe{u&2(?6Ve1 zZh@Y_10`WlNfh|z;$_&fn*I)b`8+{Q(v&u5&iGjIK4JX&OOItI6yNPLUPY#dTduZh_aDpJVTyom`r{Dzzt|EDvZa zIV=F0R$U;OritS?mEX9+ch39c!j(h7tH2x5p&h(+a@B$(Dt1s=B`qD&M zF;r;<8zHQtY11aUcgHx`vyYK;<2YG4X)q{M!1;7K0JToA5^=A4cMK<66f zjzBV>R~7}NDWLKNXgm_Zv<%2Cm(5(1%#}HSAQlSA+Exuxe1ORQE~irL-Ln(ZG7voh zLA@TIP);(Rm$9w7NV5RbGI;&a0WM8m1=gZ~ZZi7Tt+irkspc8c5K+|*1BscSI0C|n zO@6$~Gh$6Nw8sFd+F_z80`O=qNik{D^TEykemN|t6#mg%l0zqJJ465%KMj}Xs8WKG zJYeDWU5ZKjvBCo!I+-a8zi?a4pCy$2Kj5P`@Bq5n4Bq>qehPf*ZHMWF)tunNuhr~L unF0ht5gVaOa33EZA0HndA0MCpIe!8L%45pi4-~2Z0000Px%!AV3xR9J=WS3PgjKp1`;Sq>ylB+>-6F=a@rstS&}pt3}Q33&%G^8=Wf^CLR< zAF!t*CppP;7&RE!2Hl^)$TT#Oe7rqY^WT;}KNvUO70Z+lBauom)r?>BnapC)kGbM`* z0O*AR7r}&xuu@pyeHd>VqV`#RQ~+=tM~XBJ*KvgHN&XmD1ptpyc$B6VAVL~{Dj@`h zVay$j5E84)`Xhuuoo=KO%5%A#l=EqE42EHFkr4ruQgpjrOePbdV@=awnx>Qp8Dx^X z{8_|O@Vju+S_prO2-rV8mU6y-dW^@pTCCl&tbpZxb8}P34+~R|0w2!#5CBjwEuw3W z5(U&ti#WLAxPi}u*J?GGrYSWDw%9XEN*3$I3f7C2R5QRhOG*~^T5tH}Gx+oYJ3BkP z^p5u)z_`=s*4{egSp)T2fA@^b-I8002ovPDHLk FV1o6ySr`BS literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..ed52d0851f2b50677c4d145d4e81a41de40953fa GIT binary patch literal 919 zcmV;I18Dq-P)Px&QAtEWR9J=Wm)&aoSIb`FYFvAACpW|VJ~(c7|xk@ z-sgRvIp>{o&cJ^i3V>l4Znpt)xtww=0fu3?!$U(|2iV=)JC=wZ|IN$t7A33FmQb=P zyew~Zo39BGfASO2DC4ogwuJH6ASEi4tV*D7*eT8Ba!SN+_)x1sEDSXmN10N?FkCqW zKO{~8bR6E2RpCRe)^Vi5q6a{W#iR&NND#(jgVM+2H6qB~$|nL~TUIDiBW%kGw0DZ< zaU%eZ5I8~{SwIku5-(z!Cdp*7>tv>BHrcQZ+tL;vILR;Pe*7*; zI|@h)54Usd!}aEUettes zoL^XE+pS@}-veM;A7Oo~EE5J{S|8!{A;)%WGWpop7^ze$kmrY2>^-AOl&St9ruv8E z2y{Yme@Ajgl_&$*MY;KGzIe#m+L~;gonl=pgkW`bRmSSsc5A$TzbD@a;E$hvYnj+@ z_c+^bjknnqc^=rGAW+nSl>QZe-XCA#Kc6$KD4QU->(#bBG&`n)L#Rivx_d*9splA zDlbmEz7)_H*l`>Zi9|qJD3{Akwzt_8<)fy#-sj~{5Yz|Q+}uRbG|kOqGJy#@A)n7< t+qR-002ovPDHLkV1nviqyGQ^ literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..bf313a1e5ce510ddf8347c40771fcae70358adba GIT binary patch literal 803 zcmV+;1Kj+HP)4Tx04R}tkv&MmP!xqvQ>CI62Rn!eW~fdUii$W&6^me@v=v%)FnQ@8G-*gu zTpR`0f`dPcRR=oSM(uB6~(B;Og)ia%)oPf-NVQCy9m$nzW3+qSMnwUd?N82(+!JwgLr1s z(mC%FhgeBch|h^93~G@0k?XR{Z=8z`3p_JqWK#3QA!4!E!Ey()lA#h$6NeR5qkJLj zvch?bvs$UKR-gQZ!MwJT<~r2~;#figNr;e9Lm3rVh|sQ)Vj@N7F%SQ+<4=-HCRZ7Z z91EyIh2;3b|KRs*&BD~An-q)z-7mKNF$M&7fo9#dzmILZc>?&Kfh(=;uQq_$Ptxmc zEqnwFYy%h9ZB5<-E_Z;TCtWfmNAgn%g#z$?M&FbJ25*7hHFs{UbDTZ^8JgAd4RCM> zj29_;-Q(Roopby5PHTQYq5^WdJ4uHv00046NklDZ8zegN9Yl{Xphq_dW0Uqg=EvMRC<9fgdpld4M^xFT}|*eW;!;4ecxu1ykx$Y z$D3h55ClOG1VIpl|A>_pd`+6S>iWUzz3WWeda5T*^@3`n#AL9b+9*-3*#PuALxSgF zrrXrtyssp#XK#(o$1%OPsReMpM}D<*ua(4n90L$dzE{TOSQe&!*R#32siZ}pjbh3* zo7pJl>tmX}x3vID9);G6<0nL+h2tlWI!U;m&GlV9m8&k83>JI8J%oQgUj5Pam||xK z062a^i#CDZ&EwpV^gF|qXQ~VGbbzVf^=!5+!CW1nXwgo`0KFvC8Z*JfpJ$H&IMYw- zw2%TEJAq@9Spc=}bl2aZD8ipvfGD&G=n{p-``NE3!oPFo^@9lTse2kTp(y{K9fc3U hvHgM|2!bG-Ha|VMtG$t$m_h&m002ovPDHLkV1lB_cMJdk literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..869aee685a404a7a6b027c270ef6f504504f7274 GIT binary patch literal 1047 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 Y02}Ewnr@L;u>b%707*qoM6N<$f{Iybi~s-t literal 0 HcmV?d00001 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 index 0000000000..8a1714eac0 --- /dev/null +++ b/Resources/Textures/Structures/Power/cage_recharger.rsi/meta.json @@ -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 index 0000000000000000000000000000000000000000..28d040cd32217924293b317ce1fb895c066e9571 GIT binary patch literal 775 zcmV+i1Ni)jP)Px%!AV3xR9J=WS3PgjKp1`;Sq>ylB+>-6F=a@rstS&}pt3}Q33&%G^8=Wf^CLR< zAF!t*CppP;7&RE!2Hl^)$TT#Oe7rqY^WT;}KNvUO70Z+lBauom)r?>BnapC)kGbM`* z0O*AR7r}&xuu@pyeHd>VqV`#RQ~+=tM~XBJ*KvgHN&XmD1ptpyc$B6VAVL~{Dj@`h zVay$j5E84)`Xhuuoo=KO%5%A#l=EqE42EHFkr4ruQgpjrOePbdV@=awnx>Qp8Dx^X z{8_|O@Vju+S_prO2-rV8mU6y-dW^@pTCCl&tbpZxb8}P34+~R|0w2!#5CBjwEuw3W z5(U&ti#WLAxPi}u*J?GGrYSWDw%9XEN*3$I3f7C2R5QRhOG*~^T5tH}Gx+oYJ3BkP z^p5u)z_`=s*4{egSp)T2fA@^b-I8002ovPDHLk FV1o6ySr`BS literal 0 HcmV?d00001