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 + ] + ] + } + ] +}