-
Notifications
You must be signed in to change notification settings - Fork 0
DotNet.Ships.Class.Shields
EliteDangerousAlmanac / Ships / Shields
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Shields.cs:175
Shield strength in megajoules, and the resistances that decide what that strength is worth against each damage type.
A generator's strength multiplier is read off a curve against the ship's hull mass: the bare hull, and not the loaded ship, so fitting more modules never weakens the shields. Past the generator's maximum mass it raises no shield at all.
Resistances stack separately, with their own diminishing returns, in Resistances. Everything here is pip-free. The SYS capacitor's own resistance, and the effective figures it buys, are in ShieldCapacitor.
Reference implementation: EDCD/Coriolis, src/app/shipyard/Calculations.js. The algorithm is ported as fact rather than as code. See ATTRIBUTIONS.md for credit and licence terms.
staticMassCurveMultiplier(hullMass,generator):double
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Shields.cs:195
A shield generator's strength multiplier at a given hull mass.
double
The hull's mass, in tonnes, and not the loaded ship's.
The generator's curve, post-engineering.
double
The multiplier to apply to the hull's base shield strength. It is zero past the generator's maximum mass, because a generator cannot raise a shield around a hull heavier than it is rated for, and zero for a generator whose record is missing part of its curve.
This is the same curve Mobility.ThrusterMassCurveMultiplier reads a thruster's performance off, and the two agree on every input they both accept.
ArgumentNullException
generator is null.
ArgumentOutOfRangeException
The hull mass is not a finite number of zero or more, or the generator carries all six curve values and they are not a physical curve. A curve that is merely absent still answers zero: a record missing a value is data that is missing, not data that is wrong.
staticMetrics(input):ShieldMetrics
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Shields.cs:246
A build's bare shields: the strength, where it comes from, and the resistances the generator and the boosters stack up between them.
The hull's mass and base shield strength, the fitted generator, and any powered boosters and Guardian reinforcement.
The build's shield metrics. With no generator fitted there is no shield for a resistance to apply to: every strength figure is zero, any reinforcement passed is dropped, and the resistances and the effective hit points are zero for every damage type.
These are the pip-free figures, the ones an outfitting screen shows. The SYS capacitor is a separate story with its own entry point, ShieldCapacitor.Metrics, which takes what this answers and folds a pip allocation into it.
ArgumentNullException
input is null.
ArgumentOutOfRangeException
With a generator fitted, the hull mass is not a finite number of zero or more, or the generator carries a complete but non-physical curve. A generator whose record is only missing part of its curve is not a failure: the hull mass is never read, and every strength figure is zero.
staticStrength(hullMass,baseShieldStrength,generator,boostMultiplier?):double
Defined in: dotnet/src/EliteDangerousAlmanac/Ships/Shields.cs:212
A build's shield strength, in megajoules.
double
The hull's mass, in tonnes.
double
The hull's base shield strength, in megajoules.
The fitted generator, post-engineering.
double = 1
The boosters' combined multiplier, which is one with none fitted.
double
The shield's megajoules, before any Guardian reinforcement addition. It is zero wherever MassCurveMultiplier is.
ArgumentNullException
generator is null.
ArgumentOutOfRangeException
The hull mass is not a finite number of zero or more, or the generator carries a complete but non-physical curve.
Guides
Astronomy
Classes (16)
Records (29)
- AbsoluteBoxel
- AtmosphereComponent
- BodyComposition
- BodyParent
- BodyProperties
- BodyRing
- BodyScanEvent
- BoxelCodexRegion
- BoxelLetters
- CodexRegion
- CodexRegionBounds
- DecodedSystemAddress
- GalacticPlanePosition
- GalacticPosition
- HandAuthoredRegion
- HandAuthoredSphere
- MassStabilityAssessment
- NamingRegionOrigin
- Nebula
- NebulaNearby
- OrbitExtents
- PermitLock
- PermitLockedSystem
- RingDynamics
- RocheLimits
- SectorGridPosition
- SpinOrbitResonance
- SurfaceMaterial
- SystemNameParts
Commodities
Classes (2)
Records (1)
Enumerations (1)
Equipment
Classes (8)
Records (19)
- FittedPersonalModification
- FittedPersonalWeapon
- PersonalEngineeringIngredient
- PersonalModification
- PersonalModifier
- PersonalMount
- PersonalTool
- PersonalWeapon
- PersonalWeaponGrade
- PersonalWeaponMetrics
- ReloadTime
- ScopeMagnification
- Suit
- SuitGrade
- SuitIdentity
- SuitLoadout
- SuitLoadoutEvent
- SuitLoadoutImportOutcome
- SuitLoadoutModuleEvent
Materials
Classes (5)
Records (2)
Enumerations (4)
Ships
Classes (42)
- Ammunition
- Armour
- BlueprintCatalogue
- BlueprintCosts
- BlueprintJournal
- BuildMetrics
- BuildSlots
- CalculationResult\<T\>
- CalculationResult
- DefaultLoadouts
- Distributor
- Engineering
- EngineeringOptions
- ExperimentalEffectCatalogue
- ExperimentalEffectCosts
- Gunsights
- Heat
- JumpRange
- LoadoutCalculations
- LoadoutEditException
- LoadoutValidator
- Mobility
- MobilityCapacitor
- ModuleCapabilities
- ModuleCatalogue
- ModuleLimits
- ModuleStats
- OutfittingFamilies
- Power
- PreEngineeredCatalogue
- PreEngineeredStats
- Resistances
- ShieldCapacitor
- ShieldRecovery
- Shields
- ShipCatalogue
- ShipLoadout
- Slef
- SlotRestrictions
- SourcePurchase
- Weapons
- WeaponsCapacitor
Records (115)
- AmmunitionCapacity
- ApplyBlueprintOptions
- ArmourInput
- ArmourMetrics
- AvailableBlueprint
- Blueprint
- BlueprintCost
- BlueprintFeature
- BlueprintGrade
- BuildCost
- BuildCredits
- BuildLoad
- BuildMass
- BuildSlot
- BuildWeaponMetrics
- BulkheadParams
- CalculationIssue
- CellBankInput
- CellBankMetrics
- CellBankSummary
- CoreSlots
- DamageComponents
- DamageDistribution
- DamageSplit
- DamageTypeValues
- DefaultLoadout
- DefaultLoadoutModule
- DistributorCapacitorMetrics
- DistributorInput
- DistributorMetrics
- DistributorPips
- EngineeringAmbiguous
- EngineeringEditDetail
- EngineeringGradeEdit
- EngineeringMaterial
- EngineeringModifier
- EngineeringOptionGroup
- EngineeringRerolled
- EngineeringUnresolved
- ExperimentalContribution
- ExperimentalEffect
- ExperimentalEffectEdit
- FittedModule
- FittedWeaponMetrics
- FixedMountRepair
- FrameShiftDriveParams
- GunsightOffset
- GunsightPoint
- HardpointSlotSpec
- HeatInput
- HeatMetrics
- HeatState
- HeatWeapon
- HullReinforcementParams
- JumpRangeSummary
- LoadoutCalculationModule
- LoadoutEvent
- LoadoutExportOptions
- LoadoutFuelCapacity
- LoadoutImportOutcome
- LoadoutIssue
- LoadoutMass
- LoadoutModule
- LoadoutSlot
- LoadoutValidation
- LoadoutValidationInput
- MobilityCapacitorMetrics
- MobilityInput
- MobilityMetrics
- ModuleDefaulted
- ModuleEmptied
- ModuleEngineering
- ModuleFitProblem
- ModuleLimitEntry
- ModuleLimitIncrease
- ModuleLimitUsage
- ModuleReinforcementParams
- OptionalSlotSpec
- OutfittingModule
- ParsedSlot
- PowerBand
- PowerBudget
- PowerConsumer
- PowerConsumerResult
- PreEngineeredModifier
- PreEngineeredVariant
- ProjectileRangeBoundaries
- ShieldBoosterParams
- ShieldCapacitorInput
- ShieldCapacitorMetrics
- ShieldGeneratorParams
- ShieldInput
- ShieldMetrics
- ShieldRecoveryInput
- ShieldRecoveryMetrics
- Ship
- ShipSlots
- SlefDiagnostic
- SlefEntry
- SlefExportOptions
- SlefHeader
- SlefInspection
- SourceModuleValue
- SourcePurchaseRecord
- StandardLoadFigures
- ThrusterCurveParams
- ThrusterParams
- TotalRangeDetails
- UnpricedModule
- ValidationModule
- WeaponMetrics
- WeaponsCapacitorInput
- WeaponsCapacitorMetrics
- WeaponStats
- WeaponTotals
Interfaces (1)
Enumerations (35)
- BlueprintRoute
- CalculationField
- CalculationIssueReason
- CoreSlotType
- DamageType
- EngineeringEditCode
- EngineeringEditKind
- EngineeringGroupId
- FixedMountRepairStatus
- ImmovableReason
- LoadoutCredits
- LoadoutEditErrorCode
- LoadoutImportAction
- LoadoutIssueCode
- LoadoutIssueSeverity
- LoadoutModuleOrder
- ModifierMethod
- ModuleCategory
- ModuleExclusionGroup
- ModuleFitConstraint
- ModuleGuidance
- ModuleLimitGroup
- ModuleMount
- ModuleRating
- ModuleSlot
- ModuleStat
- OutfittingFamilyId
- PreEngineeredAcquisition
- ShipSize
- SlefConstraint
- SlefDiagnosticCode
- SlotKind
- SlotRestriction
- StandardLoad
- ThrusterLoad