From 26eb71f1eb4c088065af22fbac99804589550579 Mon Sep 17 00:00:00 2001
From: chromiumboy <50505512+chromiumboy@users.noreply.github.com>
Date: Sat, 19 Aug 2023 17:54:52 -0500
Subject: [PATCH] C.H.I.M.P handcannon redesign (#19004)
* Added basic alternative fire mode system for the CHIMP
* Redesign of the CHIMP handcannon
- the CHIMP now has an internal rechargable battery (10 shots at 100% charge)
- it has three alternative fire modes, one for each particle type, that its user can easily switch between
- syndicate scientists have access to an experimental version which can also fire omega particles (4 TC)
- each particle type now has a distinct color and damage type: delta (red): heat, epsilon (green): radiation, zeta (yellow): shock, omega (purple): heat + radiation. This affects A.P.E.s as well
- CHIMP particles now do 10 damage (up from 5)
- all CHIMP particle cartridges have been removed from the game (including the syndicate omega particle ammo pack)
* Code revisions
* Code revisions
- Removed changes to particle damage and damage types
- The experimental CHIMP was removed from the syndicate uplink and replaced with an upgrade kit, which when used on a standard CHIMP will convert it to an experimental one
* Code revisions
- Added a 2 second DoAfter for applying the upgrade kit
* Fixed spelling mistake
* Update projectiles.yml
Removed commented code
* Update Content.Server/Weapons/Ranged/Systems/AlternativeFireModesSystem.cs
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
* Code revisions
- Implemented changes requested by EmoGarbage
- Removed UpgradeKitComponent in favor of using a construction graph
- Renamed AlternativeFireModesComponent.cs to BatteryWeaponFireModesComponent.cs
Textures
- Reverted omega particle to being a green color
- Epsilon particles are now a cyan color
* Added comments
* Revisions
- Moved BatteryWeaponFireModesComponent from Shared to Server
- Restricted access to this component to BatteryWeaponFireModesSystem
- Changed the CHIMP upgrade kit to a chip
- Updated the localization files to reflect this change
* Delete interaction-upgrade-kit-component.ftl
This file is no longer needed
* Update battery_guns.yml
Added new description for the experimental CHIMP
* Update battery_guns.yml
Updated experimental CHIMP description again...
* Fixed issue with ItemComponent
---------
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
---
Content.Server/Anomaly/AnomalySystem.cs | 2 +-
.../BatteryWeaponFireModesComponent.cs | 44 ++++++
.../Systems/BatteryWeaponFireModesSystem.cs | 130 ++++++++++++++++++
Content.Shared/Anomaly/SharedAnomaly.cs | 2 +-
Resources/Locale/en-US/anomaly/anomaly.ftl | 1 +
.../Locale/en-US/store/uplink-catalog.ftl | 4 +-
Resources/Locale/en-US/weapons/ranged/gun.ftl | 1 +
.../Catalog/Fills/Boxes/ammunition.yml | 15 --
.../Prototypes/Catalog/uplink_catalog.yml | 8 +-
.../Syndicate_Gadgets/chimp_upgrade_kit.yml | 14 ++
.../Guns/Ammunition/Cartridges/magnum.yml | 73 ----------
.../Weapons/Guns/Battery/battery_guns.yml | 57 ++++++++
.../Weapons/Guns/Projectiles/projectiles.yml | 13 +-
.../Weapons/Guns/Revolvers/revolvers.yml | 41 +-----
.../Entities/Structures/Machines/lathe.yml | 3 -
.../Graphs/weapons/upgraded_chimp.yml | 13 ++
.../Prototypes/Recipes/Lathes/security.yml | 21 ---
.../Prototypes/Research/experimental.yml | 3 -
Resources/Prototypes/tags.yml | 3 +
.../Projectiles/magic.rsi/magicm_cyan.png | Bin 0 -> 3994 bytes
.../Guns/Projectiles/magic.rsi/magicm_red.png | Bin 0 -> 3957 bytes
.../Projectiles/magic.rsi/magicm_yellow.png | Bin 0 -> 3895 bytes
.../Guns/Projectiles/magic.rsi/meta.json | 33 +++++
23 files changed, 316 insertions(+), 165 deletions(-)
create mode 100644 Content.Server/Weapons/Ranged/Components/BatteryWeaponFireModesComponent.cs
create mode 100644 Content.Server/Weapons/Ranged/Systems/BatteryWeaponFireModesSystem.cs
create mode 100644 Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/chimp_upgrade_kit.yml
create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/weapons/upgraded_chimp.yml
create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm_cyan.png
create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm_red.png
create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm_yellow.png
diff --git a/Content.Server/Anomaly/AnomalySystem.cs b/Content.Server/Anomaly/AnomalySystem.cs
index b32119264b..bf103fb0ce 100644
--- a/Content.Server/Anomaly/AnomalySystem.cs
+++ b/Content.Server/Anomaly/AnomalySystem.cs
@@ -1,4 +1,4 @@
-using Content.Server.Anomaly.Components;
+using Content.Server.Anomaly.Components;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Audio;
using Content.Server.Explosion.EntitySystems;
diff --git a/Content.Server/Weapons/Ranged/Components/BatteryWeaponFireModesComponent.cs b/Content.Server/Weapons/Ranged/Components/BatteryWeaponFireModesComponent.cs
new file mode 100644
index 0000000000..f8d2f7d9dc
--- /dev/null
+++ b/Content.Server/Weapons/Ranged/Components/BatteryWeaponFireModesComponent.cs
@@ -0,0 +1,44 @@
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
+using Content.Server.Weapons.Ranged.Systems;
+
+namespace Content.Server.Weapons.Ranged.Components;
+
+///
+/// Allows battery weapons to fire different types of projectiles
+///
+[RegisterComponent]
+[Access(typeof(BatteryWeaponFireModesSystem))]
+[AutoGenerateComponentState]
+public sealed partial class BatteryWeaponFireModesComponent : Component
+{
+ ///
+ /// A list of the different firing modes the weapon can switch between
+ ///
+ [DataField("fireModes", required: true)]
+ [AutoNetworkedField]
+ public List FireModes = new();
+
+ ///
+ /// The currently selected firing mode
+ ///
+ [DataField("currentFireMode")]
+ [AutoNetworkedField]
+ public BatteryWeaponFireMode? CurrentFireMode = default!;
+}
+
+[DataDefinition]
+public sealed class BatteryWeaponFireMode
+{
+ ///
+ /// The projectile prototype associated with this firing mode
+ ///
+ [DataField("proto", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))]
+ public string Prototype = default!;
+
+ ///
+ /// The battery cost to fire the projectile associated with this firing mode
+ ///
+ [DataField("fireCost")]
+ public float FireCost = 100;
+}
diff --git a/Content.Server/Weapons/Ranged/Systems/BatteryWeaponFireModesSystem.cs b/Content.Server/Weapons/Ranged/Systems/BatteryWeaponFireModesSystem.cs
new file mode 100644
index 0000000000..90859d4068
--- /dev/null
+++ b/Content.Server/Weapons/Ranged/Systems/BatteryWeaponFireModesSystem.cs
@@ -0,0 +1,130 @@
+using Content.Server.Popups;
+using Content.Server.Weapons.Ranged.Components;
+using Content.Shared.Database;
+using Content.Shared.Examine;
+using Content.Shared.Interaction;
+using Content.Shared.Verbs;
+using Content.Shared.Weapons.Ranged.Components;
+using Robust.Shared.Prototypes;
+using System.Linq;
+
+namespace Content.Server.Weapons.Ranged.Systems;
+
+public sealed class BatteryWeaponFireModesSystem : EntitySystem
+{
+ [Dependency] private readonly IPrototypeManager _prototypeManager = default!;
+ [Dependency] private readonly PopupSystem _popupSystem = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnInteractHandEvent);
+ SubscribeLocalEvent>(OnGetVerb);
+ SubscribeLocalEvent(OnExamined);
+ }
+
+ private void OnExamined(EntityUid uid, BatteryWeaponFireModesComponent component, ExaminedEvent args)
+ {
+ if (component.FireModes == null || component.FireModes.Count < 2)
+ return;
+
+ if (component.CurrentFireMode == null)
+ {
+ SetFireMode(uid, component, component.FireModes.First());
+ }
+
+ if (component.CurrentFireMode?.Prototype == null)
+ return;
+
+ if (!_prototypeManager.TryIndex(component.CurrentFireMode.Prototype, out var proto))
+ return;
+
+ args.PushMarkup(Loc.GetString("gun-set-fire-mode", ("mode", proto.Name)));
+ }
+
+ private void OnGetVerb(EntityUid uid, BatteryWeaponFireModesComponent component, GetVerbsEvent args)
+ {
+ if (!args.CanAccess || !args.CanInteract || args.Hands == null)
+ return;
+
+ if (component.FireModes == null || component.FireModes.Count < 2)
+ return;
+
+ if (component.CurrentFireMode == null)
+ {
+ SetFireMode(uid, component, component.FireModes.First());
+ }
+
+ foreach (var fireMode in component.FireModes)
+ {
+ var entProto = _prototypeManager.Index(fireMode.Prototype);
+
+ var v = new Verb
+ {
+ Priority = 1,
+ Category = VerbCategory.SelectType,
+ Text = entProto.Name,
+ Disabled = fireMode == component.CurrentFireMode,
+ Impact = LogImpact.Low,
+ DoContactInteraction = true,
+ Act = () =>
+ {
+ SetFireMode(uid, component, fireMode, args.User);
+ }
+ };
+
+ args.Verbs.Add(v);
+ }
+ }
+
+ private void OnInteractHandEvent(EntityUid uid, BatteryWeaponFireModesComponent component, ActivateInWorldEvent args)
+ {
+ if (component.FireModes == null || component.FireModes.Count < 2)
+ return;
+
+ CycleFireMode(uid, component, args.User);
+ }
+
+ private void CycleFireMode(EntityUid uid, BatteryWeaponFireModesComponent component, EntityUid user)
+ {
+ int index = (component.CurrentFireMode != null) ?
+ Math.Max(component.FireModes.IndexOf(component.CurrentFireMode), 0) + 1 : 1;
+
+ BatteryWeaponFireMode? fireMode;
+
+ if (index >= component.FireModes.Count)
+ {
+ fireMode = component.FireModes.FirstOrDefault();
+ }
+
+ else
+ {
+ fireMode = component.FireModes[index];
+ }
+
+ SetFireMode(uid, component, fireMode, user);
+ }
+
+ private void SetFireMode(EntityUid uid, BatteryWeaponFireModesComponent component, BatteryWeaponFireMode? fireMode, EntityUid? user = null)
+ {
+ if (fireMode?.Prototype == null)
+ return;
+
+ component.CurrentFireMode = fireMode;
+
+ if (TryComp(uid, out ProjectileBatteryAmmoProviderComponent? projectileBatteryAmmoProvider))
+ {
+ if (!_prototypeManager.TryIndex(fireMode.Prototype, out var prototype))
+ return;
+
+ projectileBatteryAmmoProvider.Prototype = fireMode.Prototype;
+ projectileBatteryAmmoProvider.FireCost = fireMode.FireCost;
+
+ if (user != null)
+ {
+ _popupSystem.PopupEntity(Loc.GetString("gun-set-fire-mode", ("mode", prototype.Name)), uid, user.Value);
+ }
+ }
+ }
+}
diff --git a/Content.Shared/Anomaly/SharedAnomaly.cs b/Content.Shared/Anomaly/SharedAnomaly.cs
index 60023b28e9..b7585cb5f1 100644
--- a/Content.Shared/Anomaly/SharedAnomaly.cs
+++ b/Content.Shared/Anomaly/SharedAnomaly.cs
@@ -1,4 +1,4 @@
-using Robust.Shared.Serialization;
+using Robust.Shared.Serialization;
using Robust.Shared.Utility;
namespace Content.Shared.Anomaly;
diff --git a/Resources/Locale/en-US/anomaly/anomaly.ftl b/Resources/Locale/en-US/anomaly/anomaly.ftl
index cff944ae22..29d5169694 100644
--- a/Resources/Locale/en-US/anomaly/anomaly.ftl
+++ b/Resources/Locale/en-US/anomaly/anomaly.ftl
@@ -8,6 +8,7 @@ anomaly-vessel-component-upgrade-output = point output
anomaly-particles-delta = Delta particles
anomaly-particles-epsilon = Epsilon particles
anomaly-particles-zeta = Zeta particles
+anomaly-particles-omega = Omega particles
anomaly-scanner-component-scan-complete = Scan complete!
diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl
index 1011d44fff..1d8ddf21ac 100644
--- a/Resources/Locale/en-US/store/uplink-catalog.ftl
+++ b/Resources/Locale/en-US/store/uplink-catalog.ftl
@@ -221,8 +221,8 @@ uplink-banana-peel-explosive-desc = They will burst into laughter when they slip
uplink-hot-potato-name = Hot Potato
uplink-hot-potato-desc = Once activated, this time bomb can't be dropped - only passed to someone else!
-uplink-chimp-ammo-name = Box of 10 Omega Cartridges.
-uplink-chimp-ammo-desc = A box of 10 omega particle cartridges for the CHIMP. Omega particles inflict severe burns and cause anomalies to go supercritical.
+uplink-chimp-upgrade-kit-name = C.H.I.M.P. Handcannon Upgrade Chip
+uplink-chimp-upgrade-kit-desc = Insert this chip into a standard C.H.I.M.P. handcannon to allow it to fire omega particles. Omega particles inflict severe burns and cause anomalies to go supercritical.
uplink-proximity-mine-name = Proximity Mine
uplink-proximity-mine-desc = A mine disguised as a wet floor sign.
diff --git a/Resources/Locale/en-US/weapons/ranged/gun.ftl b/Resources/Locale/en-US/weapons/ranged/gun.ftl
index 5982934215..8b99fba592 100644
--- a/Resources/Locale/en-US/weapons/ranged/gun.ftl
+++ b/Resources/Locale/en-US/weapons/ranged/gun.ftl
@@ -5,6 +5,7 @@ gun-selector-verb = Change to {$mode}
gun-selected-mode = Selected {$mode}
gun-disabled = You can't use guns!
gun-clumsy = The gun blows up in your face!
+gun-set-fire-mode = Set to {$mode}
# SelectiveFire
gun-SemiAuto = semi-auto
diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml b/Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml
index cd3eb15581..20e291494f 100644
--- a/Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml
+++ b/Resources/Prototypes/Catalog/Fills/Boxes/ammunition.yml
@@ -89,21 +89,6 @@
- id: MagazineMagnumSubMachineGun
amount: 3
-- type: entity
- name: box of omega particle cartridges
- parent: BoxMagazine
- id: BoxMagazineChimpOmega
- description: A box full of omega particle cartridges for the CHIMP.
- components:
- - type: StorageFill
- contents:
- - id: CartridgeAnomalousParticleOmega
- amount: 10
- - type: Sprite
- layers:
- - state: box_science
- - state: omegacart
-
- type: entity
name: box of Vector (practice) magazines
parent: BoxMagazine
diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml
index ddf2e37a64..75e9cbfa72 100644
--- a/Resources/Prototypes/Catalog/uplink_catalog.yml
+++ b/Resources/Prototypes/Catalog/uplink_catalog.yml
@@ -955,10 +955,10 @@
- Mime
- type: listing
- id: UplinkChimpAmmo
- name: uplink-chimp-ammo-name
- description: uplink-chimp-ammo-desc
- productEntity: BoxMagazineChimpOmega
+ id: UplinkChimpUpgradeKit
+ name: uplink-chimp-upgrade-kit-name
+ description: uplink-chimp-upgrade-kit-desc
+ productEntity: WeaponPistolCHIMPUpgradeKit
cost:
Telecrystal: 4
categories:
diff --git a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/chimp_upgrade_kit.yml b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/chimp_upgrade_kit.yml
new file mode 100644
index 0000000000..aed09fe70b
--- /dev/null
+++ b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/chimp_upgrade_kit.yml
@@ -0,0 +1,14 @@
+- type: entity
+ name: C.H.I.M.P. handcannon upgrade chip
+ parent: BaseItem
+ id: WeaponPistolCHIMPUpgradeKit
+ description: An experimental upgrade kit for the C.H.I.M.P.
+ components:
+ - type: Sprite
+ sprite: Objects/Misc/module.rsi
+ state: abductor_mod
+ - type: Item
+ size: 10
+ - type: Tag
+ tags:
+ - WeaponPistolCHIMPUpgradeKit
\ No newline at end of file
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 2368b81269..e0fb98f0ab 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml
@@ -59,76 +59,3 @@
components:
- type: CartridgeAmmo
proto: BulletMagnumAP
-
-- type: entity
- id: BaseAnomalousCartridge
- parent: BaseCartridgeMagnum
- description: Packs twice the punch of a standard A.P.E. particle.
- abstract: true
- components:
- - type: Sprite
- sprite: Objects/Weapons/Guns/Ammunition/Casings/anomalous_casing.rsi
- layers:
- - state: base
- map: ["enum.AmmoVisualLayers.Base"]
- - type: Tag
- tags:
- - Cartridge
- - CartridgeCHIMP
-
-- type: entity
- id: CartridgeAnomalousParticleDelta
- parent: BaseAnomalousCartridge
- name: cartridge (delta particle)
- components:
- - type: Sprite
- layers:
- - state: base
- map: ["enum.AmmoVisualLayers.Base"]
- - state: overlay
- color: crimson
- - type: CartridgeAmmo
- proto: AnomalousParticleDeltaStrong
-
-- type: entity
- id: CartridgeAnomalousParticleEpsilon
- parent: BaseAnomalousCartridge
- name: cartridge (epsilon particle)
- components:
- - type: Sprite
- layers:
- - state: base
- map: ["enum.AmmoVisualLayers.Base"]
- - state: overlay
- color: plum
- - type: CartridgeAmmo
- proto: AnomalousParticleEpsilonStrong
-
-- type: entity
- id: CartridgeAnomalousParticleZeta
- parent: BaseAnomalousCartridge
- name: cartridge (zeta particle)
- components:
- - type: Sprite
- layers:
- - state: base
- map: ["enum.AmmoVisualLayers.Base"]
- - state: overlay
- color: goldenrod
- - type: CartridgeAmmo
- proto: AnomalousParticleZetaStrong
-
-- type: entity
- id: CartridgeAnomalousParticleOmega
- parent: BaseAnomalousCartridge
- name: cartridge (omega particle)
- description: An experimental and often dangerous particle.
- components:
- - type: Sprite
- layers:
- - state: base
- map: ["enum.AmmoVisualLayers.Base"]
- - state: overlay
- color: green
- - type: CartridgeAmmo
- proto: AnomalousParticleOmegaStrong
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml
index 21d08fbd14..f970b06f8e 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml
@@ -430,6 +430,63 @@
- type: StaticPrice
price: 63
+- type: entity
+ name: C.H.I.M.P. handcannon
+ parent: BaseWeaponBatterySmall
+ id: WeaponPistolCHIMP
+ description: Just because it's a little C.H.I.M.P. doesn't mean it can't punch like an A.P.E.
+ components:
+ - type: Sprite
+ sprite: Objects/Weapons/Guns/Revolvers/chimp.rsi
+ layers:
+ - state: base
+ map: ["enum.GunVisualLayers.Base"]
+ - state: mag-unshaded-1
+ visible: false
+ map: ["enum.GunVisualLayers.MagUnshaded"]
+ shader: unshaded
+ - type: Appearance
+ - type: MagazineVisuals
+ magState: mag
+ steps: 3
+ zeroVisible: false
+ - type: Clothing
+ sprite: Objects/Weapons/Guns/Revolvers/chimp.rsi
+ - type: Gun
+ fireRate: 1.5
+ soundGunshot:
+ path: /Audio/Weapons/Guns/Gunshots/taser2.ogg
+ - type: ProjectileBatteryAmmoProvider
+ proto: AnomalousParticleDeltaStrong
+ fireCost: 100
+ - type: BatteryWeaponFireModes
+ fireModes:
+ - proto: AnomalousParticleDeltaStrong
+ fireCost: 100
+ - proto: AnomalousParticleEpsilonStrong
+ fireCost: 100
+ - proto: AnomalousParticleZetaStrong
+ fireCost: 100
+ - type: Construction
+ graph: UpgradeWeaponPistolCHIMP
+ node: start
+
+- type: entity
+ name: experimental C.H.I.M.P. handcannon
+ parent: WeaponPistolCHIMP
+ id: WeaponPistolCHIMPUpgraded
+ description: This C.H.I.M.P. seems to have a greater punch than is usual...
+ components:
+ - type: BatteryWeaponFireModes
+ fireModes:
+ - proto: AnomalousParticleDeltaStrong
+ fireCost: 100
+ - proto: AnomalousParticleEpsilonStrong
+ fireCost: 100
+ - proto: AnomalousParticleOmegaStrong
+ fireCost: 100
+ - proto: AnomalousParticleZetaStrong
+ fireCost: 100
- type: entity
name: Eye of a behonker
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml
index 10cc39d17a..0b86ff6752 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml
@@ -378,7 +378,7 @@
- type: Sprite
sprite: Objects/Weapons/Guns/Projectiles/magic.rsi
layers:
- - state: magicm
+ - state: magicm_red
shader: unshaded
- type: Ammo
muzzleFlash: null
@@ -419,6 +419,10 @@
name: epsilon particles
noSpawn: true
components:
+ - type: Sprite
+ layers:
+ - state: magicm_cyan
+ shader: unshaded
- type: AnomalousParticle
particleType: Epsilon
@@ -440,9 +444,13 @@
name: zeta particles
noSpawn: true
components:
+ - type: Sprite
+ layers:
+ - state: magicm_yellow
+ shader: unshaded
- type: AnomalousParticle
particleType: Zeta
-
+
- type: entity
parent: AnomalousParticleZeta
id: AnomalousParticleZetaStrong
@@ -458,6 +466,7 @@
- type: entity
parent: AnomalousParticleDelta
id: AnomalousParticleOmegaStrong
+ name: omega particles
noSpawn: true
components:
- type: Sprite
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml
index 0d9fea2cb7..48c02f484e 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml
@@ -152,43 +152,4 @@
- type: RevolverAmmoProvider
capacity: 5
chambers: [ True, True, True, True, True ]
- ammoSlots: [ null, null, null, null, null ]
-
-- type: entity
- id: WeaponPistolCHIMP
- parent: BaseWeaponRevolver
- name: C.H.I.M.P. handcannon
- description: Just because it's a little C.H.I.M.P. doesn't mean it can't punch like an A.P.E.
- components:
- - type: Sprite
- sprite: Objects/Weapons/Guns/Revolvers/chimp.rsi
- layers:
- - state: base
- map: ["enum.GunVisualLayers.Base"]
- - state: mag-unshaded-1
- visible: false
- map: ["enum.GunVisualLayers.MagUnshaded"]
- shader: unshaded
- - type: Appearance
- - type: MagazineVisuals
- magState: mag
- steps: 3
- zeroVisible: false
- - type: Clothing
- sprite: Objects/Weapons/Guns/Revolvers/chimp.rsi
- - type: RevolverAmmoProvider
- whitelist:
- tags:
- - CartridgeCHIMP
- proto: CartridgeAnomalousParticleDelta #when revolvers stop sucking cock, make this spawn empty
- capacity: 10
- chambers: [ True, True, True, True, True, True, True, True, True, True ]
- ammoSlots: [ null, null, null, null, null, null, null, null, null, null ]
- soundEject:
- path: /Audio/Weapons/Guns/MagOut/revolver_magout.ogg
- soundInsert:
- path: /Audio/Weapons/Guns/MagIn/revolver_magin.ogg
- - type: Gun
- fireRate: 1.5
- soundGunshot:
- path: /Audio/Weapons/Guns/Gunshots/taser2.ogg
+ ammoSlots: [ null, null, null, null, null ]
\ No newline at end of file
diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
index aa5c17e84c..985d11f74d 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
@@ -239,9 +239,6 @@
- PowerCellMedium
- PowerCellHigh
- WeaponPistolCHIMP
- - CartridgeAnomalousParticleDelta
- - CartridgeAnomalousParticleEpsilon
- - CartridgeAnomalousParticleZeta
- SynthesizerInstrument
- RPED
- ClothingShoesBootsMag
diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/weapons/upgraded_chimp.yml b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/upgraded_chimp.yml
new file mode 100644
index 0000000000..eecd78cc13
--- /dev/null
+++ b/Resources/Prototypes/Recipes/Construction/Graphs/weapons/upgraded_chimp.yml
@@ -0,0 +1,13 @@
+- type: constructionGraph
+ id: UpgradeWeaponPistolCHIMP
+ start: start
+ graph:
+ - node: start
+ edges:
+ - to: upgraded
+ steps:
+ - tag: WeaponPistolCHIMPUpgradeKit
+ doAfter: 2
+
+ - node: upgraded
+ entity: WeaponPistolCHIMPUpgraded
\ No newline at end of file
diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml
index adfd9f25be..19b3ec03c9 100644
--- a/Resources/Prototypes/Recipes/Lathes/security.yml
+++ b/Resources/Prototypes/Recipes/Lathes/security.yml
@@ -207,27 +207,6 @@
Steel: 10
Glass: 5
-- type: latheRecipe
- id: CartridgeAnomalousParticleDelta
- result: CartridgeAnomalousParticleDelta
- completetime: 2
- materials:
- Plastic: 25
-
-- type: latheRecipe
- id: CartridgeAnomalousParticleEpsilon
- result: CartridgeAnomalousParticleEpsilon
- completetime: 2
- materials:
- Plastic: 25
-
-- type: latheRecipe
- id: CartridgeAnomalousParticleZeta
- result: CartridgeAnomalousParticleZeta
- completetime: 2
- materials:
- Plastic: 25
-
- type: latheRecipe
id: TargetHuman
result: TargetHuman
diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml
index 3b80c4ccaf..c1730bb15e 100644
--- a/Resources/Prototypes/Research/experimental.yml
+++ b/Resources/Prototypes/Research/experimental.yml
@@ -108,9 +108,6 @@
cost: 10000
recipeUnlocks:
- WeaponPistolCHIMP
- - CartridgeAnomalousParticleDelta
- - CartridgeAnomalousParticleEpsilon
- - CartridgeAnomalousParticleZeta
technologyPrerequisites:
- BasicAnomalousResearch
diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml
index 6e03bd421e..92f2998ad4 100644
--- a/Resources/Prototypes/tags.yml
+++ b/Resources/Prototypes/tags.yml
@@ -998,6 +998,9 @@
- type: Tag
id: WallmountSubstationElectronics
+
+- type: Tag
+ id: WeaponPistolCHIMPUpgradeKit
- type: Tag
id: Window
diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm_cyan.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm_cyan.png
new file mode 100644
index 0000000000000000000000000000000000000000..1c6a0094a4fd661e9e525db5a44907ae6256a0f9
GIT binary patch
literal 3994
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
A=Kufz
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm_red.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm_red.png
new file mode 100644
index 0000000000000000000000000000000000000000..b9e0d8c6533ab2611cb360be6f4fa33377988929
GIT binary patch
literal 3957
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
P00000NkvXXu0mjf*0-j3
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm_yellow.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm_yellow.png
new file mode 100644
index 0000000000000000000000000000000000000000..6fe8b5e727f643794561c06892387ad385a439db
GIT binary patch
literal 3895
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
FV1hiZfV2Pr
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json
index 0dbedf2922..d42d64964d 100644
--- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json
+++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json
@@ -28,6 +28,39 @@
0.1
]
]
+ },
+ {
+ "name": "magicm_yellow",
+ "delays": [
+ [
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1
+ ]
+ ]
+ },
+ {
+ "name": "magicm_red",
+ "delays": [
+ [
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1
+ ]
+ ]
+ },
+ {
+ "name": "magicm_cyan",
+ "delays": [
+ [
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1
+ ]
+ ]
},
{
"name": "spell",