Added localization of groups and types: damage, metabolism (#27368)

* Added localization of groups and types: damage, metabolism (displayed in the guide book). The text for the health analyzer, weapon damage inspection is now taken from damage prototypes

* fix damage tests

* fix damage test yml

* fix damage test prototypes

* Update Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs

* Update Content.Shared/Damage/Prototypes/DamageTypePrototype.cs

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
KrasnoshchekovPavel
2024-04-28 07:48:19 +03:00
committed by GitHub
parent f5b8b5fbdc
commit 3fcbbc0732
24 changed files with 150 additions and 51 deletions

View File

@@ -4,6 +4,7 @@ using Content.Client.Chemistry.EntitySystems;
using Content.Client.Guidebook.Richtext; using Content.Client.Guidebook.Richtext;
using Content.Client.Message; using Content.Client.Message;
using Content.Client.UserInterface.ControlExtensions; using Content.Client.UserInterface.ControlExtensions;
using Content.Shared.Body.Prototypes;
using Content.Shared.Chemistry.Reaction; using Content.Shared.Chemistry.Reaction;
using Content.Shared.Chemistry.Reagent; using Content.Shared.Chemistry.Reagent;
using JetBrains.Annotations; using JetBrains.Annotations;
@@ -128,7 +129,7 @@ public sealed partial class GuideReagentEmbed : BoxContainer, IDocumentTag, ISea
var groupLabel = new RichTextLabel(); var groupLabel = new RichTextLabel();
groupLabel.SetMarkup(Loc.GetString("guidebook-reagent-effects-metabolism-group-rate", groupLabel.SetMarkup(Loc.GetString("guidebook-reagent-effects-metabolism-group-rate",
("group", group), ("rate", effect.MetabolismRate))); ("group", _prototype.Index<MetabolismGroupPrototype>(group).LocalizedName), ("rate", effect.MetabolismRate)));
var descriptionLabel = new RichTextLabel var descriptionLabel = new RichTextLabel
{ {
Margin = new Thickness(25, 0, 10, 0) Margin = new Thickness(25, 0, 10, 0)

View File

@@ -139,7 +139,7 @@ namespace Content.Client.HealthAnalyzer.UI
var groupTitleText = $"{Loc.GetString( var groupTitleText = $"{Loc.GetString(
"health-analyzer-window-damage-group-text", "health-analyzer-window-damage-group-text",
("damageGroup", Loc.GetString("health-analyzer-window-damage-group-" + damageGroupId)), ("damageGroup", _prototypes.Index<DamageGroupPrototype>(damageGroupId).LocalizedName),
("amount", damageAmount) ("amount", damageAmount)
)}"; )}";
@@ -170,7 +170,7 @@ namespace Content.Client.HealthAnalyzer.UI
var damageString = Loc.GetString( var damageString = Loc.GetString(
"health-analyzer-window-damage-type-text", "health-analyzer-window-damage-type-text",
("damageType", Loc.GetString("health-analyzer-window-damage-type-" + type)), ("damageType", _prototypes.Index<DamageTypePrototype>(type).LocalizedName),
("amount", typeAmount) ("amount", typeAmount)
); );

View File

@@ -19,36 +19,45 @@ namespace Content.IntegrationTests.Tests.Damageable
# Define some damage groups # Define some damage groups
- type: damageType - type: damageType
id: TestDamage1 id: TestDamage1
name: damage-type-blunt
- type: damageType - type: damageType
id: TestDamage2a id: TestDamage2a
name: damage-type-blunt
- type: damageType - type: damageType
id: TestDamage2b id: TestDamage2b
name: damage-type-blunt
- type: damageType - type: damageType
id: TestDamage3a id: TestDamage3a
name: damage-type-blunt
- type: damageType - type: damageType
id: TestDamage3b id: TestDamage3b
name: damage-type-blunt
- type: damageType - type: damageType
id: TestDamage3c id: TestDamage3c
name: damage-type-blunt
# Define damage Groups with 1,2,3 damage types # Define damage Groups with 1,2,3 damage types
- type: damageGroup - type: damageGroup
id: TestGroup1 id: TestGroup1
name: damage-group-brute
damageTypes: damageTypes:
- TestDamage1 - TestDamage1
- type: damageGroup - type: damageGroup
id: TestGroup2 id: TestGroup2
name: damage-group-brute
damageTypes: damageTypes:
- TestDamage2a - TestDamage2a
- TestDamage2b - TestDamage2b
- type: damageGroup - type: damageGroup
id: TestGroup3 id: TestGroup3
name: damage-group-brute
damageTypes: damageTypes:
- TestDamage3a - TestDamage3a
- TestDamage3b - TestDamage3b

View File

@@ -12,24 +12,31 @@ namespace Content.IntegrationTests.Tests.Destructible
public const string DamagePrototypes = $@" public const string DamagePrototypes = $@"
- type: damageType - type: damageType
id: TestBlunt id: TestBlunt
name: damage-type-blunt
- type: damageType - type: damageType
id: TestSlash id: TestSlash
name: damage-type-slash
- type: damageType - type: damageType
id: TestPiercing id: TestPiercing
name: damage-type-piercing
- type: damageType - type: damageType
id: TestHeat id: TestHeat
name: damage-type-heat
- type: damageType - type: damageType
id: TestShock id: TestShock
name: damage-type-shock
- type: damageType - type: damageType
id: TestCold id: TestCold
name: damage-type-cold
- type: damageGroup - type: damageGroup
id: TestBrute id: TestBrute
name: damage-group-brute
damageTypes: damageTypes:
- TestBlunt - TestBlunt
- TestSlash - TestSlash
@@ -37,6 +44,7 @@ namespace Content.IntegrationTests.Tests.Destructible
- type: damageGroup - type: damageGroup
id: TestBurn id: TestBurn
name: damage-group-burn
damageTypes: damageTypes:
- TestHeat - TestHeat
- TestShock - TestShock

View File

@@ -1,4 +1,4 @@
using Content.Server.Body.Components; using Content.Server.Body.Components;
using Content.Shared.Body.Prototypes; using Content.Shared.Body.Prototypes;
using Content.Shared.Chemistry.Reagent; using Content.Shared.Chemistry.Reagent;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -35,7 +35,7 @@ namespace Content.Server.Chemistry.ReagentEffectConditions
public override string GuidebookExplanation(IPrototypeManager prototype) public override string GuidebookExplanation(IPrototypeManager prototype)
{ {
return Loc.GetString("reagent-effect-condition-guidebook-organ-type", return Loc.GetString("reagent-effect-condition-guidebook-organ-type",
("name", prototype.Index<MetabolizerTypePrototype>(Type).Name), ("name", prototype.Index<MetabolizerTypePrototype>(Type).LocalizedName),
("shouldhave", ShouldHave)); ("shouldhave", ShouldHave));
} }
} }

View File

@@ -1,4 +1,4 @@
using Content.Shared.Chemistry.Reagent; using Content.Shared.Chemistry.Reagent;
using Content.Shared.FixedPoint; using Content.Shared.FixedPoint;
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
@@ -43,7 +43,7 @@ namespace Content.Server.Chemistry.ReagentEffectConditions
prototype.TryIndex(Reagent, out reagentProto); prototype.TryIndex(Reagent, out reagentProto);
return Loc.GetString("reagent-effect-condition-guidebook-reagent-threshold", return Loc.GetString("reagent-effect-condition-guidebook-reagent-threshold",
("reagent", reagentProto?.LocalizedName ?? "this reagent"), ("reagent", reagentProto?.LocalizedName ?? Loc.GetString("reagent-effect-condition-guidebook-this-reagent")),
("max", Max == FixedPoint2.MaxValue ? (float) int.MaxValue : Max.Float()), ("max", Max == FixedPoint2.MaxValue ? (float) int.MaxValue : Max.Float()),
("min", Min.Float())); ("min", Min.Float()));
} }

