diff --git a/Content.Server/Damage/Components/ActiveStaminaComponent.cs b/Content.Server/Damage/Components/ActiveStaminaComponent.cs new file mode 100644 index 0000000000..073d394728 --- /dev/null +++ b/Content.Server/Damage/Components/ActiveStaminaComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Server.Damage.Components; + +/// +/// Tracks whether an entity has ANY stamina damage for update purposes only. +/// +[RegisterComponent] +public sealed class ActiveStaminaComponent : Component +{ + +} diff --git a/Content.Server/Damage/Components/StaminaComponent.cs b/Content.Server/Damage/Components/StaminaComponent.cs new file mode 100644 index 0000000000..87e881016b --- /dev/null +++ b/Content.Server/Damage/Components/StaminaComponent.cs @@ -0,0 +1,47 @@ +using Content.Server.Damage.Systems; +using Robust.Shared.GameStates; + +namespace Content.Server.Damage.Components; + +/// +/// Add to an entity to paralyze it whenever it reaches critical amounts of Stamina DamageType. +/// +[RegisterComponent] +public sealed class StaminaComponent : Component +{ + /// + /// Have we reached peak stamina damage and been paralyzed? + /// + [ViewVariables(VVAccess.ReadWrite), DataField("critical")] + public bool Critical; + + /// + /// How much stamina reduces per second. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("decay")] + public float Decay = 3f; + + /// + /// How much time after receiving damage until stamina starts decreasing. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("cooldown")] + public float DecayCooldown = 5f; + + /// + /// How much stamina damage this entity has taken. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("staminaDamage")] + public float StaminaDamage; + + /// + /// How much stamina damage is required to entire stam crit. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("excess")] + public float CritThreshold = 100f; + + /// + /// Next time we're allowed to decrease stamina damage. Refreshes whenever the stam damage is changed. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("decayAccumulator")] + public float StaminaDecayAccumulator; +} diff --git a/Content.Server/Damage/Components/StaminaDamageOnCollideComponent.cs b/Content.Server/Damage/Components/StaminaDamageOnCollideComponent.cs new file mode 100644 index 0000000000..450fb56aab --- /dev/null +++ b/Content.Server/Damage/Components/StaminaDamageOnCollideComponent.cs @@ -0,0 +1,13 @@ +using Robust.Shared.GameStates; + +namespace Content.Server.Damage.Components; + +/// +/// Applies stamina damage when colliding with an entity. +/// +[RegisterComponent] +public sealed class StaminaDamageOnCollideComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite), DataField("damage")] + public float Damage = 55f; +} diff --git a/Content.Server/Damage/Components/StaminaDamageOnHitComponent.cs b/Content.Server/Damage/Components/StaminaDamageOnHitComponent.cs new file mode 100644 index 0000000000..fafe2a366f --- /dev/null +++ b/Content.Server/Damage/Components/StaminaDamageOnHitComponent.cs @@ -0,0 +1,8 @@ +namespace Content.Server.Damage.Components; + +[RegisterComponent] +public sealed class StaminaDamageOnHitComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite), DataField("damage")] + public float Damage = 30f; +} diff --git a/Content.Server/Damage/Events/StaminaDamageOnHitAttemptEvent.cs b/Content.Server/Damage/Events/StaminaDamageOnHitAttemptEvent.cs new file mode 100644 index 0000000000..40bb1ae1a8 --- /dev/null +++ b/Content.Server/Damage/Events/StaminaDamageOnHitAttemptEvent.cs @@ -0,0 +1,10 @@ +namespace Content.Server.Damage.Events; + +/// +/// Attempting to apply stamina damage on a melee hit to an entity. +/// +[ByRefEvent] +public struct StaminaDamageOnHitAttemptEvent +{ + public bool Cancelled; +} diff --git a/Content.Server/Damage/Systems/StaminaSystem.cs b/Content.Server/Damage/Systems/StaminaSystem.cs new file mode 100644 index 0000000000..dc906711e2 --- /dev/null +++ b/Content.Server/Damage/Systems/StaminaSystem.cs @@ -0,0 +1,221 @@ +using Content.Server.Damage.Components; +using Content.Server.Damage.Events; +using Content.Server.Popups; +using Content.Server.Weapon.Melee; +using Content.Shared.Alert; +using Content.Shared.Rounding; +using Content.Shared.Stunnable; +using Robust.Shared.Collections; +using Robust.Shared.Physics.Dynamics; +using Robust.Shared.Player; +using Robust.Shared.Timing; + +namespace Content.Server.Damage.Systems; + +public sealed class StaminaSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly AlertsSystem _alerts = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly SharedStunSystem _stunSystem = default!; + + private const float UpdateCooldown = 2f; + private float _accumulator; + + private const string CollideFixture = "projectile"; + + /// + /// How much of a buffer is there between the stun duration and when stuns can be re-applied. + /// + private const float StamCritBufferTime = 3f; + + private readonly List _dirtyEntities = new(); + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnCollide); + SubscribeLocalEvent(OnHit); + SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnShutdown); + } + + private void OnShutdown(EntityUid uid, StaminaComponent component, ComponentShutdown args) + { + SetStaminaAlert(uid); + } + + private void OnStartup(EntityUid uid, StaminaComponent component, ComponentStartup args) + { + SetStaminaAlert(uid, component); + } + + private void OnHit(EntityUid uid, StaminaDamageOnHitComponent component, MeleeHitEvent args) + { + if (component.Damage <= 0f) return; + + var ev = new StaminaDamageOnHitAttemptEvent(); + RaiseLocalEvent(uid, ref ev); + + if (ev.Cancelled) return; + + var stamQuery = GetEntityQuery(); + var toHit = new ValueList(); + + // Split stamina damage between all eligible targets. + foreach (var ent in args.HitEntities) + { + if (!stamQuery.TryGetComponent(ent, out var stam)) continue; + toHit.Add(stam); + } + + foreach (var comp in toHit) + { + var oldDamage = comp.StaminaDamage; + TakeStaminaDamage(comp.Owner, component.Damage / toHit.Count, comp); + if (comp.StaminaDamage.Equals(oldDamage)) + { + _popup.PopupEntity(Loc.GetString("stamina-resist"), comp.Owner, Filter.Entities(args.User)); + } + } + } + + private void OnCollide(EntityUid uid, StaminaDamageOnCollideComponent component, StartCollideEvent args) + { + if (!args.OurFixture.ID.Equals(CollideFixture)) return; + + TakeStaminaDamage(args.OtherFixture.Body.Owner, component.Damage); + } + + private void SetStaminaAlert(EntityUid uid, StaminaComponent? component = null) + { + if (!Resolve(uid, ref component, false) || component.Deleted) + { + _alerts.ClearAlert(uid, AlertType.Stamina); + return; + } + + var severity = ContentHelpers.RoundToLevels(MathF.Max(0f, component.CritThreshold - component.StaminaDamage), component.CritThreshold, 7); + _alerts.ShowAlert(uid, AlertType.Stamina, (short) severity); + } + + public void TakeStaminaDamage(EntityUid uid, float value, StaminaComponent? component = null) + { + if (!Resolve(uid, ref component, false) || component.Critical) return; + + var oldDamage = component.StaminaDamage; + component.StaminaDamage = MathF.Max(0f, component.StaminaDamage + value); + + // Reset the decay cooldown upon taking damage. + if (oldDamage < component.StaminaDamage) + { + component.StaminaDecayAccumulator = component.DecayCooldown; + } + + var slowdownThreshold = component.CritThreshold / 2f; + + // If we go above n% then apply slowdown + if (oldDamage < slowdownThreshold && + component.StaminaDamage > slowdownThreshold) + { + _stunSystem.TrySlowdown(uid, TimeSpan.FromSeconds(3), true, 0.8f, 0.8f); + } + + SetStaminaAlert(uid, component); + + // Can't do it here as resetting prediction gets cooked. + _dirtyEntities.Add(uid); + + if (!component.Critical) + { + if (component.StaminaDamage >= component.CritThreshold) + { + EnterStamCrit(uid, component); + } + } + else + { + if (component.StaminaDamage < component.CritThreshold) + { + ExitStamCrit(uid, component); + } + } + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + if (!_timing.IsFirstTimePredicted) return; + + _accumulator -= frameTime; + + if (_accumulator > 0f) return; + + var stamQuery = GetEntityQuery(); + + foreach (var uid in _dirtyEntities) + { + // Don't need to RemComp as they will get handled below. + if (!stamQuery.TryGetComponent(uid, out var comp) || comp.StaminaDamage <= 0f) continue; + EnsureComp(uid); + } + + _dirtyEntities.Clear(); + _accumulator += UpdateCooldown; + + foreach (var active in EntityQuery()) + { + // Just in case we have active but not stamina we'll check and account for it. + if (!stamQuery.TryGetComponent(active.Owner, out var comp) || + comp.StaminaDamage <= 0f) + { + RemComp(active.Owner); + continue; + } + + comp.StaminaDecayAccumulator -= UpdateCooldown; + + if (comp.StaminaDecayAccumulator > 0f) continue; + + // We were in crit so come out of it and continue. + if (comp.Critical) + { + ExitStamCrit(active.Owner, comp); + continue; + } + + comp.StaminaDecayAccumulator = 0f; + TakeStaminaDamage(comp.Owner, -comp.Decay * UpdateCooldown, comp); + } + } + + private void EnterStamCrit(EntityUid uid, StaminaComponent? component = null) + { + if (!Resolve(uid, ref component) || + component.Critical) return; + + // To make the difference between a stun and a stamcrit clear + // TODO: Mask? + + component.Critical = true; + component.StaminaDamage = component.CritThreshold; + component.StaminaDecayAccumulator = 0f; + + var stunTime = TimeSpan.FromSeconds(6); + _stunSystem.TryParalyze(uid, stunTime, true); + + // Give them buffer before being able to be re-stunned + component.StaminaDecayAccumulator = (float) stunTime.TotalSeconds + StamCritBufferTime; + } + + private void ExitStamCrit(EntityUid uid, StaminaComponent? component = null) + { + if (!Resolve(uid, ref component) || + !component.Critical) return; + + component.Critical = false; + component.StaminaDamage = 0f; + SetStaminaAlert(uid, component); + } +} diff --git a/Content.Server/Flash/FlashSystem.cs b/Content.Server/Flash/FlashSystem.cs index 0e053b02b5..db79e8ab75 100644 --- a/Content.Server/Flash/FlashSystem.cs +++ b/Content.Server/Flash/FlashSystem.cs @@ -30,7 +30,6 @@ namespace Content.Server.Flash { base.Initialize(); SubscribeLocalEvent(OnFlashMeleeHit); - SubscribeLocalEvent(OnFlashUseInHand); SubscribeLocalEvent(OnFlashExamined); SubscribeLocalEvent(OnInventoryFlashAttempt); @@ -78,16 +77,6 @@ namespace Content.Server.Flash } } - private void OnFlashUseInHand(EntityUid uid, FlashComponent comp, UseInHandEvent args) - { - if (!UseFlash(comp, args.User)) - { - return; - } - - FlashArea(uid, args.User, comp.Range, comp.AoeFlashDuration, comp.SlowTo, true); - } - private bool UseFlash(FlashComponent comp, EntityUid user) { if (comp.HasUses) @@ -121,39 +110,40 @@ namespace Content.Server.Flash return false; } - public void Flash(EntityUid target, EntityUid? user, EntityUid? used, float flashDuration, float slowTo, bool displayPopup = true) + public void Flash(EntityUid target, EntityUid? user, EntityUid? used, float flashDuration, float slowTo, bool displayPopup = true, FlashableComponent? flashable = null) { + if (!Resolve(target, ref flashable, false)) return; + var attempt = new FlashAttemptEvent(target, user, used); RaiseLocalEvent(target, attempt, true); if (attempt.Cancelled) return; - if (EntityManager.TryGetComponent(target, out var flashable)) + flashable.LastFlash = _gameTiming.CurTime; + flashable.Duration = flashDuration / 1000f; // TODO: Make this sane... + Dirty(flashable); + + _stunSystem.TrySlowdown(target, TimeSpan.FromSeconds(flashDuration/1000f), true, + slowTo, slowTo); + + if (displayPopup && user != null && target != user && EntityManager.EntityExists(user.Value)) { - flashable.LastFlash = _gameTiming.CurTime; - flashable.Duration = flashDuration / 1000f; // TODO: Make this sane... - Dirty(flashable); - - _stunSystem.TrySlowdown(target, TimeSpan.FromSeconds(flashDuration/1000f), true, - slowTo, slowTo); - - if (displayPopup && user != null && target != user && EntityManager.EntityExists(user.Value)) - { - user.Value.PopupMessage(target, Loc.GetString("flash-component-user-blinds-you", - ("user", user.Value))); - } + user.Value.PopupMessage(target, Loc.GetString("flash-component-user-blinds-you", + ("user", user.Value))); } } - public void FlashArea(EntityUid source, EntityUid? user, float range, float duration, float slowTo = 0f, bool displayPopup = false, SoundSpecifier? sound = null) + public void FlashArea(EntityUid source, EntityUid? user, float range, float duration, float slowTo = 0.8f, bool displayPopup = false, SoundSpecifier? sound = null) { var transform = EntityManager.GetComponent(source); + var mapPosition = transform.MapPosition; var flashableEntities = new List(); + var flashableQuery = GetEntityQuery(); foreach (var entity in _entityLookup.GetEntitiesInRange(transform.Coordinates, range)) { - if (!EntityManager.HasComponent(entity)) + if (!flashableQuery.HasComponent(entity)) continue; flashableEntities.Add(entity); @@ -162,14 +152,15 @@ namespace Content.Server.Flash foreach (var entity in flashableEntities) { // Check for unobstructed entities while ignoring the mobs with flashable components. - if (!_interactionSystem.InRangeUnobstructed(entity, transform.MapPosition, range, CollisionGroup.Opaque, (e) => flashableEntities.Contains(e))) + if (!_interactionSystem.InRangeUnobstructed(entity, mapPosition, range, CollisionGroup.Opaque, (e) => flashableEntities.Contains(e))) continue; - Flash(entity, user, source, duration, slowTo, displayPopup); + // They shouldn't have flash removed in between right? + Flash(entity, user, source, duration, slowTo, displayPopup, flashableQuery.GetComponent(entity)); } if (sound != null) { - SoundSystem.Play(sound.GetSound(), Filter.Pvs(transform), transform.Coordinates); + SoundSystem.Play(sound.GetSound(), Filter.Pvs(transform), source); } } diff --git a/Content.Server/Stunnable/Components/StunbatonComponent.cs b/Content.Server/Stunnable/Components/StunbatonComponent.cs index 631af4b0d8..780dae688b 100644 --- a/Content.Server/Stunnable/Components/StunbatonComponent.cs +++ b/Content.Server/Stunnable/Components/StunbatonComponent.cs @@ -1,3 +1,4 @@ +using Content.Server.Stunnable.Systems; using Content.Shared.Sound; using Content.Shared.Timing; @@ -8,21 +9,6 @@ namespace Content.Server.Stunnable.Components { public bool Activated = false; - /// - /// What the is when the stun baton is active. - /// - [ViewVariables(VVAccess.ReadWrite), DataField("activeCooldown")] - public TimeSpan ActiveDelay = TimeSpan.FromSeconds(4); - - /// - /// Store what the was before being activated. - /// - public TimeSpan? OldDelay; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("paralyzeTime")] - public float ParalyzeTime { get; set; } = 5f; - [ViewVariables(VVAccess.ReadWrite)] [DataField("energyPerUse")] public float EnergyPerUse { get; set; } = 350; diff --git a/Content.Server/Stunnable/StunOnCollideSystem.cs b/Content.Server/Stunnable/Systems/StunOnCollideSystem.cs similarity index 100% rename from Content.Server/Stunnable/StunOnCollideSystem.cs rename to Content.Server/Stunnable/Systems/StunOnCollideSystem.cs diff --git a/Content.Server/Stunnable/StunSystem.cs b/Content.Server/Stunnable/Systems/StunSystem.cs similarity index 100% rename from Content.Server/Stunnable/StunSystem.cs rename to Content.Server/Stunnable/Systems/StunSystem.cs diff --git a/Content.Server/Stunnable/StunbatonSystem.cs b/Content.Server/Stunnable/Systems/StunbatonSystem.cs similarity index 54% rename from Content.Server/Stunnable/StunbatonSystem.cs rename to Content.Server/Stunnable/Systems/StunbatonSystem.cs index 60f4d30630..2dd6f67469 100644 --- a/Content.Server/Stunnable/StunbatonSystem.cs +++ b/Content.Server/Stunnable/Systems/StunbatonSystem.cs @@ -1,10 +1,11 @@ using System.Linq; +using Content.Server.Damage.Components; +using Content.Server.Damage.Events; using Content.Server.Power.Components; using Content.Server.Power.Events; using Content.Server.Speech.EntitySystems; using Content.Server.Stunnable.Components; using Content.Server.Weapon.Melee; -using Content.Server.Weapon.Melee.Components; using Content.Shared.Audio; using Content.Shared.Examine; using Content.Shared.Interaction.Events; @@ -12,55 +13,48 @@ using Content.Shared.Item; using Content.Shared.Jittering; using Content.Shared.Popups; using Content.Shared.StatusEffect; -using Content.Shared.Stunnable; using Content.Shared.Throwing; -using Content.Shared.Timing; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Player; using Robust.Shared.Random; -using Robust.Shared.Timing; -namespace Content.Server.Stunnable +namespace Content.Server.Stunnable.Systems { public sealed class StunbatonSystem : EntitySystem { - [Dependency] private readonly MeleeWeaponSystem _melee = default!; - [Dependency] private readonly StunSystem _stunSystem = default!; - [Dependency] private readonly StutteringSystem _stutteringSystem = default!; - [Dependency] private readonly SharedJitteringSystem _jitterSystem = default!; - [Dependency] private readonly UseDelaySystem _useDelay = default!; - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly IRobustRandom _robustRandom = default!; - public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnMeleeHit); SubscribeLocalEvent(OnUseInHand); - SubscribeLocalEvent(OnThrowCollide); SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnStaminaHitAttempt); + SubscribeLocalEvent(OnMeleeHit); } - private void OnMeleeHit(EntityUid uid, StunbatonComponent comp, MeleeHitEvent args) + private void OnMeleeHit(EntityUid uid, StunbatonComponent component, MeleeHitEvent args) { - if (!comp.Activated || !args.HitEntities.Any() || args.Handled || _useDelay.ActiveDelay(uid)) - return; + if (!component.Activated) return; - if (!TryComp(uid, out var battery) || !battery.TryUseCharge(comp.EnergyPerUse)) - return; + // Don't apply damage if it's activated; just do stamina damage. + args.BonusDamage -= args.BaseDamage; + } - foreach (var entity in args.HitEntities) + private void OnStaminaHitAttempt(EntityUid uid, StunbatonComponent component, ref StaminaDamageOnHitAttemptEvent args) + { + if (!component.Activated || + !TryComp(uid, out var battery) || !battery.TryUseCharge(component.EnergyPerUse)) { - StunEntity(entity, comp); - SendPowerPulse(entity, args.User, uid); + args.Cancelled = true; + return; } - _melee.SetAttackCooldown(uid, _timing.CurTime + comp.ActiveDelay); - _useDelay.BeginDelay(uid); - // No combat should occur if we successfully stunned. - args.Handled = true; + if (battery.CurrentCharge < component.EnergyPerUse) + { + SoundSystem.Play(component.SparksSound.GetSound(), Filter.Pvs(component.Owner, entityManager: EntityManager), uid, AudioHelpers.WithVariation(0.25f)); + TurnOff(component); + } } private void OnUseInHand(EntityUid uid, StunbatonComponent comp, UseInHandEvent args) @@ -75,21 +69,6 @@ namespace Content.Server.Stunnable } } - private void OnThrowCollide(EntityUid uid, StunbatonComponent comp, ThrowDoHitEvent args) - { - if (!comp.Activated) - return; - - if (!TryComp(uid, out var battery)) - return; - - if (_robustRandom.Prob(comp.OnThrowStunChance) && battery.TryUseCharge(comp.EnergyPerUse)) - { - SendPowerPulse(args.Target, args.User, uid); - StunEntity(args.Target, comp); - } - } - private void OnExamined(EntityUid uid, StunbatonComponent comp, ExaminedEvent args) { var msg = comp.Activated @@ -101,24 +80,6 @@ namespace Content.Server.Stunnable ("charge", (int)((battery.CurrentCharge/battery.MaxCharge) * 100)))); } - private void StunEntity(EntityUid entity, StunbatonComponent comp) - { - if (!EntityManager.TryGetComponent(entity, out StatusEffectsComponent? status) || !comp.Activated) return; - - SoundSystem.Play(comp.StunSound.GetSound(), Filter.Pvs(comp.Owner), comp.Owner, AudioHelpers.WithVariation(0.25f)); - _stunSystem.TryParalyze(entity, TimeSpan.FromSeconds(comp.ParalyzeTime), true, status); - - var slowdownTime = TimeSpan.FromSeconds(comp.ParalyzeTime); - _jitterSystem.DoJitter(entity, slowdownTime, true, status:status); - _stutteringSystem.DoStutter(entity, slowdownTime, true, status); - - if (!TryComp(comp.Owner, out var battery) || !(battery.CurrentCharge < comp.EnergyPerUse)) - return; - - SoundSystem.Play(comp.SparksSound.GetSound(), Filter.Pvs(comp.Owner), comp.Owner, AudioHelpers.WithVariation(0.25f)); - TurnOff(comp); - } - private void TurnOff(StunbatonComponent comp) { if (!comp.Activated) @@ -135,11 +96,6 @@ namespace Content.Server.Stunnable SoundSystem.Play(comp.SparksSound.GetSound(), Filter.Pvs(comp.Owner), comp.Owner, AudioHelpers.WithVariation(0.25f)); comp.Activated = false; - if (TryComp(comp.Owner, out var useDelay) && comp.OldDelay != null) - { - useDelay.Delay = comp.OldDelay.Value; - comp.OldDelay = null; - } } private void TurnOn(StunbatonComponent comp, EntityUid user) @@ -147,13 +103,6 @@ namespace Content.Server.Stunnable if (comp.Activated) return; - if (EntityManager.TryGetComponent(comp.Owner, out var sprite) && - EntityManager.TryGetComponent(comp.Owner, out var item)) - { - item.EquippedPrefix = "on"; - sprite.LayerSetState(0, "stunbaton_on"); - } - var playerFilter = Filter.Pvs(comp.Owner, entityManager: EntityManager); if (!TryComp(comp.Owner, out var battery) || battery.CurrentCharge < comp.EnergyPerUse) { @@ -162,14 +111,15 @@ namespace Content.Server.Stunnable return; } - SoundSystem.Play(comp.SparksSound.GetSound(), playerFilter, comp.Owner, AudioHelpers.WithVariation(0.25f)); - - comp.Activated = true; - if (TryComp(comp.Owner, out var useDelay)) + if (EntityManager.TryGetComponent(comp.Owner, out var sprite) && + EntityManager.TryGetComponent(comp.Owner, out var item)) { - comp.OldDelay = useDelay.Delay; - useDelay.Delay = comp.ActiveDelay; + item.EquippedPrefix = "on"; + sprite.LayerSetState(0, "stunbaton_on"); } + + SoundSystem.Play(comp.SparksSound.GetSound(), playerFilter, comp.Owner, AudioHelpers.WithVariation(0.25f)); + comp.Activated = true; } private void SendPowerPulse(EntityUid target, EntityUid? user, EntityUid used) diff --git a/Content.Server/Weapon/Ranged/Systems/GunSystem.cs b/Content.Server/Weapon/Ranged/Systems/GunSystem.cs index 3d7cde1f99..8d4405bd7c 100644 --- a/Content.Server/Weapon/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapon/Ranged/Systems/GunSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Server.Damage.Systems; using Content.Server.Projectiles.Components; using Content.Server.Weapon.Melee; using Content.Server.Weapon.Ranged.Components; @@ -24,6 +25,7 @@ namespace Content.Server.Weapon.Ranged.Systems; public sealed partial class GunSystem : SharedGunSystem { [Dependency] private readonly EffectSystem _effects = default!; + [Dependency] private readonly StaminaSystem _stamina = default!; public const float DamagePitchVariation = MeleeWeaponSystem.DamagePitchVariation; @@ -116,6 +118,9 @@ public sealed partial class GunSystem : SharedGunSystem var distance = result.Distance; FireEffects(fromCoordinates, distance, entityDirection.ToAngle(), hitscan, result.HitEntity); + if (hitscan.StaminaDamage > 0f) + _stamina.TakeStaminaDamage(result.HitEntity, hitscan.StaminaDamage); + var dmg = hitscan.Damage; if (dmg != null) diff --git a/Content.Shared/Alert/AlertCategory.cs b/Content.Shared/Alert/AlertCategory.cs index db81212271..df310ca469 100644 --- a/Content.Shared/Alert/AlertCategory.cs +++ b/Content.Shared/Alert/AlertCategory.cs @@ -10,6 +10,7 @@ public enum AlertCategory Breathing, Buckled, Health, + Stamina, Piloting, Hunger, Thirst, diff --git a/Content.Shared/Alert/AlertType.cs b/Content.Shared/Alert/AlertType.cs index 2a42b20d6f..c348edca5a 100644 --- a/Content.Shared/Alert/AlertType.cs +++ b/Content.Shared/Alert/AlertType.cs @@ -28,6 +28,7 @@ Overhydrated, Thirsty, Parched, + Stamina, Pulled, Pulling, Magboots, diff --git a/Content.Shared/Alert/AlertsSystem.cs b/Content.Shared/Alert/AlertsSystem.cs index b0cfdfd11b..60a609538e 100644 --- a/Content.Shared/Alert/AlertsSystem.cs +++ b/Content.Shared/Alert/AlertsSystem.cs @@ -85,7 +85,7 @@ public abstract class AlertsSystem : EntitySystem AfterShowAlert(alertsComponent); - alertsComponent.Dirty(); + Dirty(alertsComponent); } else { diff --git a/Content.Shared/StatusEffect/StatusEffectsComponent.cs b/Content.Shared/StatusEffect/StatusEffectsComponent.cs index e412a41d76..c18c89168e 100644 --- a/Content.Shared/StatusEffect/StatusEffectsComponent.cs +++ b/Content.Shared/StatusEffect/StatusEffectsComponent.cs @@ -14,7 +14,7 @@ namespace Content.Shared.StatusEffect /// /// A list of status effect IDs to be allowed /// - [DataField("allowed", required: true)] + [DataField("allowed", required: true), Access(typeof(StatusEffectsSystem), Other = AccessPermissions.ReadExecute)] public List AllowedEffects = default!; } diff --git a/Content.Shared/Weapons/Ranged/HitscanPrototype.cs b/Content.Shared/Weapons/Ranged/HitscanPrototype.cs index 764b8c3218..2918918162 100644 --- a/Content.Shared/Weapons/Ranged/HitscanPrototype.cs +++ b/Content.Shared/Weapons/Ranged/HitscanPrototype.cs @@ -14,6 +14,9 @@ public sealed class HitscanPrototype : IPrototype, IShootable [IdDataFieldAttribute] public string ID { get; } = default!; + [ViewVariables(VVAccess.ReadWrite), DataField("staminaDamage")] + public float StaminaDamage; + [ViewVariables(VVAccess.ReadWrite), DataField("damage")] public DamageSpecifier? Damage; diff --git a/Resources/Audio/Weapons/Guns/Gunshots/license.txt b/Resources/Audio/Weapons/Guns/Gunshots/license.txt index acff754062..9b375674fc 100644 --- a/Resources/Audio/Weapons/Guns/Gunshots/license.txt +++ b/Resources/Audio/Weapons/Guns/Gunshots/license.txt @@ -1,2 +1,5 @@ atreides.ogg, c-20r.ogg, flaregun.ogg, mateba.ogg, minigun.ogg, mk58.ogg were taken from https://gitlab.com/cmdevs/colonial-warfare/-/tree/32cb5892413243cc74bb2d11df8e3085f8ef1164/sound/weapons They are licensed under CC-BY-SA 3.0 + +taser2.ogg was taken from https://github.com/tgstation/tgstation/tree/88d7dbfc105fbf40284d7b7c4587f8d23c0ac3ac +It is licensed under CC-BY-SA 3.0 \ No newline at end of file diff --git a/Resources/Audio/Weapons/Guns/Gunshots/taser2.ogg b/Resources/Audio/Weapons/Guns/Gunshots/taser2.ogg new file mode 100644 index 0000000000..b53f9db5c3 Binary files /dev/null and b/Resources/Audio/Weapons/Guns/Gunshots/taser2.ogg differ diff --git a/Resources/Locale/en-US/damage/stamina.ftl b/Resources/Locale/en-US/damage/stamina.ftl new file mode 100644 index 0000000000..9afe540b9d --- /dev/null +++ b/Resources/Locale/en-US/damage/stamina.ftl @@ -0,0 +1 @@ +stamina-resist = Resisted \ No newline at end of file diff --git a/Resources/Locale/en-US/stunnable/components/stunbaton-component.ftl b/Resources/Locale/en-US/stunnable/components/stunbaton-component.ftl index 8c6f09d098..61e8adf4a9 100644 --- a/Resources/Locale/en-US/stunnable/components/stunbaton-component.ftl +++ b/Resources/Locale/en-US/stunnable/components/stunbaton-component.ftl @@ -1,5 +1,7 @@ ### Stunbaton component +comp-stunbaton-stun = Stunned + ## Used when examining the stunbaton comp-stunbaton-examined-on = The light is currently [color=darkgreen]on[/color]. @@ -11,4 +13,4 @@ comp-stunbaton-activated-low-charge = Insufficient charge... stunbaton-component-low-charge = Insufficient charge... stunbaton-component-on-examine = The light is currently [color=darkgreen]on[/color]. -stunbaton-component-on-examine-charge = The charge indicator reads {$charge} % \ No newline at end of file +stunbaton-component-on-examine-charge = The charge indicator reads {$charge} % diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml index d247697ce8..f026e80bcc 100644 --- a/Resources/Maps/bagel.yml +++ b/Resources/Maps/bagel.yml @@ -41157,23 +41157,6 @@ entities: pos: 13.5,-38.5 parent: 60 type: Transform -- uid: 2177 - type: ShellShotgunFlash - components: - - pos: 11.711429,-35.299614 - parent: 60 - type: Transform - - canCollide: False - type: Physics -- uid: 2178 - type: ShellShotgunFlash - components: - - rot: 0.0007520564831793308 rad - pos: 11.738948,-35.53393 - parent: 60 - type: Transform - - canCollide: False - type: Physics - uid: 2179 type: ShellShotgunBeanbag components: diff --git a/Resources/Maps/marathon.yml b/Resources/Maps/marathon.yml index cd37b4f3dd..450f34c409 100644 --- a/Resources/Maps/marathon.yml +++ b/Resources/Maps/marathon.yml @@ -27317,30 +27317,6 @@ entities: type: Transform - canCollide: False type: Physics -- uid: 680 - type: ShellShotgunFlash - components: - - pos: -11.704681,19.266298 - parent: 30 - type: Transform - - canCollide: False - type: Physics -- uid: 681 - type: ShellShotgunFlash - components: - - pos: -11.517181,19.250673 - parent: 30 - type: Transform - - canCollide: False - type: Physics -- uid: 682 - type: ShellShotgunFlash - components: - - pos: -11.329681,19.250673 - parent: 30 - type: Transform - - canCollide: False - type: Physics - uid: 683 type: ClothingEyesGlassesSunglasses components: diff --git a/Resources/Maps/nss_pillar.yml b/Resources/Maps/nss_pillar.yml index 0cd7285c5d..2444b7238b 100644 --- a/Resources/Maps/nss_pillar.yml +++ b/Resources/Maps/nss_pillar.yml @@ -74639,14 +74639,6 @@ entities: - pos: 11.5,13.5 parent: 130 type: Transform -- uid: 7568 - type: ShellShotgunFlash - components: - - pos: 1.4405079,19.67595 - parent: 130 - type: Transform - - canCollide: False - type: Physics - uid: 7569 type: CableApcExtension components: @@ -75226,14 +75218,6 @@ entities: - pos: 0.5,4.5 parent: 130 type: Transform -- uid: 7664 - type: ShellShotgunFlash - components: - - pos: 1.5967579,19.660324 - parent: 130 - type: Transform - - canCollide: False - type: Physics - uid: 7665 type: WallReinforced components: @@ -77007,14 +76991,6 @@ entities: type: Physics - solution: drink type: DrainableSolution -- uid: 7889 - type: ShellShotgunFlash - components: - - pos: 1.3155079,19.691576 - parent: 130 - type: Transform - - canCollide: False - type: Physics - uid: 7890 type: DrinkGlass components: @@ -92463,18 +92439,6 @@ entities: ballistic-ammo: !type:Container ents: [] type: ContainerContainer -- uid: 9852 - type: BoxShotgunFlash - components: - - pos: -50.401936,33.396786 - parent: 130 - type: Transform - - canCollide: False - type: Physics - - containers: - storagebase: !type:Container - ents: [] - type: ContainerContainer - uid: 9853 type: WeaponShotgunKammerer components: @@ -148567,14 +148531,6 @@ entities: type: Airtight - canCollide: False type: Physics -- uid: 17447 - type: ShellShotgunFlash - components: - - pos: 1.7061329,19.660326 - parent: 130 - type: Transform - - canCollide: False - type: Physics - uid: 17448 type: CarpetBlack components: diff --git a/Resources/Maps/splitstation.yml b/Resources/Maps/splitstation.yml index 5247ac9cd8..7b716b4625 100644 --- a/Resources/Maps/splitstation.yml +++ b/Resources/Maps/splitstation.yml @@ -190355,18 +190355,6 @@ entities: - pos: 48.5,6.5 parent: 69 type: Transform -- uid: 22390 - type: BoxShotgunFlash - components: - - pos: 6.6360016,-56.489788 - parent: 69 - type: Transform - - canCollide: False - type: Physics - - containers: - storagebase: !type:Container - ents: [] - type: ContainerContainer - uid: 22391 type: DisposalPipe components: diff --git a/Resources/Prototypes/Alerts/alerts.yml b/Resources/Prototypes/Alerts/alerts.yml index 064dd91717..f2635768fb 100644 --- a/Resources/Prototypes/Alerts/alerts.yml +++ b/Resources/Prototypes/Alerts/alerts.yml @@ -63,6 +63,7 @@ name: "[color=red]On Fire[/color]" description: "You're [color=red]on fire[/color]. Click the alert to stop, drop and roll to put the fire out or move to a vacuum area." + - type: alert id: Cold category: Temperature @@ -163,6 +164,17 @@ name: "[color=yellow]Peckish[/color]" description: Some food would be good right about now. +- type: alert + id: Stamina + category: Stamina + icon: + sprite: /Textures/Interface/Alerts/stamina.rsi + state: stamina + name: Stamina + description: "Stuns you if it is too low." + minSeverity: 0 + maxSeverity: 6 + - type: alert id: Starving category: Hunger diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml b/Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml index 1de7f1f50f..c476b546db 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml @@ -101,17 +101,6 @@ - id: MagazineMagnum amount: 6 -- type: entity - name: box of .40 Lamia (flash) magazines. - parent: BoxCardboard - id: BoxMagazineMagnumFlash - description: A box full of .40 Lamia (flash) magazines. - components: - - type: StorageFill - contents: - - id: MagazineMagnumFlash - amount: 6 - - type: entity name: box of .40 Lamia (high-velocity) magazines parent: BoxCardboard @@ -212,17 +201,6 @@ - id: MagazinePistol amount: 6 -- type: entity - name: box of pistol .35 auto (flash) magazines - parent: BoxCardboard - id: BoxMagazinePistolFlash - description: A box full of pistol .35 auto (flash) magazines. - components: - - type: StorageFill - contents: - - id: MagazinePistolFlash - amount: 6 - - type: entity name: box of pistol .35 auto (high-velocity) magazines parent: BoxCardboard @@ -311,17 +289,6 @@ - id: MagazinePistolSubMachineGun amount: 3 -- type: entity - name: box of SMG .35 auto (flash) magazines - parent: BoxCardboard - id: BoxMagazinePistolSubMachineGunFlash - description: A box full of SMG .35 auto (flash) magazines. - components: - - type: StorageFill - contents: - - id: MagazinePistolSubMachineGunFlash - amount: 3 - - type: entity name: box of SMG .35 auto (high-velocity) magazines parent: BoxCardboard @@ -412,17 +379,6 @@ - id: MagazineRifle amount: 6 -- type: entity - name: box of .20 rifle (flash) magazines - parent: BoxCardboard - id: BoxMagazineRifleFlash - description: A box full of .20 rifle (flash) magazines. - components: - - type: StorageFill - contents: - - id: MagazineRifleFlash - amount: 6 - - type: entity name: box of .20 rifle (high-velocity) magazines parent: BoxCardboard diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/security.yml b/Resources/Prototypes/Catalog/Fills/Boxes/security.yml index bb49741ccf..ba4432f392 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/security.yml @@ -133,21 +133,6 @@ - state: boxwide - state: shellflare -- type: entity - name: box of shotgun flash cartridges - parent: BoxCardboard - id: BoxShotgunFlash - description: A box full of shotgun flash cartridges, designed for riot shotguns. - components: - - type: StorageFill - contents: - - id: ShellShotgunFlash - amount: 6 - - type: Sprite - layers: - - state: boxwide - - state: shellflash - - type: entity name: box of shotgun incendiary cartridges parent: BoxCardboard @@ -205,17 +190,6 @@ - id: MagazineRifle amount: 6 -- type: entity - name: box of .20 rifle (flash) magazines - parent: BoxCardboard - id: BoxMagazineRifleFlash - description: A box full of .20 rifle (flash) magazines. - components: - - type: StorageFill - contents: - - id: MagazineRifleFlash - amount: 6 - - type: entity name: box of .20 rifle (high-velocity) magazines parent: BoxCardboard diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/ammo.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/ammo.yml index e0ca8bf664..bd06ac0dd5 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/ammo.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/ammo.yml @@ -4,7 +4,6 @@ spriteName: ammo startingInventory: MagazineBoxCaselessRifle: 3 - MagazineBoxCaselessRifleFlash: 3 MagazineBoxCaselessRifleHighVelocity: 3 MagazineBoxCaselessRiflePractice: 3 MagazineBoxCaselessRifleRubber: 3 @@ -15,19 +14,16 @@ MagazineBoxLightRifleRubber: 3 MagazineBoxMagnum: 3 - MagazineBoxMagnumFlash: 3 MagazineBoxMagnumHighVelocity: 3 MagazineBoxMagnumPractice: 3 MagazineBoxMagnumRubber: 3 MagazineBoxPistol: 3 - MagazineBoxPistolFlash: 3 MagazineBoxPistolHighVelocity: 3 MagazineBoxPistolPractice: 3 MagazineBoxPistolRubber: 3 MagazineBoxRifle: 3 - MagazineBoxRifleFlash: 3 MagazineBoxRifleHighVelocity: 3 MagazineBoxRiflePractice: 3 MagazineBoxRifleRubber: 3 diff --git a/Resources/Prototypes/Damage/types.yml b/Resources/Prototypes/Damage/types.yml index 105ebb5de2..7a8b9a8df4 100644 --- a/Resources/Prototypes/Damage/types.yml +++ b/Resources/Prototypes/Damage/types.yml @@ -1,28 +1,3 @@ -- type: damageType - id: Blunt - -- type: damageType - id: Slash - -- type: damageType - id: Piercing - -- type: damageType - id: Heat - -- type: damageType - id: Shock - -- type: damageType - id: Cold - -# Poison damage. Generally caused by various reagents being metabolised. -- type: damageType - id: Poison - -- type: damageType - id: Radiation - # Damage due to being unable to breathe. # Represents not enough oxygen (or equivalent) getting to the blood. # Usually healed automatically if entity can breathe @@ -34,9 +9,34 @@ - type: damageType id: Bloodloss +- type: damageType + id: Blunt + - type: damageType id: Cellular +- type: damageType + id: Cold + +- type: damageType + id: Heat + +- type: damageType + id: Piercing + +# Poison damage. Generally caused by various reagents being metabolised. +- type: damageType + id: Poison + +- type: damageType + id: Radiation + +- type: damageType + id: Shock + +- type: damageType + id: Slash + # Damage represent structures internal integrity. # Exclusive for structures such as walls, airlocks and others. - type: damageType diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index e6195740c2..e2eab6419a 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -67,6 +67,7 @@ types: Bloodloss: -0.25 + - type: Stamina - type: StatusEffects allowed: - Stun diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml index 7e68320b77..fc59ad9279 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml @@ -100,21 +100,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - parent: BaseMagazineBoxCaselessRifle - id: MagazineBoxCaselessRifleFlash - name: ammunition box (.25 caseless flash) - components: - - type: BallisticAmmoProvider - proto: CartridgeCaselessRifleFlash - - type: Sprite - layers: - - state: base - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - state: flash - - type: entity parent: BaseMagazineBoxCaselessRifle id: MagazineBoxCaselessRifleHighVelocity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml index 663c09b678..97fa45c71a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml @@ -38,21 +38,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - parent: BaseMagazineBoxMagnum - id: MagazineBoxMagnumFlash - name: ammunition box (.40 magnum flash) - components: - - type: BallisticAmmoProvider - proto: CartridgeMagnumFlash - - type: Sprite - layers: - - state: base - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - state: flash - - type: entity parent: BaseMagazineBoxMagnum id: MagazineBoxMagnumHighVelocity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml index 2ab51c8638..0a9829871d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml @@ -39,21 +39,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - parent: BaseMagazineBoxPistol - id: MagazineBoxPistolFlash - name: ammunition box (.35 auto flash) - components: - - type: BallisticAmmoProvider - proto: CartridgePistolFlash - - type: Sprite - layers: - - state: base - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - state: flash - - type: entity parent: BaseMagazineBoxPistol id: MagazineBoxPistolHighVelocity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml index 06429dbf62..dcaf9d4142 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/rifle.yml @@ -79,21 +79,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - parent: BaseMagazineBoxRifle - id: MagazineBoxRifleFlash - name: ammunition box (.20 rifle flash) - components: - - type: BallisticAmmoProvider - proto: CartridgeRifleFlash - - type: Sprite - layers: - - state: base - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - state: flash - - type: entity parent: BaseMagazineBoxRifle id: MagazineBoxRifleHighVelocity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml index 3a62649f1e..4d9b184c5f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml @@ -28,14 +28,6 @@ - type: CartridgeAmmo proto: BulletCaselessRifle -- type: entity - id: CartridgeCaselessRifleFlash - name: cartridge (.25 caseless flash) - parent: BaseCartridgeCaselessRifle - components: - - type: CartridgeAmmo - proto: BulletCaselessRifleFlash - - type: entity id: CartridgeCaselessRifleHighVelocity name: cartridge (.25 caseless high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/light_rifle.yml index 69606f88df..8eadd268b1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/light_rifle.yml @@ -27,14 +27,6 @@ - type: CartridgeAmmo proto: BulletLightRifle -- type: entity - id: CartridgeLightRifleFlash - name: cartridge (.30 rifle flash) - parent: BaseCartridgeLightRifle - components: - - type: CartridgeAmmo - proto: BulletLightRifleFlash - - type: entity id: CartridgeLightRifleHighVelocity name: cartridge (.30 rifle high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml index 4e922b0556..335dfbd402 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml @@ -27,14 +27,6 @@ - type: CartridgeAmmo proto: BulletMagnum -- type: entity - id: CartridgeMagnumFlash - name: cartridge (.40 magnum flash) - parent: BaseCartridgeMagnum - components: - - type: CartridgeAmmo - proto: BulletMagnumFlash - - type: entity id: CartridgeMagnumHighVelocity name: cartridge (.40 magnum high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml index fdae513161..dde7304678 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml @@ -27,14 +27,6 @@ - type: CartridgeAmmo proto: BulletPistol -- type: entity - id: CartridgePistolFlash - name: cartridge (.35 auto flash) - parent: BaseCartridgePistol - components: - - type: CartridgeAmmo - proto: BulletPistolFlash - - type: entity id: CartridgePistolHighVelocity name: cartridge (.35 auto high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml index 92b1c82979..e058757a50 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml @@ -27,14 +27,6 @@ - type: CartridgeAmmo proto: BulletRifle -- type: entity - id: CartridgeRifleFlash - name: cartridge (.20 rifle flash) - parent: BaseCartridgeRifle - components: - - type: CartridgeAmmo - proto: BulletRifleFlash - - type: entity id: CartridgeRifleHighVelocity name: cartridge (.20 rifle high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml index 9af047668d..ed4278ba31 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml @@ -80,20 +80,6 @@ - type: CartridgeAmmo proto: PelletShotgun -- type: entity - id: ShellShotgunFlash - name: shell (.50 flash) - parent: BaseShellShotgun - components: - - type: Sprite - layers: - - state: flash - map: [ "enum.AmmoVisualLayers.Base" ] - - type: CartridgeAmmo - proto: PelletShotgunFlash - - type: SpentAmmoVisuals - state: "flash" - - type: entity id: ShellShotgunIncendiary name: shell (.50 incendiary) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml index b4e6e240b5..b66bff9f2c 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml @@ -112,8 +112,6 @@ zeroVisible: false - type: Appearance -# No flash - - type: entity id: MagazinePistolCaselessRifleHighVelocity name: "pistol magazine (.25 caseless high-velocity)" @@ -245,21 +243,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - id: MagazineCaselessRifleShortFlash - name: "short magazine (.25 caseless flash)" - parent: BaseMagazineCaselessRifleShort - components: - - type: BallisticAmmoProvider - proto: CartridgeCaselessRifleFlash - capacity: 20 - - type: Sprite - layers: - - state: flash - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - type: entity id: MagazineCaselessRifleShortHighVelocity name: "short magazine (.25 caseless high-velocity)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml index 0bb4e4e4e6..11c5d26b69 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/light_rifle.yml @@ -68,20 +68,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - id: MagazineLightRifleFlash - name: "magazine (.30 rifle flash)" - parent: BaseMagazineLightRifle - components: - - type: BallisticAmmoProvider - proto: CartridgeLightRifleFlash - - type: Sprite - layers: - - state: flash - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - type: entity id: MagazineLightRifleHighVelocity name: "magazine (.30 rifle high-velocity)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml index 7229cf2dc9..02c4edf366 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml @@ -78,20 +78,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - id: MagazineMagnumFlash - name: "Lamia magazine (.40 magnum flash)" - parent: BaseMagazineMagnum - components: - - type: BallisticAmmoProvider - proto: CartridgeMagnumFlash - - type: Sprite - layers: - - state: flash - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - type: entity id: MagazineMagnumHighVelocity name: "Lamia magazine (.40 magnum high-velocity)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml index edd8753f18..ce41644de1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml @@ -159,20 +159,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - id: MagazinePistolFlash - name: pistol magazine (.35 auto flash) - parent: BaseMagazinePistol - components: - - type: BallisticAmmoProvider - proto: CartridgePistolFlash - - type: Sprite - layers: - - state: flash - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - type: entity id: MagazinePistolHighVelocity name: pistol magazine (.35 auto high-velocity) @@ -291,20 +277,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - id: MagazinePistolSubMachineGunFlash - name: SMG magazine (.35 auto flash) - parent: BaseMagazinePistolSubMachineGun - components: - - type: BallisticAmmoProvider - proto: CartridgePistolFlash - - type: Sprite - layers: - - state: flash - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - type: entity id: MagazinePistolSubMachineGunHighVelocity name: SMG magazine (.35 auto high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml index 8b58d6fb4b..f81296055d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/rifle.yml @@ -47,20 +47,6 @@ - state: mag-1 map: ["enum.GunVisualLayers.Mag"] -- type: entity - id: MagazineRifleFlash - name: "magazine (.20 rifle flash)" - parent: BaseMagazineRifle - components: - - type: BallisticAmmoProvider - proto: CartridgeRifleFlash - - type: Sprite - layers: - - state: flash - map: ["enum.GunVisualLayers.Base"] - - state: mag-1 - map: ["enum.GunVisualLayers.Mag"] - - type: entity id: MagazineRifleHighVelocity name: "magazine (.20 rifle high-velocity)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/caseless_rifle.yml index 2e81e92300..694d9589de 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/caseless_rifle.yml @@ -9,17 +9,6 @@ types: Piercing: 19 -- type: entity - id: BulletCaselessRifleFlash - name: bullet (.25 caseless flash) - parent: BaseBulletFlash - noSpawn: true - components: - - type: Projectile - damage: - types: - Blunt: 3 - - type: entity id: BulletCaselessRifleHighVelocity name: bullet (.25 caseless high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/light_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/light_rifle.yml index 4cc3a4f46f..e4d2f35822 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/light_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/light_rifle.yml @@ -9,17 +9,6 @@ types: Piercing: 19 -- type: entity - id: BulletLightRifleFlash - name: bullet (.20 rifle flash) - parent: BaseBulletFlash - noSpawn: true - components: - - type: Projectile - damage: - types: - Blunt: 3 - - type: entity id: BulletLightRifleHighVelocity name: bullet (.20 rifle high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml index fd729cb6f5..3781df4017 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/magnum.yml @@ -9,17 +9,6 @@ types: Piercing: 22 -- type: entity - id: BulletMagnumFlash - name: bullet (.40 magnum flash) - parent: BaseBulletFlash - noSpawn: true - components: - - type: Projectile - damage: - types: - Blunt: 3 - - type: entity id: BulletMagnumHighVelocity name: bullet (.40 magnum high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/pistol.yml index c9a5e0565b..f26f7b4022 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/pistol.yml @@ -9,17 +9,6 @@ types: Piercing: 16 -- type: entity - id: BulletPistolFlash - name: bullet (.35 auto flash) - parent: BaseBulletFlash - noSpawn: true - components: - - type: Projectile - damage: - types: - Blunt: 3 - - type: entity id: BulletPistolHighVelocity name: bullet (.35 auto high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/rifle.yml index 6e9a5873e5..606505bd68 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/rifle.yml @@ -9,17 +9,6 @@ types: Piercing: 17 -- type: entity - id: BulletRifleFlash - name: bullet (0.20 rifle flash) - parent: BaseBulletFlash - noSpawn: true - components: - - type: Projectile - damage: - types: - Blunt: 3 - - type: entity id: BulletRifleHighVelocity name: bullet (0.20 rifle high-velocity) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml index d596111e4a..86d328099c 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml @@ -25,9 +25,8 @@ damage: types: Blunt: 10 - - type: StunOnCollide - stunAmount: 5 - knockdownAmount: 3 + - type: StaminaDamageOnCollide + damage: 55 - type: entity id: PelletShotgun @@ -43,20 +42,6 @@ types: Piercing: 5 -- type: entity - id: PelletShotgunFlash - name: pellet (.50 flash) - noSpawn: true - parent: BaseBulletFlash - components: - - type: Sprite - sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi - state: buckshot - - type: Projectile - damage: - types: - Blunt: 2 - - type: entity id: PelletShotgunIncendiary name: pellet (.50 incendiary) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml index 64ccdb43b4..2dfe35663e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml @@ -32,26 +32,6 @@ zeroVisible: false - type: Appearance -- type: entity - id: SpeedLoaderMagnumFlash - name: "speed loader (.40 magnum flash)" - parent: BaseSpeedLoaderMagnum - components: - - type: BallisticAmmoProvider - proto: CartridgeMagnumFlash - - type: Sprite - sprite: Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi - layers: - - state: base - map: [ "enum.GunVisualLayers.Base" ] - - state: flash-6 - map: [ "enum.GunVisualLayers.Mag" ] - - type: MagazineVisuals - magState: flash - steps: 7 - zeroVisible: false - - type: Appearance - - type: entity id: SpeedLoaderMagnumHighVelocity name: "speed loader (.40 magnum high-velocity)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml index 9165592042..4fb7b912c9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/pistol.yml @@ -32,25 +32,6 @@ zeroVisible: false - type: Appearance -- type: entity - id: SpeedLoaderPistolFlash - name: "speed loader (.35 auto flash)" - parent: BaseSpeedLoaderPistol - components: - - type: BallisticAmmoProvider - proto: CartridgePistolFlash - - type: Sprite - layers: - - state: base - map: ["enum.GunVisualLayers.Base"] - - state: flash-6 - map: ["enum.GunVisualLayers.Mag"] - - type: MagazineVisuals - magState: flash - steps: 7 - zeroVisible: false - - type: Appearance - - type: entity id: SpeedLoaderPistolHighVelocity name: "speed loader (.35 auto high-velocity)" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index 89d3cb51c3..e87193c8d6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -246,11 +246,49 @@ zeroVisible: true - type: Appearance +- type: entity + name: disabler + parent: BaseWeaponBattery + id: WeaponDisabler + description: A self-defense weapon that exhausts organic targets, weakening them until they collapse. + components: + - type: Tag + tags: + - Taser + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/disabler.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-unshaded-0 + map: ["enum.GunVisualLayers.MagUnshaded"] + shader: unshaded + - type: Clothing + sprite: Objects/Weapons/Guns/Battery/disabler.rsi + size: 10 + quickEquip: false + Slots: + - Belt + - type: Gun + fireRate: 2 + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/taser2.ogg + - type: ProjectileBatteryAmmoProvider + proto: BulletDisabler + fireCost: 50 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: true + - type: Appearance + - type: entity name: taser parent: BaseWeaponBattery id: WeaponTaser description: A low-capacity, energy-based stun gun used by security teams to subdue targets at range. + # Use Disabler + suffix: Obsolete components: - type: Tag tags: @@ -274,11 +312,8 @@ soundGunshot: path: /Audio/Weapons/Guns/Gunshots/taser.ogg - type: ProjectileBatteryAmmoProvider - proto: BulletTaser + proto: BulletDisabler fireCost: 50 - - type: Battery - maxCharge: 100 - startingCharge: 100 - type: MagazineVisuals magState: mag steps: 5 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml index 3cfe06efcb..75e77c9f65 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml @@ -42,21 +42,6 @@ sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi state: impact_laser -- type: hitscan - id: OmniLaser - damage: - types: - Heat: 21 - muzzleFlash: - sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi - state: muzzle_omni - travelFlash: - sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi - state: beam_omni - impactFlash: - sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi - state: impact_omni - - type: hitscan id: XrayLaser damage: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index 534a5ae7b2..e106f35451 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -57,21 +57,6 @@ - Impassable - BulletImpassable -- type: entity - id: BaseBulletFlash - name: base bullet flash - parent: BaseBulletTrigger - noSpawn: true - components: - - type: Projectile - soundHit: - path: /Audio/Weapons/Guns/Hits/snap.ogg - - type: FlashOnTrigger - range: 1 - - type: EmitSoundOnTrigger - sound: - path: "/Audio/Effects/flash_bang.ogg" - - type: entity id: BaseBulletHighVelocity name: base bullet high-velocity @@ -106,14 +91,13 @@ Blunt: 3 soundHit: path: /Audio/Weapons/Guns/Hits/snap.ogg - - type: StunOnCollide - stunAmount: 2 - knockdownAmount: 2 + - type: StaminaDamageOnCollide + damage: 15 # Energy projectiles - type: entity - name : taser bolt - id: BulletTaser + name : disabler bolt + id: BulletDisabler parent: BaseBullet noSpawn: true components: @@ -123,24 +107,24 @@ params: volume: 5 - type: Sprite - noRot: true - sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi - color: "#ffff33" + sprite: Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi layers: - - state: spark + - state: omnilaser shader: unshaded - type: Physics - type: Fixtures fixtures: - shape: !type:PhysShapeAabb - bounds: "-0.2,-0.2,0.2,0.2" + bounds: "-0.15,-0.3,0.15,0.3" hard: false id: projectile mask: - Impassable - BulletImpassable - type: Ammo + - type: StaminaDamageOnCollide + damage: 55 - type: Projectile damage: types: @@ -148,9 +132,6 @@ soundHit: path: "/Audio/Weapons/Guns/Hits/taser_hit.ogg" soundForce: true - - type: StunOnCollide - stunAmount: 5 - knockdownAmount: 5 - type: entity name: emitter bolt @@ -246,9 +227,8 @@ Blunt: 1 soundHit: path: /Audio/Effects/gen_hit.ogg - - type: StunOnCollide - stunAmount: 8 - knockdownAmount: 8 + - type: StaminaDamageOnCollide + damage: 80 - type: entity id: BulletGrenadeBlast @@ -269,7 +249,7 @@ - type: entity id: BulletGrenadeFlash name: flash grenade - parent: BaseBulletFlash + parent: BaseBulletTrigger noSpawn: true components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/bola.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/bola.yml index 92ea5655a2..1e4bdc1eb9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/bola.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/bola.yml @@ -13,9 +13,8 @@ sound: /Audio/Weapons/bolathrow.ogg - type: EmitSoundOnLand sound: /Audio/Effects/snap.ogg - - type: StunOnCollide - stunAmount: 1 - knockdownAmount: 3 + - type: StaminaDamageOnCollide + damage: 80 - type: Construction graph: Bola node: bola diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 6c1b7e10a6..43e270f4cf 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -16,8 +16,10 @@ range: 1.5 arcwidth: 60 arc: default - - type: UseDelay - delay: 4 + cooldownTime: 1.5 + arcCooldownTime: 1.5 + - type: StaminaDamageOnHit + damage: 55 - type: Battery maxCharge: 1000 startingCharge: 1000 @@ -50,7 +52,7 @@ arcWidth: 10 arc: default - type: Item - size: 2 + size: 5 sprite: Objects/Weapons/Melee/flash.rsi - type: ItemCooldown diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index 170c364d94..8002dd1a3a 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -170,14 +170,3 @@ Plastic: 15 Steel: 10 Glass: 5 - -- type: latheRecipe - id: ShellShotgunFlash - icon: - sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi - state: flash - result: ShellShotgunFlash - completetime: 2 - materials: - Plastic: 20 - Steel: 5 diff --git a/Resources/Textures/Interface/Alerts/stamina.rsi/meta.json b/Resources/Textures/Interface/Alerts/stamina.rsi/meta.json new file mode 100644 index 0000000000..21122621e0 --- /dev/null +++ b/Resources/Textures/Interface/Alerts/stamina.rsi/meta.json @@ -0,0 +1,124 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "taken from tg station at commit https://github.com/tgstation/tgstation/blob/832ae532766d491d91db53746d15b4b55be3f2b0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "stamina6", + "delays": [ + [ + 0.5, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.5 + ] + ] + }, + { + "name": "stamina5", + "delays": [ + [ + 0.5, + 0.2, + 0.2, + 0.2, + 0.2, + 0.5 + ] + ] + }, + { + "name": "stamina4", + "delays": [ + [ + 0.3, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.3 + ] + ] + }, + { + "name": "stamina3", + "delays": [ + [ + 0.3, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.3 + ] + ] + }, + { + "name": "stamina2", + "delays": [ + [ + 0.3, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.3 + ] + ] + }, + { + "name": "stamina1", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "stamina0", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Interface/Alerts/stamina.rsi/stamina0.png b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina0.png new file mode 100644 index 0000000000..10e3e8c956 Binary files /dev/null and b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina0.png differ diff --git a/Resources/Textures/Interface/Alerts/stamina.rsi/stamina1.png b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina1.png new file mode 100644 index 0000000000..a34d57cf26 Binary files /dev/null and b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina1.png differ diff --git a/Resources/Textures/Interface/Alerts/stamina.rsi/stamina2.png b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina2.png new file mode 100644 index 0000000000..a3d263d751 Binary files /dev/null and b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina2.png differ diff --git a/Resources/Textures/Interface/Alerts/stamina.rsi/stamina3.png b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina3.png new file mode 100644 index 0000000000..356916dfe0 Binary files /dev/null and b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina3.png differ diff --git a/Resources/Textures/Interface/Alerts/stamina.rsi/stamina4.png b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina4.png new file mode 100644 index 0000000000..d0645f4ebd Binary files /dev/null and b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina4.png differ diff --git a/Resources/Textures/Interface/Alerts/stamina.rsi/stamina5.png b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina5.png new file mode 100644 index 0000000000..46f439dfd5 Binary files /dev/null and b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina5.png differ diff --git a/Resources/Textures/Interface/Alerts/stamina.rsi/stamina6.png b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina6.png new file mode 100644 index 0000000000..bbcba3803c Binary files /dev/null and b/Resources/Textures/Interface/Alerts/stamina.rsi/stamina6.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/flash.png deleted file mode 100644 index b50945ba8f..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/meta.json index 632f0d68a9..8ce4d885e5 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.rsi/meta.json @@ -25,9 +25,6 @@ { "name": "mag10-1" }, - { - "name": "flash" - }, { "name": "hv" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/flash.png deleted file mode 100644 index a2921b45fc..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/meta.json index 5efc1be2a8..a85b6144c4 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/magnum.rsi/meta.json @@ -13,9 +13,6 @@ { "name": "mag-1" }, - { - "name": "flash" - }, { "name": "hv" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/flash.png deleted file mode 100644 index 0698be7c2f..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json index 5efc1be2a8..a85b6144c4 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/pistol.rsi/meta.json @@ -13,9 +13,6 @@ { "name": "mag-1" }, - { - "name": "flash" - }, { "name": "hv" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/flash.png deleted file mode 100644 index 7de6be0c89..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/meta.json index 52a51b7fc7..a92a8ed5d5 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Boxes/rifle.rsi/meta.json @@ -19,9 +19,6 @@ { "name": "magb-1" }, - { - "name": "flash" - }, { "name": "hv" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/flash-spent.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/flash-spent.png deleted file mode 100644 index 075ef807e6..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/flash-spent.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/flash.png deleted file mode 100644 index e0810018b8..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/meta.json index 7ef062a143..a482d5c45a 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi/meta.json @@ -31,12 +31,6 @@ { "name": "flare-spent" }, - { - "name": "flash" - }, - { - "name": "flash-spent" - }, { "name": "incendiary" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag.rsi/flash.png deleted file mode 100644 index 2cd64d37e1..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag.rsi/meta.json index 0da5f470a4..8675d7f4ab 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag.rsi/meta.json @@ -10,9 +10,6 @@ { "name": "base" }, - { - "name": "flash" - }, { "name": "high_velocity" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag_short.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag_short.rsi/flash.png deleted file mode 100644 index 9f1109656f..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag_short.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag_short.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag_short.rsi/meta.json index 0da5f470a4..8675d7f4ab 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag_short.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/CaselessRifle/caseless_rifle_mag_short.rsi/meta.json @@ -10,9 +10,6 @@ { "name": "base" }, - { - "name": "flash" - }, { "name": "high_velocity" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_mag.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_mag.rsi/flash.png deleted file mode 100644 index 837797e930..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_mag.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_mag.rsi/meta.json index 0da5f470a4..8675d7f4ab 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/LightRifle/light_rifle_mag.rsi/meta.json @@ -10,9 +10,6 @@ { "name": "base" }, - { - "name": "flash" - }, { "name": "high_velocity" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/flash.png deleted file mode 100644 index cd402aac77..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/meta.json index 542b70c21e..a3bcacb549 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Magnum/magnum_mag.rsi/meta.json @@ -10,9 +10,6 @@ { "name": "base" }, - { - "name": "flash" - }, { "name": "high_velocity" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/flash.png deleted file mode 100644 index dd4541b16b..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/meta.json index 542b70c21e..a3bcacb549 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi/meta.json @@ -10,9 +10,6 @@ { "name": "base" }, - { - "name": "flash" - }, { "name": "high_velocity" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/flash.png deleted file mode 100644 index 53f8421613..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/meta.json index 0da5f470a4..8675d7f4ab 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Pistol/smg_mag.rsi/meta.json @@ -10,9 +10,6 @@ { "name": "base" }, - { - "name": "flash" - }, { "name": "high_velocity" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/rifle_mag.rsi/flash.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/rifle_mag.rsi/flash.png deleted file mode 100644 index 3b4a4dba15..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/rifle_mag.rsi/flash.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/rifle_mag.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/rifle_mag.rsi/meta.json index 0da5f470a4..8675d7f4ab 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/rifle_mag.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Magazine/Rifle/rifle_mag.rsi/meta.json @@ -10,9 +10,6 @@ { "name": "base" }, - { - "name": "flash" - }, { "name": "high_velocity" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-1.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-1.png deleted file mode 100644 index 3b4d4dc717..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-1.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-2.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-2.png deleted file mode 100644 index e3ce4d4455..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-2.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-3.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-3.png deleted file mode 100644 index e2997462a0..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-3.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-4.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-4.png deleted file mode 100644 index bce896fb47..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-4.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-5.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-5.png deleted file mode 100644 index c7b19398d1..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-5.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-6.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-6.png deleted file mode 100644 index c5c22638d8..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/flash-6.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/meta.json index 1ff5766619..a6be819054 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi/meta.json @@ -28,24 +28,6 @@ { "name": "base-6" }, - { - "name": "flash-1" - }, - { - "name": "flash-2" - }, - { - "name": "flash-3" - }, - { - "name": "flash-4" - }, - { - "name": "flash-5" - }, - { - "name": "flash-6" - }, { "name": "high-velocity-1" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-1.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-1.png deleted file mode 100644 index 5aabe56998..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-1.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-2.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-2.png deleted file mode 100644 index 87c172f616..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-2.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-3.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-3.png deleted file mode 100644 index 45dc0a2735..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-3.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-4.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-4.png deleted file mode 100644 index 4826271b83..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-4.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-5.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-5.png deleted file mode 100644 index d47f506850..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-5.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-6.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-6.png deleted file mode 100644 index 10648a7e05..0000000000 Binary files a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/flash-6.png and /dev/null differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/meta.json index f4c28a4760..cf40a0390e 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Pistol/pistol_speed_loader.rsi/meta.json @@ -28,24 +28,6 @@ { "name": "base-6" }, - { - "name": "flash-1" - }, - { - "name": "flash-2" - }, - { - "name": "flash-3" - }, - { - "name": "flash-4" - }, - { - "name": "flash-5" - }, - { - "name": "flash-6" - }, { "name": "high-velocity-1" }, diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json index 4aa7146472..1fe6e79dfe 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "taken from tg station at commithttps://github.com/tgstation/tgstation/commit/8b7f8ba6a3327c7381967c550f185dffafd11a57", + "copyright": "taken from tg station at commit https://github.com/tgstation/tgstation/commit/8b7f8ba6a3327c7381967c550f185dffafd11a57", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/base.png new file mode 100644 index 0000000000..bddfe41808 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/base.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-0.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-0.png new file mode 100644 index 0000000000..fc80fcab15 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-0.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-1.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-1.png new file mode 100644 index 0000000000..7c9b5f04b7 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-1.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-2.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-2.png new file mode 100644 index 0000000000..7011a06474 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-2.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-3.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-3.png new file mode 100644 index 0000000000..dc48564a9b Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-3.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-4.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-4.png new file mode 100644 index 0000000000..338f0785d6 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-left-4.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-0.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-0.png new file mode 100644 index 0000000000..750c2c06be Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-0.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-1.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-1.png new file mode 100644 index 0000000000..81cc3ef2aa Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-1.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-2.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-2.png new file mode 100644 index 0000000000..8dcead6e40 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-2.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-3.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-3.png new file mode 100644 index 0000000000..6a6b08c6a7 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-3.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-4.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-4.png new file mode 100644 index 0000000000..7c66b0dba7 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/inhand-right-4.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-0.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-0.png new file mode 100644 index 0000000000..8a23628ff5 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-0.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-1.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-1.png new file mode 100644 index 0000000000..d47922661f Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-1.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-2.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-2.png new file mode 100644 index 0000000000..22c37d1921 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-2.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-3.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-3.png new file mode 100644 index 0000000000..2f0c2045c2 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-3.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-4.png b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-4.png new file mode 100644 index 0000000000..1c4cd9c360 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/mag-unshaded-4.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/meta.json new file mode 100644 index 0000000000..81fcb2729e --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/disabler.rsi/meta.json @@ -0,0 +1,65 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "taken from tg station at commit https://github.com/tgstation/tgstation/blob/832ae532766d491d91db53746d15b4b55be3f2b0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base" + }, + { + "name": "mag-unshaded-4" + }, + { + "name": "mag-unshaded-3" + }, + { + "name": "mag-unshaded-2" + }, + { + "name": "mag-unshaded-1" + }, + { + "name": "mag-unshaded-0", + "delays": [ + [ + 0.3, + 0.3 + ] + ] + }, + { + "name": "inhand-left-0" + }, + { + "name": "inhand-left-1" + }, + { + "name": "inhand-left-2" + }, + { + "name": "inhand-left-3" + }, + { + "name": "inhand-left-4" + }, + { + "name": "inhand-right-0" + }, + { + "name": "inhand-right-1" + }, + { + "name": "inhand-right-2" + }, + { + "name": "inhand-right-3" + }, + { + "name": "inhand-right-4" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/impact_bullet.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/impact_bullet.png new file mode 100644 index 0000000000..9af9ad53d6 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/impact_bullet.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/impact_laser_blue.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/impact_laser_blue.png new file mode 100644 index 0000000000..ad021a87cd Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/impact_laser_blue.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/meta.json new file mode 100644 index 0000000000..f6b561e1de --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/meta.json @@ -0,0 +1,37 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/tree/88d7dbfc105fbf40284d7b7c4587f8d23c0ac3ac", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "omnilaser" + }, + { + "name": "impact_bullet", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "impact_laser_blue", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/omnilaser.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/omnilaser.png new file mode 100644 index 0000000000..34ddcc86ba Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles_tg.rsi/omnilaser.png differ