using Content.Shared.Actions; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Spider; [RegisterComponent, NetworkedComponent] [Access(typeof(SharedSpiderSystem))] public sealed partial class SpiderComponent : Component { [ViewVariables(VVAccess.ReadWrite)] [DataField("webPrototype", customTypeSerializer: typeof(PrototypeIdSerializer))] public string WebPrototype = "SpiderWeb"; [ViewVariables(VVAccess.ReadWrite)] [DataField("webAction", customTypeSerializer: typeof(PrototypeIdSerializer))] public string WebAction = "ActionSpiderWeb"; [DataField] public EntityUid? Action; /// /// Whether the spider will spawn webs when not controlled by a player. /// [DataField] public bool SpawnsWebsAsNonPlayer = true; /// /// The cooldown in seconds between web spawns when not controlled by a player. /// [DataField] public TimeSpan WebSpawnCooldown = TimeSpan.FromSeconds(45f); /// /// The next time the spider can spawn a web when not controlled by a player. /// [DataField] public TimeSpan? NextWebSpawn; } public sealed partial class SpiderWebActionEvent : InstantActionEvent { }