* Update DamageableSystem to modern standards * DamageContainerId -> DamageContainerID with lint flag * Replace strings with protoids * Make CVar subscription declarations all consistently whitespaced * ChangeDamage -> TryChangeDamage, cope with C# jank * Revert event signature changes * Restore a comment * Re-add two queries * Init the queries * Use appearanceQuery in DamageChanged * Use damageableQuery in TryChangeDamage * Use damageableQuery in SetDamageModifierSetId * Final cleanup, fix sandboxing * Rectify ExplosionSystem:::ProcessEntity's call to TryChangeDamage * Re-organize DamageableSystem * first big fuck you breaking change. * THATS A LOT OF DAMAGE!!! * Fix test fails * test fixes 2 * push it --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
47 lines
1.6 KiB
C#
47 lines
1.6 KiB
C#
using Content.IntegrationTests.Tests.Interaction;
|
|
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.Prototypes;
|
|
|
|
namespace Content.IntegrationTests.Tests.Construction.Interaction;
|
|
|
|
public sealed class WindowRepair : InteractionTest
|
|
{
|
|
private static readonly ProtoId<DamageTypePrototype> BluntDamageType = "Blunt";
|
|
|
|
[Test]
|
|
public async Task RepairReinforcedWindow()
|
|
{
|
|
await SpawnTarget("ReinforcedWindow");
|
|
|
|
// Damage the entity.
|
|
var sys = SEntMan.System<DamageableSystem>();
|
|
var comp = Comp<DamageableComponent>();
|
|
var damageType = Server.ProtoMan.Index(BluntDamageType);
|
|
var damage = new DamageSpecifier(damageType, FixedPoint2.New(10));
|
|
Assert.That(comp.Damage.GetTotal(), Is.EqualTo(FixedPoint2.Zero));
|
|
await Server.WaitPost(() => sys.TryChangeDamage(SEntMan.GetEntity(Target).Value, damage, ignoreResistances: true));
|
|
await RunTicks(5);
|
|
Assert.That(comp.Damage.GetTotal(), Is.GreaterThan(FixedPoint2.Zero));
|
|
|
|
// Repair the entity
|
|
await InteractUsing(Weld);
|
|
Assert.That(comp.Damage.GetTotal(), Is.EqualTo(FixedPoint2.Zero));
|
|
|
|
// Validate that we can still deconstruct the entity (i.e., that welding deconstruction is not blocked).
|
|
await Interact(
|
|
Weld,
|
|
Screw,
|
|
Pry,
|
|
Weld,
|
|
Screw,
|
|
Wrench);
|
|
AssertDeleted();
|
|
await AssertEntityLookup((RGlass, 2));
|
|
}
|
|
}
|
|
|