Turbo Recharger (#23723)

turbo charger
This commit is contained in:
Nemanja
2024-01-08 02:15:13 -05:00
committed by GitHub
parent b3e695cbfc
commit c861b66a47
14 changed files with 125 additions and 41 deletions

View File

@@ -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;
/// <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>

View File

@@ -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<ChargerComponent, ComponentStartup>(OnStartup);
SubscribeLocalEvent<ChargerComponent, RefreshPartsEvent>(OnRefreshParts);
SubscribeLocalEvent<ChargerComponent, UpgradeExamineEvent>(OnUpgradeExamine);
SubscribeLocalEvent<ChargerComponent, PowerChangedEvent>(OnPowerChanged);
SubscribeLocalEvent<ChargerComponent, EntInsertedIntoContainerMessage>(OnInserted);
SubscribeLocalEvent<ChargerComponent, EntRemovedFromContainerMessage>(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);

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 918 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

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