View File

@@ -1,4 +1,4 @@
using Content.Shared.Body.Prototypes; using Content.Shared.Body.Prototypes;
using Content.Shared.Chemistry.Reagent; using Content.Shared.Chemistry.Reagent;
using Content.Shared.FixedPoint; using Content.Shared.FixedPoint;
using JetBrains.Annotations; using JetBrains.Annotations;
@@ -74,7 +74,7 @@ namespace Content.Server.Chemistry.ReagentEffects
return Loc.GetString("reagent-effect-guidebook-adjust-reagent-group", return Loc.GetString("reagent-effect-guidebook-adjust-reagent-group",
("chance", Probability), ("chance", Probability),
("deltasign", MathF.Sign(Amount.Float())), ("deltasign", MathF.Sign(Amount.Float())),
("group", groupProto.ID), ("group", groupProto.LocalizedName),
("amount", MathF.Abs(Amount.Float()))); ("amount", MathF.Abs(Amount.Float())));
} }

View File

@@ -74,7 +74,7 @@ namespace Content.Server.Chemistry.ReagentEffects
damages.Add( damages.Add(
Loc.GetString("health-change-display", Loc.GetString("health-change-display",
("kind", group.ID), ("kind", group.LocalizedName),
("amount", MathF.Abs(amount.Float())), ("amount", MathF.Abs(amount.Float())),
("deltasign", sign) ("deltasign", sign)
)); ));
@@ -96,7 +96,7 @@ namespace Content.Server.Chemistry.ReagentEffects
damages.Add( damages.Add(
Loc.GetString("health-change-display", Loc.GetString("health-change-display",
("kind", kind), ("kind", prototype.Index<DamageTypePrototype>(kind).LocalizedName),
("amount", MathF.Abs(amount.Float())), ("amount", MathF.Abs(amount.Float())),
("deltasign", sign) ("deltasign", sign)
)); ));

