mirror of
https://github.com/corvax-team/ss14-wl.git
synced 2026-06-09 10:06:46 +02:00
Fix prototypes which lacked Injurable and add a test for Damageable Prototypes that can't take Damage. (#43767)
* test * first line of fixes * fixes * review * fix test fail before I merge * fix for snails godo --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
229e70fa20
commit
b3bcebc07f
@@ -0,0 +1,60 @@
|
||||
using System.Numerics;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Content.IntegrationTests.Fixtures;
|
||||
using Content.IntegrationTests.Fixtures.Attributes;
|
||||
using Content.IntegrationTests.Utility;
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Damage.Components;
|
||||
using Content.Shared.Damage.Prototypes;
|
||||
using Content.Shared.Damage.Systems;
|
||||
using Content.Shared.FixedPoint;
|
||||
using Robust.Shared.Map;
|
||||
|
||||
namespace Content.IntegrationTests.Tests.Damageable;
|
||||
|
||||
[TestFixture]
|
||||
[TestOf(typeof(DamageableComponent))]
|
||||
[TestOf(typeof(DamageableSystem))]
|
||||
public sealed class DamageAllPrototypesTest : GameTest
|
||||
{
|
||||
[SidedDependency(Side.Server)] private readonly DamageableSystem _damageableSystem = default!;
|
||||
|
||||
private static string[] _damageables = GameDataScrounger.EntitiesWithComponent("Damageable");
|
||||
|
||||
[Test]
|
||||
[TestOf(typeof(DamageableSystem))]
|
||||
[TestCaseSource(nameof(_damageables))]
|
||||
[Description("Ensures all Entity Prototypes with damageable can be damaged.")]
|
||||
public async Task TestDamageableComponents(string damageable)
|
||||
{
|
||||
var map = await Pair.CreateTestMap();
|
||||
|
||||
var entity = await SpawnAtPosition(damageable, map.GridCoords);
|
||||
|
||||
// Intentionally cannot take damage, ignore it.
|
||||
if (SEntMan.HasComponent<GodmodeComponent>(entity))
|
||||
return;
|
||||
|
||||
var canBeDamaged = false;
|
||||
|
||||
foreach (var type in SProtoMan.EnumeratePrototypes<DamageTypePrototype>())
|
||||
{
|
||||
if (!_damageableSystem.CanBeDamagedBy(entity, type))
|
||||
continue;
|
||||
|
||||
canBeDamaged = true;
|
||||
|
||||
await Server.WaitPost(() =>
|
||||
{
|
||||
var damage = new DamageSpecifier(type, FixedPoint2.Epsilon);
|
||||
var previousDamage = _damageableSystem.GetTotalDamage(entity);
|
||||
_damageableSystem.ChangeDamage(entity, damage, ignoreResistances: true);
|
||||
Assert.That(_damageableSystem.GetTotalDamage(entity) == FixedPoint2.Epsilon + previousDamage);
|
||||
_damageableSystem.ClearAllDamage(entity);
|
||||
});
|
||||
}
|
||||
|
||||
// Ensure that this entity can actually be damaged.
|
||||
Assert.That(canBeDamaged);
|
||||
}
|
||||
}
|
||||
@@ -1451,6 +1451,7 @@
|
||||
Heat: 1
|
||||
- type: Damageable
|
||||
damageModifierSet: Wood
|
||||
- type: Injurable
|
||||
- type: Appearance
|
||||
- type: FireVisuals
|
||||
sprite: Effects/fire.rsi
|
||||
|
||||
@@ -201,6 +201,7 @@
|
||||
container: station_ai_mind_slot
|
||||
- type: Damageable
|
||||
damageModifierSet: StrongMetallic
|
||||
- type: Injurable
|
||||
- type: Repairable
|
||||
doAfterDelay: 10
|
||||
allowSelfRepair: false
|
||||
@@ -385,6 +386,7 @@
|
||||
density: 200
|
||||
- type: Damageable
|
||||
damageModifierSet: StrongMetallic
|
||||
- type: Injurable
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
|
||||
@@ -87,6 +87,7 @@
|
||||
- type: InteractionOutline
|
||||
- type: Clickable
|
||||
- type: Damageable
|
||||
- type: Injurable
|
||||
- type: ChameleonDisguise
|
||||
|
||||
# actions
|
||||
|
||||
@@ -159,6 +159,7 @@
|
||||
- type: InteractionOutline
|
||||
- type: Physics
|
||||
- type: Damageable
|
||||
- type: Injurable
|
||||
- type: DamageRandomPopup
|
||||
popups:
|
||||
- darts-popup-bullseye
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
shader: unshaded
|
||||
- type: Damageable
|
||||
damageModifierSet: Wood
|
||||
- type: Injurable
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
- MidImpassable
|
||||
- type: Damageable
|
||||
damageModifierSet: Wood
|
||||
- type: Injurable
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
- MidImpassable
|
||||
- type: Damageable
|
||||
damageModifierSet: Wood
|
||||
- type: Injurable
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
@@ -206,6 +207,7 @@
|
||||
layer:
|
||||
- MidImpassable
|
||||
- type: Damageable
|
||||
- type: Injurable
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
normalState: fire
|
||||
- type: Damageable
|
||||
damageModifierSet: Wood
|
||||
- type: Injurable
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger: # Excess damage, don't spawn entities
|
||||
@@ -467,4 +468,5 @@
|
||||
- !type:EmptyAllContainersBehaviour
|
||||
- !type:DoActsBehavior
|
||||
acts: [ "Destruction" ]
|
||||
- type: Injurable
|
||||
- type: StationAiWhitelist
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
effectsTable: !type:NestedSelector
|
||||
tableId: XenoArtifactEffectsDefaultTable
|
||||
- type: Damageable
|
||||
- type: Injurable
|
||||
- type: Actions
|
||||
- type: Physics
|
||||
bodyType: KinematicController
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
ajar: ""
|
||||
open: ""
|
||||
- type: Damageable
|
||||
- type: Injurable
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
|
||||
@@ -37,6 +37,8 @@
|
||||
mask:
|
||||
- MobMask
|
||||
- type: Damageable
|
||||
- type: Injurable
|
||||
damageContainer: Inorganic
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger: # Excess damage, don't spawn entities
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
sprite: Structures/Specific/anomaly.rsi
|
||||
- type: InteractionOutline
|
||||
- type: Clickable
|
||||
- type: Damageable
|
||||
- type: Appearance
|
||||
- type: AnimationPlayer
|
||||
- type: GuideHelp
|
||||
|
||||
@@ -177,6 +177,8 @@
|
||||
- type: Climbable
|
||||
- type: Damageable
|
||||
damageModifierSet: Wood
|
||||
- type: Injurable
|
||||
damageContainer: StructuralInorganic
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger: # Excess damage, don't spawn entities
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
- type: Physics
|
||||
- type: Damageable
|
||||
damageModifierSet: Wood
|
||||
- type: Injurable
|
||||
- type: Temperature
|
||||
- type: TemperatureDamage
|
||||
heatDamage:
|
||||
|
||||
Reference in New Issue
Block a user