-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
{
[DataField("chargeRate")]
public float ChargeRate = 20.0f;
- /// <summary>
- /// The charge rate with no machine upgrades
- /// </summary>
- [DataField("baseChargeRate")]
- public float BaseChargeRate = 20.0f;
-
- /// <summary>
- /// The machine part that affects the charge rate multiplier of the charger
- /// </summary>
- [DataField("machinePartChargeRateModifier", customTypeSerializer: typeof(PrototypeIdSerializer<MachinePartPrototype>))]
- public string MachinePartChargeRateModifier = "Capacitor";
-
- /// <summary>
- /// A value used to scale the charge rate multiplier
- /// with the corresponding part rating.
- /// </summary>
- [DataField("partRatingChargeRateModifier")]
- public float PartRatingChargeRateModifier = 1.5f;
-
/// <summary>
/// The container ID that is holds the entities being charged.
/// </summary>
-using Content.Server.Construction;
using Content.Server.Power.Components;
using Content.Server.PowerCell;
using Content.Shared.Examine;
public override void Initialize()
{
SubscribeLocalEvent<ChargerComponent, ComponentStartup>(OnStartup);
- SubscribeLocalEvent<ChargerComponent, RefreshPartsEvent>(OnRefreshParts);
- SubscribeLocalEvent<ChargerComponent, UpgradeExamineEvent>(OnUpgradeExamine);
SubscribeLocalEvent<ChargerComponent, PowerChangedEvent>(OnPowerChanged);
SubscribeLocalEvent<ChargerComponent, EntInsertedIntoContainerMessage>(OnInserted);
SubscribeLocalEvent<ChargerComponent, EntRemovedFromContainerMessage>(OnRemoved);
}
}
- 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);
- 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
- HydroponicsTrayMachineCircuitboard
- SolarControlComputerCircuitboard
- SolarTrackerElectronics
+ - TurboItemRechargerCircuitboard
- PowerComputerCircuitboard
- AutolatheHyperConvectionMachineCircuitboard
- ProtolatheHyperConvectionMachineCircuitboard
- Sheet
- type: StealTarget
stealGroup: AmmoTechFabCircuitboard
-
+
- type: entity
id: MedicalTechFab
parent: BaseLathe
board: MedicalTechFabCircuitboard
- type: StealTarget
stealGroup: MedicalTechFabCircuitboard
-
+
- type: entity
parent: BaseLathe
id: UniformPrinter
- 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
map: ["enum.WiresVisualLayers.MaintenancePanel"]
visible: false
- type: Charger
- baseChargeRate: 30
+ chargeRate: 30
slotId: entity_storage
whitelist:
components:
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
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
--- /dev/null
+{
+ "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
+ ]
+ ]
+ }
+ ]
+}