| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using Content.Shared.NPC.Prototypes;
- using Robust.Shared.Audio;
- using Robust.Shared.Prototypes;
- using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
- namespace Content.Server.Dragon
- {
- [RegisterComponent]
- public sealed partial class DragonComponent : Component
- {
- /// <summary>
- /// If we have active rifts.
- /// </summary>
- [DataField("rifts")]
- public List<EntityUid> Rifts = new();
- public bool Weakened => WeakenedAccumulator > 0f;
- /// <summary>
- /// When any rift is destroyed how long is the dragon weakened for
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField("weakenedDuration")]
- public float WeakenedDuration = 120f;
- /// <summary>
- /// Has a rift been destroyed and the dragon in a temporary weakened state?
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField("weakenedAccumulator")]
- public float WeakenedAccumulator = 0f;
- [ViewVariables(VVAccess.ReadWrite), DataField("riftAccumulator")]
- public float RiftAccumulator = 0f;
- /// <summary>
- /// Maximum time the dragon can go without spawning a rift before they die.
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField("maxAccumulator")] public float RiftMaxAccumulator = 300f;
- [DataField("spawnRiftAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
- public string SpawnRiftAction = "ActionSpawnRift";
- /// <summary>
- /// Spawns a rift which can summon more mobs.
- /// </summary>
- [DataField("spawnRiftActionEntity")]
- public EntityUid? SpawnRiftActionEntity;
- [ViewVariables(VVAccess.ReadWrite), DataField("riftPrototype", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
- public string RiftPrototype = "CarpRift";
- [ViewVariables(VVAccess.ReadWrite), DataField("soundDeath")]
- public SoundSpecifier? SoundDeath = new SoundPathSpecifier("/Audio/Animals/space_dragon_roar.ogg");
- [ViewVariables(VVAccess.ReadWrite), DataField("soundRoar")]
- public SoundSpecifier? SoundRoar =
- new SoundPathSpecifier("/Audio/Animals/space_dragon_roar.ogg")
- {
- Params = AudioParams.Default.WithVolume(3f),
- };
- /// <summary>
- /// NPC faction to re-add after being zombified.
- /// Prevents zombie dragon from being attacked by its own carp.
- /// </summary>
- [DataField]
- public ProtoId<NpcFactionPrototype> Faction = "Dragon";
- }
- }
|