1
0

RejuvenateTest.cs 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using Content.Server.Administration.Commands;
  2. using Content.Server.Administration.Systems;
  3. using Content.Shared.Damage;
  4. using Content.Shared.Damage.Prototypes;
  5. using Content.Shared.FixedPoint;
  6. using Content.Shared.Mobs.Components;
  7. using Content.Shared.Mobs.Systems;
  8. using Robust.Shared.GameObjects;
  9. using Robust.Shared.Map;
  10. using Robust.Shared.Prototypes;
  11. namespace Content.IntegrationTests.Tests.Commands
  12. {
  13. [TestFixture]
  14. [TestOf(typeof(RejuvenateSystem))]
  15. public sealed class RejuvenateTest
  16. {
  17. [TestPrototypes]
  18. private const string Prototypes = @"
  19. - type: entity
  20. name: DamageableDummy
  21. id: DamageableDummy
  22. components:
  23. - type: Damageable
  24. damageContainer: Biological
  25. - type: MobState
  26. - type: MobThresholds
  27. thresholds:
  28. 0: Alive
  29. 200: Dead
  30. ";
  31. [Test]
  32. public async Task RejuvenateDeadTest()
  33. {
  34. await using var pair = await PoolManager.GetServerClient();
  35. var server = pair.Server;
  36. var entManager = server.ResolveDependency<IEntityManager>();
  37. var prototypeManager = server.ResolveDependency<IPrototypeManager>();
  38. var mobStateSystem = entManager.System<MobStateSystem>();
  39. var damSystem = entManager.System<DamageableSystem>();
  40. var rejuvenateSystem = entManager.System<RejuvenateSystem>();
  41. await server.WaitAssertion(() =>
  42. {
  43. var human = entManager.SpawnEntity("DamageableDummy", MapCoordinates.Nullspace);
  44. DamageableComponent damageable = null;
  45. MobStateComponent mobState = null;
  46. // Sanity check
  47. Assert.Multiple(() =>
  48. {
  49. Assert.That(entManager.TryGetComponent(human, out damageable));
  50. Assert.That(entManager.TryGetComponent(human, out mobState));
  51. });
  52. Assert.Multiple(() =>
  53. {
  54. Assert.That(mobStateSystem.IsAlive(human, mobState), Is.True);
  55. Assert.That(mobStateSystem.IsCritical(human, mobState), Is.False);
  56. Assert.That(mobStateSystem.IsDead(human, mobState), Is.False);
  57. Assert.That(mobStateSystem.IsIncapacitated(human, mobState), Is.False);
  58. });
  59. // Kill the entity
  60. DamageSpecifier damage = new(prototypeManager.Index<DamageGroupPrototype>("Toxin"), FixedPoint2.New(10000000));
  61. damSystem.TryChangeDamage(human, damage, true);
  62. // Check that it is dead
  63. Assert.Multiple(() =>
  64. {
  65. Assert.That(mobStateSystem.IsAlive(human, mobState), Is.False);
  66. Assert.That(mobStateSystem.IsCritical(human, mobState), Is.False);
  67. Assert.That(mobStateSystem.IsDead(human, mobState), Is.True);
  68. Assert.That(mobStateSystem.IsIncapacitated(human, mobState), Is.True);
  69. });
  70. // Rejuvenate them
  71. rejuvenateSystem.PerformRejuvenate(human);
  72. // Check that it is alive and with no damage
  73. Assert.Multiple(() =>
  74. {
  75. Assert.That(mobStateSystem.IsAlive(human, mobState), Is.True);
  76. Assert.That(mobStateSystem.IsCritical(human, mobState), Is.False);
  77. Assert.That(mobStateSystem.IsDead(human, mobState), Is.False);
  78. Assert.That(mobStateSystem.IsIncapacitated(human, mobState), Is.False);
  79. Assert.That(damageable.TotalDamage, Is.EqualTo(FixedPoint2.Zero));
  80. });
  81. });
  82. await pair.CleanReturnAsync();
  83. }
  84. }
  85. }