NPCCombatSystem.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Content.Server.Interaction;
  2. using Content.Server.Weapons.Ranged.Systems;
  3. using Content.Shared.Weapons.Melee;
  4. using Robust.Shared.Audio;
  5. using Robust.Shared.Audio.Systems;
  6. using Robust.Shared.Map;
  7. using Robust.Shared.Physics.Systems;
  8. using Robust.Shared.Random;
  9. using Robust.Shared.Timing;
  10. namespace Content.Server.NPC.Systems;
  11. /// <summary>
  12. /// Handles combat for NPCs.
  13. /// </summary>
  14. public sealed partial class NPCCombatSystem : EntitySystem
  15. {
  16. [Dependency] private readonly IGameTiming _timing = default!;
  17. [Dependency] private readonly IMapManager _mapManager = default!;
  18. [Dependency] private readonly IRobustRandom _random = default!;
  19. [Dependency] private readonly GunSystem _gun = default!;
  20. [Dependency] private readonly InteractionSystem _interaction = default!;
  21. [Dependency] private readonly SharedAudioSystem _audio = default!;
  22. [Dependency] private readonly NPCSteeringSystem _steering = default!;
  23. [Dependency] private readonly SharedMeleeWeaponSystem _melee = default!;
  24. [Dependency] private readonly SharedTransformSystem _transform = default!;
  25. /// <summary>
  26. /// If disabled we'll move into range but not attack.
  27. /// </summary>
  28. public bool Enabled = true;
  29. public override void Initialize()
  30. {
  31. base.Initialize();
  32. InitializeMelee();
  33. InitializeRanged();
  34. }
  35. public override void Update(float frameTime)
  36. {
  37. base.Update(frameTime);
  38. UpdateMelee(frameTime);
  39. UpdateRanged(frameTime);
  40. }
  41. }