View File

@@ -1,4 +1,4 @@
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
namespace Content.Shared.Body.Prototypes namespace Content.Shared.Body.Prototypes
{ {
@@ -7,5 +7,11 @@ namespace Content.Shared.Body.Prototypes
{ {
[IdDataField] [IdDataField]
public string ID { get; private set; } = default!; public string ID { get; private set; } = default!;
[DataField("name", required: true)]
private LocId Name { get; set; }
[ViewVariables(VVAccess.ReadOnly)]
public string LocalizedName => Loc.GetString(Name);
} }
} }

View File

@@ -1,4 +1,4 @@
using Robust.Shared.Prototypes; using Robust.Shared.Prototypes;
namespace Content.Shared.Body.Prototypes namespace Content.Shared.Body.Prototypes
{ {
@@ -9,6 +9,9 @@ namespace Content.Shared.Body.Prototypes
public string ID { get; private set; } = default!; public string ID { get; private set; } = default!;
[DataField("name", required: true)] [DataField("name", required: true)]
public string Name { get; private set; } = default!; private LocId Name { get; set; }
[ViewVariables(VVAccess.ReadOnly)]
public string LocalizedName => Loc.GetString(Name);
} }
} }

View File

@@ -17,6 +17,12 @@ namespace Content.Shared.Damage.Prototypes
{ {
[IdDataField] public string ID { get; } = default!; [IdDataField] public string ID { get; } = default!;
[DataField(required: true)]
private LocId Name { get; set; }
[ViewVariables(VVAccess.ReadOnly)]
public string LocalizedName => Loc.GetString(Name);
[DataField("damageTypes", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer<DamageTypePrototype>))] [DataField("damageTypes", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer<DamageTypePrototype>))]
public List<string> DamageTypes { get; private set; } = default!; public List<string> DamageTypes { get; private set; } = default!;
} }

View File

@@ -11,6 +11,12 @@ namespace Content.Shared.Damage.Prototypes
[IdDataField] [IdDataField]
public string ID { get; private set; } = default!; public string ID { get; private set; } = default!;
[DataField(required: true)]
private LocId Name { get; set; }
[ViewVariables(VVAccess.ReadOnly)]
public string LocalizedName => Loc.GetString(Name);
/// <summary> /// <summary>
/// The price for each 1% damage reduction in armors /// The price for each 1% damage reduction in armors
/// </summary> /// </summary>

