make dragons breathe fire (#26746)
* add ActionGun system * add RepeatingTrigger * dragons breath projectile, repeatedly explodes * give dragon fire breathing action, fireproof it * oop * oop 2 * prevent troll * proper repeating thing * pro * webedit ops * realops --------- Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
@@ -81,6 +81,13 @@ public sealed partial class ExplosiveComponent : Component
|
||||
[DataField("deleteAfterExplosion")]
|
||||
public bool? DeleteAfterExplosion;
|
||||
|
||||
/// <summary>
|
||||
/// Whether to not set <see cref="Exploded"/> to true, allowing it to explode multiple times.
|
||||
/// This should never be used if it is damageable.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool Repeatable;
|
||||
|
||||
/// <summary>
|
||||
/// Avoid somehow double-triggering this explosion (e.g. by damaging this entity from its own explosion.
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
using Content.Server.Explosion.EntitySystems;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||
|
||||
namespace Content.Server.Explosion.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Constantly triggers after being added to an entity.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(TriggerSystem))]
|
||||
[AutoGenerateComponentPause]
|
||||
public sealed partial class RepeatingTriggerComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// How long to wait between triggers.
|
||||
/// The first trigger starts this long after the component is added.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan Delay = TimeSpan.FromSeconds(1);
|
||||
|
||||
/// <summary>
|
||||
/// When the next trigger will be.
|
||||
/// </summary>
|
||||
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField]
|
||||
public TimeSpan NextTrigger;
|
||||
}
|
||||
Reference in New Issue
Block a user