From 08824352935c22ddf7dcd73ff90dd027a48329fb Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Sat, 23 Mar 2019 15:04:14 +0100 Subject: [PATCH] Fancy guns. (#152) --- Content.Client/Content.Client.csproj | 4 + Content.Client/EntryPoint.cs | 5 + .../Components/Mobs/CameraRecoilComponent.cs | 87 ++++++ .../Ranged/BallisticMagazineVisualizer2D.cs | 41 +++ .../BallisticMagazineWeaponVisualizer2D.cs | 50 ++++ .../EntitySystems/CameraRecoilSystem.cs | 27 ++ Content.Server/Content.Server.csproj | 5 + Content.Server/EntryPoint.cs | 9 +- .../Components/Mobs/CameraRecoilComponent.cs | 14 + .../Projectile/BallisticBulletComponent.cs | 31 +++ .../Projectile/BallisticMagazineComponent.cs | 105 ++++++++ .../BallisticMagazineWeaponComponent.cs | 251 ++++++++++++++++++ .../Projectile/BallisticWeaponComponent.cs | 126 +++++++++ .../Ranged/Projectile/ProjectileWeapon.cs | 33 ++- Content.Shared/Content.Shared.csproj | 3 + .../Mobs/SharedCameraRecoilComponent.cs | 28 ++ .../SharedBallisticMagazineComponent.cs | 12 + .../SharedBallisticMagazineWeaponComponent.cs | 13 + Content.Shared/GameObjects/ContentNetIDs.cs | 3 +- Resources/Audio/items/weapons/casingfall1.ogg | Bin 0 -> 10378 bytes Resources/Audio/items/weapons/casingfall2.ogg | Bin 0 -> 7855 bytes Resources/Audio/items/weapons/casingfall3.ogg | Bin 0 -> 13222 bytes Resources/Audio/items/weapons/gun_empty.ogg | Bin 0 -> 4792 bytes .../Audio/items/weapons/smg_empty_alarm.ogg | Bin 0 -> 54294 bytes Resources/Audio/items/weapons/smg_magin.ogg | Bin 0 -> 9302 bytes Resources/Audio/items/weapons/smg_magout.ogg | Bin 0 -> 5728 bytes Resources/Audio/items/weapons/sources.txt | 7 + Resources/Maps/stationstation.yml | 4 +- Resources/Prototypes/Entities/Mobs.yml | 2 + Resources/Prototypes/Entities/Projectiles.yml | 19 -- Resources/Prototypes/Entities/Weapons.yml | 22 -- .../Entities/weapons/ammunition.yml | 50 ++++ .../Prototypes/Entities/weapons/guns.yml | 35 +++ .../Entities/weapons/projectiles.yml | 19 ++ .../Textures/Objects/c20r.rsi/c20r-1.png | Bin 0 -> 509 bytes .../Textures/Objects/c20r.rsi/c20r-16.png | Bin 498 -> 0 bytes .../c20r.rsi/{c20r-8.png => c20r-2.png} | Bin .../c20r.rsi/{c20r-12.png => c20r-3.png} | Bin .../Textures/Objects/c20r.rsi/c20r-4.png | Bin 509 -> 498 bytes .../c20r.rsi/{c20r-20.png => c20r-5.png} | Bin Resources/Textures/Objects/c20r.rsi/meta.json | 2 +- .../Objects/items/ammo_casing.rsi/meta.json | 1 + .../items/ammo_casing.rsi/s-casing.png | Bin 0 -> 231 bytes .../items/magazine_12mm.rsi/12mm-0.png | Bin 0 -> 356 bytes .../items/magazine_12mm.rsi/12mm-1.png | Bin 0 -> 385 bytes .../items/magazine_12mm.rsi/12mm-10.png | Bin 0 -> 390 bytes .../items/magazine_12mm.rsi/12mm-2.png | Bin 0 -> 389 bytes .../items/magazine_12mm.rsi/12mm-3.png | Bin 0 -> 396 bytes .../items/magazine_12mm.rsi/12mm-4.png | Bin 0 -> 412 bytes .../items/magazine_12mm.rsi/12mm-5.png | Bin 0 -> 414 bytes .../items/magazine_12mm.rsi/12mm-6.png | Bin 0 -> 415 bytes .../items/magazine_12mm.rsi/12mm-7.png | Bin 0 -> 417 bytes .../items/magazine_12mm.rsi/12mm-8.png | Bin 0 -> 412 bytes .../items/magazine_12mm.rsi/12mm-9.png | Bin 0 -> 400 bytes .../Objects/items/magazine_12mm.rsi/meta.json | 1 + engine | 2 +- 56 files changed, 957 insertions(+), 54 deletions(-) create mode 100644 Content.Client/GameObjects/Components/Mobs/CameraRecoilComponent.cs create mode 100644 Content.Client/GameObjects/Components/Weapons/Ranged/BallisticMagazineVisualizer2D.cs create mode 100644 Content.Client/GameObjects/Components/Weapons/Ranged/BallisticMagazineWeaponVisualizer2D.cs create mode 100644 Content.Client/GameObjects/EntitySystems/CameraRecoilSystem.cs create mode 100644 Content.Server/GameObjects/Components/Mobs/CameraRecoilComponent.cs create mode 100644 Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticBulletComponent.cs create mode 100644 Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticMagazineComponent.cs create mode 100644 Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticMagazineWeaponComponent.cs create mode 100644 Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticWeaponComponent.cs create mode 100644 Content.Shared/GameObjects/Components/Mobs/SharedCameraRecoilComponent.cs create mode 100644 Content.Shared/GameObjects/Components/Weapons/Ranged/SharedBallisticMagazineComponent.cs create mode 100644 Content.Shared/GameObjects/Components/Weapons/Ranged/SharedBallisticMagazineWeaponComponent.cs create mode 100644 Resources/Audio/items/weapons/casingfall1.ogg create mode 100644 Resources/Audio/items/weapons/casingfall2.ogg create mode 100644 Resources/Audio/items/weapons/casingfall3.ogg create mode 100644 Resources/Audio/items/weapons/gun_empty.ogg create mode 100644 Resources/Audio/items/weapons/smg_empty_alarm.ogg create mode 100644 Resources/Audio/items/weapons/smg_magin.ogg create mode 100644 Resources/Audio/items/weapons/smg_magout.ogg create mode 100644 Resources/Audio/items/weapons/sources.txt create mode 100644 Resources/Prototypes/Entities/weapons/ammunition.yml create mode 100644 Resources/Prototypes/Entities/weapons/guns.yml create mode 100644 Resources/Prototypes/Entities/weapons/projectiles.yml create mode 100644 Resources/Textures/Objects/c20r.rsi/c20r-1.png delete mode 100644 Resources/Textures/Objects/c20r.rsi/c20r-16.png rename Resources/Textures/Objects/c20r.rsi/{c20r-8.png => c20r-2.png} (100%) rename Resources/Textures/Objects/c20r.rsi/{c20r-12.png => c20r-3.png} (100%) rename Resources/Textures/Objects/c20r.rsi/{c20r-20.png => c20r-5.png} (100%) create mode 100644 Resources/Textures/Objects/items/ammo_casing.rsi/meta.json create mode 100644 Resources/Textures/Objects/items/ammo_casing.rsi/s-casing.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-0.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-1.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-10.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-2.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-3.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-4.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-5.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-6.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-7.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-8.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-9.png create mode 100644 Resources/Textures/Objects/items/magazine_12mm.rsi/meta.json diff --git a/Content.Client/Content.Client.csproj b/Content.Client/Content.Client.csproj index eb6b73f8fc..9091c2f9c1 100644 --- a/Content.Client/Content.Client.csproj +++ b/Content.Client/Content.Client.csproj @@ -77,6 +77,7 @@ + @@ -84,7 +85,10 @@ + + + diff --git a/Content.Client/EntryPoint.cs b/Content.Client/EntryPoint.cs index e293421bc4..6b9bcbdcd4 100644 --- a/Content.Client/EntryPoint.cs +++ b/Content.Client/EntryPoint.cs @@ -25,8 +25,10 @@ using SS14.Shared.Interfaces.GameObjects; using SS14.Shared.IoC; using SS14.Shared.Prototypes; using System; +using Content.Client.GameObjects.Components.Mobs; using Content.Client.UserInterface; using Content.Shared.GameObjects.Components.Markers; +using Content.Shared.GameObjects.Components.Mobs; using SS14.Client.Interfaces.UserInterface; using SS14.Shared.Log; @@ -100,6 +102,9 @@ namespace Content.Client factory.Register(); + factory.Register(); + factory.RegisterReference(); + IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); diff --git a/Content.Client/GameObjects/Components/Mobs/CameraRecoilComponent.cs b/Content.Client/GameObjects/Components/Mobs/CameraRecoilComponent.cs new file mode 100644 index 0000000000..4c25b5b94a --- /dev/null +++ b/Content.Client/GameObjects/Components/Mobs/CameraRecoilComponent.cs @@ -0,0 +1,87 @@ +using System; +using Content.Shared.GameObjects.Components.Mobs; +using SS14.Client.GameObjects; +using SS14.Shared.GameObjects; +using SS14.Shared.Interfaces.GameObjects; +using SS14.Shared.Interfaces.Network; +using SS14.Shared.Maths; + +namespace Content.Client.GameObjects.Components.Mobs +{ + public sealed class CameraRecoilComponent : SharedCameraRecoilComponent + { + // Maximum rate of magnitude restore towards 0 kick. + private const float RestoreRateMax = 1.5f; + + // Minimum rate of magnitude restore towards 0 kick. + private const float RestoreRateMin = 0.5f; + + // Time in seconds since the last kick that lerps RestoreRateMin and RestoreRateMax + private const float RestoreRateRamp = 0.05f; + + // The maximum magnitude of the kick applied to the camera at any point. + private const float KickMagnitudeMax = 0.25f; + + private Vector2 _currentKick; + private float _lastKickTime; + + private EyeComponent _eye; + + public override void Initialize() + { + base.Initialize(); + + _eye = Owner.GetComponent(); + } + + public override void Kick(Vector2 recoil) + { + // Use really bad math to "dampen" kicks when we're already kicked. + var existing = _currentKick.Length; + var dampen = existing/KickMagnitudeMax; + _currentKick += recoil * (1-dampen); + if (_currentKick.Length > KickMagnitudeMax) + { + _currentKick = _currentKick.Normalized * KickMagnitudeMax; + } + + _lastKickTime = 0; + _updateEye(); + } + + public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null, IComponent component = null) + { + base.HandleMessage(message, netChannel, component); + + switch (message) + { + case RecoilKickMessage msg: + Kick(msg.Recoil); + break; + } + } + + public void FrameUpdate(float frameTime) + { + var magnitude = _currentKick.Length; + if (magnitude <= 0.005f) + { + _currentKick = Vector2.Zero; + _updateEye(); + return; + } + + // Continually restore camera to 0. + var normalized = _currentKick.Normalized; + var restoreRate = FloatMath.Lerp(RestoreRateMin, RestoreRateMax, Math.Min(1, _lastKickTime/RestoreRateRamp)); + var restore = normalized * restoreRate * frameTime; + _currentKick -= restore; + _updateEye(); + } + + private void _updateEye() + { + _eye.Offset = _currentKick; + } + } +} diff --git a/Content.Client/GameObjects/Components/Weapons/Ranged/BallisticMagazineVisualizer2D.cs b/Content.Client/GameObjects/Components/Weapons/Ranged/BallisticMagazineVisualizer2D.cs new file mode 100644 index 0000000000..f4a4df10b7 --- /dev/null +++ b/Content.Client/GameObjects/Components/Weapons/Ranged/BallisticMagazineVisualizer2D.cs @@ -0,0 +1,41 @@ +using Content.Shared.GameObjects.Components.Weapons.Ranged; +using Content.Shared.Utility; +using SS14.Client.GameObjects; +using SS14.Client.Interfaces.GameObjects.Components; +using SS14.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components.Weapons.Ranged +{ + public sealed class BallisticMagazineVisualizer2D : AppearanceVisualizer + { + private string _baseState; + private int _steps; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + _baseState = node.GetNode("base_state").AsString(); + _steps = node.GetNode("steps").AsInt(); + } + + public override void OnChangeData(AppearanceComponent component) + { + var sprite = component.Owner.GetComponent(); + + if (!component.TryGetData(BallisticMagazineVisuals.AmmoCapacity, out int capacity)) + { + return; + } + if (!component.TryGetData(BallisticMagazineVisuals.AmmoLeft, out int current)) + { + return; + } + + var step = ContentHelpers.RoundToLevels(current, capacity, _steps); + + sprite.LayerSetState(0, $"{_baseState}-{step}"); + } + } +} diff --git a/Content.Client/GameObjects/Components/Weapons/Ranged/BallisticMagazineWeaponVisualizer2D.cs b/Content.Client/GameObjects/Components/Weapons/Ranged/BallisticMagazineWeaponVisualizer2D.cs new file mode 100644 index 0000000000..6f50eb0eea --- /dev/null +++ b/Content.Client/GameObjects/Components/Weapons/Ranged/BallisticMagazineWeaponVisualizer2D.cs @@ -0,0 +1,50 @@ +using Content.Shared.GameObjects.Components.Weapons.Ranged; +using Content.Shared.Utility; +using SS14.Client.GameObjects; +using SS14.Client.Interfaces.GameObjects.Components; +using SS14.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.Client.GameObjects.Components.Weapons.Ranged +{ + public sealed class BallisticMagazineWeaponVisualizer2D : AppearanceVisualizer + { + private string _baseState; + private int _steps; + + public override void LoadData(YamlMappingNode node) + { + base.LoadData(node); + + _baseState = node.GetNode("base_state").AsString(); + _steps = node.GetNode("steps").AsInt(); + } + + public override void OnChangeData(AppearanceComponent component) + { + var sprite = component.Owner.GetComponent(); + + component.TryGetData(BallisticMagazineWeaponVisuals.MagazineLoaded, out bool loaded); + + if (loaded) + { + if (!component.TryGetData(BallisticMagazineWeaponVisuals.AmmoCapacity, out int capacity)) + { + return; + } + if (!component.TryGetData(BallisticMagazineWeaponVisuals.AmmoLeft, out int current)) + { + return; + } + + var step = ContentHelpers.RoundToLevels(current, capacity, _steps); + + sprite.LayerSetState(0, $"{_baseState}-{step}"); + } + else + { + sprite.LayerSetState(0, _baseState); + } + } + } +} diff --git a/Content.Client/GameObjects/EntitySystems/CameraRecoilSystem.cs b/Content.Client/GameObjects/EntitySystems/CameraRecoilSystem.cs new file mode 100644 index 0000000000..e1c7d9c8ee --- /dev/null +++ b/Content.Client/GameObjects/EntitySystems/CameraRecoilSystem.cs @@ -0,0 +1,27 @@ +using Content.Client.GameObjects.Components.Mobs; +using SS14.Shared.GameObjects; +using SS14.Shared.GameObjects.Systems; + +namespace Content.Client.GameObjects.EntitySystems +{ + public sealed class CameraRecoilSystem : EntitySystem + { + public override void Initialize() + { + base.Initialize(); + + EntityQuery = new TypeEntityQuery(typeof(CameraRecoilComponent)); + } + + public override void FrameUpdate(float frameTime) + { + base.FrameUpdate(frameTime); + + foreach (var entity in RelevantEntities) + { + var recoil = entity.GetComponent(); + recoil.FrameUpdate(frameTime); + } + } + } +} diff --git a/Content.Server/Content.Server.csproj b/Content.Server/Content.Server.csproj index 79820211c8..2c678c7603 100644 --- a/Content.Server/Content.Server.csproj +++ b/Content.Server/Content.Server.csproj @@ -81,6 +81,7 @@ + @@ -100,6 +101,10 @@ + + + + diff --git a/Content.Server/EntryPoint.cs b/Content.Server/EntryPoint.cs index 8016d35a2f..9524afa2ad 100644 --- a/Content.Server/EntryPoint.cs +++ b/Content.Server/EntryPoint.cs @@ -41,6 +41,7 @@ using Content.Server.Interfaces; using Content.Server.Interfaces.GameTicking; using Content.Shared.GameObjects.Components.Inventory; using Content.Shared.GameObjects.Components.Markers; +using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.Interfaces; using SS14.Server.Interfaces.ServerStatus; using SS14.Shared.Timing; @@ -98,7 +99,7 @@ namespace Content.Server factory.Register(); factory.Register(); - factory.Register(); + factory.Register(); factory.Register(); factory.Register(); factory.Register(); @@ -127,6 +128,12 @@ namespace Content.Server factory.Register(); factory.RegisterReference(); + factory.Register(); + factory.Register(); + + factory.Register(); + factory.RegisterReference(); + IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); diff --git a/Content.Server/GameObjects/Components/Mobs/CameraRecoilComponent.cs b/Content.Server/GameObjects/Components/Mobs/CameraRecoilComponent.cs new file mode 100644 index 0000000000..356f71cee5 --- /dev/null +++ b/Content.Server/GameObjects/Components/Mobs/CameraRecoilComponent.cs @@ -0,0 +1,14 @@ +using Content.Shared.GameObjects.Components.Mobs; +using SS14.Shared.Maths; + +namespace Content.Server.GameObjects.Components.Mobs +{ + public sealed class CameraRecoilComponent : SharedCameraRecoilComponent + { + public override void Kick(Vector2 recoil) + { + var msg = new RecoilKickMessage(recoil); + SendNetworkMessage(msg); + } + } +} diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticBulletComponent.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticBulletComponent.cs new file mode 100644 index 0000000000..fd686b84d0 --- /dev/null +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticBulletComponent.cs @@ -0,0 +1,31 @@ +using SS14.Shared.GameObjects; +using SS14.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile +{ + public class BallisticBulletComponent : Component + { + public override string Name => "BallisticBullet"; + + private BallisticCaliber _caliber; + private string _projectileType; + private bool _spent; + + public string ProjectileType => _projectileType; + public BallisticCaliber Caliber => _caliber; + public bool Spent + { + get => _spent; + set => _spent = value; + } + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _caliber, "caliber", BallisticCaliber.Unspecified); + serializer.DataField(ref _projectileType, "projectile", null); + serializer.DataField(ref _spent, "spent", false); + } + } +} diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticMagazineComponent.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticMagazineComponent.cs new file mode 100644 index 0000000000..c1c168e3d0 --- /dev/null +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticMagazineComponent.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using Content.Shared.GameObjects.Components.Weapons.Ranged; +using SS14.Server.GameObjects; +using SS14.Server.GameObjects.Components.Container; +using SS14.Shared.GameObjects; +using SS14.Shared.Interfaces.GameObjects; +using SS14.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile +{ + public class BallisticMagazineComponent : Component + { + public override string Name => "BallisticMagazine"; + + // Stack of loaded bullets. + private readonly Stack _loadedBullets = new Stack(); + private string _fillType; + + private Container _bulletContainer; + private AppearanceComponent _appearance; + + private BallisticMagazineType _magazineType; + private BallisticCaliber _caliber; + private int _capacity; + + public BallisticMagazineType MagazineType => _magazineType; + public BallisticCaliber Caliber => _caliber; + public int Capacity => _capacity; + + public int CountLoaded => _loadedBullets.Count; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _magazineType, "magazine", BallisticMagazineType.Unspecified); + serializer.DataField(ref _caliber, "caliber", BallisticCaliber.Unspecified); + serializer.DataField(ref _fillType, "fill", null); + serializer.DataField(ref _capacity, "capacity", 20); + } + + public override void Initialize() + { + base.Initialize(); + + _appearance = Owner.GetComponent(); + + _bulletContainer = + ContainerManagerComponent.Ensure("magazine_bullet_container", Owner, out var existed); + + if (!existed && _fillType != null) + { + // Load up bullets from fill. + for (var i = 0; i < Capacity; i++) + { + var bullet = Owner.EntityManager.SpawnEntity(_fillType); + AddBullet(bullet); + } + } + + _appearance.SetData(BallisticMagazineVisuals.AmmoCapacity, Capacity); + } + + public void AddBullet(IEntity bullet) + { + if (!bullet.TryGetComponent(out BallisticBulletComponent component)) + { + throw new ArgumentException("entity isn't a bullet.", nameof(bullet)); + } + + if (component.Caliber != Caliber) + { + throw new ArgumentException("entity is of the wrong caliber.", nameof(bullet)); + } + + _bulletContainer.Insert(bullet); + _loadedBullets.Push(bullet); + _updateAppearance(); + } + + public IEntity TakeBullet() + { + if (_loadedBullets.Count == 0) + { + return null; + } + + var bullet = _loadedBullets.Pop(); + _updateAppearance(); + return bullet; + } + + private void _updateAppearance() + { + _appearance.SetData(BallisticMagazineVisuals.AmmoLeft, CountLoaded); + } + } + + public enum BallisticMagazineType + { + Unspecified = 0, + A12mm, + } +} diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticMagazineWeaponComponent.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticMagazineWeaponComponent.cs new file mode 100644 index 0000000000..2914d2e65e --- /dev/null +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticMagazineWeaponComponent.cs @@ -0,0 +1,251 @@ +using System; +using Content.Server.GameObjects.EntitySystems; +using Content.Shared.GameObjects; +using Content.Shared.GameObjects.Components.Weapons.Ranged; +using Content.Shared.Interfaces; +using SS14.Server.GameObjects; +using SS14.Server.GameObjects.Components.Container; +using SS14.Server.GameObjects.EntitySystems; +using SS14.Shared.Audio; +using SS14.Shared.Interfaces.GameObjects; +using SS14.Shared.IoC; +using SS14.Shared.Maths; +using SS14.Shared.Serialization; +using SS14.Shared.Utility; + +namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile +{ + public class BallisticMagazineWeaponComponent : BallisticWeaponComponent, IUse, IAttackby + { + public override string Name => "BallisticMagazineWeapon"; + + private string _defaultMagazine; + + private ContainerSlot _magazineSlot; + private BallisticMagazineType _magazineType; + + public BallisticMagazineType MagazineType => _magazineType; + private IEntity Magazine => _magazineSlot.ContainedEntity; + + private Random _bulletDropRandom; + private string _magInSound; + private string _magOutSound; + private string _autoEjectSound; + private bool _autoEjectMagazine; + private AppearanceComponent _appearance; + + private static readonly Direction[] _randomBulletDirs = { + Direction.North, + Direction.East, + Direction.South, + Direction.West + }; + + protected override int ChamberCount => 1; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _magazineType, "magazine", BallisticMagazineType.Unspecified); + serializer.DataField(ref _defaultMagazine, "default_magazine", null); + serializer.DataField(ref _autoEjectMagazine, "auto_eject_magazine", false); + serializer.DataField(ref _autoEjectSound, "sound_auto_eject", null); + serializer.DataField(ref _magInSound, "sound_magazine_in", null); + serializer.DataField(ref _magOutSound, "sound_magazine_out", null); + } + + public override void Initialize() + { + base.Initialize(); + + _appearance = Owner.GetComponent(); + + _magazineSlot = + ContainerManagerComponent.Ensure("ballistic_gun_magazine", Owner, + out var alreadyExisted); + + _bulletDropRandom = new Random(Owner.Uid.GetHashCode() ^ DateTime.Now.GetHashCode()); + + if (!alreadyExisted && _defaultMagazine != null) + { + var magazine = Owner.EntityManager.SpawnEntity(_defaultMagazine); + InsertMagazine(magazine, false); + } + _updateAppearance(); + } + + public bool InsertMagazine(IEntity magazine, bool playSound=true) + { + if (!magazine.TryGetComponent(out BallisticMagazineComponent component)) + { + throw new ArgumentException("Not a magazine", nameof(magazine)); + } + + if (component.MagazineType != MagazineType) + { + throw new ArgumentException("Wrong magazine type", nameof(magazine)); + } + + if (component.Caliber != Caliber) + { + throw new ArgumentException("Wrong caliber", nameof(magazine)); + } + + if (!_magazineSlot.Insert(magazine)) + { + return false; + } + + if (_magInSound != null) + { + var audioSystem = IoCManager.Resolve().GetEntitySystem(); + audioSystem.Play(_magInSound, Owner); + } + + if (GetChambered(0) == null) + { + // No bullet in chamber, load one from magazine. + var bullet = component.TakeBullet(); + if (bullet != null) + { + LoadIntoChamber(0, bullet); + } + } + + _updateAppearance(); + return true; + } + + public bool EjectMagazine(bool playSound=true) + { + var entity = Magazine; + if (entity == null) + { + return false; + } + + if (_magazineSlot.Remove(entity)) + { + entity.Transform.GridPosition = Owner.Transform.GridPosition; + if (_magOutSound != null) + { + var audioSystem = IoCManager.Resolve().GetEntitySystem(); + audioSystem.Play(_magOutSound, Owner); + } + _updateAppearance(); + return true; + } + + _updateAppearance(); + return false; + } + + protected override void CycleChamberedBullet(int chamber) + { + DebugTools.Assert(chamber == 0); + + // Eject chambered bullet. + var entity = RemoveFromChamber(chamber); + entity.Transform.GridPosition = Owner.Transform.GridPosition; + entity.Transform.LocalRotation = _bulletDropRandom.Pick(_randomBulletDirs).ToAngle(); + var audioSystem = IoCManager.Resolve().GetEntitySystem(); + var effect = $"/Audio/items/weapons/casingfall{_bulletDropRandom.Next(1, 4)}.ogg"; + audioSystem.Play(effect, entity, AudioParams.Default.WithVolume(-3)); + + if (Magazine != null) + { + var magComponent = Magazine.GetComponent(); + var bullet = magComponent.TakeBullet(); + if (bullet != null) + { + LoadIntoChamber(0, bullet); + } + + if (magComponent.CountLoaded == 0 && _autoEjectMagazine) + { + EjectMagazine(); + if (_autoEjectSound != null) + { + audioSystem.Play(_autoEjectSound, Owner, AudioParams.Default.WithVolume(-5)); + } + } + } + + _updateAppearance(); + } + + public bool UseEntity(IEntity user) + { + var ret = EjectMagazine(); + if (ret) + { + Owner.PopupMessage(user, "Magazine ejected"); + } + else + { + Owner.PopupMessage(user, "No magazine"); + } + + return true; + } + + public bool Attackby(IEntity user, IEntity attackwith) + { + if (!attackwith.TryGetComponent(out BallisticMagazineComponent component)) + { + return false; + } + + if (Magazine != null) + { + Owner.PopupMessage(user, "Already got a magazine."); + return false; + } + + if (component.MagazineType != MagazineType || component.Caliber != Caliber) + { + Owner.PopupMessage(user, "Magazine doesn't fit."); + return false; + } + + return InsertMagazine(attackwith); + } + + private void _updateAppearance() + { + if (Magazine != null) + { + var comp = Magazine.GetComponent(); + _appearance.SetData(BallisticMagazineWeaponVisuals.AmmoLeft, comp.CountLoaded); + _appearance.SetData(BallisticMagazineWeaponVisuals.AmmoCapacity, comp.Capacity); + _appearance.SetData(BallisticMagazineWeaponVisuals.MagazineLoaded, true); + } + else + { + _appearance.SetData(BallisticMagazineWeaponVisuals.AmmoLeft, 0); + _appearance.SetData(BallisticMagazineWeaponVisuals.AmmoLeft, 0); + _appearance.SetData(BallisticMagazineWeaponVisuals.MagazineLoaded, false); + } + } + + [Verb] + public sealed class EjectMagazineVerb : Verb + { + protected override string GetText(IEntity user, BallisticMagazineWeaponComponent component) + { + return component.Magazine == null ? "Eject magazine (magazine missing)" : "Eject magazine"; + } + + protected override bool IsDisabled(IEntity user, BallisticMagazineWeaponComponent component) + { + return component.Magazine == null; + } + + protected override void Activate(IEntity user, BallisticMagazineWeaponComponent component) + { + component.EjectMagazine(); + } + } + } +} diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticWeaponComponent.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticWeaponComponent.cs new file mode 100644 index 0000000000..cb23dd4e0e --- /dev/null +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/BallisticWeaponComponent.cs @@ -0,0 +1,126 @@ +using System; +using Content.Server.GameObjects.Components.Interactable; +using Content.Shared.GameObjects; +using SS14.Server.Chat; +using SS14.Server.GameObjects.Components.Container; +using SS14.Server.GameObjects.EntitySystems; +using SS14.Shared.Interfaces.GameObjects; +using SS14.Shared.IoC; +using SS14.Shared.Serialization; + +namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile +{ + public abstract class BallisticWeaponComponent : ProjectileWeaponComponent + { + private BallisticCaliber _caliber; + private Chamber[] _chambers; + + public BallisticCaliber Caliber => _caliber; + protected abstract int ChamberCount { get; } + + private string _soundGunEmpty; + + public override void ExposeData(ObjectSerializer serializer) + { + base.ExposeData(serializer); + + serializer.DataField(ref _caliber, "caliber", BallisticCaliber.Unspecified); + serializer.DataField(ref _soundGunEmpty, "sound_empty", null); + } + + public override void Initialize() + { + base.Initialize(); + + _chambers = new Chamber[ChamberCount]; + for (var i = 0; i < _chambers.Length; i++) + { + var container = ContainerManagerComponent.Ensure($"ballistics_chamber_{i}", Owner); + _chambers[i] = new Chamber(container); + } + } + + public IEntity GetChambered(int chamber) => _chambers[chamber].Slot.ContainedEntity; + + public bool LoadIntoChamber(int chamber, IEntity bullet) + { + if (!bullet.TryGetComponent(out BallisticBulletComponent component)) + { + throw new ArgumentException("entity isn't a bullet.", nameof(bullet)); + } + + if (component.Caliber != Caliber) + { + throw new ArgumentException("entity is of the wrong caliber.", nameof(bullet)); + } + + if (GetChambered(chamber) != null) + { + return false; + } + + _chambers[chamber].Slot.Insert(bullet); + return true; + } + + protected sealed override IEntity GetFiredProjectile() + { + void PlayEmpty() + { + if (_soundGunEmpty != null) + { + var audioSystem = IoCManager.Resolve().GetEntitySystem(); + audioSystem.Play(_soundGunEmpty, Owner); + } + } + var chambered = GetChambered(0); + if (chambered != null) + { + var bullet = chambered.GetComponent(); + if (bullet.Spent) + { + PlayEmpty(); + return null; + } + + var projectile = Owner.EntityManager.SpawnEntity(bullet.ProjectileType); + bullet.Spent = true; + + CycleChamberedBullet(0); + + // Load a new bullet into the chamber from magazine. + return projectile; + } + + PlayEmpty(); + return null; + } + + protected virtual void CycleChamberedBullet(int chamber) + { + + } + + public IEntity RemoveFromChamber(int chamber) + { + var c = _chambers[chamber]; + var loaded = c.Slot.ContainedEntity; + if (loaded != null) + { + c.Slot.Remove(loaded); + } + return loaded; + } + + private sealed class Chamber + { + public Chamber(ContainerSlot slot) + { + Slot = slot; + } + + public ContainerSlot Slot { get; } + } + + } +} diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/ProjectileWeapon.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/ProjectileWeapon.cs index b08b479da5..9fa5d127f4 100644 --- a/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/ProjectileWeapon.cs +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Projectile/ProjectileWeapon.cs @@ -1,4 +1,5 @@ using System; +using Content.Server.GameObjects.Components.Mobs; using Content.Server.GameObjects.Components.Projectiles; using SS14.Server.GameObjects; using SS14.Server.GameObjects.EntitySystems; @@ -15,12 +16,8 @@ using SS14.Shared.ViewVariables; namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile { - public class ProjectileWeaponComponent : Component + public abstract class ProjectileWeaponComponent : Component { - public override string Name => "ProjectileWeapon"; - - private string _ProjectilePrototype = "ProjectileBullet"; - private float _velocity = 20f; private float _spreadStdDev = 3; private bool _spread = true; @@ -61,16 +58,27 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile private void Fire(IEntity user, GridCoordinates clickLocation) { + var projectile = GetFiredProjectile(); + if (projectile == null) + { + return; + } + var userPosition = user.Transform.GridPosition; //Remember world positions are ephemeral and can only be used instantaneously var angle = new Angle(clickLocation.Position - userPosition.Position); + if (user.TryGetComponent(out CameraRecoilComponent recoil)) + { + var recoilVec = angle.ToVec() * -0.15f; + recoil.Kick(recoilVec); + } + if (Spread) { angle += Angle.FromDegrees(_spreadRandom.NextGaussian(0, SpreadStdDev)); } - //Spawn the projectilePrototype - var projectile = IoCManager.Resolve().ForceSpawnEntityAt(_ProjectilePrototype, userPosition); + projectile.Transform.GridPosition = userPosition; //Give it the velocity we fire from this weapon, and make sure it doesn't shoot our character projectile.GetComponent().IgnoreEntity(user); @@ -84,5 +92,16 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Projectile // Sound! IoCManager.Resolve().GetEntitySystem().Play("/Audio/gunshot_c20.ogg", user); } + + /// + /// Try to get a projectile for firing. If null, nothing will be fired. + /// + protected abstract IEntity GetFiredProjectile(); + } + + public enum BallisticCaliber + { + Unspecified = 0, + A12mm, } } diff --git a/Content.Shared/Content.Shared.csproj b/Content.Shared/Content.Shared.csproj index 2ef69f42e4..dc4fbedaf8 100644 --- a/Content.Shared/Content.Shared.csproj +++ b/Content.Shared/Content.Shared.csproj @@ -69,9 +69,12 @@ + + + diff --git a/Content.Shared/GameObjects/Components/Mobs/SharedCameraRecoilComponent.cs b/Content.Shared/GameObjects/Components/Mobs/SharedCameraRecoilComponent.cs new file mode 100644 index 0000000000..761b1ac692 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Mobs/SharedCameraRecoilComponent.cs @@ -0,0 +1,28 @@ +using System; +using SS14.Shared.GameObjects; +using SS14.Shared.Maths; +using SS14.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Mobs +{ + public abstract class SharedCameraRecoilComponent : Component + { + public sealed override string Name => "CameraRecoil"; + + public override uint? NetID => ContentNetIDs.CAMERA_RECOIL; + + public abstract void Kick(Vector2 recoil); + + [Serializable, NetSerializable] + protected class RecoilKickMessage : ComponentMessage + { + public readonly Vector2 Recoil; + + public RecoilKickMessage(Vector2 recoil) + { + Directed = true; + Recoil = recoil; + } + } + } +} diff --git a/Content.Shared/GameObjects/Components/Weapons/Ranged/SharedBallisticMagazineComponent.cs b/Content.Shared/GameObjects/Components/Weapons/Ranged/SharedBallisticMagazineComponent.cs new file mode 100644 index 0000000000..b51136fcb1 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Weapons/Ranged/SharedBallisticMagazineComponent.cs @@ -0,0 +1,12 @@ +using System; +using SS14.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Weapons.Ranged +{ + [Serializable, NetSerializable] + public enum BallisticMagazineVisuals + { + AmmoCapacity, + AmmoLeft, + } +} diff --git a/Content.Shared/GameObjects/Components/Weapons/Ranged/SharedBallisticMagazineWeaponComponent.cs b/Content.Shared/GameObjects/Components/Weapons/Ranged/SharedBallisticMagazineWeaponComponent.cs new file mode 100644 index 0000000000..b4500a7f59 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Weapons/Ranged/SharedBallisticMagazineWeaponComponent.cs @@ -0,0 +1,13 @@ +using System; +using SS14.Shared.Serialization; + +namespace Content.Shared.GameObjects.Components.Weapons.Ranged +{ + [Serializable, NetSerializable] + public enum BallisticMagazineWeaponVisuals + { + MagazineLoaded, + AmmoCapacity, + AmmoLeft, + } +} diff --git a/Content.Shared/GameObjects/ContentNetIDs.cs b/Content.Shared/GameObjects/ContentNetIDs.cs index b84b23dbd4..14871ceb3f 100644 --- a/Content.Shared/GameObjects/ContentNetIDs.cs +++ b/Content.Shared/GameObjects/ContentNetIDs.cs @@ -11,7 +11,8 @@ public const uint INVENTORY = 1006; public const uint POWER_DEBUG_TOOL = 1007; public const uint CONSTRUCTOR = 1008; - public const uint RANGED_WEAPON = 1010; public const uint SPECIES = 1009; + public const uint RANGED_WEAPON = 1010; + public const uint CAMERA_RECOIL = 1011; } } diff --git a/Resources/Audio/items/weapons/casingfall1.ogg b/Resources/Audio/items/weapons/casingfall1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..72a04c0fca4e27df8e4bd138ad30f6831c721514 GIT binary patch literal 10378 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/items/weapons/gun_empty.ogg b/Resources/Audio/items/weapons/gun_empty.ogg new file mode 100644 index 0000000000000000000000000000000000000000..817d72e0ed0ec1504261c2d3e6f1bb7dceb00fc1 GIT binary patch literal 4792 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/items/weapons/smg_empty_alarm.ogg b/Resources/Audio/items/weapons/smg_empty_alarm.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f031b4e1d88a7721ea4f2b6fb7f5d10144a8d170 GIT binary patch literal 54294 zcmb@tbzD|W_b4XW@btNJn+xO!1Ooq(dEz-jvUU#&cV>a@xBP| zUFly6OA*3D;wzloea-(|_ch_b+?n6^4>(M)|K~M<@K+KU$e?avZ~jWo!Hm+{!cg@= zKBXij8w<;87A`indvS0`f0-FX-m1a@s9*`JG-a3HaEuB7U;}{u3p&hrQ%O2#!Y5ky zlmvr_m=V%MIppwI$Z{7@qJ$~@ z;z9d<`qIcYzb4^K7vUdeoz%;I6R^+%=!3; z?FXg5G}~rgye#i#;pZscE!vu45p<@SQHV6_gsM?_3$l)v;~>v^#y=0VhjCDXeGx$> zGR77`y%!%sm!IMQiuyY&O27{sCLkV*D_M!#S4lcB@2 zLO@U{JYamU5=ykVXLNC&CG$-!%PrFD%uDKQ`l=ZFsxTf{Kr0|0F*q{!Iiz#;C)(c{Pm-r`R0dK07v zPNcE^HNw5w0YHeAwCg=-FQ^SgrZERjHAns_N0}*5755tXKVKgn@B$8mD$_K{(hrqA z#^6CMexO*wPpEG({3*hm<)jX$ISxuNt+5Zk7A<%9H(}dlbA1S?~ zkPUIE@~PsJ-Tu;n{T722L@^^Lh~miFwJgVS9tkUG?W86HG(izU2mR|&piwD} zV}y~39-Jg7#o;Gi0q7O~ZMcIMLpWq3|8)-?k}5o*2JaCzCM9-$6=fAQ7aNUa=ehbo zooVN#DetAJNIim}{~cKW@f-kjnt%tNOfZaK?aA<$6+!!J;D0^mJ#J4dX>aTcsj3$; zql^Pb9CF7TBTq#YIAoOYbVl%;$M8**xOB!iO~zDACR|Kr>P)oiy*29oahShuvoz)W zU!HUCBF}iDRwUvO|HpH3Xrq2}M?IH}d!Z5c(mly6G_5E#YqKc#(f{T-=3xaXVFe*! z>mgCJp-C2@X~hk>)<4U)8~?BOe>_Lr;RSeuo+Ik;;=eqnot5-0=uK6OGRJ?%$Ug!q z)Jc@!zYPEY?J*cq4{=06k!eDab3&0xMVbHq>@gs9f+mb7r}~36cECSOyxf;j7lAtz=led7^B!p2xfaJ0}@0e zi4tNIC7=M{2cUp|=%0pT@Zf|p0N`VcV+boMo)I=LYLOGRVlknA3=a*pBPN8F8j1~p zfCRSn7si86=HQDItW-l(P|v{oJ>MGc)4 zp)0GMG?Xr?C5A|XqBJFoYR5Ip%4!MUpwb22_o^mIGmI6AZ$t}yXdDVQUR!tHc#X26 z#eEISvTm^PB5;6KtaX!?k*wXMMgu%hTq8@m?s3fsraDriQcl;0k>i8Css#y5-JnVy zdc_3RkS^;YhCGM@8=usSEUP6}f`9|Glr93N(*D|7LPxO1eH*oepr{@~D{zk2Z-)aY z+XL9-&3`}u%17Yjj7-&?!H!DTMHtXc2_^K$rt3;^#C`@Pbi@?t22+sU`xG5nz>|Bs zU_k!80&h5 zzdQtzs3^_4c3);$qzGZ{ekdz4iMTJr1|`>mQ-6j(wg??v?Ic*&32Y4to#qAWf=z<@ z)&%8&d{F45;r0U`HFR7voGL&OB1sKRG7M)0Qy^c0W;kn-vLd7i7gJqs4CUJdbKPA zfCEGnAP1gARh*lS7@hH9jBr3Z=*z;$R7UqJqX6&$_LK0wpDdp+aEYs)021J;3;K$yz}` zkFzS{Tu%U9ds5SJ5DB2<;0FB2roZrhmmE>o|3t+A=f?*C5_As>OVGRSm40uHf7h9; z`Tt4%PuW9i?H@w_y>TLV)=2N`W;n`%@c)1S2>C@mOMe=Hh<86mRM6BB1`qI$fqYJQ zP;jCuF*L*f$vvXM07VT2koZj14n@QkEIg-y6IoT(SsiU0Ezpo@xA{#{UwO}_%A}h z@V#R{5adPZpkNJ@2cuI3$V2`mJb}|^C;!#}0eH{%=`TSM@_^fWQTOsd@KXIt02_K}{DGh-f=c}#0u&Sg_UbPI zZ0O(Ay%Yc#ey}G_BEDe(ksA4j=Z}b9{`IeAaQgd~*Yd@`^`C=r<{wG__TvBl?EhyI zKw%#SO8W*HiJ7`2F9Yf0R}Vgj4|-fjicyp>4d}+2Rw*ClMK<#CMj_UfoDkuAWhsJg zGRd}4m=Fhnly%`7MWp&GD$;`y6pV+Hm?99ST70eW$~8?ZluvnJ1ic4Xd5eDx#HwtS z(C7=#`m8W5UG21C1m~2dCuUI%D4_OC+iHL(1dQ;klf;e#oaggWpyV{Ga!!%CF8(e^^e=F}FEsp%1FME`W1)n{PlO9WztjHSwR5*HE zK0HxBSk>O2!0%x~1K)D6LqLr+ zRRsH^I;jvG8aMZH5Y6I207*uUlJeGlJNNI^zd$X_0MBw$Q&%<)E&wzfA}Tso9$`rZ zFdTyyC2#=-K~=vHbJI0$UOoXKk#}Me5NTO?Mdkl&9{BnBJ@5*FPd~rE+XH@29*Thb z?SXqnBgxcOp9 ztY%3V?XiQ7URJ-vO16jVrL%Wh&$dIswT4N*X)(@VBg9b)HaRj%GNNv4t4Jk(;~k zua6s!t9@>%vQ4k`=Gu0aXirzWxsCagXRoWe+={fs%siazPmCa*Shozhu2iiWX}}nTf&5lJddDcH$$`?m5@y!t?d*sh zUOCT}$QA76TI^*{G0ok9mW42J7xp_YCST5r+Jf`U z@q;gMX{wK{(kU-Z-Tt)ogvahV+P@qieY)aMh?PW~{sn`X=`9wDcV86?K5I*J$5pDb zPo|RPtJ>b}mol~-5<`Ke`_wN?k>MlJdb<|h3GTjN)0A#6l@~7^E$`?l?aI7-B<|6R zXmkCEhl}~ut*Z37V;D4Yur<_%T!~>G#+06Ixb4wNr0N;)#B9sSgCt2299d4)d{+0XV8wdj!vtn9^Qv(l8dtnY&A?Ik+_j@LN&3cKeH{|$>=H^(MVBb#Yw~dRoz^i>_TXAwtqXl(~6FClM zN$(3YJ*nQ2o+Wj}>hX+cjUW6VRvg;D-&0#tImz6S1}WMkCy6mT9$!LsJ#YlPI0!Y6 z#|9c5Z86N}?7J?0KK7NXp8VMx_-7~tLF#Z_1W#j*01^*AHhkx zTk^H3YNlH{r1hDcFduFHJv}NBTY9zZ_dJV4iueejg&p-VUxXF=Jl{<;OTx1?<5&13 zB87dEO@$Q5S3jCJ&@2u~abON#I-1m#@vu8zs~ap9m}~VhNWQvA-R*xy3X>r4MSf|g zNQxaRnB{bcTvI+d^+q7ICxuq^nW2a>(+3RlV3O1TLsmG9^Z3>npXO9WM_EU_w`&TV z=Q2I38XBuJ9_mX1Zk1fqT;*q$B%hd^-&D>ete7%P+Rv}uF-CQ1Qq-@Vsmf-=e-y?} zs$R$}DGSvSo2<+`m1LRTd#r@ z0{?q^Q_mA@luu(_^1uIN=`GNZWok^-?Dj@eDe(?!&8Z12MDG|x=2wkLznsO$(&it( z`dvAZj@2DGc)HTM`;Jj-{TMnt*ldT-Zl9eYJ>;FgkLj{M*+S=zBfI@AWSM&VYyslK zYwUZMh2uPS-GHZy;keJWkQLlp`IV$M^wX?z+FSH8ZBG^gPJO3PUA9G*!3@_m)<0+U zY&ZG`^%=J|o;H<>WA%8{Fcf^vR4PO%_1~v;*d6HQAHpZEPj!{NUW$+fc@{tVBSdmOd~emfijP!ZazC77ZtnCHGqwl8mE)kzE(T-MO*sA3M#?wr@`N4zPBr z$8`#4bLwguS+#9d8>Ew-DX*|jE~Q+ZQ}_6-SC3TSFm%{bagI3OKEk9)qg(n&Aoit8 zZ4+TT{Zd+2M~%rn8R;sLJFO)ozQ0m+;<}A2m}zmTd#c@O>gF`)v&>vsrH!npD>;8N z=Bg2LZGgkX%~)Y+eax4zMbzTyDLn5;%ViAx8x{4Km6ho z?=Z=}SQ9h;_|5S0#T$%18wX+ZR%5K2)?OK`U@K7~eG;X9y06?vjfV)i*dqzHo*m25 zbH5ZKohOd+=ycyKy)%+O)KwcS!)aC1dW4`(2&}xp=PcQ0gBpjk&WS>o(k!QnVl(LT zE4^Ltt9j=1&b@p_tcDb8Ib!CbG^`v6C4Q?a3Q!rPAgF1Wmo4(AlArDC2KIaxdy2qL zkvWAiHv6NQ!dI}-VC0Q*AO2WJf!3wlY_e&Wysv{6ucTUJDVZSZZ}NkNSNJrO9Vd`Q zj?G0>)=~@m{+Q8I|KKI!Ak5>pv^w4dJ>}X{D=H2cmsIa7&Bvgs3BM2rLI%-ATsjm# zywb6H;-LL=M)JVE#JAQV!iXUYb2L85=!vXh)+8n2A0?7}o=WJqLB{RyrTwLej_wEXQpMRBR`f`;&)@-P7y>d)RMOaMY;31?qAqyVJyOFOcO9eZpwrG zO#XCXuN}LKY3F8i+|Flxi)Ohf5wwF%G2Twd4;-_O&RzWWTYkQO?xA9azs$?P;FdHC zObs`tz!2r?T6DF zG7BsHu(sTS$%^P*!iEeJ;}g~Z0X2yKSoS3e85!}BvF>5RuO%cgM>c^GOP%ba%iH%Q zx$|o^mjb5MC*D%d-iPZ?uZ`Oxfu2tn%g-|VrjI8SQs)c`XV+%ED!r5yJ^HhK%1H-Q z>4MWIDsNt~iNF69q%eo7pgmWry|PqU;u?K{hGlq#g*VDXbd#AeI3#cFeyMJz!zj_m zivyG9Fn`U2Wiqz92@_Tbu8URU2~ic#gl#;j4es3@?Uh(mRCq=+!o8cVL8}_omc2pJ z%tk1p=O5qvsUx8Im_V!3dQZGD@U%zSdZc9ZgXJ1dUmWKsejYhaBXIN1HJ^hq_5{;1 znFUZawbDhv1tMCnNg5i9^1M1Hc9+NAE^o0+`Ci-l@_MzwE^BZX&Kj~Dq@-t>r^{Wi ze9t&6__L~~rfi8u-5ATW965qBr=t0rAPaRTY*-xpm)gfnSzK7z+ts$Gw|i(76P~y4 z6J6>lt~_rKF0utlqB-XpVK3=!i;f49{pl>o`7XJKs;ep5?zHJ6wMhDcJ$_FQWuF|G z+A)gN8}mjb>$I6K+P%5GY~R?ewoTq&aLvvw{lio5EjX3$#prQ8w{*F#VNPLbW-+_A zX0obtzRo{(s93yIIH0@osqCPupl|ma_Vv`)il$(x%~eUe;HBcHx%Wl89m*7YYc&JK zYxFnvJyjI4!MD78o|pOz63mTbC_E9b5+|lTz7N)i|4FcMJ_%SW+AV-0EpSCJ@>_5l zN!w}=Z*~m?oY?QlEoEXpmUZ5%zbTY({psEQdnV^i5Q+bjw0*oBM6+feqRdaZan-LR z$Nv0b-OMCybIdHeoZ`gZF@WXtk?>XG&@k_uNoI=z#FXVx@lo!uUPoZ)sg z!)$8~RDZn@pP4+0bo!!?Gt|iB{Y%(>iBbRdv07*QHB3P#*r(M|ZS01^H_^+bYimuz zzeU;#FzT6V;lPs8Et3sq+DMR~+wN7^J9oj!RvR>|(P zbMx_dHcocGk~~)~GGi%4uTT5s8Y>+61c_~MW~-)3p?8a=?0kLzQqsAkW1VOFpPwC! zXocaPqcEM;78$Yv<-NKZ7GBqimNk0E%=(swGhNuL6)f4|*A%6+zqT^a@@~d7Vd#Ku ze`eI+Ot4i#V5`rBiI$p8WT8K<$WI`g!9s6A7{eVn#|E7 za?^QEr|2`o;4x_>o(R|a?V2#2-&Y!6Ulojpk_-nLjgTUuP zf;U%k-;Jd>1sqkq3%KE36QU$s$KB2y#5yWVQ01y9ln`o|(6RKX5o>$2VR!LE&R*BM z^>(^#w;lW1+HEa294d<{uNBw|{uqHM8#&o*9Gc>H<4yuHlrF~*mnD4k&LKEVW@+jkj$XYPb=_q=~OTpg`qWg@GefT05IY=ez8H}#7G`Ghg_K)c-J z*s_JxemXsDyF^c(Q5u~x|MJ<&4FVwHe7LFA;wezzN2pg~ud?cUMWel@RFJf!aVe1G z8v9fCG^K?l?W+&>LH>GnePZ_Aag!3fAH{p6;r2Wb1rz8L9H+IhcA8p=0Lq#JB*o(!?UK zUTPM0TCiJ0L>H98$uVJz>5B?4)cm^aOMEv1Me0#3^`dz$y|4QiMN@DOMIaJ@^V)X` z4VZR2k6Zl}*FUxK+N}Zo+d030O=U{xYT$}7f?t`-mD`NHUQ6A}r96wB;UM3O?{o;A zG|%{^-r0ICXcTrGTMY>@1IvgmjiBl{;h zt^f`A<1_YJ z-4%9zd~RY|FhjSHuIS}_aNHocp)cqKo3yEIbcJnuyl%T&!R?W1l+KU;mSK|5J`mSk zX@#<4-NcP=qc*rT;Nx}(D<-+%nk!4LzqtJA(pJ&haWtyxoD@M2kd|-w)4Sldd48wZ zb$ffK$yGqpTw#m!sU5l|Ll!7_Bp=*(r8jV$xEDiP{=dqN}9n0|5iBGuh zTDhTjw}KZL_DFtBLA-@kQ)-K0WeleL4?7-k?X>^1<8gmf!ePqJ_6aErHV%XJ!C(V0 zST79r69#)K@KlL#c(;;G^uP-TH3tPVi?YJCJCt0oCf0xjj2$ugE`u(wv;K&;dR`vj1HY~- zI-bM=BSv|?g6MO=1p;6$y{mETQ#RHUMq>Rro}#IzNx`Qt{gv1U5%f+pT@}8Y`7sm> zi|H$;%k#w-9|=16Lei?HjNn5IR*88U=dV){8~D|*#sI+nJBr%O_`&)ozoZgw+8CoP zg2Dp7J9+TOAk9N^CHk9lX%*#IWcCFqmi|dAOrZ04jcNbV^rPU?>7s2y_S&W|A^`8h z3=jOMFYbBl*&Vv%GGO!i3LgwO)D%N+_O?8R-j~_b3X~s7)ri+Sa|GQQWKF3? z-THD}EU(E=wRoRpc|KuN&^lhLo10Jf+2^w!=b%+$^(y%yUmUEx0437Bo2x8?OYM0Y z-jv4h1|d>@(0^dXZ)i`hZEmEw<5RQ@F!IMmikJM>zzzL^ZRUM;+owXGE{4dy9DV6G z!&g*dC3sW-f{om_xq1=nl$D#cxSdf1!FKU27r{(C0S>In1cR(0Ro>&94CKBd;(~ z*<6b-wcI?p0T8< zEPn<(0NO9m6&@&EV9Z&1(POlDyF91bl>PYmia8>1p)tayLeVUk5C!-Ws$dgcc^u{*xOkyaJs0wQrZezA&*D< zMMyRE(o{;ElJaBmvj+S9?eB?jE_69VZx(EN^epRDjY9NgNP|Yt#h>?}0*07~A8lRb zXpGmEhqDtyv+}P#!IXyqKW{x`!2YU_{xR_5ZuM~4ocx;Q+~2XeKjNEB7n#rZOAp$P zYxsV_P}24d0;qr>kMfMzlFiX_y^r?#P*h8N+y_FsVg0wS&@Q<7jziW;off487n~t` zQd8pv(N=O}`VEF~olS^{PU~ia#_$U&4n=v2aw}M410{v;IEX|)lYcmwoU}P$8e&3< z7q7XVTucmlZLXUhR#2_?6KK!)d}cPjD_FVdI^(H!7rRi?`s_|9&PtuZZJn&J^jCZo z$(?~%LO(Y0C8@=ep+RAJ%RTm?88alL`PYWa6+fA+zih)=16fp$>tYoz8)u5MY9){acnFxDp>{M zo@J077QFQ@crzFTB$D-WZacneEy{^y)b+w2&;Gc?M;a_7Cl9%0kQiy=;d~*)+53ru zj3jTo!5EFL4@TKmQzRr!KbB6;37@E|Axv6f_lAhx@=8e6uUsVH7eB~>pY+*83Zv>E z3l2znKY6?^?#LeT2oCs?fk%fv)p(=#*1`Y|XkBvMu}1PMHC(NXQ9}bmvjkOoeM3~^ z1unV$Wa-z|#jBznET3p1L=4?XT4x(MUiQM{DR$mBZDDiEgCd zzv>?w#>OO<{g%Ohqq$FwNC_au*fpTA)Nut9#kRBmey$szHfr%Hq~q)5OMmUj66raI z+=8fYw)WZ=ig~62)bKFL7hCj+6+fjVP-I&!LOb~!RYqd(dLFToD}P<~El75?C&_NY zG`)jJ`B0hW9hPD4uW7FLC7wfMD_T4Kx2))7KKU%#=T=8fBbUB5&~|lYIIl5Ul>kyi zH()%?o^J^}_G^zYX;d6-8(yvCM13mO*nF1G7ab{+iV3{qh#hy@!ONpJ@oL9K>s=Qn<`Pppu)e z^3@>P#+qzjv7S>fCCY;_xd7+%^@Q>q9n>6Li$5&YeF48mWAK!&MC;8ki#i9^8c7K> zK%a-fwc2e#z(wAp6CUtdqHE&>uxoj5;y8iUAKT7w*JgdX@+xsxmgMWpv}oit!&*w*FkETkKOGyn8c7UN?}0ZRLeJb zLko01-HE*$slJPT#qZ|HKFr~{!CV6VAjLib09Rx^r|J22`a4&r&{gCs9S>bf<%$_@Q>Q*}3`j!RNueC-;hOc31?NMID3A7=(C2QCD$esD(Iu0wwt8Cwc$0N|dHi)`#~di2a^bI%J=UM3@t(1jtQJBN zCrN?ook6uXbR)<`So_|iqJq)a;7oh( zxVK-4lwmbH^Q^i6*0g*~cqF6cT;ynBqUfxk@J$p?G}2P#%7&PtBm5)!TMzcPItj&H zg0L?yX{KLcZBTnSIyMd=!r8-Yso^&Z{om3EJw#+YFe1mS7WQR1HVROuboYhqCH$^` zYDAm}2ON-tNdH9vzrfxG$3}Xb^Y0Ygh*+#C?}uxEM9sF0W~FyZNwS`r?WLJ)~#F z=>}H5&!fb|$()7K4q6^HBJV_hDi~qtO)8rRCYC9zWRC){D{>5t5^4-pwEOp8NzgF5 zsUrbGzLlteK5Vi02|(#Hb~fZHs#~Z3f-Ew9H!@C@G5)8=BQzSmFME4dv7b<5RuS+K zDSSq$-z~h~oId_akaF>%bO-qI`2%xGcAY1nQ*4 zJC8qGR?oAXZ+jaXxPBOY|0KgdmL0p?$lz7}$|KvXq$3!WDatb6S9_>sO0X&T`d0H% zL!Gxu<3=+X{&pAF?U?-#2G<XwI0RHchuaaUWvO(xDJk>Vc#xX#^Q z(xaL-*{qtGJ;!wNW@xH@e)nSjw3uiXb)t3Nbswc_9o)((;esQ3c=tThl|qh)zv6d ziYBS`s))D|E0l$axu<%y#o5>J61|zY-P_$+Tge zFDd9G-@*e2Z)<*#rTTilnID1oBRdj2Yk?j4V*(MecWzPTxa|~x5HY9o)_By2&+7n` z3{GdoHZ{Hz-%|k-0If2@(&M5*2Oeylxf)kx9Ov@3JR7L_u|1QSd{{qku0nOR?sCOK z006QXI{pT-K1~=o89sZ6(ax!A#3%&(qmS;9v3IJsmcG9qmUGh%p z;aDc>IJfe=cHus&GI;F&4hQhN<%Mfou3m4}WsoFiq!N%i8O%Vd$N>D#KAdD%lS;3l zy#BIKRqS`OE#^OgNNo4^7Pmh=Ein4aPW@rHEQh8MVy9XToUwtuVunz(9OU9W@|^$s zkGBz(?a<(!U1g5TIknp_%GQL>^x=Z=gPQ>LwsRo_Pow1Zmk2bC89Z{3g?y{l+@?*K z*P7Oken0I$IPU}2UPq^sZfXxlyi9McHX%ZRf4r3YTr(jUm@X|kbS;l1XuJu$ArwOr z3zC^BXdc_ZeQJ=1^80S1TEu3XhM@7u-7Z&4?ginoN27Zk+ONesjz@Y6IreikY9o^k z0NoxUWfrSn1Km`~R_k`|gjU&I�{E9EmKCrlxDVF;@`ak;2j7A z@VY-O0lqZ>N4cG?xZq~N$itSw4;X9+JSc%@``(uSPIng#5SsqEpgu>U6E3Rg34N_O_rhGyl}E@pc<`bpxD1D01>0*Bj_lVpkpl%D zNiw|&wY9bCJ&2*Q`Me=i)n%O@X3;GO2WOlKtL!#h7rcfRs=YH;-IZye>WPP>^(uAR zK3OXqUQjMe?4GOX*Y9`kKA1JQIPNgt&Wko5RI<`l)7geA*3*!YGE>BBy#GueRj4e6 zp6*u@8)+6YAN|(XS`ye>B#HT+y@&T0TnU43hFTvqei#+@WjL@ySeTMVGA$u65{z4V zdPHC!JYWgj0RV)PiW)p8Tod8A=v_s-8Jz%rTcD1~6E31d>UfTx!3ngV-_a+%0t|_L ze4=FW?qMI`<-TY3KA#4{hb^+G zZOpduS!E$*QSKUdDgq9lO;mgRXsS%-NnGi$h19}Pv$BrcdDfB~JU81$OBB{&IME~5 zf=90Arfu26(~5v!vC^@ZmR(PDq`cCTZ#A4<>MmolaDFKWlD)*@p?7uUCG~_smx5b? zT2?p!;*|^<=nSt*5P%%ttWAQ&Cy~NZPpnnsnW#K?k3}Y+^$SHVc~8Hw>vth_eMe+- z)hnGQ7oRZRJUKx?56m&dfb%Q04kPJ1W_`+SEj*@yc-;SmZ&PKaNWKpqcV$#!(H2F> zU|bs&*sSU$-;MKI(e=@l8RBGH!#6&-rq=JEROuD)l(t z0nauY3c5cTI8mP!H%?q8GcJ5=YA*15IbI)v)t+l#IW&inNw_D}q4uL%b=TD`qo-K+ znlU?d;3xC9$t=i(33=I7)9{A~1PYFh-!>Y<7J+kdG4F(httrRMn{gVZht7`Y+n~FH zx+P9&lCK)-&aCTN&bw#jZ&%xF26p&MN!T;otEc3YC{#Q0!_1BsQdX4ZQt`W0HCA$q z!-)Nbg`Oeo_WNjJ$})!^CbhX=|Bi_s!Osl+WYft>Yq=o&L{wf{+Lit6HY_+pJ~9^( zKzIVAe6U6&PC~!m?ej4e1vff^++-H2rfz$}A+$`%BYR4|PQ?E1X^Keyvvns4=Lbz@ zorUV1sn#flD8K>gvenPzv~Ej=wiy7w{U4QEctBNHTk|*-03H+Cl9(a-9JOX2M^bZi zT8%g4`Z*%{><#H7QoMJ1kzZGb26GeTgXPTxbq-W;!z8i@RmjGbU?#8Q0+f~B7`xy6 zveVmJpsRc)7i94Y07#8SjAWymeAD3Q#4TvW3mi8rRgtHwF~1t=n#r}I#|fJRVZM5U zupM^4l0Gt(cl;gOtRiQpus)6+Zl(ecw7Xk?2Xf8I+~EN?H_4cAR?FuhFBynwQ5Mq3 z_pf`{J>4@ngek2@lZ(btFKTB;a(0$6?es|c*UDSg7$+SfC4b-n2YWfM14_aQ4SRoy zF1#}}My7h=LXc0A!VJH{g8@e#q(3)e1q`{lakr9dWDUK@PTD>X-^klEes)BRc;ck$ zbY5|%^})jlXx(M9Ai!fmn)G4+V>NpI(!HUe!GZe;ptM?4b(7j% zm#o8^t_eTwFvF=tBu&_E@ZA+hPCE7?RcH;=zzCU|R;@H))mv2Z&5X~r_2CJxjdT8_ zzFhhQ7gKm<`ellZeF*}~Wv{E%u1atv;v_iy;JTbL`)o<_y1xx!rboLf_e8ltK~$ba z_?Y&kgVRGhF((!V@7Sj||Pbd`8c!r};=>Z)lFk&)q+nEe!!6H-n-(!P`(x zDPNbtN)RB7k?|{2Pfy_1^#)D9l&qTO01vVG%K?HzY@6b@;Ia12j{eC{GlWFcNJkMqdd;cV|VkH+&^!O zUg*aJoj~$WUBjQT1Zng5V)UH1Ajd)9lGG#ek8S?=z5aSjD15I_?xzoh+OQJ8HO8CA z&jm^8Hxa*3kB674eeb}a#B9=&Qxg(&ds@Z^_tkdS)0MW96xGWkdr{7o!i5DkEk_Li z+OLoRd01a}Sjc0YC@Z_ZR?p_DPf^STq0VewD{%!uee^w!2Q?w@3y)(M4`T@2S(k3&vEg zFCYCz5h?qKGKUH~Cs6=S(PQqyMJH(#T z{JFI$Zf;jNX$`WUpWsA#__A!MTRGORJFMf$vK#Qxpg_j@8~@_N%Gn(+I@MrC^Uq!J z1LRNrnGU_F^)6bXUALjlqO>l%k`&q4^M+@AWW+O9XHDLiHQ!`jWA`r5MtiT5Ua?kO zlzmOAx72k&sw=JtJ+rO}{-6(? ze8`Ad0%)?BFC?sTr_Sd^+6Z0)yt#h;s%z7|8W}1olT5Va?BTN2)iHj91P1C@*wCWy z^>lfY+F4toCD4AS4iD&GG>swyDL&O^Fa4TuVz*9y`X~?`liPm3N^#j5@J$lv!mZ2N z?f#>a3_DV2a%rRJMeIuc^Jl3Fw)r{!NwS<@Pj=azFE{wAb(Z?x$hy_mtfV_&q>of=S|Lwfq6>x=|abFC+L zddH`ncs4W=#;lSXvNDpqLII={*GeDHiXPMaqp0)Fa<8&|Hy3xW`23R~y&K~EY0rLs ztKI_}ow=BDcuCgH$eT3PY?I-}cbjf!;S@jaBs+_XmC6Oh!i8%;I#gJCBz6hV^q|j~ z<(SWPSd(>GxhVX(3yy=6RvMPTHTbG=)PLev#ve%{NPFGxaH+7SiTQi(Qe|KHJuL@9m6P11r*3*K`V+e_(_O z$wvTUFUCz;JZAdzo!%-q^v^bV>&`CM4i$T);?XsrO5%n%hzv_J7zXwpzYs<(Byj-% zQ9w!G1I`cp?it`RrKaw#=#{(7ux#d+DAX5YJU{I)X4Xu%v)lLTAq!^51Qrp%kC7gB zq1)N27AB1Ppn_8xxt0L>myC>{^fB$PE3*5Cu8pQELg)4~khv2IwDIj2A3#zHTPJG)L-8#&3an>Sh29p-5LuE`Nxs&oIowB$tZn z8fk#SH&!9@G$cDEZX$Vsv3G;?4$9iF@DXzO+C8hlqk{k`sSiJ%PyNP7ad}ik0=t~@ zsq>pnm_-Urx;w6#plHmWZN~U~Tlom|GV`=>fDF|o7$s z<~N)%>eC}Uo37@^L~Rx{Z40iQeK`VxcQQd)Ja?1k^{P?QWWUm4uK1bPS0g4hKG|BH zz`R>jD!c_u(f5(B+mz2scd)WZ1nb61G@_L*f3twd$P%z-rr~jk?h|T6`iO&c9`kOl z^6dSscCZvFk5}^gd+$uWpeEt^tx@|8mDqv_dmH5ZjW}|%>-cj5L3!M%fdaidag8%~ zjUYaG4}~=ZB{TogfPvi7*35=Gh$k=UTEi#bDOjKY(I0Ye^4G!`AJxZA4XdZ|TdDXC%sK2J@UJ0SFJS+YQ|?U>nG2}o_8#a+s(`so~Vx=kng(h zl=-Kze56X`As3iBzgfD;WXe8n%6R?c=ZeP?Zqkdg9{5g$zKqcbSFI0HLI?#><#LwgvFlZoNm>J3d&r8P03ND7LigRI=M zNG+q@My%TG!+e7eenog*0WACPktw6BfBC>>x7TV-GrMpF^zt-Z5$9q=dC=hM)ghme zkq>s|XCFN_p{=fqBeWhlUx|(qV@eh1%klUw?!cNR6VIa~_i-s9A$WeXffGvx+p})< z>mq(yu7v=aopvPWO0v(lXr?5>^z0ZvG{x75pKUALNurE0>H;Aaq$?>(j~@f$I_U9c z?W>|ki&m~FCT-->a;4eiH~8VnZJ*W~RM)x1GJzz$TeD)UnH3ao#-!8Evodz5l^I6` zRvmZNwlIYN#!VB(3~~_R#GiMVChGD+zxC|es10DeCkeGd8$qmP6WP}lQ#|+uzgNmO zdsa&qWQN$!=wbpG;XA2YMx$ctqqRDc-`}QF_&oRB-fnEQLYbYai-vLhemQu2qlGn8 zprf>O!bib{DcjWYRxlAYn6z2&1}BPb zAO;5&^EzbjS6lVU-C^Id01xA?r4zhrF2p~g%WFQQ=8V&xNu-oV=zKZGY1--7CEG5% zKsb87C2?zS$L>;eVR-yoX3y1JP+6}*M^l~0%`dL}en_3|=S5rI7o}Hf;e{j@p6HdV zSMk)QXMA@QYdGgRG8y#Gd;+20s!Zlmqtf0ntd?BZ*RaEn2Sn}d5scC7?l29w?{5|u1x)W+e>UmKuP8nlS_6=E`E-05ApBedb-S44J1$rn zt+~S$MxBIZv3ZTn#e&wajZVHE+lDz|?_nadk$6W{mK05Md@Qq*o)8n+F4~uMUkj6F_QaK!>%`KzC{?FOJjr0N26SeJU^ zP#V|m)eGy=qxWD=>+n(LbXB&XQn@u#46|GiWc|S}V3(QRbSn`v{xLdfp_E^yBCx`| zo>EKj!c-jBK+?MA(#=~Irm{}4&9F+rC9`JL_R>P&9o_uE+I9rTk!6NW@AjD4$1T(V z^5bZ^!tUs?y*+B*LIL#~cSjAQKTs@8(z0o~G4@u|R5d2H{r^SNSw}_Hes6zhk?wBk z66pq!5Tr}GySo_#=~C%NIs~Mf5h>~JlI|ROn3;EczQ6aZS+mZ+XPx`p>)QLiuFv)u z@of!t_t)58it|kTi(}%u$42>Wd*g9bzI2fb7M3$u^D$My;LMRQL#8%0dY0|SD|v$Y0JBW9cf3TbL~SdurN01Kn~*ET>VLT?x9XZFW=kS ze}Fi~j;(~jr-Xy(yd6=Vo_QC^XBw&ZqvJc@sLwf|sY=^7xZrbGm5~}MzB0avQfw6P z34Qi*ZX)4tcHnz4ynfBZpF4}EB6_jZ<|Zp>hs+s2OJl~b+8Wnr~uw143rrtnJpARgVa2*2*-e9?SJnl}-N5#n%^<9+S z^MyqdJ$(kZLuaim>nie}={0_@l5b;pX;tvukG2S33f59K{i1|E*eTbzbPh;IpVTP= za~rR1gywp0^_mw`d~iJ7K&Z$JUt9}VOikY#3}35fUB~plBieD$^b7*y?Au5Woq$ZC zi$0xJO{vC|FvmC)7nA@|+Nv%UC5iW8Z^9`e;vvF*M&CssXt(d$_74rcQ4mo_~9`%o8$=a7+`+wWdm zs10_;*M5m<&GEqF$Pmd(ebL?2`A28Ih3L_ffm;7FPO7Wif}Jbo0^f9u+>6r?cYk4a z+EoKLWSS#YoCj{KOTy7WnvukHdg7~m{!OAM1-Yc+dp_bHL=o#BRN6@IoI*6G(sR<$2` zdB(>&9ncok;6sjG9)Ah*DSq;JlO^HrtE7&x4jndPeGKhxrJhV*+}EeHyKf7(EbJF_i6_c5G656>Zj!iuhZMq=Ha$T=1CQn4#g2d zD*mWN+8nF+@9G;k?a$eq(&tRvfgE#lda>N#-^;-IYg;h^NNJmauRdQro<)a1X>{+8 zd?yEqV+^mm&9z->&N%-48-YdKtOdL+l=b8~k;7u|(Vr!{g4H_j8#F%6a#=c6Y&|Nb zLIQfVFHmkC&IF%b;LXbzYo$B1bo@x%!^{~o5 zibUt!wIB<)Oy8sg1J7)fDE_9_I~f%-)Q>FrrkyN_0zFQAR+~xc1qV%#fklo5vpk)? zvFG`gAJ*wc{q`6Z|lYkR-Dj|fQ_c2%hxG-NG*3ZTdoxrVa-#feVw>iljkWnA0f}rgh$s`Yr9%{YG~4* z4e)RKAt1YuId|dt?4jMj&y2maRD6dmz}O}MD0vLiPQU-eqqnQ(y9i?X5XS{Qufi$o z)}YrrHe2F!Dhowwm?4aeBh&uGdPy3JEV6th$B@jLmEdxo5`C${Soo%4B(t`dvy)on ztr}IZ+m2lEH6!+4x_kV|6uP_gMz)__fOMwT~DL_8BLiY6AB!I!}= zRNqJn8Le*wXZd@*ZqeJwF3+(Y9n0lXA0!#wa@>#-gB}e>Nv2d9xs|lF=8jE9rIQQg ze6_Vp8OWGy@Zf6*zEKTyZ#ui3;$6z6$=&?uh%;Ef2YoH#<_Yu?h;^2%e}u*wp!dnK zxZSLHy9?Z&r;ZtUZML|yWLCK-A1k+8Ecmj8iq`CXc9l%g(~^|W6@%jzA~VsyJ-TaNsBdndSXn4nxdn)1_C=wV(N-Uv z;bvEsc1C?1$ob_E1e>_FI4-Q?(vco#=-!vNG~mE9xuh^uyc?NlNbMY36^7i<{_y6u z6H<6f*LI>kC5Ze6_EJ>h5bvqj^NMV3{@#==ALGjk_BQN1UK{=p(H>06E zPNl=~X;Y@8VQoJxHFs?3nnc;{=!3n_5#-YhcO<7frqJ4%M`(GZ0qbhQ?bW1f3lqPF zQejkqGwoPqo^Y9fSAR<12xV%=I4upVe1+&UfD&-7XjJ-IB}=8si+WM{*ght0z@SrY zW~OnrRcY1W&iu7=%}REXu~0mVU@uXGNl39}>lMFnxttdPbF&wJ!^e$oxWQ_fw`2;j za(QUSVoM6{z<0Xkrr|kpx&dytkz{e?@5z<%NiB!0xBd?{_+W;Zo~k>H6hYAQTO+L2 z8H`v;0lQwV7LwXtqvFRv_tbI4ZEJkfk90qApO0?F=3^+tyzwd98yZ^@Mq8Q;EED*f zDYJU`mu9Ub((C!k7t9wt(wjTeXJKXA{z5hFt&u-g>tkjAC?&~_;+C>I5E*`P;)p(kJGp^v8-l2q2M zwKP7G?uXJY<)BRmG10Y)4%^NP)66t9YDx9C3ik~?>#zHpdc5?Bi8CLd zxgj`usk2dMT#XHCsfYZ$9ZdLC_X8=<%TQ2{^C%{8>AZ_=FT1nyONLzT?K8YFq}GsZ z-0Z0?HGI%OTM=WmzhXg13*xu5KD*H9IJcT+a*+vRt94vmS(s>6sGm^;U61B(9>2)O zi6WWV95R*fkrhidF`;1Pe$}uvRG!Pq|P=#-|r!3wQXlgYvJ2q%q1`6GVLp==?Y8AbXA z`G-M=ooJC48D5{Y>L&AKE7t4kOg;_ zhC8gOilYpy9u?!%`?&j(j&B6-kXIKgTTGI=mChi*@~6!`x_QCP_|)|`YuKS1rsXa2 zfkb|{8(LL&QdK*s2^UxWFr7x8qvS&fM|@)@~85CL+RT{ zdn>be*Ly_(!DO1pQr0q)&IOR3n!J`OKgJD1{Qx*GGi8CR&c1S7|Hk|+q3;)V(#oyv zIV+U9=AxjMPAck5J&FZLFS$&JUfw6?!qN&J_$k=UCyeK?AYjB2SxSc=^RaF2DDsY) z>BUorg9ecwI+K@VRCw^dLR+VcKcVtLB*kRh?Vk+NA)6p?mv&40Zx-R1l}0n%IjRyZ z`$TedUPAieLrnx3;pAQ`9j`4VaCuguX_J2+v2Tl?9z&-MJ45CIrpnTBWFxO}jo(v$F;B21OJb!!A)!Om|*m0zsn44b<&0AigKRx0z z=ODNK8A2LQBtDp|`935WWy3-!iYR^d;O_Z-6Y+RAESF#9dUg5w9J6k@uKGj$Jnx~+ z?~m%&Na`7I+K_W2n>&H#A2$#Ajge&O>ohsW6-HT(8^1?GrhLYz0)t6i%T^B@e>iRI z9Xoq>82eUoiCJ}~+l<&i8F@Q_Et2ziMlr^%{9>#-CA1z%94=2Q<|scFo}@brm<4@r zUe6+%U5FpbgTl40l<1l^S9{6g3E3;H%ycEKNq?#)1(HeQbc zX=x#ek8o!6m!dtS;-QyOiz}hrvw0mArI8~0cZ1nPVYmo8(zl2lvCw3(lSjs&Dlrr8 zJ3Zh~6$rYDdz%A4Y;~i)ZaNs|qA9O7BTYvfd_SF7hkguk^Pw3M?Vj)&&%YJvxxI;| z<)rgzJ=w6Q4yF+o9Mpkq!q-x=?Y<`1f(E070~!w%QnqIBsHP_<&OJEZeE{w@>rx9pqKhE>cjBAT{vX(X#i!`_+%lg-6xVpML5{}Tpv8rv zNpHN7dz#vOb(gb*ITzb;`*NldDyO6Ozio_6KIhi<*=m%_evua(-BHfYcsguqakkWx zK7;%sH}Ic<<<-zQHgiRjs5;Yq|4lN+Y4aUq<>nVC{sVj5>wfIsWvKZmr)<6g*~`m6 zpUT+|`$Ivz@$3qu#xr%otJR*lnTvUa(SEc>AwuGP!ER*Bmm0gts1T2X%IDICNyv2a zYA8sk*YbO0N1`O*9TX0D7uv5=;2b`aNi3eW^p` zX-pXm&RyLByToRE?%_$I!8QGpF$VkH_u#2wZw%Q8yGTz{b(mbqwfmY#Dh?XU%Oc9) zr6OI}mmyn@{QPbVO)^J-30py+Ic21j^LAK*_Nbh7@7|4KlqO%^rA9eYxg;CjcFFlF3WlZT#OPhT91wZw-`T;l z5&Cn3*Cqs8`{IvtU>`}|LGKMukplQds_#idsuohf3$|we1K<7uuI-mc%Hb$MCkwb; zm5^}{=<(gw?#uyMr^=3$f=*|=?k6fI?xdP!W#d=J+t1T#`A#_JAj|jl{XWYj=rpy-gOv5~X>w=3DcJ1IiyY03kl5Bt}P}`xq zH4pK51L%2D%Y@EWA2=t;7zpO`n7J+p4Bh!LJ$sY{c7TkJc4T`aS5B9n{;DC#GuX2)NE`_Kbz89hyAEDRj*+e}nYJUjMAWu}6=>4kmk|Vq=b290byWe9I`g8TMr9BOV zB9bnJLp#}?$Fxgc5Vnjr+DRmL;+;9ubG^)^=DTC!nEq%8SkY~MMTAYizqb=(a#o#3J6wbXViN`7KK3hqn2i3>P=W9~lpzfERASNEq;zVE!50M} zKXDFAB&ykQy_!n|=&^n6d3^Q9I1%Fhi%@)v*92dO-}eP^W{1|%AljC_y)y9gSs%L} z=U-y27kE}Mt5HIkD!#@2aWh~~48wvWvV$?@5H+s8cpkOJNpAMntIb)*DejFph^=eSyG1Ce^;0Yo{s>~uH7$?jtS_PghSy|5=>y?s ztP&%i3;=)0=xi}pYliN=I~|`G)4nb+O=2_n2_79{y1`t5P%Pq!cfD~daFvQc&jvcG z1xp)VnPr#2&L*;+c6894G17K3(r}qDJD)QlS6Ed*Nz${;2>nZR_xd55Xkm5|)QokB zz^d{4`Cc^KqUl^Qh56f!%Y3IvAN!bNV>jjncm!Qp#mY{VtlC4jD}HJ(yE~34u3--K zRSWEHSqRnHbf6Y0FF#IefrJE*@5B8|bTV?NXDLS={HLk8=pL>|g?itd6%wpGuIY@5 z5~eo~P0_m;AKJBD;dvSmTAB0^7k*l=p}XjVLsvir4(-%sn=SAx;O)i}FUW4zF1YkP z58*=Kl4UBT>q;EBUmYSuvSTTwMB32fc;dKX>~^vThIWlU*Jpopi(1^z zzK8c6!;W}Ii`=yIjNGQg?5Eo=Fd`;g7iXD!q(XCS!6A^ty6E_Gpaf4S0#uX2^9}ca zU9#3U+abfr=>tJhQ9l@ulQ2EN4jy(FJ;yoUvXEkh1 z{`XftP1%H%o2$ez5!rJfI$O$0Hi;td*_Yp~?W>99xXJnd@?BVj$Ui!18;2ZI04$X17`UOWCV;9x?5*)bW^BmAV>ds; zSxy+EwLv{jcL0mCRGT_F8|m*^jlnBsPY=ciY(< zpEx}pLAzt~tY*drtStVj4c&5`jt(0Vm6+0<-%~sHTMv4>V{38mfcZ-i4N#+T{uV{m z;}cB0K(0*_#*GO-Ii>xLkG;EPCF`q@PN~I2w;=Pb*5H_r3d&PSX+MP8c=0XuQept+ z@faQn_lIa%YCGxFuTRLET^MQ9Hl@qTB~SX$4QRUMzI2M-)Nm6!RP&*N2M^irw zabODR-HlkB&Sj*i*9U`P{qrjZnnxq=8k%aBeO*kzK-)1p~<9V!q9g(>qN;NxzVbWph?P>MGB%P&tT%88Z8{)UJv2TQg!Z( zFGFp)cJaeHwOM@y)9H(!oUgE!ogZ>@EXs)ZP-oxEV8>{-E_fA1FN|H!No7BKP-d)i z_?OD3J94&veYQ?|S7T$Xy_mBpvi96!lTjl#Kbi9kU%7~H3&N}FsgM3!U7_GpCRr61 zCNHn!p`xzsR!|M~_V}uq6D(?Ue`i3)YLo@pI%%%rT%aKuen%?#p`?4^K`G+hM^Ftp z$Gh3yoe@OS-_({Fs|m@1KA-|hea!eif>AZzCiQA&t`jb@xMGeC2)qAREngr5mV#zd z36On;OSi_~2xXk8Rk|iRD3KsQ9Zl;#zQ^LQ>Mn1DRsUl5Oc{{yG}~DA@-H61JYjmx zrHrpZU1=vuKz)4OqjOl1BemDUsFyb==}TZvU5`@J|)lOu8#u%*tVen$b_C`BLS8` zu6hRM)yLW0qY_Q6aNLb}qHzX7N=X7gbN>?rNeeexPLS-G&5vo-t<_w!-{=ht6wp zF?}?PoORe}$ScG7R%7>TS4Jq5v3@Rd@Sty9++oEyC`!!vOqlFNpA`sSf>BLsNe9cN z=(mDHz3bY$4qopg5ook8wW!!q>x#43)q#s`BxfSxO)|;kuJwG`C)j*uRpj;mzm7=M zzjypUM+bs33;-Kf$P$jh;S+E;;vbPILGUOLza#Rd4=Doyy9eRm$M<3HWM+;Eqb7-> zNKBLnevGSw?K+p4bH+O-$UG?zxs^=#tH@YKrm|ctw7gVS`_cz}mcCf3nku{N>dO9z z8@|GqJFMl}n00Hf200bkDk!!DWTI~bw^{43JA4K1dN&Su_`D3!bld(}{J`T9n!PRV zGXs$(^_X}^zAyhtQ|C2$F@Pd3G1{ws6XZ&0ACXjj*L~D@+s8cUXl%#88uN~f9((W` z6D6aTAnc_43dxV{KguZKRLgoZ*ROvjd}fIz00+Z~Mn(MQ{w0~EWRNJW`dqJPP?#&PAaUTi=?ID8B1QFS}s^_O)Sd$KY&90 zqjhGd^=D#J;{1`L`i@ev9~k=28#8Yc4ZnR42YhA1|Cwjy#UQ)y5c(!f$#F`{{Mp%u zLiE$0$N)D3dmMb(vKiVDn7#j7ZNB`S(4=--+5!TdhYs_0@aJD`OVQE?h>$Q54QDjw z`|PH0ey8$+$x~^;;KujKt>S1QH4kQ7M{1jp8gde=sa;(;xAUOEIi+Szc|(hvtC`L# z*S@p#TouD}&x!%#TY-fN>wTlsLBk^M3Lk zIO=(noDuH44M3~00r$J77&xw|)3gl4T?0_$2nr3qaVVasJ1Ij6Imf zmdzOAb43{ONmh_szt|iaC{;Rpa1f$O)q5PO$SLM zyK|aJbm@cocdwk z;!UtbU{8yWGQgwXB%IbjL3?#)TLGhj1n`Rzn=g>e%KdA~MD8nr!nhT+`qhwom`??? zq{`9+a&oT1EmctUaK;YErEWvbQT8`{`8S41gwVX*C=R!9{YZ-pv{FQ(`_2YChngsP zE{P36$#@m1VkAZ~!D=mKb|_svjgH~OhuFAP5hVEMO&SyceNWp(s0wi)^+z5or9MoU zB<`>@DgN8LK3p=-NB={AjpZ&Z zyLzWbkK|ukFyip8l9ry%d%PISPjkK+F@qZPYIb{k4GRE(3&ArPC@~j7KUo6!HuO4$ zTIZ}kvJ^F)hR|#|eb5MW-@H@$rWh_pK(z^~HWWO2l~#)TC2rEBOup674N#gI)aKX4 z0ZmRV;2}sLDe~)A&kkNTXiVr%bsv6a$u*Y5L93FUW6ZXG6}S zp`R$kixb>IP0WBWd_;>z8#y9))*GAxyW=M z=E(Rv^Dd57Y{0pyE_Mu@sq~deXP!cN1!dBww5zwCp~?Z?*wcsTV4QJ&X^B3oOWN9t z##@2+w5mq(lW`KruX;Tz?Fc1%jy84vrlcZNHR4i2@qU5&uN4oojih<0TzGwueJyqi zl+v-xvauGVD|VK0Tu~Eb{y!}O2LNnt2?3rIMvc$v+RHmJnm@=6YEd5Bgn(wfokZPF{C=J;rV_0)C}9a=;WB!Z?~w>K`D< zaH!WVwp_zh6Xp!RR^R!JSG+I4azH@crf$-dwPYnXgG~ZT8mSI4ejpJ97^!Axy zQ?YX-KvOWk=T2)n5ttz2MXIbrEhP1lV_((4TPE>`@EvZzYR-66*c^3YpCfH~tEuz;5mhNqNjVlKFtM zjB{tF3x{-^;oE`?^s_P%ml&A1YiD7^4mT%-=kp2!A{0I1r89SkdTl00B;pG#+?wqVDprowp0E+$niK0=s`q%M{LDSPm(?kmyG70l1U5%-L z9IS|B?RO}@%%hI0+#7w<>$cl}=14q%cju&b)T?{_PCQC+59Sppj6adFV8;#AU7Win zNRR)R+^n^=)1K*?32`bl{iDg!I_VwgFE-ye(NRuV7xUs}oI->Bhmmjh;A@D<84y_4 z_e#sYATmp@8K*Ja^UOw|yDoYFG_!o^KZ3DbHgW%FvivCX4E=}gGM6z%g9?lA%IGT| zdVCG0a7wGDn#sn9x*a^Lu3Cs}z0dmGWOp~OT%9T-U~nn?6chAhySsNKbxuN!`4W)H z+whrCf<9`}^Qf@*zg3K2b0Jx0b=;0Y-Kf$&Qt}ojw%c}#6ldA_Ao@56iS_F@UV~uE zKwY)YcO%WopF%TtY*t$pBG0zTO!B5nzf}@_cGn zZ$v6LzP#0wDEs#O(Rf^c$F|TIEtbC{p<+kou~!Nc74VD5Co@)z5lFsVQT6(`g6X;r z@8b9#_J!V)a{GBDsFy4wP+bn`7axw`ScK7?_)7p$SkQlgw33=b)dCs(i^S_vy13OY6Rh@qie6a1(W5eVfx(Qn zya`tAFo(O*hy^SaDQ8-R~kR0Og3%i$s?}MU5C&F(Z;;Uy|l< z`>F}GRaGs%-y%2Zx_5C(vfn9Rnj747;hYo6F-l!XBBV%{uTpIOFrck9akN=v<@_RS z<;}S(VMzO^cP7Q8;@Fs1K?C=IVUgdlBr@i@jJAJW=h*nG_8+IIo)O}dKh(OcMy$@-p9yO@rDk#nJ z!jqR=`4BtIPfe{k03e@EwVAvEnnvr-NkWK{Qa(0wtbYp@!e8;LG2o*sMB-a`ChH-T_~h)*buzybZ|EGI6l7&A3D5zNkV7!a zpxB5<*I2^n-2W*NV0(nDliN)CCc`ent!{_}Cf=%ve<6}us{l>r-?*#U-efnc@FR3le(#%mKPCo@kbWBN%pKf+_GL}y zWhB6uv3PoeRQ#y zjE(fmZB+(<|Mu4m!+5{QXB@;brqv%{B1X-8G-&NQm4$;fVrQ@3_iRwd{9h=G2#NL|w`t3b%V@$=uO`-~?1`tv$ixLxXcJ)-Y#^RKAe}cDVRC__6t#;mHe}>?sc)Mmg_uiZ%-$nf zG&;8MKS{;hGKMS3k{2DP>ePUKwAf*(cAEmB^ZBAm-B0a)kv7y=W5CF3MB7M40#hi-8+jDZ z(&Xdog9^J|s+^Bq%*8U5^TW_vpglvY=AcexH7EY>1dp<@sv*YQqKiz^6`}D%Mt=>( z4V|As37s?#*hhy=UZx{>$(BNHiBbGR)#63$P9*`A2EJ&9}x4)6aDngK_1cX9Ue2o6BZ99e{)?zQn3XkoDe z63|t;qrRVyw{9eBbPw#-eCWr?7fZ|Yt&p4ilvcN(9rpVBtog5=ur};ejz9Re4lcsd zcspxC%U!qI8qtm9RL6iEO|10+tEFs6;o+$7Wp?_)E(7leJwj9z4y7VtNh?XsE#UC2>nPC`b&m9Wq?%bdT&Ccy9` ze!hrI?V>S&d#JDMPl}KcelrZ36 zpZQln-_;b2I3}K*pRm@+ow4f99Xe~9z_K^5z_;frWyoPx{cp)+SADSY6`Q7ztK7tF zr;yrcTI*L-(4z#JTqtu=R8!uf0k%uqWN{)!TJi|auM^B9Kc-{UO~RZU0WvTRRKVX& z(?-Ow$za6Mbu|Xx^UHVLAT3wkD@KWxlZh}VM6tTt`OMKinQ`ELk`+d4uo~_w{yEV6 zT#{t0=C+=F_*3|;FrutHYiC)}d7OLRA3&{B+kewpwU`$Swva%;4qGVW`1Fh@`p0j$E!)AY_S>%BdI|!JW z=g@JVj`aYTcg3RbaufhwnDEtW-_)bnjKuYwY75S9q87(HG@v9`aa14LSFoOO+8|rE zl9n*nLR8FJ9v?fhyXu9omy`EBOk3t`rCoHl&?SnG)0}DU@z}})l{nr303*cp<^76% z2M1Rx0_(=&d*)r<);&syKryD3J#x&*ozLmeX)}d07chlve`z3u7fgO2yMQ&@4!82I zBlFDM)Hc%-qC&(|Vvu9r;?J^ZW-w@zjNG-gFPt>7zqR=K#x}&6rE#T!tywcCT9$&x zpbM|jCx4(m&Z=y5{m~sXqB1dSPDW-Wc#4%WWFAC@@h(x5;MdDU)pFI5&Wla#eJPQa z0k^C&-P^g_CU)Bu)Q*{~Z$_stKahT#Tm1BR2D}j=h{zXEW_JIHn3e=sD?zM7gq-@= z1B4+y)D2rS62ng_f8Gq(BtMy%XcRegB@9g#e=BhMoV|wtwf$q}#oIGFJeciqNM zr6d!3ay{?R0pG@SDi(W(0&Cm0<(^?$09wxIy*1*+Zt{I8i$Qln7Fq z2FJDRu}@*kUP$d8$z#$K%H~h1%fH@@-rmpVsW=A^6!(V0-N75NfG~e}p2cSs`xkxa z1bKoV$Q1XFW08tYL{gC@8JSmAPL@{OZ2v#+SZ4nCW}ME@Irup*)>Cu z%SFKp45Jys1JQWBknyiJQge7+sH<*%o^(m@@x15i_#g2$z}c#O%YAT2dpo}%z?nr_ z(SedI38XPnS6fZSKG4!zJw;4+e38m4F-?L)a&4STiA^qh_t8m)5&$65Da9IH>2fdp zT{ri74H}Ut<05ck?E1rp#Q+Uy;;_U{%hq$W{WOlLY^PrY_jI) zQg|!=s4+un)bQE~ZCu`1=&mj;dU>2w6(<{xDcYVoJcc*UFWg|+ljT=mZz|OB2B$2w zdc%sX=xzqMl<^HpE9%9rZi^U8LZz%b0k3v=s@*GI7Mqkml~65WEUZG0VAE60x`&?f zN#_*D3zuDmKI!(A286mb9$3yU^u~OWK^|mP;YP|_4KI;L20+4u|3)GDW^p^AYCsr73`D>6>qAl z-T31S9YX*+A9xB9lgBDa3vZ>lEw~|jLrSu0)y@6O=GlvcA&q&AjhtN zvhJ8JjvpQHI)gyY+jgPO_b49}MsJ`?Mh~wSS783eY8AiZJX4ehiEC!JG{fbs`}hk{ zN*E}I8f1804FtUU?f@YFjXyaMs>S(%xb^3SjIm#g4u(S8Z8do3OMG9j#%XKQ(EiPd zR*9~xfx5QzxxZ^48kb!xS}bFdDh1ThuIgRglD z38T+6=;7xZW+V0jRvmT!HH0Y*cC|Uou`QixVf!Mq(nd4y4I(+H@8Lki4z$%-BEUjqPZ?H}`Xq8D4j3j;aK`-Q=Y&v5*XoY}C@1F79Iw z)mOr^dbO!uH|{Hw_o(ed+nHBObf^2*@&j~FXQ-p+(Z{y84=`T}G2CjlROyEq&ljy`o$y}i=UFTd~>OC zE`p9ig4h(#<0$5_^hRt&rEFu4&Sdv?-(&qu74e=_rA7iPg>#fNpO!8AAuHd`3p>tI z#;@-ao4}jA-Q!smYubyn@#%z|XU-#Es3txwX42fA!#Qag`lkNHz3qyz%X52@rqI!s zKv{!mpR3uetB;R2zu>2PU?Vcz zLQIOZcz2(LsIx+MLfHa$t)|p$0&7Wkr1wUMWHzPVb~m@Mm3V{-d|vMZQ_>!C=M-kXKtBAP~GVi3Wyg4PB9m zTVv5#r}#`PJwjH&T}dHrFTbZms*QE; ziDEjWfH%}6akFuBsOmhwPdxr&p+^m5@-&}P+c{{R#&AlxT72brP?3|Ftls&De3N&6 zIc3Qrg|l%Y)%{BsGna&wCp4~m-k^T8@7dBRzEBuw4naGu)t0_XIbFaQ8^6(FI&Arf z`~=?0m&86;yh}EUmzyy%xCkQiU3&Vq7y#EFmUc;2r=2*^Eo&_*UC|hPnsIEe?wD7H zzhivc#8%s`UDq3W21{{-k+M;f%)33RU73Si^l9|oJ?a}skfgqGk<*98@7BN*)fca; z%W{zoNmDQ}mFd0gFqJ{_lN;8cmlvK&>b@uHbuHg^7C~aqG;Sua@Q55?vTk?sqps(_ zEK%h_!3a-INWjpRz8klyCf#knfE3VQIv-?Ym=Fy;Z(IciXH04vtLpQ?2IE=|-~pWb z?1P#6Pe)B^eyd47kgT~Dhg$AL^1hk?aJ4i{BIy3nElF(#Pod%)82)(X23wf_cg4U2 zDl3g4y`#!(oHoD6A^^sYkn@1$)~p$MME}4LV=s;Ps6)3=AVYrL@Wq zct^u?bK`%E{d0V(GuU$mQzkCWUq#W*HrBUs`w-3JI|btR7tej&RhBNqv|~A>{St)d zx5>+WD_TCOmQyK@*);hmB>=jBE-Y5t)i!0Rx|DfYK&cN}ms_V)EPuTnH}oIo!V-e562xl?J;?_~?!1{eFaB{Cc z&~g0}mv~3+zV04sawmAB64q@XHYEgyq={a#EcJ|GN=a-tnn*hhibd6_P(=^s817s! z-i+t#KM)cK-Ma-ll~6T-yARG|wGQp|7g@}5N7|Cg`sbZOGIzw_Lb+~K z$LFxE8lN{evp))bv-(^g`FF!V)xK1cx{Od^k&p}?1HS$A!~1a)w?=>BGV!stuXBUHXIVOuiGi)o1Y<`41<<>Z7n9#s-E_ z4uF%g1!?R=$?<$IIJO2gKq7AdX9gW2seqdfD~)}LH8D51sSVph-W4ewB?^Kx)$ z`bdsfW`;pRF-+-kQgCG#-0gItnRMLuqmfVIjLhc8{LO$s>+H++tG@G*K4rSzku_x_ z&)HFbE&=lLW`Sy~4GVm7#q#A6CZ4z7r(%U&Z)PKfXOq6l(}N`hPgNIIExrJRrsNWh`rZ^`rcRHS6ra) z1U??e+xc3+M3P#;jDP$fx^nQZ@?z*Iss8Qtn{+>cdQjw)J6T%@UMttWWck=}_IJL8 z9-hmE3Zj6ZAn31o2ERnCpLVl3i*JA86r9t-+oV)-%En1=A2&$~%HL15iLz=Nx~gQH zc-eTok;TuDhR1V8p7KkJ!)Diaax5$fV6R-#c2-8a(->9%x+xv?4Yoe)NTjzG@JQYi zFsGPdq-1-636`fHfX)+@$ecTRS~m0N^7?0b_o6pS^b<4%d|;w&<(;=!!Yvya_Kr@Gkqq?fEV9cpGs@vFjZ z;Beu=>uJ0n;5&I;sm>EE!i54W7o&+p7xViY2FK*RDSJ0`)b1^;yR#PzPvv; z4$)d|$=)Zvy_Bc5k`Z1GT=GulPOft$5@TAR3J8H-R~@PE{A5TC^i42dwRQ4#9FcZl z$}iP$JA&rdpSN4tnU+TPH#<}Z^PNZkb?m503b#s2<8Q^IO+fLL@@hXd=#c-F^IE$n0ukp+rlOGnoF@fr}eJ&NyFY@-B=no zv4*Br!qsghJ;@k7rLm5;K`%sX*1~39)VCvT96zyCO;I;tFdKY;#f%;*#`KwaPN@=u zD_i%|!2cuaErZ&6gKxXph?;{*>6*>qFawGtM=6q2{!Sh(7%3Iv$$L3~V zu5M^k=D(UYX0xMK5kBow5yQJ#e#dRz4A> ztD4}2wJ^?@7Q6!d7SG&8Td`ohT|I%vF7}z#f0go^ZD+Wy4N1}9^7;|<`ZDgF+^U)5 z$~j*OZOG>D*=uC;nkg+2vGeI^+*cmnWh);tprvo-3Z3!HO5gz387FR26Koo%N==;( zPuuruD0kvdVX$S%ltNFpv_#}iuR-cG;L)qY`!!RPZak`{0xZY;#SZ^Uk)d!}!;v;f%T>YsbcB7#ytu6}mAVw-@)nIa`lht;r7_IOyhcsjh#0$B$4=W=>m97l(>)zrj`)0Wr7hxeJ?8bn0wx`w}QnhW;r zO8VTvd=zh%=ftK$8GF2O;P}*e?Y`nYO+?F%CHHd5Q4`i=Gzj zdA``th}}zW8mD9j!d)xZI`_o)ErR#-Nz+|(^-6u%`@A2h^QxcQ0RTGL_!6l_CFExv=!aVzfV~cGo5{5Y$9Cp!zomBY;1Qj9`EIPj{<*bXN!>w! zY!&Tw>ue@Jh#+B83BvpI!fI|$X9Iqk0cTcP0dtirQI6;X)zADOXs?rh!$v9}>73V{ zXOUrZ=8x4F2#@mPw0P7GQwf6ZtdGZrFOOk4A6@Y?r=RQ})f~$)m>6!En zE9cPyd4NjO!(7gkootGzH78q0tzm;GYeio@mC9 zeD(}QOD0lwCL8fSdwWN|w<_|kvxCJ!L=xu$DKSGmJ&*D>%6)&}%@q2+8FV+-=jv&u zOLkUqLHNtMpV#o{c+RU91QpfON5%_SF5`4UeB{?nfNr*!8*&axyr(k*ft^$+FP)|s z^14cSdEr%iHHR%pPop(xFM*E{ev=P&?AvQ}QJCr|$C)7%qS+b~!O#0-Zd!=v){9hM z8Qo;yJ<+R>V;>AvR|xQwytU7+4<)~SRSw$(iRfQk^Sgj+ z){`=BRoFi8v+-miYF)2Yk^hbnao57&!QRcX^j)_0yJ&wH3i-e0s zqfc|Kc^-koi7G8TvqmZEG}Ho2#W)|4P;3KxTuwJhwYiMP&#gAsJ{2ym+R1p8ewsHc z{NTtz62e`?_u8e~=uQrQ(aGOvGHbcV5Vy7iaP?EPe#DvB*6D`erZCdXY-?TqRNc;0 z?izNvY=ITbDmiK+c9~8ZH{JvlXAeV7J_QVX!@N z@Zm}`D(cnR9K8$Z#Cd63r9noeM_TWrVXd;$TG#qi%p2hNsdy3-Qvtw`I`P9(drMGmGYco@@V~F!=NSd1SSbbcH+E+undPODW ziR=IoFz*_j52(dtpw0h$u;9SGE$tq8+*e){bI7O;w8VvQ@YxMfd6l@CFUL zIz$ZF?|cK9$V&sJngd+2Y|l@QWnOGLJ=ZdWvt+;)JHwuCUOgAAf9GOJ2L}3|4t`H{ zOGpNXo=EZLG}>`x@0$?K>SuZiCahY0_s~Az{SZO=ZWm+nofK8-wG)uU3hmY)VsV4B zXRE-~JqN^lrffBHBWbDRk6ml)I*t}~UvyBa3GP4Fc?U!}Aha)Otn#bKvmb}KCZ74z zzI`w)+Y>qfKI`%oQp1~xb}_7J*quKFj%f$nH(_^iZ<=1p&6fW&y1Ks0byUY=WyaqF zsqFjuqEyvRwM&{VjxB}w3f0)T*ras5^%k{<`^_|CoLpRS8~W&7VBP%M2_f;nArepz z?rw6*7r9Opdi|O|k=gnb7XE%~NvP$^mmhwWXYdfYo5VwA_ZNe}-FYzd&)8Eb*(t&8ey6d%ScfrcrDO4tGMgHYA&c zBcIzNrLjqu3z}Z1RE;E_5B6o38P|p{nXV(C=*s8FSW}SuG1lVT=Ssm&A(s#|gG9nI?P`i-QYrQ2Wa1*;)6=vlQdYlzUlF;8=O9 zU7U8)jX-{Trw(GH;2x^dP;&ivs$iwE>TYH1a3~q%v;68uL;WV}q7SW6&5pP0fvp#_ zAc~OI{RN|`OG415$kK|wL1@Ez_20`Ie0d_jpN#PxPQsQ~K^8rSl7V{L>q$Fmerp+2 zfufz$KkFzC8VMXJ&+3j8T@=(^RkLH0Yg(7CY*{3opDtevqM|AicSo8Se{ae&=g2u{ zOA2jZxh@%Tj)AK1a&lOXW*h9fEaV5{J&sh(Q3pH7RIG^b4i)qi*RF1UdiRPPqTq2l zYsWiy&d3tA=6!3g(Ty?fk+}P{h=D#Q8PW`_4Fyd&&9bRn80BZ$(ODfw=^Z2onXy~U zc59}axZEbgQ{UT7@wDCJb=7q{7Hn*qTtwZ>yV~%{AKmu0{WO1b(&dENd)W1~_I9Bl znW^Jf@Z1V~>VCDW)})7O^6f6jSwlR*cYKubdEM+H0bFLL>Z&TopS?(%UiBbgxW|8Q*vRLyGdK35{sSSJ{f|J_rPvCbma=D09>uJ>o~qU1epwkloZK1)V7 zM=QaI(Vv%?732t+kM};{)q$h4jN71Xxq#(K4@?TY*1m>@;j*WcR@S%Wuo51Bo~!pF zOD>)UdVU^dCTfV0H(PQ&F*l`RFTw}X9)1w%*B7K!z;F87oVgX|VdR3hzF(H3ytiT6 zAW3A&dO~!y48gM7f*sK6Df$*1gz=u7ZzOIynNF<>Pke2hPzruoOHCY>AGaRPjs-)k zDjrQpN8JcsC+vOZa`U@#{&p@r)p{c!>gfzJz4<`1{PpAEbvoU>b@acvh8BKa)Fdu1|%dLWO! z6MQRpRfHyq$Rb+(|W3faDc)V2-3OEE{c z68k;Hn*gkC`MO32T%Fz++|iNBJwMHb{B@Y~40pS>gV63|uwOfAF>)a&V`hHflEONG@CkJ8JYf-Am3$5wlOS6E6oMoE^ zog~86-Wci8GTY3FV<%)&msgGNjXoqi?yaFu*qehBazmHUs|9tO=<3B^kE5tc}tXPHk%HA^|5CQK%{r>_h2z!Us(1)t6oC9L%_%~(w z+G;uSZpV>nPEenC(u76-mPaE|XEjuflL~E0A_mX-_Og;#G=8Jcbk(V<^&P7 zjHL)s9d)@FC|wdHb-@V+vFhj188uoNoxb_JbeEA8%lBHm*_iY>n;)x1XY3wSXWV0) zFG?p>>omeQLUfW0vD2aG7zk~B`DfDGb!1YKMr>{G^8+?f`)v=Sf%7ZDr^hAe&Xt^z zc5~_F(9=lc9&c$ViDvZOSW1p>-rSrxX!n^V0DnU}BJZ9qHd76J#z%5`HAg94f``G=Evs^V~iMbmPQz zshTT&RKa_HAncrP65ip%)$Ms&E-x91M4ai0W#4M_K=BYY?4_Du`dudSOYX8HcVsez zb{IS&5x>x?_3qQ!-bC7UIeI3>-wx!$LSnRrtqIB8@7oIbX9G90f!SaVDdK!F;QU0Y zqqdHa4=`ilG}~Ow@rw}+GZ&sZWsXHYb<1kL1O0YGQ;byZ!_(Yhl;jsF8`ZG`q!OY# z_?<&OQu+c;NyK>z)y^XJlWTY-=0E-M7Ff2CxCww)giNg$!#Mp!;403B0SP zHexX_m=7d%S2O|U;1ZfY!Rv$AI+|wOE3SZiTLXEy^Iq=v0!nLy*he;5-X24K%6BSV z)4omqf&12zY`0r7Mv<5SlEc(gjcaQG5-u$VhoYTtcpv_vb5r}A=PQ&End^xQ@Urnm zQ_o3`qWah;(jO(IycZ?XC+R=PIqV&m@_L+M`xmU!Sz=k->l~cbQ|0fh^_s3h?m??8 zmB`ppLpU=9t}A|vA+yx(_=T{7>e&4JY6>$%`e#aXlX6MT&}Es6X%TdKJ$QjD4W9m} zNy;uUh3-Guv^JoQNgT~XX}iZpq+@=!GaD-~Wx!QWh6r8L|DX3^&kHY0W-Z#uRO8)$ zCE3mQ7kw6sFt#5K2y4i*PZ7_Q_pR~MTIfsfnwa`GfU}BFU^0AJ3ecaO|KyGz#x0V2 zeV*}vGb~C)STQ`25i+)DU)x)nIgC>=d^Mr#@Xo3s5bh9BJzFG~NNIA*JGbGv!XUls zxVcf?c@2>$UM&?6_j)gStiSW;Ma9ucNf%+2$T{f~U#ZkpN$K7 z{rF#@>%x&ZUL*~YUlsV5tvr4#*|IBh|KKOdYvUG>(c_x;LJuM|J%2_ zVS*HM?k^L>fd1jBI<=u;s8Iy#q{nlq|Oen%L`>6LYuVpcJ1Wch~^)Cn*T%nN}# zb$=UuUYcyI4-byWx~l{SdooP~h90i^u4i?CFJER<0=OMgg+|AyYPKW}d+KUR=&~9F z(Qw(+U!(conT`x;0Zys(0*Rc=6U@}B{>z%d9KhX-4iPPCBio@tB&kE z8B(HK6CaTO1|+-PaEQJRi(|;nCNvZ6uogb=5)n=z1Qxy$#vb{gdvD55rD;r)=|oT` zF+B|}4#J3T&i9q@V_K*eT*V0U_&C+_9e6w6O6V`;#Rm6ba&?M{$jH_#9CQf9xWM0K`v`<<1q$=5JXWS6h8Ysg_zK~ z(WXq6b%IOcz;^70?_1tOv*-OG7CWWKZTNPS?pUU-GMZU!J6V2=l-Z`J^W*rm~| zA@e5nR-9x))hSbj4H-vPH1587epq%_#;HC+|G%`}e`#wrEoPl z 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 EFJ88Xv;Y7A literal 0 HcmV?d00001 diff --git a/Resources/Audio/items/weapons/smg_magout.ogg b/Resources/Audio/items/weapons/smg_magout.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d85ff5a40cae72d76cb7d0c4bf0d3233019c94fc GIT binary patch literal 5728 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/items/weapons/sources.txt b/Resources/Audio/items/weapons/sources.txt new file mode 100644 index 0000000000..5e7f1a1173 --- /dev/null +++ b/Resources/Audio/items/weapons/sources.txt @@ -0,0 +1,7 @@ +gun_empty.ogg: https://github.com/discordia-space/CEV-Eris/blob/fbde37a8647a82587d363da999a94cf02c2e128c/sound/weapons/guns/misc/gun_empty.ogg +smg_magin.ogg: https://github.com/discordia-space/CEV-Eris/blob/fbde37a8647a82587d363da999a94cf02c2e128c/sound/weapons/guns/interact/smg_magin.ogg +smg_magout.ogg: https://github.com/discordia-space/CEV-Eris/blob/fbde37a8647a82587d363da999a94cf02c2e128c/sound/weapons/guns/interact/smg_magout.ogg +smg_empty_alarm.ogg: https://github.com/discordia-space/CEV-Eris/blob/fbde37a8647a82587d363da999a94cf02c2e128c/sound/weapons/smg_empty_alarm.ogg +casingfall1.ogg: https://github.com/discordia-space/CEV-Eris/blob/fbde37a8647a82587d363da999a94cf02c2e128c/sound/weapons/guns/misc/casingfall1.ogg +casingfall2.ogg: https://github.com/discordia-space/CEV-Eris/blob/fbde37a8647a82587d363da999a94cf02c2e128c/sound/weapons/guns/misc/casingfall2.ogg +casingfall3.ogg: https://github.com/discordia-space/CEV-Eris/blob/fbde37a8647a82587d363da999a94cf02c2e128c/sound/weapons/guns/misc/casingfall3.ogg diff --git a/Resources/Maps/stationstation.yml b/Resources/Maps/stationstation.yml index 6a3c92cb67..b0924ee8e8 100644 --- a/Resources/Maps/stationstation.yml +++ b/Resources/Maps/stationstation.yml @@ -286,13 +286,13 @@ entities: pos: -2.015625,-3.859375 rot: -1.570796 rad type: Transform -- type: GUNITEM +- type: smg_c20r components: - grid: 0 pos: -2.890625,-4.484375 rot: -1.570796 rad type: Transform -- type: GUNITEM +- type: smg_c20r components: - grid: 0 pos: -1.984375,-4.484375 diff --git a/Resources/Prototypes/Entities/Mobs.yml b/Resources/Prototypes/Entities/Mobs.yml index 76641d5435..060a008ba3 100644 --- a/Resources/Prototypes/Entities/Mobs.yml +++ b/Resources/Prototypes/Entities/Mobs.yml @@ -55,6 +55,8 @@ - type: Eye zoom: 0.5, 0.5 + - type: CameraRecoil + - type: entity id: MobObserver name: Observer diff --git a/Resources/Prototypes/Entities/Projectiles.yml b/Resources/Prototypes/Entities/Projectiles.yml index db49558a8c..e69de29bb2 100644 --- a/Resources/Prototypes/Entities/Projectiles.yml +++ b/Resources/Prototypes/Entities/Projectiles.yml @@ -1,19 +0,0 @@ -- type: entity - id: ProjectileBullet - name: ProjectileBullet - description: If you can see this you're dead! - components: - - type: Sprite - directional: false - texture: Objects/projectilebullet.png - #rotation: -180 - - - type: Icon - texture: Objects/projectilebullet.png - - type: BoundingBox - aabb: -0.2,-0.2,0.2,0.2 - - type: Physics - edgeslide: false - - type: Projectile - - type: Collidable - hard: false diff --git a/Resources/Prototypes/Entities/Weapons.yml b/Resources/Prototypes/Entities/Weapons.yml index 6af9612483..fe9adcf64d 100644 --- a/Resources/Prototypes/Entities/Weapons.yml +++ b/Resources/Prototypes/Entities/Weapons.yml @@ -19,28 +19,6 @@ sprite: Objects/laser_retro.rsi prefix: 100 - -- type: entity - name: C-20r Sub Machine Gun - parent: BaseItem - id: GUNITEM - description: A rooty tooty point and shooty - components: - - type: Sprite - sprite: Objects/c20r.rsi - state: c20r-20 - - type: Icon - sprite: Objects/c20r.rsi - state: c20r-20 - - type: RangedWeapon - automatic: true - firerate: 8 - - type: ProjectileWeapon - - type: Item - Size: 24 - sprite: Objects/c20r.rsi - - - type: entity name: Spear parent: BaseItem diff --git a/Resources/Prototypes/Entities/weapons/ammunition.yml b/Resources/Prototypes/Entities/weapons/ammunition.yml new file mode 100644 index 0000000000..7e2a273fc2 --- /dev/null +++ b/Resources/Prototypes/Entities/weapons/ammunition.yml @@ -0,0 +1,50 @@ +- type: entity + id: magazine_12mm + name: "12mm magazine" + parent: BaseItem + components: + - type: BallisticMagazine + caliber: A12mm + magazine: A12mm + capacity: 20 + - type: Icon + sprite: Objects/items/magazine_12mm.rsi + state: 12mm-0 + - type: Sprite + netsync: false + sprite: Objects/items/magazine_12mm.rsi + state: 12mm-0 + - type: Appearance + visuals: + - type: BallisticMagazineVisualizer2D + base_state: 12mm + steps: 11 + +- type: entity + id: magazine_12mm_filled + name: "12mm magazine" + parent: magazine_12mm + components: + - type: BallisticMagazine + fill: ammo_casing_12mm + - type: Icon + state: 12mm-10 + - type: Sprite + state: 12mm-10 + +- type: entity + id: ammo_casing_12mm + name: "12mm bullet" + parent: BaseItem + components: + - type: BallisticBullet + caliber: A12mm + projectile: ProjectileBullet + - type: Sprite + sprite: Objects/items/ammo_casing.rsi + state: s-casing + drawdepth: FloorObjects + - type: Icon + sprite: Objects/items/ammo_casing.rsi + state: s-casing + diff --git a/Resources/Prototypes/Entities/weapons/guns.yml b/Resources/Prototypes/Entities/weapons/guns.yml new file mode 100644 index 0000000000..fc9f855527 --- /dev/null +++ b/Resources/Prototypes/Entities/weapons/guns.yml @@ -0,0 +1,35 @@ +- type: entity + name: C-20r Sub Machine Gun + parent: BaseItem + id: smg_c20r + description: A rooty tooty point and shooty. + components: + - type: Sprite + netsync: false + sprite: Objects/c20r.rsi + state: c20r-5 + - type: Icon + sprite: Objects/c20r.rsi + state: c20r-5 + - type: RangedWeapon + automatic: true + firerate: 8 + - type: BallisticMagazineWeapon + caliber: A12mm + magazine: A12mm + default_magazine: magazine_12mm_filled + auto_eject_magazine: true + sound_auto_eject: /Audio/items/weapons/smg_empty_alarm.ogg + sound_magazine_in: /Audio/items/weapons/smg_magin.ogg + sound_magazine_out: /Audio/items/weapons/smg_magout.ogg + sound_empty: /Audio/items/weapons/gun_empty.ogg + + - type: Appearance + visuals: + - type: BallisticMagazineWeaponVisualizer2D + base_state: c20r + steps: 6 + + - type: Item + Size: 24 + sprite: Objects/c20r.rsi diff --git a/Resources/Prototypes/Entities/weapons/projectiles.yml b/Resources/Prototypes/Entities/weapons/projectiles.yml new file mode 100644 index 0000000000..db49558a8c --- /dev/null +++ b/Resources/Prototypes/Entities/weapons/projectiles.yml @@ -0,0 +1,19 @@ +- type: entity + id: ProjectileBullet + name: ProjectileBullet + description: If you can see this you're dead! + components: + - type: Sprite + directional: false + texture: Objects/projectilebullet.png + #rotation: -180 + + - type: Icon + texture: Objects/projectilebullet.png + - type: BoundingBox + aabb: -0.2,-0.2,0.2,0.2 + - type: Physics + edgeslide: false + - type: Projectile + - type: Collidable + hard: false diff --git a/Resources/Textures/Objects/c20r.rsi/c20r-1.png b/Resources/Textures/Objects/c20r.rsi/c20r-1.png new file mode 100644 index 0000000000000000000000000000000000000000..29a2fde1f2fb800ab71070b80336ba91c9d21466 GIT binary patch literal 509 zcmV#{uNzSPcEI1P7UatWFK@b$Qz94Hox0QB#h ziD$DJqA1GLS1J|6aeVL@0LJ4nT-Vk4oh9U)>tY+Kxvj>`*=km+6{geaet~o&8)kFc zTc&eq9LGTvMVUR&0^992Q=BBp-i7l#PstQw6Nze@9q={&zkHI1B{oSWwd?C$az6@|Qa00000NkvXXu0mjfqvq#1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/c20r.rsi/c20r-16.png b/Resources/Textures/Objects/c20r.rsi/c20r-16.png deleted file mode 100644 index a3ecf32636320cf4a2671950fc0bd9feba61f4cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmV3_23kemZBq&4?mQMzqqid0 z64!N=P^v%{SrXBpN~HqMxvF0Zzgi$mLJ|!!3_~Pq{}M<_NTx2s=f``lbD})uX_i4# om)#}&W;(sTkhf7#Q1I~l0&Lv%8N}t|e*gdg diff --git a/Resources/Textures/Objects/c20r.rsi/c20r-8.png b/Resources/Textures/Objects/c20r.rsi/c20r-2.png similarity index 100% rename from Resources/Textures/Objects/c20r.rsi/c20r-8.png rename to Resources/Textures/Objects/c20r.rsi/c20r-2.png diff --git a/Resources/Textures/Objects/c20r.rsi/c20r-12.png b/Resources/Textures/Objects/c20r.rsi/c20r-3.png similarity index 100% rename from Resources/Textures/Objects/c20r.rsi/c20r-12.png rename to Resources/Textures/Objects/c20r.rsi/c20r-3.png diff --git a/Resources/Textures/Objects/c20r.rsi/c20r-4.png b/Resources/Textures/Objects/c20r.rsi/c20r-4.png index 29a2fde1f2fb800ab71070b80336ba91c9d21466..a3ecf32636320cf4a2671950fc0bd9feba61f4cf 100644 GIT binary patch delta 472 zcmV;}0Vn?b1M&lqB!9U{L_t(|ob8h#Z^A$rhTkp=2^FLyC`1vM3RKTtrY43VAwlpv z_yzm|e#gX;CQ}nr3l@T?INL%nkQA;2fw_rsm$np28HS{fx_biF2m=?d#-b$JmqPYK~tCACH!VOy}ppQQBY9u@caU7-1Qm5!pw#M O00009yql7R`YR;LbSK|<=# z=imu=f<8xwN|8Es=v1+S7(94QKrA2y9K^ul4y~=kn7?H~%C~Si&b}|l0p#T5SPcEI1P7UatWFK@b$Qz94Hox0QB#hiD$DJqA1GLS1J|6aeVL@0LJ4nT-Vk4oh9U) z>tY+Kxvj>`*?($Qs}-ix>3)H9BO7LO+gqk{X&lEv6h)am&;r}-HdCA=$=-$YJWtCQ z7fR3b5XUiu5Lhmk1puIw%A-q|Bng1uWfVdH03IHn006C~k6y2j*VjHqjN|+36U}DR zl#)u!Y;JvvKlI;FB}~iC^NUmxBgXZol2FT-o{EYUj9f7-WED6@T0&u)1Y->4av4Gh zoj=t4WC2scoP;9X$aP(5=KdvMN+?E*pWc?Ln`LHy|s|{kb?-@1E&oF zZH|Ua(hqhqX>V{?u3*uW#3CYhlXI3@NT}>8mb*f7y!V%%yR-NIy~*W~AafQMX^Op! zdzN`Za`Qgv``p(Q8APTG!i%PK2r?f0 zqu3IK;xifKtNZC3TU=PQXwe_*F65=nc6TX@oR6<>UJv`Ano!+`HU}t+oXvK3i3!kq z8sDfaa;&uoA)2+APINlZZf=a>=V-9jHtR8+7>ppxGNhEOS0WiiCxEy2?fo-3#9)qo z^Oxr*oO2jsIGrtz50bjBkx~NlzKPMIJ_vyIO3a2B{SEu#063j3#u#9F9HRiKA%Xx> zLIeY(g18AF1;ot&u^}b_#Dtg(5DQ`!KnTQ`q74`A8xufljZ&(4uBxiD*K7y8+DEGN1c3D> zDQp9@o~SH-eUlJJVRirI?Va8B-kKAw8k$q=1A0PS%A><=2H6fiyxBY7lCOc57?nIvF1VMn55-DY;6V_+E^(HCG2;escn-f%T f2p99?tiP!r5@Y%OOga3u00000NkvXXu0mjf3lyDl literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-10.png b/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-10.png new file mode 100644 index 0000000000000000000000000000000000000000..d73be4d480713571d9ade8c1b7325e8a1be6a001 GIT binary patch literal 390 zcmV;10eSw3P)6G)brl$3uBeJ7Bt@a<{4zCB5)=Xqe+vp#i2*Uy485UHkdPoyoa?40PLNa; z)l$*!`f+EVKXtjU_qpG_xqG2kum7$c)r2S_UCl-ST;DI0^P6f{72NmX>3bi5$uvlH z15}THQrk07*qoM6N<$f@0I9LI3~& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-2.png b/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-2.png new file mode 100644 index 0000000000000000000000000000000000000000..41783f5bddb395c89ce46b5b22b92567a0bc69d1 GIT binary patch literal 389 zcmV;00eb$4P)6G)brmx#CrFwgDw>cKg)3iRYN7&#fN#SGs6-*AnxT;>NJtR4bH~)gr6H** zVrf&c_PX`Xu>I7f_vd}?{k^%qaMV$Ut`pOOJg53u+yLY9lLTIV&j6Us z)50c~E`ZI115PNQ%N0zf4V3pb+qH_yG-S3Nh6TO;9LENDwH_9a9r0NKOs0 z+%nPiy6(=vUe&bM`<{E>uf2nV4*Kspat){|mfzD$0B$Ew&hfkI*i}5w;qm7LfYG>E z`Ucp#B3u0Gx*$uF_5HVxPpavIHz&4EWLKM|30iBSC<+2m8^LCAr4)I7ht_)iJWCUA zaWwWouh&Be!EAOD45Ajm+WYeQ9vot;11^ZuuV*h1&PKA6U!0#|j6o^Ia9DCbDH!x4 zgb+aY#%%RM9mIUGieg`g#wN6?i(}AVeU|fuMkxh!i=!1lNQl+|p&)hw2m!G(fNzLS z06rl)1Neg23!n{zOWyYN&7T#3l#)1(*VkoP*4EnF0jo_Xj4{MJ8 qv9uAuDh8h?sMZi6&W{KEP5lDEdiNi9tG(d>0000ZniqiM*pI?kePtHu_PGnZwZbc}i@O{4)h|De6EH0%aj)y3v((mn7 zo7mL0IE0U)*gU-6SEmy-cONI0@Y0vCeAXkSg!k_+3*R104Q(5YQQARM62s1KnYDH{V6tgK zYfTu22q6$cY&GHhj@RoCR%Q!ey$vpJP=z7txIgamH}eaJiTW9VfK0^z0000Mx>%g>NI%Tt*^Z~eim>bs@)uE|)5Ww@#5dgzc zxUmh8c_Ll>>N=$7ca!_?pI=NTPu85s+(@6c=XX&`;W$n$5UCOD7MD^I1Y?v^$@8Ay zwHC+T9%!{%xUS1=c2gTfDuA~4_3fi}h)f4e5XavyRv?Uxq&Gi5J0*@|q?8N>5kUZt zcYT&87eM*O+}i_??ZjdMm-q9^P8b35Ku9S|Llm+sEsoWC+mxNQgX_9Lu{d%$pq1uC zr@j3^t=6iP6NLckfG7-L8=@3|O^DI}wje42&8={W+vC-euFI*b?87DXyu>b%707*qo IM6N<$f~O$3`2YX_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-6.png b/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-6.png new file mode 100644 index 0000000000000000000000000000000000000000..20e563a505d2fad0afd2a64175c4e19cce8845ed GIT binary patch literal 415 zcmV;Q0bu@#P)osujkJpgVW=EnJDb!aLchVcAz1i)Z8 zN^AqgRE~Izc4LT^La9y_+h|Csj7nf2JhGUdc>3BEj zSZl}53^#;n!0ICObX9ghOiNyjg@8^3vVFaifq7Xox5QPDXKu9S|LsUA=vVyrY8*JX73PaR!e{A$O^$T_${TV?pZbAS6002ov JPDHLkV1gLpw1xlx literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-7.png b/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-7.png new file mode 100644 index 0000000000000000000000000000000000000000..3b737239d55a50a8f0f1a26da78788433d438fe1 GIT binary patch literal 417 zcmV;S0bc%zP)f>=h$1$NaSwpIr3Pf%SvcaX41i=GJsqJ{T z(>9il(i(6a2ha1EOm3|~Izy?HZ03F11-9$=R8Dg*d zJnx7uSII@yYPfiw2b3Stog7G&=R~WKJX*_@s^r98097D#GWM=#(*Yoa!1w*_cNm7| zQ;=2Gi8zk&eIFqNLWoi)jQ4nh;b@bl0FpGA?4T+`*ytY*`kVR%`vm_l+5!K{00000 LNkvXXu0mjf?I*j# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-8.png b/Resources/Textures/Objects/items/magazine_12mm.rsi/12mm-8.png new file mode 100644 index 0000000000000000000000000000000000000000..cae73c2b316c7106061613865b469dcaca81f45d GIT binary patch literal 412 zcmV;N0b~A&P)MxYp-m>WWsVW?g4OpH!I!0t@g`;3jvQm2LKF) z@zORx?u|_Fi_4g(8?OJqzJD+oKUi}j_aJlIs2h@|DW2y!fyhk3W^knxLX1e$biE#R zLu=_Mtbtamh41@Jr&rD(G69Ue&o6JzA#xokgE;(rvI0?BNapa@cVa$=^V?Z%CrSZaLsSBA2~ioq6~tBmE+DoBunn;jKotn3R3(Vo z4@y>_`1)RT%TC+F_kAG0Pweb~QI->(_Uh#{AVsqFu5UU4Af+S-g7tTjB$=^lJ7Bcw zgw~oM2#``Dr7U#9`iwUi#!Hg|Sf#<{1XUTr#r)XlZ|WDfXaFeY$PYsR0000pLAV%@*4c5T7q7@ofO0q75s zrE7r78)d;SE)$|oJD-31_+&JEbmm0mLD_AiP8+Q?VHkRWC`~~zxKfHZzC~-DuScD> zvvjPifglKIwOWkFSKc5>0Wy1EUf;b#R61aTIQ)8c0%0wr?C{f*V~jBOd%^ ztPoCqw6e!)zR-DasD7xN{p&>t04XIxh