View File

@@ -1,8 +1,10 @@
using Content.Shared.Damage.Components; using Content.Shared.Damage.Components;
using Content.Shared.Damage.Events; using Content.Shared.Damage.Events;
using Content.Shared.Damage.Prototypes;
using Content.Shared.Examine; using Content.Shared.Examine;
using Content.Shared.FixedPoint; using Content.Shared.FixedPoint;
using Content.Shared.Verbs; using Content.Shared.Verbs;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility; using Robust.Shared.Utility;
namespace Content.Shared.Damage.Systems; namespace Content.Shared.Damage.Systems;
@@ -10,6 +12,7 @@ namespace Content.Shared.Damage.Systems;
public sealed class DamageExamineSystem : EntitySystem public sealed class DamageExamineSystem : EntitySystem
{ {
[Dependency] private readonly ExamineSystemShared _examine = default!; [Dependency] private readonly ExamineSystemShared _examine = default!;
[Dependency] private readonly IPrototypeManager _prototype = default!;
public override void Initialize() public override void Initialize()
{ {
@@ -66,7 +69,7 @@ public sealed class DamageExamineSystem : EntitySystem
if (damage.Value != FixedPoint2.Zero) if (damage.Value != FixedPoint2.Zero)
{ {
msg.PushNewline(); msg.PushNewline();
msg.AddMarkup(Loc.GetString("damage-value", ("type", damage.Key), ("amount", damage.Value))); msg.AddMarkup(Loc.GetString("damage-value", ("type", _prototype.Index<DamageTypePrototype>(damage.Key).LocalizedName), ("amount", damage.Value)));
} }
} }

View File

@@ -168,45 +168,57 @@ namespace Content.Tests.Shared
private string _damagePrototypes = @" private string _damagePrototypes = @"
- type: damageType - type: damageType
id: Blunt id: Blunt
name: damage-type-blunt
- type: damageType - type: damageType
id: Slash id: Slash
name: damage-type-slash
- type: damageType - type: damageType
id: Piercing id: Piercing
name: damage-type-piercing
- type: damageType - type: damageType
id: Heat id: Heat
name: damage-type-heat
- type: damageType - type: damageType
id: Shock id: Shock
name: damage-type-shock
- type: damageType - type: damageType
id: Cold id: Cold
name: damage-type-cold
# Poison damage. Generally caused by various reagents being metabolised. # Poison damage. Generally caused by various reagents being metabolised.
- type: damageType - type: damageType
id: Poison id: Poison
name: damage-type-poison
- type: damageType - type: damageType
id: Radiation id: Radiation
name: damage-type-radiation
# Damage due to being unable to breathe. # Damage due to being unable to breathe.
# Represents not enough oxygen (or equivalent) getting to the blood. # Represents not enough oxygen (or equivalent) getting to the blood.
# Usually healed automatically if entity can breathe # Usually healed automatically if entity can breathe
- type: damageType - type: damageType
id: Asphyxiation id: Asphyxiation
name: damage-type-asphyxiation
# Damage representing not having enough blood. # Damage representing not having enough blood.
# Represents there not enough blood to supply oxygen (or equivalent). # Represents there not enough blood to supply oxygen (or equivalent).
- type: damageType - type: damageType
id: Bloodloss id: Bloodloss
name: damage-type-bloodloss
- type: damageType - type: damageType
id: Cellular id: Cellular
name: damage-type-cellular
- type: damageGroup - type: damageGroup
id: Brute id: Brute
name: damage-group-brute
damageTypes: damageTypes:
- Blunt - Blunt
- Slash - Slash
@@ -214,6 +226,7 @@ namespace Content.Tests.Shared
- type: damageGroup - type: damageGroup
id: Burn id: Burn
name: damage-group-burn
damageTypes: damageTypes:
- Heat - Heat
- Shock - Shock
@@ -225,6 +238,7 @@ namespace Content.Tests.Shared
# bloodloss, not this whole group, unless you have a wonder drug that affects both. # bloodloss, not this whole group, unless you have a wonder drug that affects both.
- type: damageGroup - type: damageGroup
id: Airloss id: Airloss
name: damage-group-airloss
damageTypes: damageTypes:
- Asphyxiation - Asphyxiation
- Bloodloss - Bloodloss
@@ -233,12 +247,14 @@ namespace Content.Tests.Shared
# Though there are probably some radioactive poisons. # Though there are probably some radioactive poisons.
- type: damageGroup - type: damageGroup
id: Toxin id: Toxin
name: damage-group-toxin
damageTypes: damageTypes:
- Poison - Poison
- Radiation - Radiation
- type: damageGroup - type: damageGroup
id: Genetic id: Genetic
name: damage-group-genetic
damageTypes: damageTypes:
- Cellular - Cellular

View File

@@ -0,0 +1,5 @@
damage-group-brute = Brute
damage-group-burn = Burn
damage-group-airloss = Airloss
damage-group-toxin = Toxin
damage-group-genetic = Genetic

View File

@@ -0,0 +1,13 @@
damage-type-asphyxiation = Asphyxiation
damage-type-bloodloss = Bloodloss
damage-type-blunt = Blunt
damage-type-cellular = Cellular
damage-type-caustic = Caustic
damage-type-cold = Cold
damage-type-heat = Heat
damage-type-piercing = Piercing
damage-type-poison = Poison
damage-type-radiation = Radiation
damage-type-shock = Shock
damage-type-slash = Slash
damage-type-structural = Structural

View File

@@ -1,4 +1,4 @@
reagent-effect-condition-guidebook-total-damage = reagent-effect-condition-guidebook-total-damage =
{ $max -> { $max ->
[2147483648] it has at least {NATURALFIXED($min, 2)} total damage [2147483648] it has at least {NATURALFIXED($min, 2)} total damage
*[other] { $min -> *[other] { $min ->
@@ -57,3 +57,5 @@ reagent-effect-condition-guidebook-has-tag =
[true] does not have [true] does not have
*[false] has *[false] has
} the tag {$tag} } the tag {$tag}
reagent-effect-condition-guidebook-this-reagent = this reagent

View File

@@ -13,26 +13,4 @@ health-analyzer-window-scan-mode-text = Scan Mode:
health-analyzer-window-scan-mode-active = ACTIVE health-analyzer-window-scan-mode-active = ACTIVE
health-analyzer-window-scan-mode-inactive = INACTIVE health-analyzer-window-scan-mode-inactive = INACTIVE
health-analyzer-window-damage-group-Brute = Brute
health-analyzer-window-damage-type-Blunt = Blunt
health-analyzer-window-damage-type-Slash = Slash
health-analyzer-window-damage-type-Piercing = Piercing
health-analyzer-window-damage-group-Burn = Burn
health-analyzer-window-damage-type-Heat = Heat
health-analyzer-window-damage-type-Shock = Shock
health-analyzer-window-damage-type-Cold = Cold
health-analyzer-window-damage-type-Caustic = Caustic
health-analyzer-window-damage-group-Airloss = Airloss
health-analyzer-window-damage-type-Asphyxiation = Asphyxiation
health-analyzer-window-damage-type-Bloodloss = Bloodloss
health-analyzer-window-damage-group-Toxin = Toxin
health-analyzer-window-damage-type-Poison = Poison
health-analyzer-window-damage-type-Radiation = Radiation
health-analyzer-window-damage-group-Genetic = Genetic
health-analyzer-window-damage-type-Cellular = Cellular
health-analyzer-window-malnutrition = Severely malnourished health-analyzer-window-malnutrition = Severely malnourished

View File

@@ -0,0 +1,7 @@
metabolism-group-poison = Poison
metabolism-group-medicine = Medicine
metabolism-group-narcotic = Narcotic
metabolism-group-alcohol = Alcohol
metabolism-group-food = Food
metabolism-group-drink = Drink
metabolism-group-gas = Gas

View File

@@ -0,0 +1,11 @@
metabolizer-type-animal = Animal
metabolizer-type-bloodsucker = Bloodsucker
metabolizer-type-dragon = Dragon
metabolizer-type-human = Human
metabolizer-type-slime = Slime
metabolizer-type-vox = Vox
metabolizer-type-rat = Rat
metabolizer-type-plant = Plant
metabolizer-type-dwarf = Dwarf
metabolizer-type-moth = Moth
metabolizer-type-arachnid = Arachnid

View File

@@ -1,22 +1,29 @@
# Default human metabolism groups. # Default human metabolism groups.
- type: metabolismGroup - type: metabolismGroup
id: Poison id: Poison
name: metabolism-group-poison
- type: metabolismGroup - type: metabolismGroup
id: Medicine id: Medicine
name: metabolism-group-medicine
- type: metabolismGroup - type: metabolismGroup
id: Narcotic id: Narcotic
name: metabolism-group-narcotic
- type: metabolismGroup - type: metabolismGroup
id: Alcohol id: Alcohol
name: metabolism-group-alcohol
- type: metabolismGroup - type: metabolismGroup
id: Food id: Food
name: metabolism-group-food
- type: metabolismGroup - type: metabolismGroup
id: Drink id: Drink
name: metabolism-group-drink
# Used for gases that have effects on being inhaled # Used for gases that have effects on being inhaled
- type: metabolismGroup - type: metabolismGroup
id: Gas id: Gas
name: metabolism-group-gas

View File

@@ -1,46 +1,46 @@
# If your species wants to metabolize stuff differently, # If your species wants to metabolize stuff differently,
# you'll likely have to tag its metabolizers with something other than Human. # you'll likely have to tag its metabolizers with something other than Human.
- type: metabolizerType - type: metabolizerType
id: Animal id: Animal
name: animal name: metabolizer-type-animal
- type: metabolizerType - type: metabolizerType
id: Bloodsucker id: Bloodsucker
name: bloodsucker name: metabolizer-type-bloodsucker
- type: metabolizerType - type: metabolizerType
id: Dragon id: Dragon
name: dragon name: metabolizer-type-dragon
- type: metabolizerType - type: metabolizerType
id: Human id: Human
name: human name: metabolizer-type-human
- type: metabolizerType - type: metabolizerType
id: Slime id: Slime
name: slime name: metabolizer-type-slime
- type: metabolizerType - type: metabolizerType
id: Vox id: Vox
name: vox name: metabolizer-type-vox
- type: metabolizerType - type: metabolizerType
id: Rat id: Rat
name: rat name: metabolizer-type-rat
- type: metabolizerType - type: metabolizerType
id: Plant id: Plant
name: plant name: metabolizer-type-plant
- type: metabolizerType - type: metabolizerType
id: Dwarf id: Dwarf
name: dwarf name: metabolizer-type-dwarf
- type: metabolizerType - type: metabolizerType
id: Moth id: Moth
name: moth name: metabolizer-type-moth
- type: metabolizerType - type: metabolizerType
id: Arachnid id: Arachnid
name: arachnid name: metabolizer-type-arachnid

View File

@@ -1,5 +1,6 @@
- type: damageGroup - type: damageGroup
id: Brute id: Brute
name: damage-group-brute
damageTypes: damageTypes:
- Blunt - Blunt
- Slash - Slash
@@ -7,6 +8,7 @@
- type: damageGroup - type: damageGroup
id: Burn id: Burn
name: damage-group-burn
damageTypes: damageTypes:
- Heat - Heat
- Shock - Shock
@@ -19,6 +21,7 @@
# bloodloss, not this whole group, unless you have a wonder drug that affects both. # bloodloss, not this whole group, unless you have a wonder drug that affects both.
- type: damageGroup - type: damageGroup
id: Airloss id: Airloss
name: damage-group-airloss
damageTypes: damageTypes:
- Asphyxiation - Asphyxiation
- Bloodloss - Bloodloss
@@ -27,11 +30,13 @@
# Though there are probably some radioactive poisons. # Though there are probably some radioactive poisons.
- type: damageGroup - type: damageGroup
id: Toxin id: Toxin
name: damage-group-toxin
damageTypes: damageTypes:
- Poison - Poison
- Radiation - Radiation
- type: damageGroup - type: damageGroup
id: Genetic id: Genetic
name: damage-group-genetic
damageTypes: damageTypes:
- Cellular - Cellular

View File

@@ -3,6 +3,7 @@
# Usually healed automatically if entity can breathe # Usually healed automatically if entity can breathe
- type: damageType - type: damageType
id: Asphyxiation id: Asphyxiation
name: damage-type-asphyxiation
armorCoefficientPrice: 5 armorCoefficientPrice: 5
armorFlatPrice: 50 armorFlatPrice: 50
@@ -11,57 +12,68 @@
# Represents there not enough blood to supply oxygen (or equivalent). # Represents there not enough blood to supply oxygen (or equivalent).
- type: damageType - type: damageType
id: Bloodloss id: Bloodloss
name: damage-type-bloodloss
armorCoefficientPrice: 5 armorCoefficientPrice: 5
armorFlatPrice: 50 armorFlatPrice: 50
- type: damageType - type: damageType
id: Blunt id: Blunt
name: damage-type-blunt
armorCoefficientPrice: 2 armorCoefficientPrice: 2
armorFlatPrice: 10 armorFlatPrice: 10
- type: damageType - type: damageType
id: Cellular id: Cellular
name: damage-type-cellular
armorCoefficientPrice: 5 armorCoefficientPrice: 5
armorFlatPrice: 30 armorFlatPrice: 30
- type: damageType - type: damageType
id: Caustic id: Caustic
name: damage-type-caustic
armorCoefficientPrice: 5 armorCoefficientPrice: 5
armorFlatPrice: 30 armorFlatPrice: 30
- type: damageType - type: damageType
id: Cold id: Cold
name: damage-type-cold
armorCoefficientPrice: 2.5 armorCoefficientPrice: 2.5
armorFlatPrice: 20 armorFlatPrice: 20
- type: damageType - type: damageType
id: Heat id: Heat
name: damage-type-heat
armorCoefficientPrice: 2.5 armorCoefficientPrice: 2.5
armorFlatPrice: 20 armorFlatPrice: 20
- type: damageType - type: damageType
id: Piercing id: Piercing
name: damage-type-piercing
armorCoefficientPrice: 2 armorCoefficientPrice: 2
armorFlatPrice: 10 armorFlatPrice: 10
# Poison damage. Generally caused by various reagents being metabolised. # Poison damage. Generally caused by various reagents being metabolised.
- type: damageType - type: damageType
id: Poison id: Poison
name: damage-type-poison
armorCoefficientPrice: 10 armorCoefficientPrice: 10
armorFlatPrice: 60 armorFlatPrice: 60
- type: damageType - type: damageType
id: Radiation id: Radiation
name: damage-type-radiation
armorCoefficientPrice: 2.5 armorCoefficientPrice: 2.5
armorFlatPrice: 16 armorFlatPrice: 16
- type: damageType - type: damageType
id: Shock id: Shock
name: damage-type-shock
armorCoefficientPrice: 2.5 armorCoefficientPrice: 2.5
armorFlatPrice: 20 armorFlatPrice: 20
- type: damageType - type: damageType
id: Slash id: Slash
name: damage-type-slash
armorCoefficientPrice: 2 armorCoefficientPrice: 2
armorFlatPrice: 10 armorFlatPrice: 10
@@ -69,5 +81,6 @@
# Exclusive for structures such as walls, airlocks and others. # Exclusive for structures such as walls, airlocks and others.
- type: damageType - type: damageType
id: Structural id: Structural
name: damage-type-structural
armorCoefficientPrice: 1 armorCoefficientPrice: 1
armorFlatPrice: 1 armorFlatPrice: 1