From f7edea42cdf4c4f0210e19595f2ef2a3aea99f5a Mon Sep 17 00:00:00 2001 From: Aviu00 <93730715+Aviu00@users.noreply.github.com> Date: Fri, 16 Feb 2024 03:08:42 +0900 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=BA=D0=BE=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=B1=D0=B0=D0=BB=D0=B0=D0=BD=D1=81=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20(#72)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * - balance: Chainsaw can only be crafted using advanced saw. * - balance: Tweak some melee weapon damage and sizes. * - balance: Tweak stun baton. * - balance: No flash heavy attack. * - balance: Tweak modifier sets. * - tweak: Stunprod and snatcherprod tweaks. * - tweak: Auto cycle tweaks. * - balance: Nerf flamethrower. * - tweak: Remove old stunprod construction. * - balance: Tweak shotgun ammo. * - tweak: Cartridge ejecting tweaks. * - fix: Fix stunprod held prefix. * Revert "Makes external & shuttle airlocks bump-openable (#22706)" This reverts commit 6a73aed6d55435586c91ed5720a2a1a0983235bd. * - balance: Tweak modifier sets once again. * - balance: Tweak IED timer. * - tweak: Chemical explosions can't create vacuum. --- .../Weapons/Melee/MeleeWeaponSystem.cs | 2 +- .../Ranged/Systems/GunSystem.Ballistic.cs | 11 ++- .../ExplosionReactionEffect.cs | 3 +- .../Ranged/Systems/GunSystem.Ballistic.cs | 3 - .../Weapons/Ranged/Systems/GunSystem.cs | 4 +- .../Snatcherprod/SnatcherprodComponent.cs | 9 --- .../_White/Stunprod/SnatcherprodComponent.cs | 6 ++ .../_White/Stunprod/SnatcherprodSystem.cs | 56 +++++++++++++ .../_White/Stunprod/StunprodComponent.cs | 11 +++ .../StunprodSystem.cs} | 78 ++++++------------- .../Weapons/Melee/MeleeWeaponComponent.cs | 4 + .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 8 -- .../Systems/SharedGunSystem.Ballistic.cs | 12 ++- .../prototypes/entities/snatcherprod.ftl | 2 - .../white/prototypes/entities/stunprod.ftl | 2 + Resources/Prototypes/Damage/modifier_sets.yml | 18 ----- .../Entities/Objects/Materials/parts.yml | 2 +- .../Entities/Objects/Power/powercells.yml | 2 + .../Objects/Specific/Medical/surgery.yml | 4 - .../Entities/Objects/Weapons/Bombs/ied.yml | 4 +- .../Guns/Ammunition/Cartridges/shotgun.yml | 6 +- .../Guns/Ammunition/Projectiles/shotgun.yml | 6 +- .../Weapons/Guns/Shotguns/shotguns.yml | 2 + .../Objects/Weapons/Guns/Snipers/snipers.yml | 1 - .../Objects/Weapons/Melee/chainsaw.yml | 2 +- .../Entities/Objects/Weapons/Melee/cult.yml | 2 +- .../Objects/Weapons/Melee/e_sword.yml | 5 -- .../Entities/Objects/Weapons/Melee/knife.yml | 2 +- .../Objects/Weapons/Melee/stunprod.yml | 31 +++++--- .../Entities/Objects/Weapons/Melee/sword.yml | 16 ++-- .../Entities/Objects/Weapons/security.yml | 7 +- .../Structures/Doors/Airlocks/external.yml | 3 +- .../Structures/Doors/Airlocks/shuttle.yml | 1 + .../Graphs/improvised/makeshiftstunprod.yml | 62 +++++++-------- .../Recipes/Crafting/improvised.yml | 20 ++--- .../Prototypes/White/Damage/modifier_sets.yml | 32 +++++++- .../Projectiles/flamethrower_projectile.yml | 2 +- .../Entities/Objects/Weapons/snatcherprod.yml | 24 ++++-- .../White/Recipes/hidden_crafts.yml | 35 ++++++++- 39 files changed, 294 insertions(+), 206 deletions(-) delete mode 100644 Content.Server/_White/Snatcherprod/SnatcherprodComponent.cs create mode 100644 Content.Server/_White/Stunprod/SnatcherprodComponent.cs create mode 100644 Content.Server/_White/Stunprod/SnatcherprodSystem.cs create mode 100644 Content.Server/_White/Stunprod/StunprodComponent.cs rename Content.Server/_White/{Snatcherprod/SnatcherprodSystem.cs => Stunprod/StunprodSystem.cs} (57%) delete mode 100644 Resources/Locale/ru-RU/white/prototypes/entities/snatcherprod.ftl create mode 100644 Resources/Locale/ru-RU/white/prototypes/entities/stunprod.ftl diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs index 2676a7ea6a..fb40c846e6 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs @@ -113,7 +113,7 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem } // Heavy attack. - if (altDown == BoundKeyState.Down) + if (altDown == BoundKeyState.Down && weapon.CanHeavyAttack) // WD EDIT { // If it's an unarmed attack then do a disarm if (weapon.AltDisarm && weaponUid == entity) diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs index 21a0d94c2b..8f13155a65 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs @@ -28,9 +28,6 @@ public sealed partial class GunSystem if (!Timing.IsFirstTimePredicted) return; - if (!component.IsCycled) - return; - EntityUid? ent = null; // TODO: Combine with TakeAmmo @@ -39,8 +36,11 @@ public sealed partial class GunSystem var existing = component.Entities[^1]; component.Entities.RemoveAt(component.Entities.Count - 1); - Containers.Remove(existing, component.Container); - EnsureShootable(existing); + if (Containers.CanRemove(existing, component.Container)) // WD EDIT + { + Containers.Remove(existing, component.Container); + EnsureShootable(existing); + } } else if (component.UnspawnedCount > 0) { @@ -54,6 +54,5 @@ public sealed partial class GunSystem var cycledEvent = new GunCycledEvent(); RaiseLocalEvent(uid, ref cycledEvent); - } } diff --git a/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs b/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs index 8a558a3ffd..bd93a51867 100644 --- a/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs +++ b/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs @@ -66,7 +66,8 @@ namespace Content.Server.Chemistry.ReactionEffects ExplosionType, intensity, IntensitySlope, - MaxIntensity); + MaxIntensity, + canCreateVacuum: false); // WD EDIT } } } diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs index feb56450b6..c159fb36d3 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs @@ -12,9 +12,6 @@ public sealed partial class GunSystem protected override void Cycle(EntityUid uid, BallisticAmmoProviderComponent component, MapCoordinates coordinates) { - if (!component.IsCycled) - return; - EntityUid? ent = null; // TODO: Combine with TakeAmmo diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs index c76efac069..6220d4c4bf 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs @@ -179,10 +179,12 @@ public sealed partial class GunSystem : SharedGunSystem { userImpulse = false; Audio.PlayPredicted(gun.SoundEmpty, gunUid, user); + break; // WD EDIT } // Something like ballistic might want to leave it in the container still - if (!cartridge.DeleteOnSpawn && !Containers.IsEntityInContainer(ent!.Value)) + if (!cartridge.DeleteOnSpawn && !Containers.IsEntityInContainer(ent!.Value) && + (!TryComp(gunUid, out BallisticAmmoProviderComponent? ballistic) || ballistic.AutoCycle)) // WD EDIT EjectCartridge(ent.Value, angle); Dirty(ent!.Value, cartridge); diff --git a/Content.Server/_White/Snatcherprod/SnatcherprodComponent.cs b/Content.Server/_White/Snatcherprod/SnatcherprodComponent.cs deleted file mode 100644 index bab0afbc83..0000000000 --- a/Content.Server/_White/Snatcherprod/SnatcherprodComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Content.Server._White.Snatcherprod; - -[RegisterComponent, Access(typeof(SnatcherprodSystem))] -public sealed partial class SnatcherprodComponent : Component -{ - [ViewVariables(VVAccess.ReadWrite)] - [DataField("energyPerUse")] - public float EnergyPerUse { get; set; } = 36; -} diff --git a/Content.Server/_White/Stunprod/SnatcherprodComponent.cs b/Content.Server/_White/Stunprod/SnatcherprodComponent.cs new file mode 100644 index 0000000000..9d0987c890 --- /dev/null +++ b/Content.Server/_White/Stunprod/SnatcherprodComponent.cs @@ -0,0 +1,6 @@ +namespace Content.Server._White.Stunprod; + +[RegisterComponent] +public sealed partial class SnatcherprodComponent : Component +{ +} diff --git a/Content.Server/_White/Stunprod/SnatcherprodSystem.cs b/Content.Server/_White/Stunprod/SnatcherprodSystem.cs new file mode 100644 index 0000000000..bf09a8d484 --- /dev/null +++ b/Content.Server/_White/Stunprod/SnatcherprodSystem.cs @@ -0,0 +1,56 @@ +using System.Linq; +using Content.Shared.Damage.Events; +using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Item.ItemToggle; + +namespace Content.Server._White.Stunprod; + +public sealed class SnatcherprodSystem : EntitySystem +{ + [Dependency] private readonly SharedHandsSystem _hands = default!; + [Dependency] private readonly SharedItemToggleSystem _itemToggle = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnHit); + } + + + private void OnHit(EntityUid uid, SnatcherprodComponent component, StaminaMeleeHitEvent args) + { + if (!_itemToggle.IsActivated(uid) || args.HitList.Count == 0) + return; + + var entity = args.HitList.First().Entity; + + if (entity == uid || !TryComp(entity, out HandsComponent? hands)) + return; + + EntityUid? heldEntity = null; + + if (hands.ActiveHandEntity != null) + heldEntity = hands.ActiveHandEntity; + else + { + foreach (var hand in hands.Hands) + { + if (hand.Value.HeldEntity == null) + continue; + + heldEntity = hand.Value.HeldEntity; + break; + } + + if (heldEntity == null) + return; + } + + if (!_hands.TryDrop(entity, heldEntity.Value, null, false, false, handsComp: hands)) + return; + + _hands.PickupOrDrop(args.User, heldEntity.Value, false); + } +} diff --git a/Content.Server/_White/Stunprod/StunprodComponent.cs b/Content.Server/_White/Stunprod/StunprodComponent.cs new file mode 100644 index 0000000000..e737d61abc --- /dev/null +++ b/Content.Server/_White/Stunprod/StunprodComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Server._White.Stunprod; + +[RegisterComponent] +public sealed partial class StunprodComponent : Component +{ + [DataField, ViewVariables(VVAccess.ReadWrite)] + public float EnergyPerUse { get; set; } = 72; + + [DataField] + public bool HasHeldPrefix = true; +} diff --git a/Content.Server/_White/Snatcherprod/SnatcherprodSystem.cs b/Content.Server/_White/Stunprod/StunprodSystem.cs similarity index 57% rename from Content.Server/_White/Snatcherprod/SnatcherprodSystem.cs rename to Content.Server/_White/Stunprod/StunprodSystem.cs index 94450c3a6f..95c0e76fe4 100644 --- a/Content.Server/_White/Snatcherprod/SnatcherprodSystem.cs +++ b/Content.Server/_White/Stunprod/StunprodSystem.cs @@ -1,27 +1,25 @@ using System.Diagnostics.CodeAnalysis; -using System.Linq; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Damage.Events; using Content.Shared.Examine; -using Content.Shared.Hands.Components; -using Content.Shared.Hands.EntitySystems; +using Content.Shared.Item; using Content.Shared.Item.ItemToggle; using Content.Shared.Item.ItemToggle.Components; using Content.Shared.Toggleable; using Robust.Shared.Containers; -namespace Content.Server._White.Snatcherprod; +namespace Content.Server._White.Stunprod; -public sealed class SnatcherprodSystem : EntitySystem +public sealed class StunprodSystem : EntitySystem { [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedContainerSystem _containers = default!; [Dependency] private readonly BatterySystem _battery = default!; [Dependency] private readonly PopupSystem _popup = default!; - [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly SharedItemToggleSystem _itemToggle = default!; + [Dependency] private readonly SharedItemSystem _item = default!; private const string CellSlot = "cell_slot"; @@ -29,16 +27,15 @@ public sealed class SnatcherprodSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnExamined); - SubscribeLocalEvent(OnStaminaHitAttempt); - SubscribeLocalEvent(OnHit); - SubscribeLocalEvent(OnEntRemoved); - SubscribeLocalEvent(OnEntInserted); - SubscribeLocalEvent(TryTurnOn); - SubscribeLocalEvent(ToggleDone); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnStaminaHitAttempt); + SubscribeLocalEvent(OnEntRemoved); + SubscribeLocalEvent(OnEntInserted); + SubscribeLocalEvent(TryTurnOn); + SubscribeLocalEvent(ToggleDone); } - private void OnEntInserted(EntityUid uid, SnatcherprodComponent component, EntInsertedIntoContainerMessage args) + private void OnEntInserted(EntityUid uid, StunprodComponent component, EntInsertedIntoContainerMessage args) { _itemToggle.TryDeactivate(uid, predicted: false); @@ -48,7 +45,7 @@ public sealed class SnatcherprodSystem : EntitySystem } } - private void OnEntRemoved(EntityUid uid, SnatcherprodComponent component, EntRemovedFromContainerMessage args) + private void OnEntRemoved(EntityUid uid, StunprodComponent component, EntRemovedFromContainerMessage args) { if (TerminatingOrDeleted(uid)) return; @@ -64,42 +61,8 @@ public sealed class SnatcherprodSystem : EntitySystem _itemToggle.TryDeactivate(uid, predicted: false); } - private void OnHit(EntityUid uid, SnatcherprodComponent component, StaminaMeleeHitEvent args) - { - if (!_itemToggle.IsActivated(uid) || args.HitList.Count == 0) - return; - - var entity = args.HitList.First().Entity; - - if (!TryComp(entity, out HandsComponent? hands)) - return; - - EntityUid? heldEntity = null; - - if (hands.ActiveHandEntity != null) - heldEntity = hands.ActiveHandEntity; - else - { - foreach (var hand in hands.Hands) - { - if (hand.Value.HeldEntity == null) - continue; - - heldEntity = hand.Value.HeldEntity; - break; - } - - if (heldEntity == null) - return; - } - - if (!_hands.TryDrop(entity, heldEntity.Value, null, false, false, handsComp: hands)) - return; - - _hands.PickupOrDrop(args.User, heldEntity.Value, false); - } - - private void OnStaminaHitAttempt(EntityUid uid, SnatcherprodComponent component, ref StaminaDamageOnHitAttemptEvent args) + private void OnStaminaHitAttempt(EntityUid uid, StunprodComponent component, + ref StaminaDamageOnHitAttemptEvent args) { if (!_itemToggle.IsActivated(uid) || !TryGetBatteryComponent(uid, out var battery, out var batteryUid) || !_battery.TryUseCharge(batteryUid.Value, component.EnergyPerUse, battery)) @@ -114,23 +77,26 @@ public sealed class SnatcherprodSystem : EntitySystem } } - private void OnExamined(EntityUid uid, SnatcherprodComponent comp, ExaminedEvent args) + private void OnExamined(EntityUid uid, StunprodComponent comp, ExaminedEvent args) { var msg = _itemToggle.IsActivated(uid) - ? Loc.GetString("comp-snatcherprod-examined-on") - : Loc.GetString("comp-snatcherprod-examined-off"); + ? Loc.GetString("comp-stunprod-examined-on") + : Loc.GetString("comp-stunprod-examined-off"); args.PushMarkup(msg); } - private void ToggleDone(Entity entity, ref ItemToggledEvent args) + private void ToggleDone(Entity entity, ref ItemToggledEvent args) { + if (entity.Comp.HasHeldPrefix && TryComp(entity, out var item)) + _item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off", component: item); + if (TryGetBatteryComponent(entity, out _, out _) || !TryComp(entity, out var appearance)) return; _appearance.SetData(entity, ToggleVisuals.Toggled, "nocell", appearance); } - private void TryTurnOn(Entity entity, ref ItemToggleActivateAttemptEvent args) + private void TryTurnOn(Entity entity, ref ItemToggleActivateAttemptEvent args) { if (TryGetBatteryComponent(entity, out var battery, out _) && battery.CurrentCharge >= entity.Comp.EnergyPerUse) diff --git a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs index 27c3a5f0df..00d918e40c 100644 --- a/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs +++ b/Content.Shared/Weapons/Melee/MeleeWeaponComponent.cs @@ -60,6 +60,10 @@ public sealed partial class MeleeWeaponComponent : Component [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public bool Attacking = false; + // WD + [ViewVariables(VVAccess.ReadWrite), DataField] + public bool CanHeavyAttack = true; + /// /// If true, attacks will be repeated automatically without requiring the mouse button to be lifted. /// diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 7bab837176..df20732038 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Numerics; -using Content.Server.Stunnable.Components; using Content.Shared.ActionBlocker; using Content.Shared.Administration.Logs; using Content.Shared.CombatMode; @@ -218,13 +217,6 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem return; } - // WD EDIT START - if (TryComp(weaponUid, out _)) - { - return; - } - // WD EDIT END - AttemptAttack(args.SenderSession.AttachedEntity.Value, weaponUid, weapon, msg, args.SenderSession); } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index 12045a6341..bf6ad71949 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -256,14 +256,22 @@ public abstract partial class SharedGunSystem entity = component.Entities[^1]; args.Ammo.Add((entity, EnsureShootable(entity))); - component.Entities.RemoveAt(component.Entities.Count - 1); - Containers.Remove(entity, component.Container); + if (component.AutoCycle && (!TryComp(entity, out CartridgeAmmoComponent? cartridge) || !cartridge.Spent)) // WD EDIT + { + component.Entities.RemoveAt(component.Entities.Count - 1); + Containers.Remove(entity, component.Container); + } } else if (component.UnspawnedCount > 0) { component.UnspawnedCount--; entity = Spawn(component.Proto, args.Coordinates); args.Ammo.Add((entity, EnsureShootable(entity))); + if (!component.AutoCycle && HasComp(entity)) // WD EDIT + { + component.Entities.Add(entity); + Containers.Insert(entity, component.Container); + } } } diff --git a/Resources/Locale/ru-RU/white/prototypes/entities/snatcherprod.ftl b/Resources/Locale/ru-RU/white/prototypes/entities/snatcherprod.ftl deleted file mode 100644 index fb5c89cac5..0000000000 --- a/Resources/Locale/ru-RU/white/prototypes/entities/snatcherprod.ftl +++ /dev/null @@ -1,2 +0,0 @@ -comp-snatcherprod-examined-on = Хваталка [color=darkgreen]включена[/color]. -comp-snatcherprod-examined-off = Хваталка [color=darkred]выключена[/color]. diff --git a/Resources/Locale/ru-RU/white/prototypes/entities/stunprod.ftl b/Resources/Locale/ru-RU/white/prototypes/entities/stunprod.ftl new file mode 100644 index 0000000000..a67b516d0d --- /dev/null +++ b/Resources/Locale/ru-RU/white/prototypes/entities/stunprod.ftl @@ -0,0 +1,2 @@ +comp-stunprod-examined-on = Она [color=darkgreen]включена[/color]. +comp-stunprod-examined-off = Она [color=darkred]выключена[/color]. diff --git a/Resources/Prototypes/Damage/modifier_sets.yml b/Resources/Prototypes/Damage/modifier_sets.yml index d0eaa82155..969359af04 100644 --- a/Resources/Prototypes/Damage/modifier_sets.yml +++ b/Resources/Prototypes/Damage/modifier_sets.yml @@ -331,21 +331,3 @@ flatReductions: # can't punch the endoskeleton to death Blunt: 5 - -- type: damageModifierSet - id: Harpy - coefficients: - Blunt: 1.15 - Slash: 1.15 - Piercing: 1.15 - -- type: damageModifierSet - id: CultRobe - coefficients: - Blunt: 1.45 - Slash: 1.45 - Piercing: 1.45 - Shock: 1.45 - Cold: 1.45 - Heat: 1.45 - Laser: 1.45 diff --git a/Resources/Prototypes/Entities/Objects/Materials/parts.yml b/Resources/Prototypes/Entities/Objects/Materials/parts.yml index 3f34735eed..0579a0d642 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/parts.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/parts.yml @@ -129,7 +129,7 @@ friction: 0.2 - type: Construction deconstructionTarget: null - graph: SnatcherprodGraph + graph: StunprodGraph node: rod - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Power/powercells.yml b/Resources/Prototypes/Entities/Objects/Power/powercells.yml index 0a5ae1693f..cf0b73cabb 100644 --- a/Resources/Prototypes/Entities/Objects/Power/powercells.yml +++ b/Resources/Prototypes/Entities/Objects/Power/powercells.yml @@ -78,6 +78,8 @@ rating: 1 - type: Tag tags: + - DroneUsable + - PowerCell - PowerCellSmall - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml index a718c12ebd..13a1375caa 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml @@ -218,10 +218,6 @@ qualities: - Sawing speed: 1.5 - - type: Construction - deconstructionTarget: null - graph: ChainsawGraph - node: circular - type: entity name: advanced circular saw diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/ied.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/ied.yml index c4420a43a3..30e49aaa86 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/ied.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/ied.yml @@ -25,8 +25,8 @@ params: volume: 1 - type: RandomTimerTrigger - min: 0 - max: 60 + min: 3 + max: 8 - type: Explosive # Weak explosion in a very small radius. Doesn't break underplating. explosionType: Default totalIntensity: 20 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 f2526437e2..9048c0b77a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BaseShellShotgun name: shell (.50) parent: BaseCartridge @@ -145,7 +145,7 @@ map: [ "enum.AmmoVisualLayers.Base" ] - type: CartridgeAmmo count: 10 - spread: 45 #deadly if you can get up close... otherwise, good luck doing any kind of real damage + spread: 35 #deadly if you can get up close... otherwise, good luck doing any kind of real damage proto: PelletShotgunImprovised - type: SpentAmmoVisuals state: "improvised" @@ -164,8 +164,6 @@ - state: depleted-uranium map: [ "enum.AmmoVisualLayers.Base" ] - type: CartridgeAmmo - count: 5 - spread: 6 proto: PelletShotgunUranium - 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 18bf316987..6c57770f8d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/shotgun.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: PelletShotgunSlug name: pellet (.50 slug) noSpawn: true @@ -85,8 +85,8 @@ - type: Projectile damage: types: - Piercing: 5 - Slash: 5 #remember, it's metal shrapnel! + Piercing: 4 + Slash: 4 #remember, it's metal shrapnel! - type: entity id: PelletShotgunTranquilizer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml index e9434f603d..f1e467c57a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml @@ -118,6 +118,7 @@ fireRate: 2 - type: BallisticAmmoProvider capacity: 2 + autoCycle: true - type: Construction graph: ShotgunSawn node: start @@ -196,6 +197,7 @@ fireRate: 4 - type: BallisticAmmoProvider capacity: 2 + autoCycle: true - type: Construction graph: ShotgunSawn node: shotgunsawn diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml index 136d2753de..54e6c03bc2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml @@ -64,7 +64,6 @@ - CartridgeAntiMateriel capacity: 5 proto: CartridgeAntiMateriel - autoCycle: true - type: Wieldable wieldTime: 0 forceTwoHanded: True diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml index 9812fa4bef..105a4f8ebb 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/chainsaw.yml @@ -33,7 +33,7 @@ Slash: 4 Structural: 4 - type: Item - size: Normal + size: Huge sprite: Objects/Weapons/Melee/chainsaw.rsi - type: DisarmMalus - type: RefillableSolution diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml index 64926cc94f..9ae71e27c6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/cult.yml @@ -61,7 +61,7 @@ soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal + size: Huge - type: Clothing sprite: Objects/Weapons/Melee/cult_blade.rsi slots: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml index bd3701fc1a..2a2110a91e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/e_sword.yml @@ -206,11 +206,6 @@ components: - type: EnergySword - type: ItemToggleMeleeWeapon - activatedDamage: - types: - Slash: 10 - Heat: 12 - deactivatedSecret: true - type: ItemToggleDisarmMalus activatedDisarmMalus: 0.6 - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml index 6210d60c51..6e26dd98f3 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/knife.yml @@ -67,7 +67,7 @@ attackRate: 1.5 damage: types: - Slash: 13 + Slash: 12 - type: Item size: Normal sprite: Objects/Weapons/Melee/cleaver.rsi diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml index b0b166f6ce..97dae526d0 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/stunprod.yml @@ -7,7 +7,7 @@ - type: Sprite sprite: Objects/Weapons/Melee/stunprod.rsi layers: - - state: stunprod_off + - state: stunprod_nocell map: [ "enum.ToggleVisuals.Layer" ] - type: ItemToggle soundActivate: @@ -26,24 +26,22 @@ activatedDamage: types: Blunt: 0 - - type: Stunbaton - energyPerUse: 70 + - type: Stunprod - type: MeleeWeapon + attackRate: 1.25 + canHeavyAttack: false wideAnimationRotation: -135 damage: types: Blunt: 9 - angle: 60 + angle: 0 animation: WeaponArcThrust - type: StaminaDamageOnHit - damage: 20 + damage: 30 sound: /Audio/Weapons/egloves.ogg - type: StaminaDamageOnCollide - damage: 20 + damage: 30 sound: /Audio/Weapons/egloves.ogg - - type: Battery - maxCharge: 360 - startingCharge: 360 - type: UseDelay - type: Item heldPrefix: off @@ -60,10 +58,21 @@ visuals: enum.ToggleVisuals.Toggled: enum.ToggleVisuals.Layer: + nocell: {state: stunprod_nocell} True: {state: stunprod_on} False: {state: stunprod_off} - type: StaticPrice price: 100 + - type: PowerCellSlot + cellSlotId: cell_slot + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + - type: ContainerContainer + containers: + cell_slot: !type:ContainerSlot {} - type: Construction - graph: makeshiftstunprod - node: msstunprod + deconstructionTarget: rod + graph: StunprodGraph + node: stunprod diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml index 40286b7f8a..76ee736e6b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml @@ -22,7 +22,7 @@ path: /Audio/White/Items/handling/sabre_drop.ogg # WD edit sounds start - type: Item - size: Normal + size: Large sprite: Objects/Weapons/Melee/captain_sabre.rsi - type: Tag tags: @@ -50,7 +50,7 @@ soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal + size: Large sprite: Objects/Weapons/Melee/katana.rsi - type: DisarmMalus @@ -69,7 +69,7 @@ types: Slash: 30 - type: Item - size: Normal + size: Large sprite: Objects/Weapons/Melee/energykatana.rsi - type: EnergyKatana - type: DashAbility @@ -106,7 +106,7 @@ soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal + size: Large sprite: Objects/Weapons/Melee/machete.rsi - type: DisarmMalus - type: Construction @@ -129,11 +129,11 @@ attackRate: 0.75 damage: types: - Slash: 33 + Slash: 30 soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal + size: Huge - type: Clothing sprite: Objects/Weapons/Melee/claymore.rsi slots: @@ -161,11 +161,11 @@ wideAnimationRotation: -135 damage: types: - Slash: 16 + Slash: 20 soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Item - size: Normal + size: Large sprite: Objects/Weapons/Melee/cutlass.rsi - type: DisarmMalus diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 274f07b434..12131bab2f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -30,6 +30,8 @@ types: Blunt: 0 - type: MeleeWeapon + attackRate: 1.25 + canHeavyAttack: false wideAnimationRotation: -135 damage: types: @@ -38,10 +40,10 @@ angle: 60 animation: WeaponArcSlash - type: StaminaDamageOnHit - damage: 35 + damage: 40 sound: /Audio/Weapons/egloves.ogg - type: StaminaDamageOnCollide - damage: 35 + damage: 40 sound: /Audio/Weapons/egloves.ogg - type: Battery maxCharge: 1000 @@ -134,6 +136,7 @@ maxCharges: 5 charges: 5 - type: MeleeWeapon + canHeavyAttack: false wideAnimationRotation: 180 damage: types: diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/external.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/external.yml index 75b23f7071..f1d5158749 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/external.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/external.yml @@ -2,9 +2,10 @@ parent: Airlock id: AirlockExternal suffix: External - description: It opens, it closes, it might crush you, and there might be only space behind it. + description: It opens, it closes, it might crush you, and there might be only space behind it. Has to be manually activated. components: - type: Door + bumpOpen: false crushDamage: types: Blunt: 15 diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml index 21d485be0c..565879b71f 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/shuttle.yml @@ -45,6 +45,7 @@ - type: Wires layoutId: Docking - type: Door + bumpOpen: false closeTimeTwo: 0.4 openTimeTwo: 0.4 crushDamage: diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/makeshiftstunprod.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/makeshiftstunprod.yml index fa006a938b..4b3e9cfbbc 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/makeshiftstunprod.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/improvised/makeshiftstunprod.yml @@ -1,31 +1,31 @@ -- type: constructionGraph - id: makeshiftstunprod - start: start - graph: - - node: start - edges: - - to: msstunprod - steps: - - material: MetalRod - amount: 1 - - material: Cable - amount: 15 - - tag: DrinkSpaceGlue - name: Drink Space Glue - icon: - sprite: Objects/Consumable/Drinks/glue-tube.rsi - state: icon - - tag: PowerCellSmall - name: Power Cell Small - icon: - sprite: Objects/Power/power_cells.rsi - state: small - - tag: CapacitorStockPart - name: Capacitor Stock Part - icon: - sprite: Objects/Misc/stock_parts.rsi - state: capacitor - doAfter: 20 - - node: msstunprod - entity: Stunprod - +#- type: constructionGraph +# id: makeshiftstunprod +# start: start +# graph: +# - node: start +# edges: +# - to: msstunprod +# steps: +# - material: MetalRod +# amount: 1 +# - material: Cable +# amount: 15 +# - tag: DrinkSpaceGlue +# name: Drink Space Glue +# icon: +# sprite: Objects/Consumable/Drinks/glue-tube.rsi +# state: icon +# - tag: PowerCellSmall +# name: Power Cell Small +# icon: +# sprite: Objects/Power/power_cells.rsi +# state: small +# - tag: CapacitorStockPart +# name: Capacitor Stock Part +# icon: +# sprite: Objects/Misc/stock_parts.rsi +# state: capacitor +# doAfter: 20 +# - node: msstunprod +# entity: Stunprod +# diff --git a/Resources/Prototypes/Recipes/Crafting/improvised.yml b/Resources/Prototypes/Recipes/Crafting/improvised.yml index 6ce7a4c81a..35963f8f9e 100644 --- a/Resources/Prototypes/Recipes/Crafting/improvised.yml +++ b/Resources/Prototypes/Recipes/Crafting/improvised.yml @@ -35,16 +35,16 @@ icon: { sprite: Objects/Misc/cablecuffs.rsi, state: cuff } objectType: Item -- type: construction - name: makeshift stunprod - id: makeshiftstunprod - graph: makeshiftstunprod - startNode: start - targetNode: msstunprod - category: construction-category-weapons - description: "Homemade stunprod." - icon: { sprite: Objects/Weapons/Melee/stunprod.rsi, state: stunprod_off } - objectType: Item +#- type: construction +# name: makeshift stunprod +# id: makeshiftstunprod +# graph: makeshiftstunprod +# startNode: start +# targetNode: msstunprod +# category: construction-category-weapons +# description: "Homemade stunprod." +# icon: { sprite: Objects/Weapons/Melee/stunprod.rsi, state: stunprod_off } +# objectType: Item - type: construction name: muzzle diff --git a/Resources/Prototypes/White/Damage/modifier_sets.yml b/Resources/Prototypes/White/Damage/modifier_sets.yml index 14fc2dc38f..39cd200fa4 100644 --- a/Resources/Prototypes/White/Damage/modifier_sets.yml +++ b/Resources/Prototypes/White/Damage/modifier_sets.yml @@ -1,5 +1,31 @@ -- type: damageModifierSet +- type: damageModifierSet id: Felinid coefficients: - Blunt: 1.1 - Slash: 1.1 + Blunt: 1.15 + Slash: 1.15 + Piercing: 1.15 + +- type: damageModifierSet + id: Dwarf + coefficients: + Blunt: 0.7 + Slash: 1.2 + Piercing: 1.2 + +- type: damageModifierSet + id: Harpy + coefficients: + Blunt: 1.15 + Slash: 1.15 + Piercing: 1.15 + +- type: damageModifierSet + id: CultRobe + coefficients: + Blunt: 1.45 + Slash: 1.45 + Piercing: 1.45 + Shock: 1.45 + Cold: 1.45 + Heat: 1.45 + Laser: 1.45 diff --git a/Resources/Prototypes/White/Entities/Objects/Weapons/Guns/Projectiles/flamethrower_projectile.yml b/Resources/Prototypes/White/Entities/Objects/Weapons/Guns/Projectiles/flamethrower_projectile.yml index 8b9f615314..301182b521 100644 --- a/Resources/Prototypes/White/Entities/Objects/Weapons/Guns/Projectiles/flamethrower_projectile.yml +++ b/Resources/Prototypes/White/Entities/Objects/Weapons/Guns/Projectiles/flamethrower_projectile.yml @@ -27,6 +27,6 @@ - Impassable - BulletImpassable - type: IgnitionSource - temperature: 4000 + temperature: 2000 - type: Ammo muzzleFlash: null diff --git a/Resources/Prototypes/White/Entities/Objects/Weapons/snatcherprod.yml b/Resources/Prototypes/White/Entities/Objects/Weapons/snatcherprod.yml index 5a970dd701..303cd55475 100644 --- a/Resources/Prototypes/White/Entities/Objects/Weapons/snatcherprod.yml +++ b/Resources/Prototypes/White/Entities/Objects/Weapons/snatcherprod.yml @@ -27,6 +27,9 @@ types: Blunt: 0 - type: MeleeWeapon + attackRate: 1.25 + canHeavyAttack: false + wideAnimationRotation: -135 damage: types: Blunt: 9 @@ -37,9 +40,16 @@ sound: /Audio/Weapons/egloves.ogg - type: StaminaDamageOnCollide damage: 30 + sound: /Audio/Weapons/egloves.ogg - type: UseDelay - type: Item size: Normal + - type: Clothing + quickEquip: false + slots: + - back + - type: DisarmMalus + malus: 0.225 - type: Appearance - type: GenericVisualizer visuals: @@ -48,6 +58,8 @@ nocell: {state: snatcherprod_nocell} True: {state: snatcherprod_on} False: {state: snatcherprod_off} + - type: StaticPrice + price: 100 - type: PowerCellSlot cellSlotId: cell_slot - type: ItemSlots @@ -58,13 +70,15 @@ containers: cell_slot: !type:ContainerSlot {} - type: Snatcherprod + - type: Stunprod + hasHeldPrefix: false - type: Construction - deconstructionTarget: null - graph: SnatcherprodGraph + deconstructionTarget: rod + graph: StunprodGraph node: snatcherprod - type: entity - name: палка + name: обмотанный стержень parent: BaseItem id: ProdUnfinished description: Стержень с проводами. @@ -75,6 +89,6 @@ - type: Item size: Normal - type: Construction - deconstructionTarget: null - graph: SnatcherprodGraph + deconstructionTarget: rod + graph: StunprodGraph node: unfinished diff --git a/Resources/Prototypes/White/Recipes/hidden_crafts.yml b/Resources/Prototypes/White/Recipes/hidden_crafts.yml index 34ff4df018..709c9ce972 100644 --- a/Resources/Prototypes/White/Recipes/hidden_crafts.yml +++ b/Resources/Prototypes/White/Recipes/hidden_crafts.yml @@ -67,7 +67,7 @@ entity: WeaponPoweredCrossbow - type: constructionGraph - id: SnatcherprodGraph + id: StunprodGraph start: rod graph: - node: rod @@ -81,14 +81,28 @@ - node: unfinished entity: ProdUnfinished edges: - - to: capacitor + - to: Igniter steps: - - tag: CapacitorStockPart - - node: capacitor + - tag: Igniter + - to: rod + steps: + - tool: Cutting + doAfter: 5 + - node: Igniter edges: - to: snatcherprod steps: - material: Telecrystal + - to: stunprod + steps: + - tag: PowerCell + - to: rod + steps: + - tool: Cutting + doAfter: 5 + completed: + - !type:SpawnPrototype + prototype: Igniter - node: snatcherprod entity: Snatcherprod edges: @@ -99,6 +113,19 @@ completed: - !type:SpawnPrototype prototype: Telecrystal1 + - !type:SpawnPrototype + prototype: Igniter + - !type:EmptyAllContainers + - node: stunprod + entity: Stunprod + edges: + - to: rod + steps: + - tool: Cutting + doAfter: 5 + completed: + - !type:SpawnPrototype + prototype: Igniter - !type:EmptyAllContainers - type: constructionGraph