SummonableComponent.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Robust.Shared.Audio;
  2. using Robust.Shared.Prototypes;
  3. using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
  4. namespace Content.Server.Bible.Components
  5. {
  6. /// <summary>
  7. /// This lets you summon a mob or item with an alternative verb on the item
  8. /// </summary>
  9. [RegisterComponent]
  10. public sealed partial class SummonableComponent : Component
  11. {
  12. /// <summary>
  13. /// Default sound to play when entity is summoned.
  14. /// </summary>
  15. private static readonly ProtoId<SoundCollectionPrototype> DefaultSummonSound = new("Summon");
  16. /// <summary>
  17. /// Sound to play when entity is summoned.
  18. /// </summary>
  19. [DataField]
  20. public SoundSpecifier SummonSound = new SoundCollectionSpecifier(DefaultSummonSound, AudioParams.Default.WithVolume(-4f));
  21. /// <summary>
  22. /// Used for a special item only the Chaplain can summon. Usually a mob, but supports regular items too.
  23. /// </summary>
  24. [DataField("specialItem", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
  25. public string? SpecialItemPrototype = null;
  26. public bool AlreadySummoned = false;
  27. [DataField("requiresBibleUser")]
  28. public bool RequiresBibleUser = true;
  29. /// <summary>
  30. /// The specific creature this summoned, if the SpecialItemPrototype has a mobstate.
  31. /// </summary>
  32. [ViewVariables]
  33. public EntityUid? Summon = null;
  34. [DataField("summonAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
  35. public string SummonAction = "ActionBibleSummon";
  36. [DataField("summonActionEntity")]
  37. public EntityUid? SummonActionEntity;
  38. /// Used for respawning
  39. [DataField("accumulator")]
  40. public float Accumulator = 0f;
  41. [DataField("respawnTime")]
  42. public float RespawnTime = 180f;
  43. }
  44. }