diff --git a/Content.Server/Power/Components/ChargerComponent.cs b/Content.Server/Power/Components/ChargerComponent.cs
index b7e3b3da8c..af4498f01b 100644
--- a/Content.Server/Power/Components/ChargerComponent.cs
+++ b/Content.Server/Power/Components/ChargerComponent.cs
@@ -1,7 +1,5 @@
-using Content.Shared.Construction.Prototypes;
using Content.Shared.Power;
using Content.Shared.Whitelist;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.Power.Components
{
@@ -17,25 +15,6 @@ namespace Content.Server.Power.Components
[DataField("chargeRate")]
public float ChargeRate = 20.0f;
- ///
- /// The charge rate with no machine upgrades
- ///
- [DataField("baseChargeRate")]
- public float BaseChargeRate = 20.0f;
-
- ///
- /// The machine part that affects the charge rate multiplier of the charger
- ///
- [DataField("machinePartChargeRateModifier", customTypeSerializer: typeof(PrototypeIdSerializer))]
- public string MachinePartChargeRateModifier = "Capacitor";
-
- ///
- /// A value used to scale the charge rate multiplier
- /// with the corresponding part rating.
- ///
- [DataField("partRatingChargeRateModifier")]
- public float PartRatingChargeRateModifier = 1.5f;
-
///
/// The container ID that is holds the entities being charged.
///
diff --git a/Content.Server/Power/EntitySystems/ChargerSystem.cs b/Content.Server/Power/EntitySystems/ChargerSystem.cs
index 4c343a4a2c..7926e1a84d 100644
--- a/Content.Server/Power/EntitySystems/ChargerSystem.cs
+++ b/Content.Server/Power/EntitySystems/ChargerSystem.cs
@@ -1,4 +1,3 @@
-using Content.Server.Construction;
using Content.Server.Power.Components;
using Content.Server.PowerCell;
using Content.Shared.Examine;
@@ -23,8 +22,6 @@ internal sealed class ChargerSystem : EntitySystem
public override void Initialize()
{
SubscribeLocalEvent(OnStartup);
- SubscribeLocalEvent(OnRefreshParts);
- SubscribeLocalEvent(OnUpgradeExamine);
SubscribeLocalEvent(OnPowerChanged);
SubscribeLocalEvent(OnInserted);
SubscribeLocalEvent(OnRemoved);
@@ -61,17 +58,6 @@ internal sealed class ChargerSystem : EntitySystem
}
}
- private void OnRefreshParts(EntityUid uid, ChargerComponent component, RefreshPartsEvent args)
- {
- var modifierRating = args.PartRatings[component.MachinePartChargeRateModifier];
- component.ChargeRate = component.BaseChargeRate * MathF.Pow(component.PartRatingChargeRateModifier, modifierRating - 1);
- }
-
- private void OnUpgradeExamine(EntityUid uid, ChargerComponent component, UpgradeExamineEvent args)
- {
- args.AddPercentageUpgrade("charger-component-charge-rate", component.ChargeRate / component.BaseChargeRate);
- }
-
private void OnPowerChanged(EntityUid uid, ChargerComponent component, ref PowerChangedEvent args)
{
UpdateStatus(uid, component);
diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
index d6863d49a7..90597e8090 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml
@@ -707,6 +707,26 @@
- type: StaticPrice
price: 15
+- type: entity
+ id: TurboItemRechargerCircuitboard
+ parent: BaseMachineCircuitboard
+ name: turbo recharger machine board
+ description: A machine printed circuit board for a turbo recharger.
+ components:
+ - type: Sprite
+ sprite: Objects/Misc/module.rsi
+ state: charger_APC
+ - type: MachineBoard
+ prototype: TurboItemRecharger
+ requirements:
+ Capacitor: 2
+ materialRequirements:
+ CableMV: 5
+ - type: PhysicalComposition
+ materialComposition:
+ Steel: 30
+ Plastic: 30
+
- type: entity
id: SubstationMachineCircuitboard
parent: BaseMachineCircuitboard
diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
index 1c9976f8e5..0dae26e173 100644
--- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
+++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml
@@ -387,6 +387,7 @@
- HydroponicsTrayMachineCircuitboard
- SolarControlComputerCircuitboard
- SolarTrackerElectronics
+ - TurboItemRechargerCircuitboard
- PowerComputerCircuitboard
- AutolatheHyperConvectionMachineCircuitboard
- ProtolatheHyperConvectionMachineCircuitboard
@@ -751,7 +752,7 @@
- Sheet
- type: StealTarget
stealGroup: AmmoTechFabCircuitboard
-
+
- type: entity
id: MedicalTechFab
parent: BaseLathe
@@ -822,7 +823,7 @@
board: MedicalTechFabCircuitboard
- type: StealTarget
stealGroup: MedicalTechFabCircuitboard
-
+
- type: entity
parent: BaseLathe
id: UniformPrinter
diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml
index 7630610bd8..4e888b0b0b 100644
--- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml
@@ -109,6 +109,32 @@
- ProjectileBatteryAmmoProvider
- Stunbaton
+- type: entity
+ parent: BaseItemRecharger
+ id: TurboItemRecharger
+ name: turbo recharger
+ description: An overclocked recharger that's been adapted with a global port.
+ components:
+ - type: Sprite
+ sprite: Structures/Power/turbo_recharger.rsi
+ - type: Machine
+ board: TurboItemRechargerCircuitboard
+ - type: Charger
+ chargeRate: 100
+ - type: ItemSlots
+ slots:
+ charger_slot:
+ ejectOnInteract: true
+ whitelist:
+ components:
+ - HitscanBatteryAmmoProvider
+ - ProjectileBatteryAmmoProvider
+ - Stunbaton
+ - PowerCell
+ blacklist:
+ tags:
+ - PotatoBattery
+
- type: entity
parent: BaseItemRecharger
id: WallWeaponCapacitorRecharger
@@ -157,7 +183,7 @@
map: ["enum.WiresVisualLayers.MaintenancePanel"]
visible: false
- type: Charger
- baseChargeRate: 30
+ chargeRate: 30
slotId: entity_storage
whitelist:
components:
diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml
index 55337702b5..123b7f6036 100644
--- a/Resources/Prototypes/Recipes/Lathes/electronics.yml
+++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml
@@ -38,6 +38,15 @@
Steel: 50
Plastic: 50
+- type: latheRecipe
+ id: TurboItemRechargerCircuitboard
+ result: TurboItemRechargerCircuitboard
+ completetime: 2
+ materials:
+ Steel: 500
+ Plastic: 500
+ Gold: 100
+
- type: latheRecipe
id: DoorElectronics
result: DoorElectronics
diff --git a/Resources/Prototypes/Research/industrial.yml b/Resources/Prototypes/Research/industrial.yml
index f47d5a6398..d5edbd8f43 100644
--- a/Resources/Prototypes/Research/industrial.yml
+++ b/Resources/Prototypes/Research/industrial.yml
@@ -19,13 +19,14 @@
id: AdvancedPowercells
name: research-technology-advanced-powercells
icon:
- sprite: Objects/Power/power_cells.rsi
- state: high
+ sprite: Structures/Power/turbo_recharger.rsi
+ state: empty
discipline: Industrial
tier: 1
- cost: 5000
+ cost: 7500
recipeUnlocks:
- PowerCellHigh
+ - TurboItemRechargerCircuitboard
- type: technology
id: MechanicalCompression
diff --git a/Resources/Textures/Structures/Power/turbo_recharger.rsi/empty.png b/Resources/Textures/Structures/Power/turbo_recharger.rsi/empty.png
new file mode 100644
index 0000000000..aec66639da
Binary files /dev/null and b/Resources/Textures/Structures/Power/turbo_recharger.rsi/empty.png differ
diff --git a/Resources/Textures/Structures/Power/turbo_recharger.rsi/full.png b/Resources/Textures/Structures/Power/turbo_recharger.rsi/full.png
new file mode 100644
index 0000000000..aec66639da
Binary files /dev/null and b/Resources/Textures/Structures/Power/turbo_recharger.rsi/full.png differ
diff --git a/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-charged.png b/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-charged.png
new file mode 100644
index 0000000000..272c610fa8
Binary files /dev/null and b/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-charged.png differ
diff --git a/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-charging.png b/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-charging.png
new file mode 100644
index 0000000000..05a2890a67
Binary files /dev/null and b/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-charging.png differ
diff --git a/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-empty.png b/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-empty.png
new file mode 100644
index 0000000000..e5192505a3
Binary files /dev/null and b/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-empty.png differ
diff --git a/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-off.png b/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-off.png
new file mode 100644
index 0000000000..1bdf052387
Binary files /dev/null and b/Resources/Textures/Structures/Power/turbo_recharger.rsi/light-off.png differ
diff --git a/Resources/Textures/Structures/Power/turbo_recharger.rsi/meta.json b/Resources/Textures/Structures/Power/turbo_recharger.rsi/meta.json
new file mode 100644
index 0000000000..50271d1e33
--- /dev/null
+++ b/Resources/Textures/Structures/Power/turbo_recharger.rsi/meta.json
@@ -0,0 +1,62 @@
+{
+ "version": 1,
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "adapted from https://github.com/discordia-space/CEV-Eris/raw/9ea3eccbe22e18d24653949067f3d7dd12194ea9/icons/obj/stationobjs.dmi by EmoGarbage404 (github)",
+ "states": [
+ {
+ "name": "empty"
+
+ },
+ {
+ "name": "full"
+
+ },
+ {
+ "name": "light-off",
+ "delays": [
+ [
+ 1
+ ]
+ ]
+ },
+ {
+ "name": "light-empty",
+ "delays": [
+ [
+ 1,
+ 0.2
+ ]
+ ]
+ },
+ {
+ "name": "light-charging",
+ "delays": [
+ [
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1
+ ]
+ ]
+ },
+ {
+ "name": "light-charged",
+ "delays": [
+ [
+ 0.25,
+ 0.05,
+ 0.1,
+ 0.05
+ ]
+ ]
+ }
+ ]
+}