Power cell culling (#8814)

This commit is contained in:
metalgearsloth
2022-06-16 18:37:07 +10:00
committed by GitHub
parent 2ad62a01f1
commit a18ba5c2b5
136 changed files with 234 additions and 977 deletions

View File

@@ -1,7 +1,38 @@
using Content.Shared.PowerCell;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
namespace Content.Client.PowerCell;
[UsedImplicitly]
public sealed class PowerCellSystem : SharedPowerCellSystem { }
public sealed class PowerCellSystem : SharedPowerCellSystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<PowerCellVisualsComponent, AppearanceChangeEvent>(OnPowerCellVisualsChange);
}
private void OnPowerCellVisualsChange(EntityUid uid, PowerCellVisualsComponent component, ref AppearanceChangeEvent args)
{
if (args.Sprite == null) return;
if (args.Component.TryGetData(PowerCellVisuals.ChargeLevel, out byte level))
{
if (level == 0)
{
args.Sprite.LayerSetVisible(PowerCellVisualLayers.Unshaded, false);
return;
}
args.Sprite.LayerSetVisible(PowerCellVisualLayers.Unshaded, true);
args.Sprite.LayerSetState(PowerCellVisualLayers.Unshaded, $"o{level}");
}
}
private enum PowerCellVisualLayers : byte
{
Base,
Unshaded,
}
}

View File

@@ -1,46 +0,0 @@
using Content.Shared.PowerCell;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Serialization.Manager.Attributes;
namespace Content.Client.PowerCell
{
[UsedImplicitly]
public sealed class PowerCellVisualizer : AppearanceVisualizer
{
[DataField("prefix")]
private string? _prefix;
public override void InitializeEntity(EntityUid entity)
{
base.InitializeEntity(entity);
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(entity);
if (_prefix != null)
{
sprite.LayerMapSet(Layers.Charge, sprite.AddLayerState($"{_prefix}_100"));
sprite.LayerSetShader(Layers.Charge, "unshaded");
}
}
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(component.Owner);
if (component.TryGetData(PowerCellVisuals.ChargeLevel, out byte level))
{
var adjustedLevel = level * 25;
sprite.LayerSetState(Layers.Charge, $"{_prefix}_{adjustedLevel}");
}
}
private enum Layers : byte
{
Charge
}
}
}

View File

@@ -0,0 +1,4 @@
namespace Content.Client.PowerCell;
[RegisterComponent]
public sealed class PowerCellVisualsComponent : Component {}

View File

@@ -25,6 +25,7 @@ namespace Content.Server.Entry
"HandheldGPS",
"SpentAmmoVisuals",
"MagazineVisuals",
"PowerCellVisuals",
"ToggleableLightVisuals",
"CableVisualizer",
"PotencyVisuals",

View File

