From 3eeeaaa05c474239f516c50dd56c9701655f6b29 Mon Sep 17 00:00:00 2001 From: Vigers Ray <60344369+VigersRay@users.noreply.github.com> Date: Wed, 4 Dec 2024 02:44:24 +0300 Subject: [PATCH 1/9] =?UTF-8?q?=D0=A0=D0=B5=D0=B2=D0=BE=D1=80=D0=BA=20?= =?UTF-8?q?=D0=BE=D0=B3=D0=BD=D0=B5=D1=81=D1=82=D1=80=D0=B5=D0=BB=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=20=D1=85=D0=B8=D1=82=D1=81=D0=BA=D0=B0=D0=BD?= =?UTF-8?q?.=20(#755)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Реворк огнестрела под хитскан * борги на хитскане * Анимация трассировки пули --- .../Weapons/Ranged/Systems/GunSystem.cs | 130 ++++-- .../SolutionInjectOnEventSystem.cs | 8 + .../Weapons/Ranged/Systems/GunSystem.cs | 276 ++++++++----- .../Projectiles/HitScanSpreadComponent.cs | 14 + .../Ranged/Components/AmmoComponent.cs | 17 + .../Weapons/Ranged/Events/AmmoShotEvent.cs | 7 + .../Weapons/Ranged/HitscanPrototype.cs | 8 +- .../Weapons/Ranged/Systems/SharedGunSystem.cs | 21 +- .../objects/specific/robotics/borg_tools.ftl | 2 - .../objects/specific/robotics/borg_tools.ftl | 2 - .../Ammunition/Cartridges/antimateriel.yml | 2 +- .../Ammunition/Cartridges/caseless_rifle.yml | 6 +- .../Ammunition/Cartridges/heavy_rifle.yml | 4 +- .../Ammunition/Cartridges/light_rifle.yml | 10 +- .../Guns/Ammunition/Cartridges/magnum.yml | 12 +- .../Guns/Ammunition/Cartridges/pistol.yml | 8 +- .../Guns/Ammunition/Cartridges/rifle.yml | 10 +- .../Guns/Ammunition/Cartridges/shotgun.yml | 87 ++-- .../Guns/Ammunition/Projectiles/shotgun.yml | 11 - .../Objects/Weapons/Guns/LMGs/lmgs.yml | 2 +- .../Objects/Weapons/Guns/Pistols/pistols.yml | 2 +- .../Specific/Robotics/borg_modules.yml | 2 +- .../Objects/Specific/Robotics/borg_tools.yml | 45 +-- .../Ammunition/Cartridges/caseless_rifle.yml | 4 +- .../Ammunition/Cartridges/light_rifle.yml | 4 +- .../Guns/Ammunition/Cartridges/magnum.yml | 4 +- .../Guns/Ammunition/Cartridges/pistol.yml | 4 +- .../Guns/Ammunition/Cartridges/rifle.yml | 2 +- .../Weapons/Guns/Projectiles/hitscan.yml | 377 ++++++++++++++++++ .../Projectiles/hitscan_tracer.rsi/bullet.png | Bin 0 -> 200 bytes .../hitscan_tracer.rsi/bullet_tracer.png | Bin 0 -> 255 bytes .../Projectiles/hitscan_tracer.rsi/meta.json | 24 ++ 32 files changed, 851 insertions(+), 254 deletions(-) create mode 100644 Content.Shared/Projectiles/HitScanSpreadComponent.cs create mode 100644 Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml create mode 100644 Resources/Textures/_Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi/bullet.png create mode 100644 Resources/Textures/_Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi/bullet_tracer.png create mode 100644 Resources/Textures/_Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi/meta.json diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs index 74cc5447d7..a517c6169c 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using System.Numerics; using Content.Client.Animations; using Content.Client.Gameplay; @@ -21,6 +22,7 @@ using Robust.Shared.Input; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; +using Robust.Shared.Timing; using Robust.Shared.Utility; using SharedGunSystem = Content.Shared.Weapons.Ranged.Systems.SharedGunSystem; using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; @@ -42,6 +44,9 @@ public sealed partial class GunSystem : SharedGunSystem [ValidatePrototypeId] public const string HitscanProto = "HitscanEffect"; + [ValidatePrototypeId] + public const string HitscanTracerProto = "HitscanEffectTracer"; + public bool SpreadOverlay { get => _spreadOverlay; @@ -94,47 +99,124 @@ public sealed partial class GunSystem : SharedGunSystem CreateEffect(gunUid, args, gunUid); } + private IEnumerable GenerateTracerPath(EntityCoordinates from, float distance, Angle angle, float stepDistance = 1f) + { + var steps = Math.Max(1, (int)Math.Ceiling(distance / stepDistance)); + + for (var i = 0; i <= steps; i++) + { + yield return from.Offset(angle.ToVec() * (distance / steps) * i); + } + } + private void OnHitscan(HitscanEvent ev) { - // ALL I WANT IS AN ANIMATED EFFECT + const float tracerInterval = 0.01f; + var activeTracers = new Dictionary(); + foreach (var a in ev.Sprites) { - if (a.Sprite is not SpriteSpecifier.Rsi rsi) + if (a.sprite is not SpriteSpecifier.Rsi rsi) continue; - var coords = GetCoordinates(a.coordinates); + var startCoords = GetCoordinates(a.coordinates); - if (Deleted(coords.EntityId)) + if (Deleted(startCoords.EntityId)) continue; - var ent = Spawn(HitscanProto, coords); - var sprite = Comp(ent); - var xform = Transform(ent); - xform.LocalRotation = a.angle; - sprite[EffectLayers.Unshaded].AutoAnimated = false; - sprite.LayerSetSprite(EffectLayers.Unshaded, rsi); - sprite.LayerSetState(EffectLayers.Unshaded, rsi.RsiState); - sprite.Scale = new Vector2(a.Distance, 1f); - sprite[EffectLayers.Unshaded].Visible = true; - - var anim = new Animation() + if (a.effectType == EffectType.Tracer) { - Length = TimeSpan.FromSeconds(0.48f), - AnimationTracks = + var tracePath = GenerateTracerPath(startCoords, a.distance, a.angle); + var entityCoordinatesEnumerable = tracePath.ToList(); + + var stepIndex = 0; + foreach (var stepCoords in entityCoordinatesEnumerable) { - new AnimationTrackSpriteFlick() + var localIndex = stepIndex; + var delay = localIndex * tracerInterval; + + Timer.Spawn(TimeSpan.FromSeconds(delay), () => { - LayerKey = EffectLayers.Unshaded, - KeyFrames = + if (activeTracers.TryGetValue(localIndex, out var existingTracer) && EntityManager.EntityExists(existingTracer)) { - new AnimationTrackSpriteFlick.KeyFrame(rsi.RsiState, 0f), + EntityManager.DeleteEntity(existingTracer); } + + var tracerEntity = CreateTracerEffect(stepCoords, a.angle, rsi); + activeTracers[localIndex] = tracerEntity; + }); + + stepIndex++; + } + } + else if (a.effectType == EffectType.Static) + { + CreateStaticEffect(startCoords, a.angle, rsi, a.distance); + } + } + } + + private EntityUid CreateTracerEffect(EntityCoordinates coords, Angle angle, SpriteSpecifier.Rsi rsi) + { + var ent = Spawn(HitscanTracerProto, coords); + var sprite = Comp(ent); + var xform = Transform(ent); + xform.LocalRotation = angle; + sprite[EffectLayers.Unshaded].AutoAnimated = false; + sprite.LayerSetSprite(EffectLayers.Unshaded, rsi); + sprite.LayerSetState(EffectLayers.Unshaded, rsi.RsiState); + sprite.Scale = new Vector2(1f, 1f); + sprite[EffectLayers.Unshaded].Visible = true; + + var anim = new Animation() + { + Length = TimeSpan.FromSeconds(0.48f), + AnimationTracks = + { + new AnimationTrackSpriteFlick() + { + LayerKey = EffectLayers.Unshaded, + KeyFrames = + { + new AnimationTrackSpriteFlick.KeyFrame(rsi.RsiState, 0f), } } - }; + } + }; - _animPlayer.Play(ent, anim, "hitscan-effect"); - } + _animPlayer.Play(ent, anim, "hitscan-effect"); + return ent; + } + + private void CreateStaticEffect(EntityCoordinates coords, Angle angle, SpriteSpecifier.Rsi rsi, float distance) + { + var ent = Spawn(HitscanProto, coords); + var sprite = Comp(ent); + var xform = Transform(ent); + xform.LocalRotation = angle; + sprite[EffectLayers.Unshaded].AutoAnimated = false; + sprite.LayerSetSprite(EffectLayers.Unshaded, rsi); + sprite.LayerSetState(EffectLayers.Unshaded, rsi.RsiState); + sprite.Scale = new Vector2(distance, 1f); + sprite[EffectLayers.Unshaded].Visible = true; + + var anim = new Animation() + { + Length = TimeSpan.FromSeconds(0.48f), + AnimationTracks = + { + new AnimationTrackSpriteFlick() + { + LayerKey = EffectLayers.Unshaded, + KeyFrames = + { + new AnimationTrackSpriteFlick.KeyFrame(rsi.RsiState, 0f), + } + } + } + }; + + _animPlayer.Play(ent, anim, "hitscan-effect"); } public override void Update(float frameTime) diff --git a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs index f15edcf067..17d3c524d8 100644 --- a/Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Body.Components; using Content.Server.Body.Systems; using Content.Server.Chemistry.Components; +using Content.Server.Weapons.Ranged.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Events; using Content.Shared.Inventory; @@ -8,6 +9,7 @@ using Content.Shared.Popups; using Content.Shared.Projectiles; using Content.Shared.Tag; using Content.Shared.Weapons.Melee.Events; +using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Collections; namespace Content.Server.Chemistry.EntitySystems; @@ -31,6 +33,7 @@ public sealed class SolutionInjectOnCollideSystem : EntitySystem SubscribeLocalEvent(HandleEmbed); SubscribeLocalEvent(HandleMeleeHit); SubscribeLocalEvent(OnInjectOverTime); + SubscribeLocalEvent(HandleHitscanHit); } private void HandleProjectileHit(Entity entity, ref ProjectileHitEvent args) @@ -38,6 +41,11 @@ public sealed class SolutionInjectOnCollideSystem : EntitySystem DoInjection((entity.Owner, entity.Comp), args.Target, args.Shooter); } + private void HandleHitscanHit(Entity entity, ref HitscanAmmoShotEvent args) + { + DoInjection((entity.Owner, entity.Comp), args.Target, args.Shooter); + } + private void HandleEmbed(Entity entity, ref EmbedEvent args) { DoInjection((entity.Owner, entity.Comp), args.Embedded, args.Shooter); diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs index d22b5ec2af..d8fdc087ac 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs @@ -136,6 +136,38 @@ public sealed partial class GunSystem : SharedGunSystem Dirty(ent!.Value, cartridge); break; + case HitScanCartridgeAmmoComponent hitScanCartridge: + var hitscanProto = ProtoManager.Index(hitScanCartridge.Prototype); + if (TryComp(ent!.Value, out var hitscanSpreadComp)) + { + var spreadEvent = new GunGetAmmoSpreadEvent(hitscanSpreadComp.Spread); + RaiseLocalEvent(gunUid, ref spreadEvent); + + var angles = LinearSpread(mapAngle - spreadEvent.Spread / 2, + mapAngle + spreadEvent.Spread / 2, hitscanSpreadComp.Count); + + HitscanShoot(fromMap, fromCoordinates, angles[0].ToVec(), hitscanProto, gunUid, user, gun, ent.Value); + + for (var i = 1; i < hitscanSpreadComp.Count; i++) + { + HitscanShoot(fromMap, fromCoordinates, angles[i].ToVec(), hitscanProto, gunUid, user, gun, ent.Value); + } + } + else + { + HitscanShoot(fromMap, fromCoordinates, mapDirection, hitscanProto, gunUid, user, gun, ent.Value); + } + + SetHitscanCartridgeSpent(ent.Value, hitScanCartridge, true); + + if (hitScanCartridge.DeleteOnSpawn) + Del(ent.Value); + + if (!hitScanCartridge.DeleteOnSpawn && !Containers.IsEntityInContainer(ent!.Value)) + EjectCartridge(ent.Value, angle); + + Dirty(ent.Value, hitScanCartridge); + break; // Ammo shoots itself case AmmoComponent newAmmo: if (ent == null) @@ -144,108 +176,7 @@ public sealed partial class GunSystem : SharedGunSystem break; case HitscanPrototype hitscan: - - EntityUid? lastHit = null; - - var from = fromMap; - // can't use map coords above because funny FireEffects - var fromEffect = fromCoordinates; - var dir = mapDirection.Normalized(); - - //in the situation when user == null, means that the cannon fires on its own (via signals). And we need the gun to not fire by itself in this case - var lastUser = user ?? gunUid; - - if (hitscan.Reflective != ReflectType.None) - { - for (var reflectAttempt = 0; reflectAttempt < 3; reflectAttempt++) - { - var ray = new CollisionRay(from.Position, dir, hitscan.CollisionMask); - var rayCastResults = - Physics.IntersectRay(from.MapId, ray, hitscan.MaxLength, lastUser, false).ToList(); - if (!rayCastResults.Any()) - break; - - var result = rayCastResults[0]; - - // Check if laser is shot from in a container - if (!_container.IsEntityOrParentInContainer(lastUser)) - { - // Checks if the laser should pass over unless targeted by its user - foreach (var collide in rayCastResults) - { - if (collide.HitEntity != gun.Target && - CompOrNull(collide.HitEntity)?.Active == true) - { - continue; - } - - result = collide; - break; - } - } - - var hit = result.HitEntity; - lastHit = hit; - - FireEffects(fromEffect, result.Distance, dir.Normalized().ToAngle(), hitscan, hit); - - var ev = new HitScanReflectAttemptEvent(user, gunUid, hitscan.Reflective, dir, false); - RaiseLocalEvent(hit, ref ev); - - if (!ev.Reflected) - break; - - fromEffect = Transform(hit).Coordinates; - from = fromEffect.ToMap(EntityManager, _transform); - dir = ev.Direction; - lastUser = hit; - } - } - - if (lastHit != null) - { - var hitEntity = lastHit.Value; - if (hitscan.StaminaDamage > 0f) - _stamina.TakeStaminaDamage(hitEntity, hitscan.StaminaDamage, source: user); - - var dmg = hitscan.Damage; - - var hitName = ToPrettyString(hitEntity); - if (dmg != null) - dmg = Damageable.TryChangeDamage(hitEntity, dmg, origin: user); - - // check null again, as TryChangeDamage returns modified damage values - if (dmg != null) - { - if (!Deleted(hitEntity)) - { - if (dmg.AnyPositive()) - { - _color.RaiseEffect(Color.Red, new List() { hitEntity }, Filter.Pvs(hitEntity, entityManager: EntityManager)); - } - - // TODO get fallback position for playing hit sound. - PlayImpactSound(hitEntity, dmg, hitscan.Sound, hitscan.ForceSound); - } - - if (user != null) - { - Logs.Add(LogType.HitScanHit, - $"{ToPrettyString(user.Value):user} hit {hitName:target} using hitscan and dealt {dmg.GetTotal():damage} damage"); - } - else - { - Logs.Add(LogType.HitScanHit, - $"{hitName:target} hit by hitscan dealing {dmg.GetTotal():damage} damage"); - } - } - } - else - { - FireEffects(fromEffect, hitscan.MaxLength, dir.ToAngle(), hitscan); - } - - Audio.PlayPredicted(gun.SoundGunshotModified, gunUid, user); + HitscanShoot(fromMap, fromCoordinates, mapDirection, hitscan, gunUid, user, gun); break; default: throw new ArgumentOutOfRangeException(); @@ -288,6 +219,127 @@ public sealed partial class GunSystem : SharedGunSystem } } + private void HitscanShoot(MapCoordinates fromMap, + EntityCoordinates fromCoordinates, + Vector2 mapDirection, + HitscanPrototype hitscan, + EntityUid gunUid, + EntityUid? user, + GunComponent gun, + EntityUid? ammoEnt = null) + { + EntityUid? lastHit = null; + var from = fromMap; + // can't use map coords above because funny FireEffects + var fromEffect = fromCoordinates; + var dir = mapDirection.Normalized(); + + //in the situation when user == null, means that the cannon fires on its own (via signals). And we need the gun to not fire by itself in this case + var lastUser = user ?? gunUid; + EntityUid? hitEntity = null; + + if (hitscan.Reflective != ReflectType.None) + { + for (var reflectAttempt = 0; reflectAttempt < 3; reflectAttempt++) + { + var ray = new CollisionRay(from.Position, dir, (int) hitscan.CollisionMask); + var rayCastResults = + Physics.IntersectRay(from.MapId, ray, hitscan.MaxLength, lastUser, false).ToList(); + if (!rayCastResults.Any()) + break; + + var result = rayCastResults[0]; + + // Check if laser is shot from in a container + if (!_container.IsEntityOrParentInContainer(lastUser)) + { + // Checks if the laser should pass over unless targeted by its user + foreach (var collide in rayCastResults) + { + if (collide.HitEntity != gun.Target && + CompOrNull(collide.HitEntity)?.Active == true) + { + continue; + } + + result = collide; + break; + } + } + + var hit = result.HitEntity; + lastHit = hit; + + FireEffects(fromEffect, result.Distance, dir.Normalized().ToAngle(), hitscan, hit); + + var ev = new HitScanReflectAttemptEvent(user, gunUid, hitscan.Reflective, dir, false); + RaiseLocalEvent(hit, ref ev); + + if (!ev.Reflected) + break; + + fromEffect = Transform(hit).Coordinates; + from = fromEffect.ToMap(EntityManager, _transform); + dir = ev.Direction; + lastUser = hit; + } + } + + if (lastHit != null) + { + hitEntity = lastHit.Value; + if (hitscan.StaminaDamage > 0f) + _stamina.TakeStaminaDamage(hitEntity.Value, hitscan.StaminaDamage, source: user); + + var dmg = hitscan.Damage; + + var hitName = ToPrettyString(hitEntity); + if (dmg != null) + dmg = Damageable.TryChangeDamage(hitEntity, dmg, hitscan.IgnoreResistances, origin: user); + + // check null again, as TryChangeDamage returns modified damage values + if (dmg != null) + { + if (!Deleted(hitEntity)) + { + if (dmg.AnyPositive()) + { + _color.RaiseEffect(Color.Red, new List() { hitEntity.Value }, Filter.Pvs(hitEntity.Value, entityManager: EntityManager)); + } + + // TODO get fallback position for playing hit sound. + PlayImpactSound(hitEntity.Value, dmg, hitscan.Sound, hitscan.ForceSound); + } + + if (user != null) + { + Logs.Add(LogType.HitScanHit, + $"{ToPrettyString(user.Value):user} hit {hitName:target} using hitscan and dealt {dmg.GetTotal():damage} damage"); + } + else + { + Logs.Add(LogType.HitScanHit, + $"{hitName:target} hit by hitscan dealing {dmg.GetTotal():damage} damage"); + } + } + } + else + { + FireEffects(fromEffect, hitscan.MaxLength, dir.ToAngle(), hitscan); + } + + Audio.PlayPredicted(gun.SoundGunshotModified, gunUid, user); + + if (hitEntity == null || ammoEnt == null) + return; + + RaiseLocalEvent(ammoEnt.Value, new HitscanAmmoShotEvent() + { + Target = hitEntity.Value, + Shooter = user, + }); + } + private void ShootOrThrow(EntityUid uid, Vector2 mapDirection, Vector2 gunVelocity, GunComponent gun, EntityUid gunUid, EntityUid? user) { if (gun.Target is { } target && !TerminatingOrDeleted(target)) @@ -395,7 +447,7 @@ public sealed partial class GunSystem : SharedGunSystem // Lord // Forgive me for the shitcode I am about to do // Effects tempt me not - var sprites = new List<(NetCoordinates coordinates, Angle angle, SpriteSpecifier sprite, float scale)>(); + var sprites = new List<(NetCoordinates coordinates, Angle angle, SpriteSpecifier sprite, float scale, EffectType)>(); var gridUid = fromCoordinates.GetGridUid(EntityManager); var angle = mapDirection; @@ -421,7 +473,7 @@ public sealed partial class GunSystem : SharedGunSystem var coords = fromCoordinates.Offset(angle.ToVec().Normalized() / 2); var netCoords = GetNetCoordinates(coords); - sprites.Add((netCoords, angle, hitscan.MuzzleFlash, 1f)); + sprites.Add((netCoords, angle, hitscan.MuzzleFlash, 1f, EffectType.Static)); } if (hitscan.TravelFlash != null) @@ -429,7 +481,14 @@ public sealed partial class GunSystem : SharedGunSystem var coords = fromCoordinates.Offset(angle.ToVec() * (distance + 0.5f) / 2); var netCoords = GetNetCoordinates(coords); - sprites.Add((netCoords, angle, hitscan.TravelFlash, distance - 1.5f)); + sprites.Add((netCoords, angle, hitscan.TravelFlash, distance - 1.5f, EffectType.Static)); + } + + if (hitscan.BulletTracer != null) + { + var coords = fromCoordinates.Offset(angle.ToVec().Normalized() / 2); + var netCoords = GetNetCoordinates(coords); + sprites.Add((netCoords, angle, hitscan.BulletTracer, distance - 1.5f, EffectType.Tracer)); } } @@ -438,15 +497,16 @@ public sealed partial class GunSystem : SharedGunSystem var coords = fromCoordinates.Offset(angle.ToVec() * distance); var netCoords = GetNetCoordinates(coords); - sprites.Add((netCoords, angle.FlipPositive(), hitscan.ImpactFlash, 1f)); + sprites.Add((netCoords, angle.FlipPositive(), hitscan.ImpactFlash, 1f, EffectType.Static)); } if (sprites.Count > 0) { RaiseNetworkEvent(new HitscanEvent { - Sprites = sprites, - }, Filter.Pvs(fromCoordinates, entityMan: EntityManager)); + Sprites = sprites + }, + Filter.Pvs(fromCoordinates, entityMan: EntityManager)); } } diff --git a/Content.Shared/Projectiles/HitScanSpreadComponent.cs b/Content.Shared/Projectiles/HitScanSpreadComponent.cs new file mode 100644 index 0000000000..e73c7c2062 --- /dev/null +++ b/Content.Shared/Projectiles/HitScanSpreadComponent.cs @@ -0,0 +1,14 @@ +using Content.Shared.Weapons.Ranged.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Projectiles; + +[RegisterComponent, NetworkedComponent, Access(typeof(SharedGunSystem))] +public sealed partial class HitScanSpreadComponent : Component +{ + [DataField] + public Angle Spread = Angle.FromDegrees(5); + + [DataField] + public int Count = 1; +} diff --git a/Content.Shared/Weapons/Ranged/Components/AmmoComponent.cs b/Content.Shared/Weapons/Ranged/Components/AmmoComponent.cs index 3e1111a97d..b0f69748d1 100644 --- a/Content.Shared/Weapons/Ranged/Components/AmmoComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/AmmoComponent.cs @@ -39,3 +39,20 @@ public sealed partial class CartridgeAmmoComponent : AmmoComponent [DataField("soundEject")] public SoundSpecifier? EjectSound = new SoundCollectionSpecifier("CasingEject"); } + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class HitScanCartridgeAmmoComponent : AmmoComponent +{ + [ViewVariables(VVAccess.ReadWrite), DataField("proto", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] + public string Prototype = default!; + + [ViewVariables(VVAccess.ReadWrite), DataField("spent")] + [AutoNetworkedField] + public bool Spent = false; + + [DataField("deleteOnSpawn")] + public bool DeleteOnSpawn; + + [DataField("soundEject")] + public SoundSpecifier? EjectSound = new SoundCollectionSpecifier("CasingEject"); +} diff --git a/Content.Shared/Weapons/Ranged/Events/AmmoShotEvent.cs b/Content.Shared/Weapons/Ranged/Events/AmmoShotEvent.cs index 3b9ea0ebb0..b982596912 100644 --- a/Content.Shared/Weapons/Ranged/Events/AmmoShotEvent.cs +++ b/Content.Shared/Weapons/Ranged/Events/AmmoShotEvent.cs @@ -7,3 +7,10 @@ public sealed class AmmoShotEvent : EntityEventArgs { public List FiredProjectiles = default!; } + +public sealed class HitscanAmmoShotEvent : EntityEventArgs +{ + public EntityUid Target = default!; + + public EntityUid? Shooter = default!; +} diff --git a/Content.Shared/Weapons/Ranged/HitscanPrototype.cs b/Content.Shared/Weapons/Ranged/HitscanPrototype.cs index a5063e3ab5..d014d6ef87 100644 --- a/Content.Shared/Weapons/Ranged/HitscanPrototype.cs +++ b/Content.Shared/Weapons/Ranged/HitscanPrototype.cs @@ -29,8 +29,11 @@ public sealed partial class HitscanPrototype : IPrototype, IShootable [ViewVariables(VVAccess.ReadOnly), DataField("impactFlash")] public SpriteSpecifier? ImpactFlash; + [DataField("bulletTracer")] + public SpriteSpecifier? BulletTracer { get; set; } + [DataField("collisionMask")] - public int CollisionMask = (int) CollisionGroup.Opaque; + public CollisionGroup CollisionMask { get; private set; } = CollisionGroup.Opaque; /// /// What we count as for reflection. @@ -54,4 +57,7 @@ public sealed partial class HitscanPrototype : IPrototype, IShootable /// [DataField("maxLength")] public float MaxLength = 20f; + + [DataField] + public bool IgnoreResistances; } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 8d01454f13..89f63dd526 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -472,6 +472,15 @@ public abstract partial class SharedGunSystem : EntitySystem Appearance.SetData(uid, AmmoVisuals.Spent, spent); } + protected void SetHitscanCartridgeSpent(EntityUid uid, HitScanCartridgeAmmoComponent hitScanCartridgeAmmo, bool spent) + { + if (hitScanCartridgeAmmo.Spent != spent) + Dirty(uid, hitScanCartridgeAmmo); + + hitScanCartridgeAmmo.Spent = spent; + Appearance.SetData(uid, AmmoVisuals.Spent, spent); + } + /// /// Drops a single cartridge / shell /// @@ -508,12 +517,16 @@ public abstract partial class SharedGunSystem : EntitySystem if (TryComp(uid, out var cartridge)) return cartridge; + if (TryComp(uid, out var hitscan)) + return hitscan; + return EnsureComp(uid); } protected void RemoveShootable(EntityUid uid) { RemCompDeferred(uid); + RemCompDeferred(uid); RemCompDeferred(uid); } @@ -586,7 +599,7 @@ public abstract partial class SharedGunSystem : EntitySystem [Serializable, NetSerializable] public sealed class HitscanEvent : EntityEventArgs { - public List<(NetCoordinates coordinates, Angle angle, SpriteSpecifier Sprite, float Distance)> Sprites = new(); + public List<(NetCoordinates coordinates, Angle angle, SpriteSpecifier sprite, float distance, EffectType effectType)> Sprites = new(); } } @@ -614,6 +627,12 @@ public enum EffectLayers : byte Unshaded, } +public enum EffectType : byte +{ + Tracer, + Static +} + [Serializable, NetSerializable] public enum AmmoVisuals : byte { diff --git a/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl b/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl index 82fbccc291..5c5856fc5c 100644 --- a/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl +++ b/Resources/Locale/en-US/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl @@ -22,8 +22,6 @@ ent-HyposprayBorgSyndi = gorlax robot hypospray .desc = A hypospray that can switch through several reagents. ent-HolofanProjectorBorg = holofan robot projector .desc = Stop suicidal passengers from killing everyone during atmos emergencies. -ent-LightMachineGunBorg = machine gun borg - .desc = { ent-BaseItem.desc } ent-WeaponLauncherChinaLakeBorg = robot china lake .desc = PLOOP ent-FireExtinguisherBorg = fire extinguisher borg diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl index 07cad4334e..389a3dc2ae 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/specific/robotics/borg_tools.ftl @@ -22,8 +22,6 @@ ent-HyposprayBorgSyndi = гипоспрей медицинского кибор .desc = Версия гипоспрея Горлакса, которая способна регенерировать сразу несколько реагентов. ent-HolofanProjectorBorg = атмос голопроектор киборга .desc = { ent-HolofanProjector.desc } -ent-LightMachineGunBorg = L6 SAW киборга - .desc = { ent-BaseWeaponHeavyMachineGun.desc } ent-WeaponLauncherChinaLakeBorg = China Lake киборга .desc = { ent-WeaponLauncherChinaLake.desc } ent-FireExtinguisherBorg = огнетушитель киборга diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/antimateriel.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/antimateriel.yml index e622952b3f..8753806832 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/antimateriel.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/antimateriel.yml @@ -7,7 +7,7 @@ tags: - Cartridge - CartridgeAntiMateriel - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletAntiMateriel - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Casings/large_casing.rsi 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 21edce2222..d8a2411bc0 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 @@ -8,7 +8,7 @@ tags: - Cartridge - CartridgeCaselessRifle - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo deleteOnSpawn: true - type: Sprite noRot: false @@ -26,7 +26,7 @@ name: cartridge (.25 caseless) parent: BaseCartridgeCaselessRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletCaselessRifle - type: entity @@ -34,7 +34,7 @@ name: cartridge (.25 caseless practice) parent: BaseCartridgeCaselessRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletCaselessRiflePractice - type: Sprite layers: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/heavy_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/heavy_rifle.yml index 719bae8ab4..2defc63e0a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/heavy_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/heavy_rifle.yml @@ -8,7 +8,7 @@ tags: - Cartridge - CartridgeHeavyRifle - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletHeavyRifle - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi @@ -25,6 +25,6 @@ name: cartridge (.10 rifle) parent: BaseCartridgeHeavyRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletMinigun deleteOnSpawn: true 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 4cf3c759bb..92be5f9b3d 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 @@ -8,7 +8,7 @@ tags: - Cartridge - CartridgeLightRifle - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletLightRifle - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi @@ -23,7 +23,7 @@ name: cartridge (.30 rifle) parent: BaseCartridgeLightRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletLightRifle - type: entity @@ -31,7 +31,7 @@ name: cartridge (.30 rifle practice) parent: BaseCartridgeLightRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletLightRiflePractice - type: Sprite layers: @@ -46,7 +46,7 @@ name: cartridge (.30 rifle incendiary) parent: BaseCartridgeLightRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletLightRifleIncendiary - type: Sprite layers: @@ -61,7 +61,7 @@ name: cartridge (.30 rifle uranium) parent: BaseCartridgeLightRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletLightRifleUranium - type: Sprite layers: 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 3367fa45a1..7fc36e5d89 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml @@ -8,7 +8,7 @@ tags: - Cartridge - CartridgeMagnum - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletMagnum - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi @@ -23,7 +23,7 @@ name: cartridge (.45 magnum) parent: BaseCartridgeMagnum components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletMagnum - type: entity @@ -31,7 +31,7 @@ name: cartridge (.45 magnum practice) parent: BaseCartridgeMagnum components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletMagnumPractice - type: Sprite layers: @@ -46,7 +46,7 @@ name: cartridge (.45 magnum incendiary) parent: BaseCartridgeMagnum components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletMagnumIncendiary - type: Sprite layers: @@ -61,7 +61,7 @@ name: cartridge (.45 magnum armor-piercing) parent: BaseCartridgeMagnum components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletMagnumAP - type: Sprite layers: @@ -76,7 +76,7 @@ name: cartridge (.45 magnum uranium) parent: BaseCartridgeMagnum components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletMagnumUranium - type: Sprite layers: 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 3635b00f36..3e620f7545 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml @@ -8,7 +8,7 @@ tags: - Cartridge - CartridgePistol - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletPistol - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi @@ -23,7 +23,7 @@ name: cartridge (.35 auto) parent: BaseCartridgePistol components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletPistol - type: entity @@ -31,7 +31,7 @@ name: cartridge (.35 auto practice) parent: BaseCartridgePistol components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletPistolPractice - type: Sprite layers: @@ -46,7 +46,7 @@ name: cartridge (.35 auto incendiary) parent: BaseCartridgePistol components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletPistolIncendiary - type: Sprite layers: 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 30976744e0..4a05ce3c12 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml @@ -8,7 +8,7 @@ tags: - Cartridge - CartridgeRifle - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletRifle - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Casings/ammo_casing.rsi @@ -23,7 +23,7 @@ name: cartridge (.20 rifle) parent: BaseCartridgeRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletRifle - type: entity @@ -31,7 +31,7 @@ name: cartridge (.20 rifle practice) parent: BaseCartridgeRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletRiflePractice - type: Sprite layers: @@ -46,7 +46,7 @@ name: cartridge (.20 rifle incendiary) parent: BaseCartridgeRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletRifleIncendiary - type: Sprite layers: @@ -61,7 +61,7 @@ name: cartridge (.20 rifle uranium) parent: BaseCartridgeRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletRifleUranium - type: Sprite layers: 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 a617e85e4c..7af074f43a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml @@ -19,10 +19,31 @@ - type: Appearance - type: SpentAmmoVisuals +- type: entity + id: BaseShellHitscanShotgun + name: shell (.50) + parent: [ BaseCartridge, BaseRestrictedContraband ] + abstract: true + components: + - type: Tag + tags: + - Cartridge + - ShellShotgun + - type: HitScanCartridgeAmmo + soundEject: + collection: ShellEject + - type: Sprite + sprite: Objects/Weapons/Guns/Ammunition/Casings/shotgun_shell.rsi + layers: + - state: base + map: [ "enum.AmmoVisualLayers.Base" ] + - type: Appearance + - type: SpentAmmoVisuals + - type: entity id: ShellShotgunBeanbag name: shell (.50 beanbag) - parent: BaseShellShotgun + parent: BaseShellHitscanShotgun components: - type: Tag tags: @@ -33,21 +54,24 @@ layers: - state: beanbag map: [ "enum.AmmoVisualLayers.Base" ] - - type: CartridgeAmmo - proto: PelletShotgunBeanbagSpread # Sunrise-Edit + - type: HitScanCartridgeAmmo + proto: PelletShotgunBeanbag + - type: HitScanSpread + count: 3 + spread: 4.5 - type: SpentAmmoVisuals state: "beanbag" - type: entity id: ShellShotgunSlug name: shell (.50 slug) - parent: BaseShellShotgun + parent: BaseShellHitscanShotgun components: - type: Sprite layers: - state: slug map: [ "enum.AmmoVisualLayers.Base" ] - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: PelletShotgunSlug - type: SpentAmmoVisuals state: "slug" @@ -74,47 +98,56 @@ - type: entity id: ShellShotgun name: shell (.50) - parent: BaseShellShotgun + parent: BaseShellHitscanShotgun components: - type: Sprite layers: - state: base map: [ "enum.AmmoVisualLayers.Base" ] - - type: CartridgeAmmo - proto: PelletShotgunSpread + - type: HitScanCartridgeAmmo + proto: PelletShotgun + - type: HitScanSpread + count: 6 + spread: 15 - type: entity id: ShellShotgunIncendiary name: shell (.50 incendiary) - parent: BaseShellShotgun + parent: BaseShellHitscanShotgun components: - type: Sprite layers: - state: incendiary map: [ "enum.AmmoVisualLayers.Base" ] - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: PelletShotgunIncendiarySpread + - type: HitScanSpread + count: 6 + spread: 15 - type: SpentAmmoVisuals state: "incendiary" - type: entity id: ShellShotgunPractice name: shell (.50 practice) - parent: BaseShellShotgun + parent: BaseShellHitscanShotgun components: - type: Sprite layers: - state: practice map: [ "enum.AmmoVisualLayers.Base" ] - - type: CartridgeAmmo - proto: PelletShotgunPracticeSpread + - type: HitScanCartridgeAmmo + proto: PelletShotgunPractice + - type: HitScanSpread + count: 6 + spread: 15 - type: SpentAmmoVisuals state: "practice" - type: entity id: ShellTranquilizer name: shell (.50 tranquilizer) - parent: BaseShellShotgun + parent: BaseShellHitscanShotgun components: - type: Tag tags: @@ -125,17 +158,17 @@ layers: - state: tranquilizer map: [ "enum.AmmoVisualLayers.Base" ] - - type: CartridgeAmmo - proto: PelletShotgunTranquilizer - - type: ChemicalAmmo + - type: HitScanCartridgeAmmo + proto: PelletShotgunPractice - type: SolutionContainerManager solutions: ammo: reagents: - ReagentId: ChloralHydrate - Quantity: 7 - - type: SolutionTransfer - maxTransferAmount: 7 + Quantity: 15 + - type: SolutionInjectOnProjectileHit + transferAmount: 15 + solution: ammo - type: SpentAmmoVisuals state: "tranquilizer" @@ -143,7 +176,7 @@ id: ShellShotgunImprovised name: improvised shotgun shell description: A homemade shotgun shell that shoots painful glass shrapnel. The spread is so wide that it couldn't hit the broad side of a barn. - parent: BaseShellShotgun + parent: BaseShellHitscanShotgun components: - type: Tag tags: @@ -157,21 +190,27 @@ - type: Construction graph: ImprovisedShotgunShellGraph node: shell - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: PelletShotgunImprovisedSpread + - type: HitScanSpread + count: 10 + spread: 45 - type: SpentAmmoVisuals state: "improvised" - type: entity id: ShellShotgunUranium name: uranium shotgun shell - parent: BaseShellShotgun + parent: BaseShellHitscanShotgun components: - type: Sprite layers: - state: depleted-uranium map: [ "enum.AmmoVisualLayers.Base" ] - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: PelletShotgunUraniumSpread + - type: HitScanSpread + count: 5 + spread: 6 - type: SpentAmmoVisuals state: "depleted-uranium" 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 82df503647..560e5ee93d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml @@ -30,17 +30,6 @@ - type: StaminaDamageOnCollide damage: 15 # 3 hits to stun # Sunrise-Edit -- type: entity # Sunrise-Edit - id: PelletShotgunBeanbagSpread - categories: [ HideSpawnMenu ] - parent: PelletShotgunBeanbag - components: - - type: ProjectileSpread - proto: PelletShotgunBeanbag - count: 3 - spread: 4.5 - - - type: entity id: PelletShotgun name: pellet (.50) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml index b0713998cb..b755daca31 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml @@ -115,7 +115,7 @@ - type: ContainerContainer containers: ballistic-ammo: !type:Container - - type: ProjectileBatteryAmmoProvider + - type: HitscanBatteryAmmoProvider proto: CartridgeLightRifle fireCost: 100 - type: Battery diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml index 913f95aff6..43741921cd 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml @@ -125,7 +125,7 @@ - type: ContainerContainer containers: ballistic-ammo: !type:Container - - type: ProjectileBatteryAmmoProvider + - type: HitscanBatteryAmmoProvider proto: BulletPistol fireCost: 100 - type: Battery diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml index db41410346..d58b7cc0b4 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -235,7 +235,7 @@ - type: ItemBorgModule items: - EnergyDaggerLoud - - LightMachineGunBorg + - WeaponLightMachineGunL6C - type: entity id: BorgModuleStandart diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml index f272523253..e5f7335483 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/Robotics/borg_tools.yml @@ -259,47 +259,6 @@ startingItem: PowerCellRobotTool locked: true -- type: entity - name: machine gun borg - id: LightMachineGunBorg - parent: BaseItem - categories: [ HideSpawnMenu ] - description: - components: - - type: Sprite - sprite: Objects/Weapons/Guns/LMGs/l6.rsi - layers: - - state: icon - map: ["enum.GunVisualLayers.Base"] - - type: Item - sprite: Objects/Weapons/Guns/LMGs/l6.rsi - - type: Gun - minAngle: 4 - maxAngle: 20 - angleIncrease: 4 - angleDecay: 16 - fireRate: 8 - selectedMode: FullAuto - availableModes: - - FullAuto - soundGunshot: - collection: m249 - params: - volume: 10 - soundEmpty: - path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg - - type: Appearance - - type: ProjectileBatteryAmmoProvider - proto: BulletLightRifle - fireCost: 100 - - type: Battery - maxCharge: 10000 - startingCharge: 10000 - - type: BatterySelfRecharger - autoRecharge: true - autoRechargeRate: 25 - - type: AmmoCounter - - type: entity name: robot china lake parent: WeaponLauncherChinaLake @@ -552,7 +511,7 @@ volume: 10 soundEmpty: path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg - - type: ProjectileBatteryAmmoProvider + - type: HitscanBatteryAmmoProvider proto: CartridgeLightRifle fireCost: 50 - type: Battery @@ -591,7 +550,7 @@ - FullAuto soundEmpty: path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg - - type: ProjectileBatteryAmmoProvider + - type: HitscanBatteryAmmoProvider proto: CartridgeCaselessRifle fireCost: 50 - type: Battery diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml index 821805bb42..0a2929e117 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml @@ -3,7 +3,7 @@ name: cartridge (.25 caseless rubber) parent: BaseCartridgeCaselessRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletCaselessRifleRubber - type: Sprite layers: @@ -11,4 +11,4 @@ map: [ "enum.AmmoVisualLayers.Base" ] - state: tip map: [ "enum.AmmoVisualLayers.Tip" ] - color: "#43c4f7" \ No newline at end of file + color: "#43c4f7" diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/light_rifle.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/light_rifle.yml index 33a55418ec..c7856e2360 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/light_rifle.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/light_rifle.yml @@ -3,7 +3,7 @@ name: cartridge (.30 rifle rubber) parent: BaseCartridgeLightRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletLightRifleRubber - type: Sprite layers: @@ -11,4 +11,4 @@ map: [ "enum.AmmoVisualLayers.Base" ] - state: tip map: [ "enum.AmmoVisualLayers.Tip" ] - color: "#43c4f7" \ No newline at end of file + color: "#43c4f7" diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml index 49abaf5ea3..bc671b9d57 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml @@ -3,7 +3,7 @@ name: cartridge (.45 magnum rubber) parent: BaseCartridgeMagnum components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletMagnumRubber - type: Sprite layers: @@ -11,4 +11,4 @@ map: [ "enum.AmmoVisualLayers.Base" ] - state: tip map: [ "enum.AmmoVisualLayers.Tip" ] - color: "#43c4f7" \ No newline at end of file + color: "#43c4f7" diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml index d9c5acf18c..bc5a31c6fd 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml @@ -3,7 +3,7 @@ name: cartridge (.35 auto rubber) parent: BaseCartridgePistol components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletPistolRubber - type: Sprite layers: @@ -11,4 +11,4 @@ map: [ "enum.AmmoVisualLayers.Base" ] - state: tip map: [ "enum.AmmoVisualLayers.Tip" ] - color: "#43c4f7" \ No newline at end of file + color: "#43c4f7" diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml index b8067965f4..24ca25ffea 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/rifle.yml @@ -3,7 +3,7 @@ name: cartridge (.20 rifle rubber) parent: BaseCartridgeRifle components: - - type: CartridgeAmmo + - type: HitScanCartridgeAmmo proto: BulletRifleRubber - type: Sprite layers: diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml new file mode 100644 index 0000000000..cac3bfd687 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Weapons/Guns/Projectiles/hitscan.yml @@ -0,0 +1,377 @@ +- type: entity + id: HitscanEffectTracer + categories: [ HideSpawnMenu ] + components: + - type: TimedDespawn + lifetime: 0.05 + - type: Sprite + drawdepth: Effects + layers: + - shader: unshaded + map: ["enum.EffectLayers.Unshaded"] + - type: EffectVisuals + - type: Tag + tags: + - HideContextMenu + - type: AnimationPlayer +# hitscan bullet + +- type: hitscan + id: BulletPistol + damage: + types: + Piercing: 16 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletPistolRubber + damage: + types: + Blunt: 1 + staminaDamage: 20 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletPistolPractice + damage: + types: + Blunt: 2 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletPistolIncendiary + damage: + types: + Blunt: 2 + Heat: 14 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletPistolUranium + damage: + types: + Radiation: 6 + Piercing: 10 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletRifle + damage: + types: + Piercing: 17 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletRifleRubber + damage: + types: + Blunt: 1 + staminaDamage: 20 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletRiflePractice + damage: + types: + Blunt: 2 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletRifleIncendiary + damage: + types: + Blunt: 2 + Heat: 15 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletRifleUranium + damage: + types: + Radiation: 7 + Piercing: 8 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletMagnum + damage: + types: + Blunt: 35 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletMagnumRubber + damage: + types: + Blunt: 1 + staminaDamage: 20 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletMagnumPractice + damage: + types: + Blunt: 1 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletMagnumIncendiary + damage: + types: + Blunt: 3 + Heat: 32 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletMagnumAP + damage: + types: + Piercing: 26 + ignoreResistances: true + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletMagnumUranium + damage: + types: + Radiation: 15 + Piercing: 20 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletLightRifle + damage: + types: + Piercing: 19 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletLightRifleRubber + damage: + types: + Blunt: 1 + staminaDamage: 20 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletLightRiflePractice + damage: + types: + Blunt: 2 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletLightRifleIncendiary + damage: + types: + Blunt: 3 + Heat: 16 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletLightRifleUranium + damage: + types: + Radiation: 9 + Piercing: 10 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletHeavyRifle + damage: + types: + Piercing: 19 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletMinigun + damage: + types: + Piercing: 5 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletCaselessRifle + damage: + types: + Piercing: 19 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletCaselessRifleRubber + damage: + types: + Blunt: 1 + staminaDamage: 20 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletCaselessRiflePractice + damage: + types: + Blunt: 2 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: BulletAntiMateriel + damage: + types: + Piercing: 40 + Structural: 30 + staminaDamage: 35 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: PelletShotgunPractice + damage: + types: + Blunt: 1 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: PelletShotgunBeanbag + damage: + types: + Blunt: 2.5 + staminaDamage: 15 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: PelletShotgunSlug + damage: + types: + Piercing: 28 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: PelletShotgun + damage: + types: + Piercing: 10 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: PelletShotgunIncendiary + damage: + types: + Blunt: 3 + Heat: 7 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: PelletShotgunImprovised + damage: + types: + Piercing: 3 + Slash: 3 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet + +- type: hitscan + id: PelletShotgunUranium + damage: + types: + Radiation: 5 + Piercing: 5 + collisionMask: BulletImpassable + bulletTracer: + sprite: _Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi + state: bullet diff --git a/Resources/Textures/_Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi/bullet.png b/Resources/Textures/_Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi/bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae4683533a5320db41de0e0f0457de2db5332fe GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C|Kp` z;usRq`u3V3SF?ja>%;o+*A4>Wll3M@zcICWJkL)chP!)$LxfC!!cMXLR}aq~Uwv$* zr0MbSy?PA{OdJXg4B-r0(z!L4%5^v}$}ybJ(|`Zad|%$>y&Gk2K08pJ`2UaL{zo>9 o2l|WcPOrb$aM@W2s%1r_kLd6=FfLIyO&>bnmB_o!x;tx<^w!f8E-gK9y&`0Khre? PI-bGP)z4*}Q$iB}R)Jcj literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi/meta.json new file mode 100644 index 0000000000..098e5b693d --- /dev/null +++ b/Resources/Textures/_Sunrise/Objects/Weapons/Guns/Projectiles/hitscan_tracer.rsi/meta.json @@ -0,0 +1,24 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "bullet_tracer", + "delays": [ + [ + 0.0333333333333, + 0.0333333333333, + 0.0333333333333 + ] + ] + }, + { + "name": "bullet" + } + ] +} From 02bab1efe99b50abad2bee7fccb1daee6579d08d Mon Sep 17 00:00:00 2001 From: iertis Date: Wed, 4 Dec 2024 04:44:58 +0500 Subject: [PATCH 2/9] =?UTF-8?q?=D0=9D=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=84=D0=B8=D0=BA=D1=81=D1=8B=20(#766)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Locale/ru-RU/_strings/_sunrise/markings/demon.ftl | 6 +++--- .../_Sunrise/Entities/Mobs/Customization/Markings/demon.yml | 6 +++--- .../Prototypes/_Sunrise/Entities/Mobs/Species/demon.yml | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/markings/demon.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/markings/demon.ftl index 81fe3120fd..4b1d00f57c 100644 --- a/Resources/Locale/ru-RU/_strings/_sunrise/markings/demon.ftl +++ b/Resources/Locale/ru-RU/_strings/_sunrise/markings/demon.ftl @@ -1,6 +1,6 @@ -marking-DemomTail1 = острый конец, хвост -marking-DemomTailLong = длинный и пушистый, хвост -marking-DemomTailUp = длинный и пушистый, хвост (приподнят) +marking-DemonTail1 = острый конец, хвост +marking-DemonTailLong = длинный и пушистый, хвост +marking-DemonTailUp = длинный и пушистый, хвост (приподнят) marking-DemonCowEars = коровьи ушки, уши marking-DemonEars = демонические ушки, уши marking-DemonCowHorns = коровьи рожки, рога diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Customization/Markings/demon.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Customization/Markings/demon.yml index 457fb826c9..b9731d6772 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Customization/Markings/demon.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Customization/Markings/demon.yml @@ -1,5 +1,5 @@ - type: marking - id: DemomTail1 + id: DemonTail1 bodyPart: Tail markingCategory: Tail speciesRestriction: [Demon] @@ -8,7 +8,7 @@ state: demon_tail - type: marking - id: DemomTailLong + id: DemonTailLong bodyPart: Tail markingCategory: Tail speciesRestriction: [Demon] @@ -17,7 +17,7 @@ state: long - type: marking - id: DemomTailUp + id: DemonTailUp bodyPart: Tail markingCategory: Tail speciesRestriction: [Demon] diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/demon.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/demon.yml index 4ec4ce2b0d..fe77f32f57 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/demon.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/demon.yml @@ -5,6 +5,7 @@ id: BaseMobDemon abstract: true components: + - type: Absorbable - type: HumanoidAppearance species: Demon - type: Hunger From d79a6b33dd121c4f5067d8cff5d31d1796c93449 Mon Sep 17 00:00:00 2001 From: KaiserMaus Date: Tue, 3 Dec 2024 23:45:23 +0000 Subject: [PATCH 3/9] =?UTF-8?q?=D0=92=D0=B8=D0=B7=D0=BE=D1=80=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D0=B8=D0=B2=D0=BD=D0=B8=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=B8=D0=BB=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=20=D0=9C=D0=95=D0=A5=D0=B0=20(#769)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Sunrise weapon: small rebalance * NukeMechDiagnosticHUD * meta --------- Co-authored-by: Your Name --- .../_sunrise/entities/clothing/eyes/hud.ftl | 3 ++ .../_sunrise/entities/clothing/eyes/hud.ftl | 3 ++ .../_sunrise/store/uplink-catalog.ftl | 2 ++ .../_Sunrise/Catalog/uplink_catalog.yml | 19 +++++++++++++ .../_Sunrise/Entities/Clothing/Eyes/hud.yml | 17 ++++++++++++ .../Eyes/Hud/syndmech.rsi/equipped-EYES.png | Bin 0 -> 306 bytes .../Clothing/Eyes/Hud/syndmech.rsi/icon.png | Bin 0 -> 486 bytes .../Eyes/Hud/syndmech.rsi/inhand-left.png | Bin 0 -> 374 bytes .../Eyes/Hud/syndmech.rsi/inhand-right.png | Bin 0 -> 381 bytes .../Clothing/Eyes/Hud/syndmech.rsi/meta.json | 26 ++++++++++++++++++ 10 files changed, 70 insertions(+) create mode 100644 Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/equipped-EYES.png create mode 100644 Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/icon.png create mode 100644 Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/inhand-left.png create mode 100644 Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/inhand-right.png create mode 100644 Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/meta.json diff --git a/Resources/Locale/en-US/_prototypes/_sunrise/entities/clothing/eyes/hud.ftl b/Resources/Locale/en-US/_prototypes/_sunrise/entities/clothing/eyes/hud.ftl index 96502d0747..74c886746e 100644 --- a/Resources/Locale/en-US/_prototypes/_sunrise/entities/clothing/eyes/hud.ftl +++ b/Resources/Locale/en-US/_prototypes/_sunrise/entities/clothing/eyes/hud.ftl @@ -1,2 +1,5 @@ ent-ClothingEyesUniversalMedicalHud = universal medical hud .desc = A heads-up display that combines the advantages of a medical scanner and chemical analysis glasses. + +ent-ClothingEyesHudSyndicateMech = syndicate Mech pilot visor + .desc = The syndicate Mech pilote`s professional head-up display, designed for quick diagnosis of their Mech's status. diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/clothing/eyes/hud.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/clothing/eyes/hud.ftl index ff9f030d02..736cdcc9f8 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/clothing/eyes/hud.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/clothing/eyes/hud.ftl @@ -1,2 +1,5 @@ ent-ClothingEyesUniversalMedicalHud = универсальный медицинский визор .desc = Дисплей, сочетающий в себе преимущества медицинского сканера и очков для химического анализа. + +ent-ClothingEyesHudSyndicateMech = визор МЕХ-пилота синдиката + .desc = Профессиональный визор анализирующий в реальном времени состояние МЕХа. diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/store/uplink-catalog.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/store/uplink-catalog.ftl index 3321f7df25..311b84a40c 100644 --- a/Resources/Locale/ru-RU/_strings/_sunrise/store/uplink-catalog.ftl +++ b/Resources/Locale/ru-RU/_strings/_sunrise/store/uplink-catalog.ftl @@ -25,6 +25,8 @@ uplink-music-boombox-desc = Содержит бумбокс синдиката uplink-syndie-nvd-name = ПНВ Синдиката uplink-syndie-nvd-desc = Качественно исполненый прибор ночного видения, производства компании "Горлакс секьюрити", использует красные линзы для улучшения видимости в условиях низкой освещенности. +uplink-syndie-diagnostic-hud-name = визор МЕХ-пилота синдиката +uplink-syndie-diagnostic-hud-desc = Профессиональный визор анализирующий в реальном времени состояние МЕХа. uplink-clothing-backpack-syndie-name = Рюкзак Синдиката uplink-hardsuit-syndie-commander-name = скафандр Командира Синдиката uplink-hardsuit-syndie-commander-desc = Скафандр предназначеный для командиров отрядов Горлекса. diff --git a/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml b/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml index 76a81e4456..feb96c3bcd 100644 --- a/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml @@ -12,6 +12,25 @@ categories: - UplinkWearables +- type: listing + id: UplinkClothingEyesHudSyndicateMech + name: uplink-syndie-diagnostic-hud-name + description: uplink-syndie-diagnostic-hud-desc + icon: { sprite: /Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi, state: icon } + productEntity: ClothingEyesHudSyndicateMech + discountCategory: rareDiscounts + discountDownTo: + Telecrystal: 2 + cost: + Telecrystal: 3 + categories: + - UplinkWearables + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + # For the Buldog - type: listing id: UplinkMagazineShotgun diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Eyes/hud.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Eyes/hud.yml index ef6b4cc768..936616f54c 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Clothing/Eyes/hud.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Eyes/hud.yml @@ -12,3 +12,20 @@ - type: Tag tags: - HudMedical + +- type: entity + parent: [ClothingEyesBase, ShowSecurityIcons, BaseSyndicateContraband] + id: ClothingEyesHudSyndicateMech + name: syndicate Mech pilot visor + description: The syndicate Mech pilote`s professional head-up display, designed for quick diagnosis of their Mech's status. + components: + - type: Sprite + sprite: _Sunrise/Clothing/Eyes/Hud/syndmech.rsi + - type: Clothing + sprite: _Sunrise/Clothing/Eyes/Hud/syndmech.rsi + - type: ShowSyndicateIcons + - type: ShowHealthBars + damageContainers: + - Inorganic + - Silicon + - Mech # Sunrise-edit \ No newline at end of file diff --git a/Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/equipped-EYES.png b/Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/equipped-EYES.png new file mode 100644 index 0000000000000000000000000000000000000000..f27ce596a6d7a4341dbede50256b7fb48dae6900 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|-gvq=hE&XX zd&@AJ$xx#Gm>gl=bE76ISGQ6bQctv zf8UV0ciptLWgXQ=eOo@K3QhXNc$RgSt9--JoKuN$2{uvlisr}f-8c2V5odEE=YeHW ws`UpVwH{>0EqL4Gz){I!%n3D3Mf0wDYjoV*9oOId0s5Q4)78&qol`;+0IltX00000 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/icon.png b/Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e22edf588f795c8870522f9b670983262d5ac55f GIT binary patch literal 486 zcmV@P)Px$ph-kQR9J=Wl+A9_Komxg9ZzDL203mDRVyJybOk#kR=gFPJ_DP+5Kq7Zu!#y* zDuEhd>>-I`*JFEF6eUJVZB;Cpvz+_se)nf)z+f;K{&%d$h&^wN;|PYM5l@3qAJWJq z#3(1Uk=)u zG?lDms$I{2@Q$?U9FOOXwd?s@UP)%N8K-CCzv8#w*8oIO#A5FA>EkP+FV{O`doZxF zjqEI-_Z0-;l*PORBBBUByx(_wc_mrQeU^)J;J*8Ib4^|MrSG1=@yQuYUGMf7gi~(6 z-R$D7=kLy8{|A(JcT|-k&)5G}z$AQ5U00~G)Gb4+$hX+GP17{(bHs3Hsj}?-d<+JI c!C+|f8}%Hn-1wA%1ONa407*qoM6N<$g4J-~m;e9( literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..71668d361b4dd26d9ff3058e07704bdfb3942c19 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z4Ln^OLn`LH zy>-xwDNy3*$K)1+rVBg=d%K(p6wmk-JoS^PQFIiLKjNz|@P*-$+H|`Hy_5uwC^wd- z@LM&yP90{V_c(k0=hwbJzEl3r-HAZsLEufYL07I-cI58MTLnJfn!C<7U01s2k;3PF zR$P`kU9ZZFSFY0F`nqYU)Y+2t7kbmO_U5cyq)}qLQmgCL!RZ1ejQ7@SNAC~Zw@UN1 zHSh7AkB-b-BHw<0Zntpy;lg!m-cMPdb?aB}p7?O5XH%CvzQDXUKKxx?aCOy}U3>m< z$f=+6n-nbi^U>|!>Ehv4wUyiMD#^dQZ!&-W>EEs&j!)O}o8uaI_tBA?`TLy~&%E{g zcWNpN#L*y9rb*!K#09LK`$bmS76ou?EVdQeqZqWT{<7Rn_P2rz4i@j{Kkk`Q^W%vM ONVTV{pUXO@geCx7%%8ac literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Eyes/Hud/syndmech.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2330b44dfccebca8efddb9a41e58aed8daa2eefc GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z%{^TlLn`LH zy>-@$DNy3r$Lk!4Esbd$YFb^4;)mX_guiP!C@sYD(dkYFv!l2|ZqZBD7fx(^j;A{u zK6uRD?#km)XTs~2{HOkO@q-U@z894Ba{z4sf`-zsZo%%4XO&gW`&T+m$I8|p$hjtc z)~C|{TW;G`kLZs+J%&ayQ;rtiapFH%7$eJfDye5;n9bx3Qnj Date: Wed, 4 Dec 2024 02:45:34 +0300 Subject: [PATCH 4/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D1=83=D1=87=D0=BA=D0=B0=20=D0=A6=D0=9A=20?= =?UTF-8?q?=D0=B2=D0=BE=20=D0=B2=D1=82=D0=BE=D1=80=D0=BE=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=B0=D1=80=D0=BC=D0=B0=D0=BD=20(#770)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_Sunrise/Roles/Jobs/Command/nanotrasenrepresentative.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Command/nanotrasenrepresentative.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Command/nanotrasenrepresentative.yml index 3556407581..f340d4693d 100644 --- a/Resources/Prototypes/_Sunrise/Roles/Jobs/Command/nanotrasenrepresentative.yml +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Command/nanotrasenrepresentative.yml @@ -50,6 +50,7 @@ id: NanoTrasenRepresentativePDA ears: ClothingHeadsetAltCommand pocket1: FlippoEngravedLighter + pocket2: PenCentcom storage: back: - RubberStampNtrep From 449112803a0475a0899a1e9aa2a9033ceb61ba79 Mon Sep 17 00:00:00 2001 From: Nrd-K Date: Wed, 4 Dec 2024 02:46:37 +0300 Subject: [PATCH 5/9] =?UTF-8?q?=D1=81=D0=B1=D0=B0=D0=BB=D0=B0=D0=BD=D1=81?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D1=86=D0=B5=D0=BB?= =?UTF-8?q?=D1=8C=20=D0=BF=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D1=8C=D0=B1?= =?UTF-8?q?=D0=B5=20=D0=B8=D0=B3=D1=80=D0=BE=D0=BA=D0=BE=D0=B2,=20=D1=83?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=20=D0=BA=D0=BE=D0=B3=D0=BD=D0=B8?= =?UTF-8?q?=D0=B7=D0=B8=D0=BD,=20=D1=87=D1=82=D0=BE=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=B2=D0=BF=D0=B8=D1=81=D1=8B=D0=B2=D0=B0=D0=BB=D1=81=D1=8F=20?= =?UTF-8?q?=D0=B2=20"=D1=81=D1=8E=D0=B6=D0=B5=D1=82"=20=D1=86=D0=B5=D0=BB?= =?UTF-8?q?=D0=B8=20(#772)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_sunrise/station-goal/station-goal-component.ftl | 11 +++++------ .../_sunrise/station-goal/station-goal-component.ftl | 11 +++++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Resources/Locale/en-US/_strings/_sunrise/station-goal/station-goal-component.ftl b/Resources/Locale/en-US/_strings/_sunrise/station-goal/station-goal-component.ftl index 65a732d180..0503bc9e8e 100644 --- a/Resources/Locale/en-US/_strings/_sunrise/station-goal/station-goal-component.ftl +++ b/Resources/Locale/en-US/_strings/_sunrise/station-goal/station-goal-component.ftl @@ -629,25 +629,24 @@ station-goal-medical-replenishment = Одна из наших колоний слишком сильно пострадала от нападения ксеноморфов. В данный момент колония не может нормально функционировать и все раненные были перемещены на СЦК, потому медицинскому отделу даётся задача произвести следующий список лекарств:[bold] 1. Сигинат (200 унций). - 2. Когнизин (200 унций). + 2. Дексалин плюс (200 унций). 3. Инсузин (200 унций). 4. Пиразин (200 унций). 5. Дифенилметиламин (200 унций). 6. Эпинефрин (200 унций). 7. Галоперидол (200 унций). - 8. Некрозол (100 унций). + 8. Некрозол (200 унций). 9. Целлиминол (200 унций). 10. H-32 (200 унций). 11. Оппорозидон (200 унций). 12. Алоксадон (200 унций). 13. Этилредоксразин (200 унций). - 14. Лацеринол (100 унций). - 15. Пунтктураз (100 унций). + 14. Лацеринол (200 унций). + 15. Пунтктураз (200 унций). 16. Бруизин (200 унций). 17. Физраствор (200 унций). 18. Дифенгидрамин (200 унций). - 19. Лепоразин (100 унций). - 20. Дексалин плюс (200 унций).[/bold] + 19. Лепоразин (200 унций).[/bold] ⠀Так же необходимо сделать набор, в который войдёт:[bold] 1. Аптечка первой помощи (5 шт.). diff --git a/Resources/Locale/ru-RU/_strings/_sunrise/station-goal/station-goal-component.ftl b/Resources/Locale/ru-RU/_strings/_sunrise/station-goal/station-goal-component.ftl index 06546894e2..9b1e06b711 100644 --- a/Resources/Locale/ru-RU/_strings/_sunrise/station-goal/station-goal-component.ftl +++ b/Resources/Locale/ru-RU/_strings/_sunrise/station-goal/station-goal-component.ftl @@ -628,25 +628,24 @@ station-goal-medical-replenishment = Одна из наших колоний слишком сильно пострадала от нападения ксеноморфов. В данный момент колония не может нормально функционировать и все раненные были перемещены на СЦК, потому медицинскому отделу даётся задача произвести следующий список лекарств:[bold] 1. Сигинат (200 унций). - 2. Когнизин (200 унций). + 2. Дексалин плюс (200 унций). 3. Инсузин (200 унций). 4. Пиразин (200 унций). 5. Дифенилметиламин (200 унций). 6. Эпинефрин (200 унций). 7. Галоперидол (200 унций). - 8. Некрозол (100 унций). + 8. Некрозол (200 унций). 9. Целлиминол (200 унций). 10. H-32 (200 унций). 11. Оппорозидон (200 унций). 12. Алоксадон (200 унций). 13. Этилредоксразин (200 унций). - 14. Лацеринол (100 унций). - 15. Пунтктураз (100 унций). + 14. Лацеринол (200 унций). + 15. Пунтктураз (200 унций). 16. Бруизин (200 унций). 17. Физраствор (200 унций). 18. Дифенгидрамин (200 унций). - 19. Лепоразин (100 унций). - 20. Дексалин плюс (200 унций).[/bold] + 19. Лепоразин (200 унций).[/bold] ⠀Так же необходимо сделать набор, в который войдёт:[bold] 1. Аптечка первой помощи (5 шт.). From 518971475fa7f32b0764156a81cf0bb33ce575c1 Mon Sep 17 00:00:00 2001 From: KaiserMaus Date: Tue, 3 Dec 2024 23:46:46 +0000 Subject: [PATCH 6/9] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=D1=8B=20=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BC=D0=B0=D0=B3?= =?UTF-8?q?=D0=B0=D0=B7=D0=B8=D0=BD=D0=BE=D0=B2=20=D0=B8=20=D0=BE=D1=80?= =?UTF-8?q?=D1=83=D0=B6=D0=B8=D1=8F=20=20(#773)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Sunrise weapon: small rebalance * Описание Оружие и Магазинов --------- Co-authored-by: Your Name --- .../guns/ammunition/magazines/light_rifle.ftl | 28 +++++++++---------- .../guns/ammunition/magazines/magnum.ftl | 2 +- .../guns/ammunition/magazines/pistol.ftl | 12 ++++---- .../guns/ammunition/magazines/rifle.ftl | 10 +++---- .../guns/ammunition/magazines/sniper.ftl | 8 +++--- .../objects/weapons/guns/lmgs/lmgs.ftl | 14 +++++----- .../objects/weapons/guns/pistols/pistols.ftl | 14 +++++----- .../objects/weapons/guns/rifles/rifles.ftl | 6 ++-- .../weapons/guns/shotguns/shotguns.ftl | 6 ++-- .../objects/weapons/guns/smgs/smgs.ftl | 18 ++++++------ .../objects/weapons/guns/snipers/snipers.ftl | 2 +- 11 files changed, 60 insertions(+), 60 deletions(-) diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/light_rifle.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/light_rifle.ftl index ac3229d61d..9b35043898 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/light_rifle.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/light_rifle.ftl @@ -1,30 +1,30 @@ ent-MagazineLightRifleRubber = магазин (.30 винтовочные резиновые) .desc = { ent-BaseMagazineLightRifle.desc } ent-MagazineAK = универсальный магазин автомата калашникова - .desc = Использует патроны калибра .30 мм. + .desc = Использует патроны калибра .30 винтовочные. ent-MagazineMP38 = магазин ПП MP-38 - .desc = Использует патроны калибра .30 мм. + .desc = Использует патроны калибра .35 Авто. ent-MagazineScorpion = магазин ПП Скорпион - .desc = Использует патроны калибра .30 мм. + .desc = Использует патроны калибра .35 Авто. ent-MagazineNewVector = магазин Вектора - .desc = Использует патроны калибра .30 мм. -ent-MagazineRPD = магазин RPD - .desc = Использует патроны калибра .30 мм. -ent-MagazineMachineGunMG42 = магазин MG-42 - .desc = Использует патроны калибра .30 мм. -ent-MagazineLightMachineGunMG60 = магазин MG-60 - .desc = Использует патроны калибра .30 мм. + .desc = Использует патроны калибра .35 Авто. +ent-MagazineRPD = короб РПД + .desc = Короб для РПД с длинной лентой .30 винтовочных. +ent-MagazineMachineGunMG42 = Короб MG-342 + .desc = Короб для MG-342 с длинной лентой .30 винтовочных. +ent-MagazineLightMachineGunMG60 = Короб ПКМ + .desc = Короб для ПКМ с длинной лентой .30 винтовочных. ent-MagazineVP70 = магазин пистолета VP-78 - .desc = Использует патроны калибра .35 мм. + .desc = Использует патроны калибра .35 Авто. ent-MagazineGlock22 = магазин пистолета Glock-22 - .desc = Использует патроны калибра .35 мм. + .desc = Использует патроны калибра .35 Авто. ent-MagazineHIBrowning = магазин HIBrowning-88 М4 .desc = Использует патроны калибра .35 мм ent-MagazineACP14 = магазин пистолета ACP-14 - .desc = Использует патроны калибра .35 мм + .desc = Использует патроны калибра .35 Авто. ent-MagazineSTG44 = магазин STG44 .desc = { ent-BaseItem.desc } ent-MagazinePistolSubMachineGunSIAR52 = Расширенный магазин (безгильзовые) .desc = { ent-BaseMagazineLightRifle.desc } -ent-MagazineDl6902 = коробка-магазин DL6902 +ent-MagazineDl6902 = короб-магазин DL6902 .desc = { ent-BaseMagazineLightRifle.desc } diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/magnum.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/magnum.ftl index bb219e4793..3742fc2fb4 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/magnum.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/magnum.ftl @@ -3,6 +3,6 @@ ent-MagazineMagnumRubber = пистолетный магазин (.45 магну ent-MagazineMagnumSubMachineGunRubber = магазин Вектора (.45 магнум резиновые) .desc = { ent-BaseMagazineMagnum.desc } ent-MagazineDeagle = магазин пустынного орла - .desc = Использует патроны калибра .50 мм. + .desc = Использует патроны калибра .45 магнум. ent-MagazineDeagleExtended = { ent-MagazineDeagle } .desc = { ent-MagazineDeagle.desc } diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/pistol.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/pistol.ftl index ef69f87809..92623a3842 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/pistol.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/pistol.ftl @@ -3,14 +3,14 @@ ent-MagazinePistolRubber = пистолетный магазин (.35 авто ent-MagazinePistolSubMachineGunRubber = магазин ПП (.35 авто резиновые) .desc = { ent-BaseMagazinePistolSubMachineGun.desc } ent-MagazineP90 = магазин ПП P-90 - .desc = Использует патроны калибра .30 мм. + .desc = Использует патроны калибра .35 авто. ent-MagazineMP7 = магазин ПП MP7 - .desc = Использует патроны калибра .30 мм. + .desc = Использует патроны калибра .35 авто. ent-MagazineMP5 = магазин ПП MP5 - .desc = Использует патроны калибра .30 мм. -ent-MagazinePPSH41 = магазин PPSH-41 - .desc = Использует патроны калибра .30 мм. -ent-MagazinePPSH41Extended = расширенный магазин PPSH41 + .desc = Использует патроны калибра .35 авто. +ent-MagazinePPSH41 = магазин ППШ + .desc = Использует патроны калибра .35 авто. +ent-MagazinePPSH41Extended = расширенный магазин ППШ .desc = { ent-MagazinePPSH41.desc } ent-MagazineMP5Extended = расширенный магазин MP5 .desc = { ent-MagazineMP5.desc } diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/rifle.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/rifle.ftl index 335e09cd8e..c7ba60b592 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/rifle.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/rifle.ftl @@ -3,15 +3,15 @@ ent-MagazineRifleRubber = магазин (.20 винтовочные резин ent-MagazineV31 = магазин для рельсотрона .desc = Стандартный тяжёлый магазин типа EarthGov. ent-MagazineFamas = магазин автомата автомата фамаз - .desc = Использует патроны калибра .35 мм. + .desc = Использует патроны калибра .20 винтовочные. ent-MagazineG36 = магазин автомата G-36 - .desc = Использует патроны калибра .35 мм. + .desc = Использует патроны калибра .20 винтовочные. ent-MagazineM28 = магазин автомата M28 - .desc = Использует патроны калибра .35 мм. + .desc = Использует патроны калибра .20 винтовочные. ent-MagazineAR18 = магазин автомата AR-18 - .desc = Использует патроны калибра .35 мм + .desc = Использует патроны калибра .20 винтовочные. ent-MagazineM16A4 = магазин M16A4 - .desc = Использует патроны калибра .35 мм. + .desc = Использует патроны калибра .20 винтовочные. ent-MagazineV31Extended = расширенный магазин V31 .desc = { ent-MagazineV31.desc } ent-MagazineFamasExtended = расширенный магазин Famas diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/sniper.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/sniper.ftl index 0fbfd07db1..49c1039806 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/sniper.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/ammunition/magazines/sniper.ftl @@ -1,10 +1,10 @@ ent-MagazineDragunov = магазин винтовки Драгунов - .desc = Использует патроны калибра 7.62 мм. + .desc = Использует патроны калибра .60 крупнокалиберный. ent-MagazineBR64 = магазин винтовки BR-64 - .desc = Использует патроны калибра .45 мм. + .desc = Использует патроны калибра .45 магнум. ent-MagazineBauer127 = магазин Bauer-127 - .desc = Использует патроны калибра .60 мм. -ent-MagazineDragunovExtended = расширенный магазин Dragunov + .desc = Использует патроны калибра .60 крупнокалиберный. +ent-MagazineDragunovExtended = Увеличеный магазин Dragunov .desc = { ent-MagazineDragunov.desc } ent-MagazineBR64Extended = расширенный магазин BR64 .desc = { ent-MagazineBR64.desc } diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/lmgs/lmgs.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/lmgs/lmgs.ftl index 04e81fe3c8..3665fb5f7a 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/lmgs/lmgs.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/lmgs/lmgs.ftl @@ -1,8 +1,8 @@ -ent-WeaponLightMachineGunMG60 = MG-60 - .desc = Универсальный пулемёт MG-60 фирмы Raummetall — стандартное ГПМГ армии EarthGov. Хотя обычно устанавливается на транспортные средства, иногда используется пехотой для блокирования проходов, подавления противников или, в редких случаях, для стрельбы на ходу. Использует патрон калибра .30 мм. -ent-WeaponLightMachineGunRPD = RPD - .desc = Дешёвый и надёжный пулемёт, иногда более известный как 'RPD'. Несмотря на отсутствие точек крепления, кроме подствольного, остаётся популярным продуктом на чёрном рынке благодаря своей низкой стоимости, большой ёмкости и повышенному калибру патронов. Использует патрон калибра .30 мм. -ent-WeaponMachineGunMG42 = MG-42 - .desc = Пулемёт ОПЗ периода Второй мировой войны. Разработан фирмой Metall-und Lackwarenfabrik Johannes Großfuß в 1942 году. После войны поставки данного пулемёта возобновили в 2342 году. Использует патрон калибра .30 мм. +ent-WeaponLightMachineGunMG60 = ПKM + .desc = Тяжёлый ручной пулемёт ПKM — надёжный пулемёт Армии СССП. Используется пехотой для блокирования проходов, подавления противников или, в редких случаях, для стрельбы на ходу. Использует патрон калибра .30 винтовочный. +ent-WeaponLightMachineGunRPD = РПД-Ш + .desc = РПД-Ш Где "Ш" означает Штурмовой. Вариация Ручного пулемета СССП для Штурмовых операций в космическом пространстве где приклад будет только мешать. Остаётся популярным продуктом на чёрном рынке благодаря своей низкой стоимости. Использует патрон калибра .30 винтовочный. +ent-WeaponMachineGunMG42 = MG-342 + .desc = Пулемёт ОПЗ периода Второй мировой войны. Разработан в 1942 году. После войны поставки данного пулемёта возобновили в 2342 году. Использует патрон калибра .30 винтовочный. ent-WeaponDL6902 = Пулемёт DL6902 - .desc = Тяжёлый пулемёт Cybersun. + .desc = Тяжёлый пулемёт Cybersun. Лучшая версия легендарного пулемета L6 SAW. Использует патрон калибра .30 винтовочный. diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/pistols/pistols.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/pistols/pistols.ftl index 9e9364a76a..7607c8f776 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/pistols/pistols.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/pistols/pistols.ftl @@ -2,21 +2,21 @@ ent-WeaponPistolMk58Nonlethal = MK58 .desc = Дешёвый и распространённый пистолет, производимый дочерней компанией Nanotrasen. Использует патроны калибра .35 авто. .suffix = Пистолет, Не летальный ent-WeaponPistolN1984Nonlethal = N1984 - .desc = Дешёвый и распространённый пистолет, производимый дочерней компанией Nanotrasen. Использует патроны калибра .35 авто. + .desc = Дешёвый и распространённый пистолет, производимый дочерней компанией Nanotrasen. Использует патроны калибра .45 магнум. .suffix = Пистолет, Не летальный ent-WeaponPistolVP78 = боевой пистолет VP-78 - .desc = VP-78, произведённый компанией Markus Henday Inc. Массивный, грозный автоматический пистолет заряжается патронами калибра .35 мм. + .desc = VP-78, произведённый компанией Markus Henday Inc. Массивный, грозный автоматический пистолет заряжается патронами калибра .35 авто. ent-WeaponPistolG22 = Glock-22 - .desc = Популярное полицейское огнестрельное оружие в наши дни. Использует патрон калибра .35 мм. + .desc = Популярное полицейское огнестрельное оружие в наши дни. Использует патрон калибра .35 авто. .suffix = Летальный ent-WeaponPistolG22NonLethal = Glock-22 .suffix = Не летальный .desc = { ent-BaseWeaponPistol.desc } ent-WeaponPistolHIB88M4 = HIBrowning-88 М4 - .desc = Необычный пистолет, используемый для самообороны, но он часто используется террористическими организациями. Использует патрон калибра .35 мм. + .desc = Необычный пистолет, используемый для самообороны, но он часто используется террористическими организациями. Использует патрон калибра .35 авто. ent-WeaponPistolACP14 = ACP-14 - .desc = ACP-14 производства Earth Armories. Надёжное боковое оружие, заряжается патронами калибра .35 мм. + .desc = ACP-14 производства Earth Armories. Надёжное огнестрельное оружие, заряжается патронами калибра .35 авто. ent-WeaponRevolverMatebaNew = Матеба .desc = Культовое оружие. Использует патроны "магнум" 45-го калибра. -ent-WeaponPistolDeagle = пустынный орёл - .desc = "Использует патроны калибра .50 мм, который наносит серьёзный удар. Выгравировано: Мир благодаря превосходящей огневой мощи"". +ent-WeaponPistolDeagle = пустотнный орёл + .desc = "Использует патрон "магнум" 45-го калибра, который наносит серьёзный удар. Выгравировано: Мир благодаря превосходящей огневой мощи". diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/rifles/rifles.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/rifles/rifles.ftl index fe4375a9d4..871149154d 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/rifles/rifles.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/rifles/rifles.ftl @@ -10,11 +10,11 @@ ent-WeaponRifleFamas = фамас ent-WeaponRifleG36 = G-36 .desc = Штурмовая винтовка H&K G-36 раньше была стандартной винтовкой армии Земного правительства. Использует патрон калибра .20 винтовочный. ent-WeaponRifleM28 = M-28 - .desc = Штурмовая винтовка М-28 раньше была стандартной винтовкой армии Земного Правительства. Использует патрон калибра .20 винтовочный. -ent-WeaponRifleAR18 = AR-18 + .desc = Штурмовая винтовка М-28 раньше была стандартной винтовкой армии Земного Правительства. Использует патрон калибра .20 винтовочный. +ent-WeaponRifleAR18 = Карабин AR-18 .desc = Карабин H&K AR-18 является одной из стандартных винтовок, используемых армией Земного правительства. Он обычно используется людьми, предпочитающими большую мобильность в бою, такими как разведчики и другая лёгкая пехота. Заряжается патронами .20 винтовочный. ent-WeaponRifleM16A4 = M16A4 - .desc = Легкая, универсальная штурмовая винтовка. До сих пор сохраняет актуальность среди наемников и ополченцев. Заряжается патронами калибра .30 винтовочный. + .desc = Легкая, универсальная штурмовая винтовка. До сих пор сохраняет актуальность среди наемников и ополченцев. Заряжается патронами калибра .20 винтовочный. ent-WeaponSTG44 = STG 44 .desc = { ent-BaseWeaponRifle.desc } ent-WeaponRifleV31 = Штурмовая винтовка V-31 diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/shotguns/shotguns.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/shotguns/shotguns.ftl index d1876533b5..88bc968e05 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/shotguns/shotguns.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/shotguns/shotguns.ftl @@ -1,9 +1,9 @@ ent-WeaponXM1014 = XM1014 - .desc = Боевое ружье Earth Armories XM1014 - это полуавтоматическое ружье, используемое стрелками в отрядах армии Земли. Использует патроны калибра .50 ружейный. + .desc = Боевой дробовик Earth Armories XM1014 - это полуавтоматический дробовик, используемый стрелками в отрядах армии Земли. Использует патроны калибра .50 ружейный. ent-WeaponShotgunPaladin12 = дробовик Паладин .desc = Пятизарядный укороченный помповый дробовик, созданный под нужны сотрудников правоохранительных органов. Использует патроны калибра .50 ружейный. -ent-WeaponShotgunSPAS12 = SPAS-12 - .desc = Дробовик морского корпуса EarthGov. Может использовать широкую номенклатуру боеприпасов калибра .50 ружейный. +ent-WeaponShotgunSPAS12 = LAW-12 + .desc = Полицейский полуавтоматический Дробовик. Может использовать широкую номенклатуру боеприпасов калибра .50 ружейный. ent-WeaponShotgunTrenchgun4034 = Trenchgun L-4034 .desc = Дешёвый шестизарядный дробовик. Широко используется для охоты, обороны дома и полицейской службы. Использует патроны калибра .50 ружейный. ent-WeaponShotgunZauer = Zauer diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/smgs/smgs.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/smgs/smgs.ftl index c1e5c07528..aa751b7f92 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/smgs/smgs.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/smgs/smgs.ftl @@ -1,23 +1,23 @@ ent-WeaponSubMachineGunDrozdRubber = Дрозд - .desc = Превосходный, полностью автоматический, тяжёлый пистолет-пулемёт. Использует патроны калибра .35 авто. + .desc = Превосходный, тяжёлый пистолет-пулемёт. Использует патроны калибра .35 авто. .suffix = ПП, Не летальный ent-WeaponSubMachineGunVectorRubber = Вектор .desc = Превосходный тяжёлый пистолет-пулемёт. Использует патроны калибра .45 магнум. .suffix = Неактуален, Не летальный , используйте Дрозд ent-WeaponSubMachineGunP90 = P-90 - .desc = P-90 - это SMG стандартного выпуска EarthGov. Он известен своими компактными размерами и простотой использования в полевых условиях. Обычно его носят военнослужащие, которым нужно лёгкое огнестрельное оружие для спешки. Использует патрон калибра .30 мм. + .desc = P-90 - это SMG стандартного выпуска EarthGov. Он известен своими компактными размерами и простотой использования в полевых условиях. Использует патрон калибра .35 авто. ent-WeaponSubMachineGunMP38 = MP-38 - .desc = MP-38 - старый и дешёвый пистолет-пулемёт, используемый повстанцами, он обладает хорошими характеристиками на больших дистанциях в компактном корпусе, хотя и страдает из-за низкой для своего класса скорострельности. Использует патрон калибра .30 мм. + .desc = MP-38 - старый и дешёвый пистолет-пулемёт, используемый повстанцами, он не обладает хорошими характеристиками. Использует патрон калибра .35 авто. ent-WeaponSubMachineGunMP7 = MP7 - .desc = Модель SMG7 с архаичным дизайном, насчитывающим сотни лет, была распространена в своё время. Сегодня он находит ограниченное применение в качестве дешёвых компьютерных копий или семейных реликвий, хотя каким-то образом попал в руки колониальных повстанцев. Заряжается патронами калибра .30 мм. + .desc = Модель SMG7 с архаичным дизайном, насчитывающим сотни лет, была распространена в своё время. Использует патрон калибра .35 авто. ent-WeaponSubMachineGunMP5 = MP5 - .desc = Пистолет-пулемёт RivArms SMG-5 - обновление классического дизайна. Лёгкое огнестрельное оружие, способное эффективно использоваться одной рукой, которое идеально подходит для боя на ближней и средней дистанции. Заряжается патронами калибра .30 мм. + .desc = Пистолет-пулемёт RivArms SMG-5 - обновление классического дизайна. Лёгкое огнестрельное оружие, способное эффективно использоваться одной рукой, которое идеально подходит для боя на ближней и средней дистанции. Использует патрон калибра .35 авто. ent-WeaponSubMachineGunSkorpion = Скорпион VZ-61 - .desc = Надёжное огнестрельное оружие 20-го века, представляющее собой комбинацию пистолета и автомата. Использует патрон калибра .30 мм. + .desc = Надёжное огнестрельное оружие, представляющее собой комбинацию пистолета и пистолет-пулемёта. Использует патрон калибра .35 авто. ent-WeaponSubMachineGunNewVector = Вектор - .desc = Вектор, используемый полицейским спецназом. Заряжается патронами калибра .30 мм. -ent-WeaponSubMachineGunPPSH41 = PPSH-41 - .desc = ППШ-41 или /"Папаша"/ - это пистолет-пулемёт USB-модели, который многие террористические организации копировали на протяжении многих лет. Несмотря на малую поражающую способность, его надёжность, исключительная долговечность и высокая огневая мощь оказываются полезными для рук пользователя. + .desc = Вектор, используемый полицейским спецназом. Использует патрон калибра .35 авто. +ent-WeaponSubMachineGunPPSH41 = ППШ-71 + .desc = ППШ-71 или /"Папаша"/ - это пистолет-пулемёт СССП. Несмотря на малую поражающую способность, его надёжность, исключительная долговечность и высокая огневая мощь оказываются полезными для рук пользователя. ent-WeaponSIAR52 = пистолет-пулемёт SIAR-52 .desc = Высокоскорострельный ПП, оборудован интегрированым глушителем. ent-WeaponAMS-42 = AMS-42 diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/snipers/snipers.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/snipers/snipers.ftl index 43bc3b0e3b..81efb4a7ac 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/snipers/snipers.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/entities/objects/weapons/guns/snipers/snipers.ftl @@ -1,7 +1,7 @@ ent-WeaponSniperDragunov = Драгунов .desc = Полуавтоматическая снайперская винтовка, известная своей меткостью, полностью предназначена для стрельбы на дальние дистанции. Использует патрон калибра 7.62x54 мм. ent-WeaponRifleBR64 = BR-64 - .desc = San Cristo Arms BR-64 - основная боевая винтовка Корпуса морской пехоты. Он известен своей стабильной способностью хорошо работать на большинстве дистанций и убойной силой на близком расстоянии. В основном им пользуются люди, которые предпочитают круглую форму побольше средней. Заряжается патронами калибра .45 мм. + .desc = San Cristo Arms BR-64 - основная боевая винтовка Корпуса морской пехоты. Он известен своей стабильной способностью хорошо работать на большинстве дистанций и убойной силой на близком расстоянии. В основном им пользуются люди, которые предпочитают круглую форму побольше средней. Заряжается патронами калибра 45 Magnum. ent-WeaponRifleBauer127 = затворная винтовка Bauer SR-127 .desc = Bauer SR-127 - это стандартная винтовка с затвором, используемая Объединённым правительством Земли. Известен своей точностью на дальних дистанциях и используется стрелками, несмотря на свой возраст и отсутствие IFF. У него несъёмный прицел. Использует магазины 60-го калибра, защищающие от материалов. ent-WeaponSniperGarand = M1 Garand From 691cdb555ae4791059fb945d416a1583e28a682b Mon Sep 17 00:00:00 2001 From: GayBot Date: Wed, 4 Dec 2024 02:45:44 +0300 Subject: [PATCH 7/9] Automatic changelog update --- Resources/Changelog/ChangelogSunrise.yml | 44 ++++++++++++++++++++---- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/Resources/Changelog/ChangelogSunrise.yml b/Resources/Changelog/ChangelogSunrise.yml index d92929bb8a..0a8f3593d8 100644 --- a/Resources/Changelog/ChangelogSunrise.yml +++ b/Resources/Changelog/ChangelogSunrise.yml @@ -1,10 +1,4 @@ Entries: -- author: VigersRay - changes: - - message: Init - type: Add - id: 1 - time: '2024-03-05T22:16:24.059464+00:00' - author: VigersRay changes: - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0430 \u043E\u0437\u0432\ @@ -7075,3 +7069,41 @@ id: 494 time: '2024-12-02T08:18:34.0000000+00:00' url: https://github.com/space-sunrise/space-station-14/pull/762 +- author: KaiserMaus + changes: + - message: "\u0412\u0438\u0437\u043E\u0440 \u041C\u0415\u0425-\u043F\u0438\u043B\ + \u043E\u0442\u0430 \u0441\u0438\u043D\u0434\u0438\u043A\u0430\u0442\u0430." + type: Add + id: 495 + time: '2024-12-03T23:45:23.0000000+00:00' + url: https://github.com/space-sunrise/space-station-14/pull/769 +- author: VigersRay + changes: + - message: "\u0417\u043D\u0430\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0443\ + \u0441\u043A\u043E\u0440\u0435\u043D\u0430 \u0441\u043A\u043E\u0440\u043E\u0441\ + \u0442\u044C \u043F\u043E\u043B\u0435\u0442\u0430 \u043F\u0443\u043B\u044C \u043E\ + \u0433\u043D\u0435\u0441\u0442\u0440\u0435\u043B\u0430." + type: Tweak + id: 496 + time: '2024-12-03T23:44:24.0000000+00:00' + url: https://github.com/space-sunrise/space-station-14/pull/755 +- author: JunterFox + changes: + - message: "\u0420\u0443\u0447\u043A\u0430 \u0426\u041A \u0434\u043E\u0431\u0430\ + \u0432\u043B\u0435\u043D\u0430 \u0432\u043E \u0432\u0442\u043E\u0440\u043E\u0439\ + \ \u043A\u0430\u0440\u043C\u0430\u043D \u041F\u0440\u0435\u0434\u0441\u0442\u0430\ + \u0432\u0438\u0442\u0435\u043B\u044F NT \u0440\u0430\u0443\u043D\u0434\u0441\ + \u0442\u0430\u0440\u0442\u043E\u043C." + type: Add + id: 497 + time: '2024-12-03T23:45:34.0000000+00:00' + url: https://github.com/space-sunrise/space-station-14/pull/770 +- author: kanopus7 + changes: + - message: "\u0410\u0440\u043A\u0430\u043D\u044B \u0442\u0435\u043F\u0435\u0440\u044C\ + \ \u043C\u043E\u0433\u0443\u0442 \u043A\u0443\u0448\u0430\u0442\u044C\u0441\u044F\ + \ \u0433\u0435\u043D\u043E\u043A\u0440\u0430\u0434\u0430\u043C\u0438." + type: Fix + id: 498 + time: '2024-12-03T23:44:58.0000000+00:00' + url: https://github.com/space-sunrise/space-station-14/pull/766 From 16a394893b19097c018183839bebe9e6a9db52f4 Mon Sep 17 00:00:00 2001 From: KaiserMaus Date: Tue, 3 Dec 2024 23:47:05 +0000 Subject: [PATCH 8/9] =?UTF-8?q?=D0=97=D0=B0=D0=BC=D0=B5=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=9E=D1=80=D1=83=D0=B6=D0=B8=D1=8F=20=D0=B2=20=D0=A1=D0=B5?= =?UTF-8?q?=D0=B9=D1=84=D0=B5=20(#775)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Sunrise weapon: small rebalance * NewGunSafe --------- Co-authored-by: Your Name --- .../catalog/fills/lockers/security.ftl | 4 ++-- .../catalog/fills/lockers/security.ftl | 4 ++-- .../Catalog/Fills/Lockers/security.yml | 18 ++++++------------ 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/Resources/Locale/en-US/_prototypes/_sunrise/catalog/fills/lockers/security.ftl b/Resources/Locale/en-US/_prototypes/_sunrise/catalog/fills/lockers/security.ftl index 9980ed131e..2acb482822 100644 --- a/Resources/Locale/en-US/_prototypes/_sunrise/catalog/fills/lockers/security.ftl +++ b/Resources/Locale/en-US/_prototypes/_sunrise/catalog/fills/lockers/security.ftl @@ -16,8 +16,8 @@ ent-GunSafeShotgunPaladin = safe ent-GunSafeShotgunTrenchgun4034 = safe .suffix = Trenchgun 4034 .desc = { ent-GunSafe.desc } -ent-GunSafeSubMachineGunMP38 = safe - .suffix = MP-38 +ent-GunSafeEnergyGunPistolSecurity = safe + .suffix = Energy Pistol «Judge» .desc = { ent-GunSafe.desc } ent-GunSafeEnergyGun = safe .suffix = Energy guns diff --git a/Resources/Locale/ru-RU/_prototypes/_sunrise/catalog/fills/lockers/security.ftl b/Resources/Locale/ru-RU/_prototypes/_sunrise/catalog/fills/lockers/security.ftl index 586f97aeed..1dbb979add 100644 --- a/Resources/Locale/ru-RU/_prototypes/_sunrise/catalog/fills/lockers/security.ftl +++ b/Resources/Locale/ru-RU/_prototypes/_sunrise/catalog/fills/lockers/security.ftl @@ -16,9 +16,9 @@ ent-GunSafeShotgunPaladin = сейф Паладинов 12 ent-GunSafeShotgunTrenchgun4034 = сейф Тренчганов 4034 .suffix = Санрайз .desc = { ent-GunSafe.desc } -ent-GunSafeSubMachineGunMP38 = сейф MP-38 +ent-GunSafeEnergyGunPistolSecurity = сейф энергетических пистолетов "Судья" .suffix = Санрайз .desc = { ent-GunSafe.desc } -ent-GunSafeEnergyGun = сейф энергетических пушек +ent-GunSafeEnergyGun = сейф Тактических энергетических пушек .suffix = Санрайз .desc = { ent-GunSafe.desc } diff --git a/Resources/Prototypes/_Sunrise/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/_Sunrise/Catalog/Fills/Lockers/security.yml index 9784d365ea..dcd95e0a1e 100644 --- a/Resources/Prototypes/_Sunrise/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/_Sunrise/Catalog/Fills/Lockers/security.yml @@ -83,29 +83,23 @@ amount: 1 - type: entity - id: GunSafeSubMachineGunMP38 + id: GunSafeEnergyGunPistolSecurity parent: GunSafe name: safe - suffix: MP-38 + suffix: Energy Pistol «Judge» components: - type: StorageFill contents: - - id: WeaponSubMachineGunMP38 - amount: 2 - - id: BoxLethalshot - amount: 2 - - id: BoxShotgunIncendiary - amount: 1 - - id: BoxShotgunSlug - amount: 1 + - id: WeaponEnergyGunPistolSecurity + amount: 4 - type: entity parent: GunSafe id: GunSafeEnergyGun name: safe - suffix: Energy guns + suffix: Tactical Energy guns components: - type: StorageFill contents: - - id: WeaponEnergyGun + - id: WeaponEnergyGunTactical amount: 3 From 08cf7e088363ded3f66d75aefda4ef0dfce50cb3 Mon Sep 17 00:00:00 2001 From: pacable <77161122+pxc1984@users.noreply.github.com> Date: Wed, 4 Dec 2024 02:47:44 +0300 Subject: [PATCH 9/9] =?UTF-8?q?=D0=9A=D0=BE=D0=B3=D1=82=D0=B8=20=D0=B2?= =?UTF-8?q?=D1=83=D0=BB=D1=8C=D0=BF=D0=B0=D0=BC=20=D0=BF=D0=BE=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D1=8C=D0=B1=D0=B0=D0=BC=20=D1=82=D1=80=D1=83?= =?UTF-8?q?=D0=B4=D1=8F=D1=89=D0=B8=D1=85=D1=81=D1=8F.=20(#774)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * дал вульпам когти. Как же они просили этого... * легкая балансная правка --- .../_Sunrise/Entities/Mobs/Species/vulpkanin.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/vulpkanin.yml index 84c26f13ea..95621caf06 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/vulpkanin.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/vulpkanin.yml @@ -25,6 +25,17 @@ - Scream - Whines - type: FootprintEmitter + - type: MeleeWeapon + hidden: true + soundHit: + collection: Punch + angle: 30 + animation: WeaponArcClaw + attackRate: 1 + damage: + types: + Blunt: 2 + Slash: 3 - type: entity