@@ -1,6 +1,7 @@
using Content.Server.Actions;
using Content.Server.Light.Components;
using Content.Server.Popups;
using Content.Server.Power.Components;
using Content.Server.PowerCell;
using Content.Shared.Actions;
using Content.Shared.Actions.ActionTypes;
@@ -220,7 +221,8 @@ namespace Content.Server.Light.EntitySystems
{
if (component.Activated) return false;
if (!_powerCell.TryGetBatteryFromSlot(component.Owner, out var battery))
if (!_powerCell.TryGetBatteryFromSlot(component.Owner, out var battery) &&
!TryComp(component.Owner, out battery))
{
SoundSystem.Play(component.TurnOnFailSound.GetSound(), Filter.Pvs(component.Owner, entityManager: EntityManager), component.Owner);
_popup.PopupEntity(Loc.GetString("handheld-light-component-cell-missing-message"), component.Owner, Filter.Entities(user));
@@ -253,7 +255,8 @@ namespace Content.Server.Light.EntitySystems
public void TryUpdate(HandheldLightComponent component, float frameTime)
{
if (!_powerCell.TryGetBatteryFromSlot(component.Owner, out var battery))
if (!_powerCell.TryGetBatteryFromSlot(component.Owner, out var battery) &&
!TryComp(component.Owner, out battery))
{
TurnOff(component, false);
return;

View File

@@ -12,25 +12,15 @@ namespace Content.Shared.PowerCell;
public sealed class PowerCellComponent : Component
{
public const string SolutionName = "powerCell";
public const int PowerCellVisualsLevels = 4;
[DataField("cellSize")]
public PowerCellSize CellSize = PowerCellSize.Small;
public const int PowerCellVisualsLevels = 2;
// Not networked to clients
[ViewVariables(VVAccess.ReadWrite)]
public bool IsRigged { get; set; }
}
public enum PowerCellSize
{
Small = 0,
Medium = 1,
Large = 2
}
[Serializable, NetSerializable]
public enum PowerCellVisuals
public enum PowerCellVisuals : byte
{
ChargeLevel
}

View File

@@ -5,13 +5,6 @@ namespace Content.Shared.PowerCell.Components;
[RegisterComponent]
public sealed class PowerCellSlotComponent : Component
{
/// <summary>
/// What size of cell fits into this component.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
[DataField("slotSize")]
public PowerCellSize SlotSize { get; set; } = PowerCellSize.Small;
/// <summary>
/// The actual item-slot that contains the cell. Allows all the interaction logic to be handled by <see cref="ItemSlotsSystem"/>.
/// </summary>

View File

@@ -18,8 +18,6 @@ public abstract class SharedPowerCellSystem : EntitySystem
SubscribeLocalEvent<PowerCellSlotComponent, ComponentInit>(OnCellSlotInit);
SubscribeLocalEvent<PowerCellSlotComponent, ComponentRemove>(OnCellSlotRemove);
SubscribeLocalEvent<PowerCellSlotComponent, ExaminedEvent>(OnSlotExamined);
SubscribeLocalEvent<PowerCellSlotComponent, EntInsertedIntoContainerMessage>(OnCellInserted);
SubscribeLocalEvent<PowerCellSlotComponent, EntRemovedFromContainerMessage>(OnCellRemoved);
SubscribeLocalEvent<PowerCellSlotComponent, ContainerIsInsertingAttemptEvent>(OnCellInsertAttempt);
@@ -33,7 +31,7 @@ public abstract class SharedPowerCellSystem : EntitySystem
if (args.Container.ID != component.CellSlot.ID)
return;
if (!TryComp(args.EntityUid, out PowerCellComponent? cell) || cell.CellSize != component.SlotSize)
if (!HasComp<PowerCellComponent>(args.EntityUid))
{
args.Cancel();
}
@@ -67,41 +65,10 @@ public abstract class SharedPowerCellSystem : EntitySystem
{
component.CellSlot.Name = component.SlotName;
}
if (component.StartEmpty)
return;
if (!string.IsNullOrWhiteSpace(component.CellSlot.StartingItem))
return;
// set default starting cell based on cell-type
component.CellSlot.StartingItem = component.SlotSize switch
{
PowerCellSize.Small => "PowerCellSmallStandard",
PowerCellSize.Medium => "PowerCellMediumStandard",
PowerCellSize.Large => "PowerCellLargeStandard",
_ => throw new ArgumentOutOfRangeException()
};
}
private void OnCellSlotRemove(EntityUid uid, PowerCellSlotComponent component, ComponentRemove args)
{
_itemSlotsSystem.RemoveItemSlot(uid, component.CellSlot);
}
private void OnSlotExamined(EntityUid uid, PowerCellSlotComponent component, ExaminedEvent args)
{
if (!args.IsInDetailsRange || string.IsNullOrWhiteSpace(component.DescFormatString))
return;
var sizeText = Loc.GetString(component.SlotSize switch
{
PowerCellSize.Small => "power-cell-slot-component-description-size-small",
PowerCellSize.Medium => "power-cell-slot-component-description-size-medium",
PowerCellSize.Large => "power-cell-slot-component-description-size-large",
_ => "???"
});
args.PushMarkup(Loc.GetString(component.DescFormatString, ("size", sizeText)));
}
}

View File

@@ -1737,13 +1737,13 @@ entities:
parent: 179
type: Transform
- uid: 186
type: PowerCellSmallHigh
type: PowerCellMedium
components:
- pos: -2.67511,-10.351
parent: 179
type: Transform
- uid: 187
type: PowerCellSmallHigh
type: PowerCellMedium
components:
- pos: -2.55011,-10.6635
parent: 179

View File

@@ -86506,7 +86506,7 @@ entities:
- canCollide: False
type: Physics
- uid: 7165
type: PowerCellMediumPotato
type: PowerCellPotato
components:
- pos: -20.516964,-56.33504
parent: 60
@@ -105329,7 +105329,7 @@ entities:
parent: 60
type: Transform
- uid: 9621
type: PowerCellLargeSuper
type: PowerCellHigh
components:
- pos: -37.43891,14.626589
parent: 60
@@ -151805,7 +151805,7 @@ entities:
ents: []
type: ContainerContainer
- uid: 16084
type: PowerCellSmallAutorecharge
type: PowerCellMicroreactor
components:
- pos: 0.55256647,20.72724
parent: 60

View File

@@ -111283,7 +111283,7 @@ entities:
charger-slot: !type:ContainerSlot {}
type: ContainerContainer
- uid: 12271
type: PowerCellMediumPotato
type: PowerCellPotato
components:
- pos: -3.516998,-36.44544
parent: 106

View File

@@ -47764,7 +47764,7 @@ entities:
charger-slot: !type:ContainerSlot {}
type: ContainerContainer
- uid: 1777
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: -10.414857,-37.378014
parent: 60
@@ -54147,7 +54147,7 @@ entities:
- canCollide: False
type: Physics
- uid: 2674
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: -55.456623,-37.464394
parent: 60
@@ -54155,7 +54155,7 @@ entities:
- canCollide: False
type: Physics
- uid: 2675
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: -55.44885,-38.160557
parent: 60
@@ -57048,7 +57048,7 @@ entities:
charger-slot: !type:ContainerSlot {}
type: ContainerContainer
- uid: 3076
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: -55.356537,-43.214397
parent: 60
@@ -79980,7 +79980,7 @@ entities:
charger-slot: !type:ContainerSlot {}
type: ContainerContainer
- uid: 6323
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: -50.5,-9.5
parent: 60
@@ -133076,7 +133076,7 @@ entities:
- canCollide: False
type: Physics
- uid: 13755
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 12.5294485,82.53368
parent: 60
@@ -154878,7 +154878,7 @@ entities:
ents: []
type: ContainerContainer
- uid: 16985
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 16.412798,54.560455
parent: 60
@@ -171164,7 +171164,7 @@ entities:
charger-slot: !type:ContainerSlot {}
type: ContainerContainer
- uid: 19288
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 43.575706,-44.36233
parent: 60

View File

@@ -37441,7 +37441,7 @@ entities:
charger-slot: !type:ContainerSlot {}
type: ContainerContainer
- uid: 2119
type: PowerCellMediumStandard
type: PowerCellSmall
components:
- pos: -27.504559,56.49509
parent: 30
@@ -37449,7 +37449,7 @@ entities:
- canCollide: False
type: Physics
- uid: 2120
type: PowerCellMediumStandard
type: PowerCellSmall
components:
- pos: -27.504559,56.68259
parent: 30

View File

@@ -53389,7 +53389,7 @@ entities:
parent: 130
type: Transform
- uid: 4846
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 29.227386,-9.561591
parent: 130
@@ -90644,7 +90644,7 @@ entities:
parent: 130
type: Transform
- uid: 9699
type: PowerCellMediumPotato
type: PowerCellPotato
components:
- pos: 34.5,-20.500025
parent: 130
@@ -93243,7 +93243,7 @@ entities:
charger-slot: !type:ContainerSlot {}
type: ContainerContainer
- uid: 9947
type: PowerCellLargeHigh
type: PowerCellMedium
components:
- pos: 29.548517,-9.58406
parent: 130
@@ -95478,7 +95478,7 @@ entities:
parent: 130
type: Transform
- uid: 10276
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: -40.50005,-16.500025
parent: 130

View File

@@ -28487,7 +28487,7 @@ entities:
- canCollide: False
type: Physics
- uid: 2075
type: PowerCellMediumStandard
type: PowerCellSmall
components:
- pos: 9.531351,32.51714
parent: 2
@@ -50161,7 +50161,7 @@ entities:
charger-slot: !type:ContainerSlot {}
type: ContainerContainer
- uid: 5313
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 56.529827,20.631775
parent: 2
@@ -50725,7 +50725,7 @@ entities:
ents: []
type: ContainerContainer
- uid: 5382
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 50.725174,11.548619
parent: 2
@@ -94093,7 +94093,7 @@ entities:
parent: 2
type: Transform
- uid: 11070
type: PowerCellMediumStandard
type: PowerCellSmall
components:
- parent: 9191
type: Transform
@@ -94878,7 +94878,7 @@ entities:
parent: 2
type: Transform
- uid: 11166
type: PowerCellMediumStandard
type: PowerCellSmall
components:
- parent: 11154
type: Transform

View File

@@ -22187,7 +22187,7 @@ entities:
- canCollide: False
type: Physics
- uid: 2097
type: PowerCellMediumStandard
type: PowerCellSmall
components:
- pos: 9.531351,32.51714
parent: 0
@@ -43826,7 +43826,7 @@ entities:
charger-slot: !type:ContainerSlot {}
type: ContainerContainer
- uid: 5336
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 56.529827,20.631775
parent: 0
@@ -44390,7 +44390,7 @@ entities:
ents: []
type: ContainerContainer
- uid: 5405
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 50.725174,11.548619
parent: 0
@@ -87726,7 +87726,7 @@ entities:
- canCollide: False
type: Physics
- uid: 11108
type: PowerCellMediumStandard
type: PowerCellSmall
components:
- parent: 9229
type: Transform
@@ -88505,7 +88505,7 @@ entities:
- canCollide: False
type: Physics
- uid: 11204
type: PowerCellMediumStandard
type: PowerCellSmall
components:
- parent: 11192
type: Transform

View File

@@ -17902,7 +17902,7 @@ entities:
parent: 852
type: Transform
- uid: 1130
type: PowerCellSmallStandard
type: PowerCellSmall
components:
- parent: 1549
type: Transform

View File

@@ -105162,7 +105162,7 @@ entities:
- canCollide: False
type: Physics
- uid: 11187
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 14.5,-105.5
parent: 69

View File

@@ -4210,7 +4210,7 @@ entities:
- canCollide: False
type: Physics
- uid: 153
type: PowerCellSmallStandard
type: PowerCellSmall
components:
- parent: 152
type: Transform
@@ -4225,7 +4225,7 @@ entities:
- canCollide: False
type: Physics
- uid: 155
type: PowerCellSmallStandard
type: PowerCellSmall
components:
- parent: 154
type: Transform

View File

@@ -35234,7 +35234,7 @@ entities:
- canCollide: False
type: Physics
- uid: 2452
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 8.459046,45.525425
parent: 82
@@ -45505,7 +45505,7 @@ entities:
- canCollide: False
type: Physics
- uid: 3700
type: PowerCellLargeStandard
type: PowerCellSmall
components:
- pos: 44.656002,21.563784
parent: 82
@@ -56560,7 +56560,7 @@ entities:
parent: 82
type: Transform
- uid: 4967
type: PowerCellMediumPotato
type: PowerCellPotato
components:
- pos: 32.49642,-0.21778393
parent: 82

View File

@@ -37,11 +37,7 @@
# components:
# - type: StorageFill
# contents:
# - id: PowerCellLargeStandard
# amount: 3
# - id: PowerCellMediumStandard
# amount: 3
# - id: PowerCellSmallAutorecharge
# - id: PowerCellMicroreactor
# amount: 3
- type: entity

View File

@@ -63,9 +63,6 @@
# Interesting (1%)
# - Ammo
- id: MagazineBoxMagnum
prob: 0.01
# - #shinies
- id: PowerCellLargeHyper
prob: 0.01
# Just no (0.1%)
# - Working guns

View File

@@ -400,45 +400,39 @@
id: PowerCellBasic
description: Print standard powercells.
icon:
sprite: Objects/Power/PowerCells/power_cell_small_st.rsi
state: s_st
sprite: Objects/Power/power_cells.rsi
state: small
requiredPoints: 2500
requiredTechnologies:
- ElectromagneticTheory
unlockedRecipes:
- PowerCellSmallStandard
- PowerCellMediumStandard
- PowerCellLargeStandard
- PowerCellSmall
- type: technology
name: "advanced powercell printing"
id: PowerCellAdvanced
description: Print advanced powercells.
icon:
sprite: Objects/Power/PowerCells/power_cell_small_hi.rsi
state: s_hi
sprite: Objects/Power/power_cells.rsi
state: medium
requiredPoints: 5000
requiredTechnologies:
- PowerCellBasic
unlockedRecipes:
- PowerCellSmallHigh
- PowerCellMediumHigh
- PowerCellLargeHigh
- PowerCellMedium
- type: technology
name: "super powercell printing"
id: PowerCellSuper
description: Print super powercells.
icon:
sprite: Objects/Power/PowerCells/power_cell_small_sup.rsi
state: s_sup
sprite: Objects/Power/power_cells.rsi
state: high
requiredPoints: 10000
requiredTechnologies:
- PowerCellAdvanced
unlockedRecipes:
- PowerCellSmallSuper
- PowerCellMediumSuper
- PowerCellLargeSuper
- PowerCellHigh
# Basic Parts Technology Tree
- type: technology

View File

@@ -6,7 +6,7 @@
startingInventory:
ClothingEyesGlassesMeson: 4
Multitool: 4
PowerCellSmallHigh: 5
PowerCellMedium: 5
ClothingHandsGlovesColorYellow: 6
InflatableWallStack1: 24
InflatableDoorStack1: 8

View File

@@ -8,7 +8,6 @@
#roboticist under
CableStack: 4
Flash: 4
PowerCellLargeHigh: 12
#proximity sensor
#signaller
#health anaylzer

View File

@@ -106,7 +106,9 @@
- type: FlashLightVisualizer
- type: HandheldLight
addPrefix: true
- type: PowerCellSlot
cellSlot:
startingItem: PowerCellHardsuitHelmet # self recharging
locked: true # no need to recharge manually
- type: Battery
maxCharge: 600 #lights drain 3/s but recharge of 2 makes this 1/s. Therefore 600 is 10 minutes of light.
startingCharge: 600
- type: BatterySelfRecharger
autoRecharge: true
autoRechargeRate: 2 #recharge of 2 makes total drain 1w / s so max charge is 1:1 with time. Time to fully charge should be 5 minutes. Having recharge gives light an extended flicker period which gives you some warning to return to light area.

View File

@@ -36,7 +36,7 @@
- state: on-equipped-HELMET
- type: PowerCellSlot
cellSlot:
startingItem: PowerCellSmallHigh
startingItem: PowerCellMedium
- type: entity
parent: ClothingHeadHatHardhatBase

View File

@@ -207,7 +207,7 @@
- type: IngestionBlocker
- type: PowerCellSlot
cellSlot:
startingItem: PowerCellSmallHigh
startingItem: PowerCellMedium
- type: TemperatureProtection
coefficient: 0.01
- type: Armor

View File

@@ -50,14 +50,13 @@
- type: Sprite
layers:
- state: red
- texture: Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup.png
- sprite: Objects/Power/power_cells.rsi
state: high
- type: RandomSpawner
rarePrototypes:
- lanternextrabright
- PowerCellMediumSuper
- PowerCellSmallSuper
- PowerCellLargeSuper
- PowerCellSmallAutorecharge
- PowerCellHigh
- PowerCellMicroreactor
rareChance: 0.08
prototypes:
- FlashlightLantern

View File

@@ -1,8 +1,5 @@
# TODO: Add descriptions (3)
# Power cells
- type: entity
id: PowerCellSmallBase
id: BasePowerCell
abstract: true
parent: BaseItem
components:
@@ -11,6 +8,7 @@
- type: Explosive
explosionType: Default
- type: Sprite
sprite: Objects/Power/power_cells.rsi
netsync: false
- type: SolutionContainerManager
solutions:
@@ -28,144 +26,125 @@
- type: Tag
tags:
- DroneUsable
- type: entity
id: PowerCellMediumBase
abstract: true
parent: PowerCellSmallBase
components:
- type: PowerCell
cellSize: Medium
- type: entity
id: PowerCellLargeBase
abstract: true
parent: PowerCellSmallBase
components:
- type: PowerCell
cellSize: Large
- type: Appearance
- type: PowerCellVisuals
- type: entity
name: potato battery
description: Someone's stuck two nails and some wire in a large potato. Somehow it provides a little charge. You might be able to cram it into an M-sized slot.
id: PowerCellMediumPotato
parent: PowerCellMediumBase
description: Someone's stuck two nails and some wire in a large potato. Somehow it provides a little charge.
id: PowerCellPotato
parent: BasePowerCell
components:
- type: Sprite
sprite: Objects/Power/PowerCells/potato_battery.rsi
layers:
- state: potato_battery
- state: potato
- type: Battery
maxCharge: 360
startingCharge: 360
maxCharge: 200
startingCharge: 200
- type: entity
name: small standard power cell
description: A rechargeable standardized power cell, size S. This is the cheapest kind you can find.
id: PowerCellSmallStandard
name: small-capacity power cell
description: A rechargeable power cell. This is the cheapest kind you can find.
id: PowerCellSmall
suffix: Full
parent: PowerCellSmallBase
parent: BasePowerCell
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_small_st.rsi
layers:
- state: s_st
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: small
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 360
startingCharge: 360
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: s_st
- type: entity
id: PowerCellSmallStandardPrinted
id: PowerCellSmallPrinted
suffix: Empty
parent: PowerCellSmallStandard
parent: PowerCellSmall
components:
- type: Battery
maxCharge: 360
startingCharge: 0
- type: entity
name: small high-capacity power cell
description: A rechargeable standardized power cell, size S. This is the popular and reliable version.
id: PowerCellSmallHigh
name: medium-capacity power cell
description: A rechargeable power cell. This is the popular and reliable version.
id: PowerCellMedium
suffix: Full
parent: PowerCellSmallBase
parent: BasePowerCell
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_small_hi.rsi
layers:
- state: s_hi
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: medium
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 720
startingCharge: 720
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: s_hi
- type: entity
id: PowerCellSmallHighPrinted
id: PowerCellMediumPrinted
suffix: Empty
parent: PowerCellSmallHigh
parent: PowerCellMedium
components:
- type: Battery
maxCharge: 720
startingCharge: 0
- type: entity
name: small super-capacity power cell
description: A rechargeable standardized power cell, size S. This premium high-capacity brand stores up to 50% more energy than the competition.
id: PowerCellSmallSuper
name: high-capacity power cell
description: A rechargeable standardized power cell. This premium brand stores up to 50% more energy than the competition.
id: PowerCellHigh
suffix: Full
parent: PowerCellSmallBase
parent: BasePowerCell
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_small_sup.rsi
layers:
- state: s_sup
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: high
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 1080
startingCharge: 1080
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: s_sup
- type: entity
id: PowerCellSmallSuperPrinted
id: PowerCellHighPrinted
suffix: Empty
parent: PowerCellSmallSuper
parent: PowerCellHigh
components:
- type: Battery
maxCharge: 1080
startingCharge: 0
- type: entity
name: small hyper-capacity power cell
description: A rechargeable standardized power cell, size S. This one looks like a rare and powerful prototype.
id: PowerCellSmallHyper
name: hyper-capacity power cell
description: A rechargeable standardized power cell. This one looks like a rare and powerful prototype.
id: PowerCellHyper
suffix: Full
parent: PowerCellSmallBase
parent: BasePowerCell
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_small_hy.rsi
layers:
- state: s_hy
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: hyper
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 1800
startingCharge: 1800
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: s_hy
- type: entity
id: PowerCellSmallHyperPrinted
id: PowerCellHyperPrinted
suffix: Empty
parent: PowerCellSmallHyper
parent: PowerCellHyper
components:
- type: Battery
maxCharge: 1800
@@ -173,289 +152,41 @@
- type: entity
name: small microreactor cell
description: A rechargeable standardized microreactor cell, size S. Intended for low-power devices, it slowly recharges by itself.
id: PowerCellSmallAutorecharge
description: A rechargeable standardized microreactor cell. Intended for low-power devices, it slowly recharges by itself.
id: PowerCellMicroreactor
suffix: Full
parent: PowerCellSmallBase
parent: BasePowerCell
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_small_autorecharge.rsi
layers:
- state: s_ar
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: microreactor
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 50
startingCharge: 50
- type: BatterySelfRecharger
autoRecharge: true
autoRechargeRate: 0.16667 #takes about 5 minutes to charge itself back to full
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: s_ar
- type: entity
name: hardsuit helmet power cell
description: A small cell that recharges itself intended for hardsuit helmets.
id: PowerCellHardsuitHelmet
suffix: Full
parent: PowerCellSmallBase
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_small_autorecharge.rsi
layers:
- state: s_ar
- type: Battery
maxCharge: 600 #lights drain 3/s but recharge of 2 makes this 1/s. Therefore 600 is 10 minutes of light.
startingCharge: 600
- type: BatterySelfRecharger
autoRecharge: true
autoRechargeRate: 2 #recharge of 2 makes total drain 1w / s so max charge is 1:1 with time. Time to fully charge should be 5 minutes. Having recharge gives light an extended flicker period which gives you some warning to return to light area.
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: s_ar
- type: entity
name: antique power cell prototype
description: A small cell that self recharges. Used in old laser arms research.
id: PowerCellAntiqueProto
parent: PowerCellSmallBase
parent: BasePowerCell
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_small_autorecharge.rsi
layers:
- state: s_ar
- map: [ "enum.PowerCellVisualLayers.Base" ]
state: antique
- map: [ "enum.PowerCellVisualLayers.Unshaded" ]
state: o2
shader: unshaded
- type: Battery
maxCharge: 1200
startingCharge: 1200
- type: BatterySelfRecharger
autoRecharge: true
autoRechargeRate: 40
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: s_ar
- type: entity
name: medium standard power cell
description: A rechargeable standardized power cell, size M. This is the cheapest kind you can find.
id: PowerCellMediumStandard
suffix: Full
parent: PowerCellMediumBase
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_medium_st.rsi
layers:
- state: m_st
- type: Battery
maxCharge: 2160
startingCharge: 2160
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: m_st
- type: entity
id: PowerCellMediumStandardPrinted
suffix: Empty
parent: PowerCellMediumStandard
components:
- type: Battery
maxCharge: 2160
startingCharge: 0
- type: entity
name: medium high-capacity power cell
description: A rechargeable standardized power cell, size M. This is the popular and reliable version.
id: PowerCellMediumHigh
suffix: Full
parent: PowerCellMediumBase
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_medium_hi.rsi
layers:
- state: m_hi
- type: Battery
maxCharge: 2880
startingCharge: 2880
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: m_hi
- type: entity
id: PowerCellMediumHighPrinted
suffix: Empty
parent: PowerCellMediumHigh
components:
- type: Battery
maxCharge: 2880
startingCharge: 0
- type: entity
name: medium super-capacity power cell
description: A rechargeable standardized power cell, size M. This premium high-capacity brand stores up to 50% more energy than the competition.
id: PowerCellMediumSuper
suffix: Full
parent: PowerCellMediumBase
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_medium_sup.rsi
layers:
- state: m_sup
- type: Battery
maxCharge: 3600
startingCharge: 3600
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: m_sup
- type: entity
id: PowerCellMediumSuperPrinted
suffix: Empty
parent: PowerCellMediumSuper
components:
- type: Battery
maxCharge: 3600
startingCharge: 0
- type: entity
name: medium hyper-capacity power cell
description: A rechargeable standardized power cell, size M. This one looks like a rare and powerful prototype.
id: PowerCellMediumHyper
suffix: Full
parent: PowerCellMediumBase
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_medium_hy.rsi
layers:
- state: m_hy
- type: Battery
maxCharge: 5400
startingCharge: 5400
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: m_hy
- type: entity
id: PowerCellMediumHyperPrinted
suffix: Empty
parent: PowerCellMediumHyper
components:
- type: Battery
maxCharge: 5400
startingCharge: 0
- type: entity
name: large standard power cell
description: A rechargeable standardized power cell, size L. This is the cheapest kind you can find.
id: PowerCellLargeStandard
suffix: Full
parent: PowerCellLargeBase
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_large_st.rsi
layers:
- state: l_st
- type: Battery
maxCharge: 9000
startingCharge: 9000
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: l_st
- type: entity
id: PowerCellLargeStandardPrinted
suffix: Empty
parent: PowerCellLargeStandard
components:
- type: Battery
maxCharge: 9000
startingCharge: 0
- type: entity
name: large high-capacity power cell
description: A rechargeable standardized power cell, size L. This is the popular and reliable version.
id: PowerCellLargeHigh
suffix: Full
parent: PowerCellLargeBase
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_large_hi.rsi
layers:
- state: l_hi
- type: Battery
maxCharge: 18000
startingCharge: 18000
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: l_hi
- type: entity
id: PowerCellLargeHighPrinted
suffix: Empty
parent: PowerCellLargeHigh
components:
- type: Battery
maxCharge: 18000
startingCharge: 0
- type: entity
name: large super-capacity power cell
description: A rechargeable standardized power cell, size M. This premium high-capacity brand stores up to 50% more energy than the competition.
id: PowerCellLargeSuper
suffix: Full
parent: PowerCellLargeBase
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_large_sup.rsi
layers:
- state: l_sup
- type: Battery
maxCharge: 54000
startingCharge: 54000
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: l_sup
- type: entity
id: PowerCellLargeSuperPrinted
suffix: Empty
parent: PowerCellLargeSuper
components:
- type: Battery
maxCharge: 54000
startingCharge: 0
- type: entity
name: large hyper-capacity power cell
description: A rechargeable standardized power cell, size L. This one looks like a rare and powerful prototype.
id: PowerCellLargeHyper
suffix: Full
parent: PowerCellLargeBase
components:
- type: Sprite
sprite: Objects/Power/PowerCells/power_cell_large_hy.rsi
layers:
- state: l_hy
- type: Battery
maxCharge: 72000
startingCharge: 72000
- type: Appearance
visuals:
- type: PowerCellVisualizer
prefix: l_hy
- type: entity
id: PowerCellLargeHyperPrinted
suffix: Empty
parent: PowerCellLargeHyper
components:
- type: Battery
maxCharge: 72000
startingCharge: 0

View File

@@ -27,7 +27,7 @@
shader: unshaded
- type: PowerCellSlot
cellSlot:
startingItem: PowerCellSmallHigh
startingItem: PowerCellMedium
- type: ContainerContainer
containers:
cell_slot: !type:ContainerSlot
@@ -60,7 +60,7 @@
components:
- type: PowerCellSlot
cellSlot:
startingItem: PowerCellSmallSuper
startingItem: PowerCellHigh
- type: HandheldLight
addPrefix: false
inhandVisuals:

View File

@@ -29,7 +29,7 @@
- type: ToggleableLightVisuals
- type: PowerCellSlot
cellSlot:
startingItem: PowerCellSmallHigh
startingItem: PowerCellMedium
- type: entity
name: extra-bright lantern

View File

@@ -193,15 +193,9 @@
- FlashPayload
- Signaller
- SignalTrigger
- PowerCellSmallStandard
- PowerCellSmallHigh
- PowerCellSmallSuper
- PowerCellMediumStandard
- PowerCellMediumHigh
- PowerCellMediumSuper
- PowerCellLargeStandard
- PowerCellLargeHigh
- PowerCellLargeSuper
- PowerCellSmall
- PowerCellMedium
- PowerCellHigh
- type: ActivatableUI
key: enum.LatheUiKey.Key #Yes only having 1 of them here doesn't break anything
- type: ActivatableUIRequiresPower

View File

@@ -1,16 +1,20 @@
- type: latheRecipe
id: PowerCellSmallStandard
icon: Objects/Power/PowerCells/power_cell_small_st.rsi/s_st.png
result: PowerCellSmallStandardPrinted
id: PowerCellSmall
icon:
sprite: Objects/Power/power_cells.rsi
state: small
result: PowerCellSmallPrinted
completetime: 1
materials:
Steel: 100
Plastic: 50
- type: latheRecipe
id: PowerCellSmallHigh
icon: Objects/Power/PowerCells/power_cell_small_hi.rsi/s_hi.png
result: PowerCellSmallHighPrinted
id: PowerCellMedium
icon:
sprite: Objects/Power/power_cells.rsi
state: medium
result: PowerCellMediumPrinted
completetime: 6
materials:
Steel: 300
@@ -19,75 +23,14 @@
Gold: 10
- type: latheRecipe
id: PowerCellSmallSuper
icon: Objects/Power/PowerCells/power_cell_small_sup.rsi/s_sup.png
result: PowerCellSmallSuperPrinted
id: PowerCellHigh
icon:
sprite: Objects/Power/power_cells.rsi
state: high
result: PowerCellHighPrinted
completetime: 10
materials:
Steel: 300
Glass: 400
Plastic: 200
Gold: 50
# The resource required is scaled to their power capacity
- type: latheRecipe
id: PowerCellMediumStandard
icon: Objects/Power/PowerCells/power_cell_medium_st.rsi/m_st.png
result: PowerCellMediumStandardPrinted
completetime: 1
materials:
Steel: 600
Plastic: 300
- type: latheRecipe
id: PowerCellMediumHigh
icon: Objects/Power/PowerCells/power_cell_medium_hi.rsi/m_hi.png
result: PowerCellMediumHighPrinted
completetime: 6
materials:
Steel: 1800
Glass: 1800
Plastic: 600
Gold: 60
- type: latheRecipe
id: PowerCellMediumSuper
icon: Objects/Power/PowerCells/power_cell_medium_sup.rsi/m_sup.png
result: PowerCellMediumSuperPrinted
completetime: 10
materials:
Steel: 1800
Glass: 2400
Plastic: 1200
Gold: 300
- type: latheRecipe
id: PowerCellLargeStandard
icon: Objects/Power/PowerCells/power_cell_large_st.rsi/l_st.png
result: PowerCellLargeStandardPrinted
completetime: 1
materials:
Steel: 2500
Plastic: 1250
- type: latheRecipe
id: PowerCellLargeHigh
icon: Objects/Power/PowerCells/power_cell_large_hi.rsi/l_hi.png
result: PowerCellLargeHighPrinted
completetime: 6
materials:
Steel: 7500
Glass: 7500
Plastic: 2500
Gold: 250
- type: latheRecipe
id: PowerCellLargeSuper
icon: Objects/Power/PowerCells/power_cell_large_sup.rsi/l_sup.png
result: PowerCellLargeSuperPrinted
completetime: 10
materials:
Steel: 7500
Glass: 10000
Plastic: 5000
Gold: 1250

View File

@@ -1,15 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "https://github.com/tgstation/tgstation/commit/7dcdbc1468ffdc8689b984cb6b181d48ae41dbf2",
"states": [
{
"name": "potato_battery",
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 B

View File

@@ -1,40 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/",
"states": [
{
"name": "l_hi",
},
{
"name": "l_hi_0",
"delays": [
[
0.2,
0.2
]
]
},
{
"name": "l_hi_100",
},
{
"name": "l_hi_25",
},
{
"name": "l_hi_50",
},
{
"name": "l_hi_75",
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 221 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 B

View File

@@ -1,40 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/",
"states": [
{
"name": "l_hy",
},
{
"name": "l_hy_0",
"delays": [
[
0.2,
0.2
]
]
},
{
"name": "l_hy_100",
},
{
"name": "l_hy_25",
},
{
"name": "l_hy_50",
},
{
"name": "l_hy_75",
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 B

View File

@@ -1,40 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/",
"states": [
{
"name": "l_st",
},
{
"name": "l_st_0",
"delays": [
[
0.2,
0.2
]
]
},
{
"name": "l_st_100",
},
{
"name": "l_st_25",
},
{
"name": "l_st_50",
},
{
"name": "l_st_75",
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 B

View File

@@ -1,40 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/",
"states": [
{
"name": "l_sup",
},
{
"name": "l_sup_0",
"delays": [
[
0.2,
0.2
]
]
},
{
"name": "l_sup_100",
},
{
"name": "l_sup_25",
},
{
"name": "l_sup_50",
},
{
"name": "l_sup_75",
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 B

View File

@@ -1,40 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/",
"states": [
{
"name": "m_hi",
},
{
"name": "m_hi_0",
"delays": [
[
0.2,
0.2
]
]
},
{
"name": "m_hi_100",
},
{
"name": "m_hi_25",
},
{
"name": "m_hi_50",
},
{
"name": "m_hi_75",
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 B

View File

@@ -1,40 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/",
"states": [
{
"name": "m_hy",
},
{
"name": "m_hy_0",
"delays": [
[
0.2,
0.2
]
]
},
{
"name": "m_hy_100",
},
{
"name": "m_hy_25",
},
{
"name": "m_hy_50",
},
{
"name": "m_hy_75",
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

View File

@@ -1,40 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/",
"states": [
{
"name": "m_st",
},
{
"name": "m_st_0",
"delays": [
[
0.2,
0.2
]
]
},
{
"name": "m_st_100",
},
{
"name": "m_st_25",
},
{
"name": "m_st_50",
},
{
"name": "m_st_75",
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

View File

@@ -1,40 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/",
"states": [
{
"name": "m_sup",
},
{
"name": "m_sup_0",
"delays": [
[
0.2,
0.2
]
]
},
{
"name": "m_sup_100",
},
{
"name": "m_sup_25",
},
{
"name": "m_sup_50",
},
{
"name": "m_sup_75",
}
]
}

View File

@@ -1,40 +0,0 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "https://github.com/discordia-space/CEV-Eris/blob/master/icons/obj/power_cells.dmi",
"states": [
{
"name": "s_ar",
},
{
"name": "s_ar_0",
"delays": [
[
0.2,
0.2
]
]
},
{
"name": "s_ar_100",
},
{
"name": "s_ar_25",
},
{
"name": "s_ar_50",
},
{
"name": "s_ar_75",
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

View File

@@ -1 +0,0 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "s_hi", "delays": [[1.0]]}, {"name": "s_hi_0", "delays": [[0.2, 0.2]]}, {"name": "s_hi_100", "delays": [[1.0]]}, {"name": "s_hi_25", "delays": [[1.0]]}, {"name": "s_hi_50", "delays": [[1.0]]}, {"name": "s_hi_75", "delays": [[1.0]]}]}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Some files were not shown because too many files have changed in this diff Show More