Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,8 @@ internal bool ExplodeTile(BroadphaseComponent lookup,
{
_tileFire.TryDoTileFire(_map.ToCoordinates(grid, tile, grid),
stage: _robustRandom.Next(explosionType.MinFireLevel, explosionType.MaxFireLevel + 1),
originatingUser: origin);
originatingUser: origin,
spread: explosionType.FireSpread);
}
}
// ES END
Expand Down
14 changes: 11 additions & 3 deletions Content.Server/_ES/TileFires/ESTileFireSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ private void OnSpreadNeighbors(Entity<ESTileFireComponent> ent, ref SpreadNeighb
#region API

[PublicAPI]
public override bool TryDoTileFire(EntityCoordinates coords, EntityUid? originatingUser = null, int stage = 1)
public override bool TryDoTileFire(EntityCoordinates coords, EntityUid? originatingUser = null, int stage = 1, bool spread = true)
{
var xform = Transform(coords.EntityId);
if (xform.GridUid is not { } grid || !TryComp<MapGridComponent>(grid, out var mapGrid))
Expand All @@ -178,10 +178,18 @@ public override bool TryDoTileFire(EntityCoordinates coords, EntityUid? originat

var fire = SpawnAtPosition(proto, coords);

if (!spread)
{
RemCompDeferred<ESTileFireComponent>(fire);
}

if (!TerminatingOrDeleted(originatingUser) && Exists(originatingUser))
{
EnsureComp<ESTileFireComponent>(fire).Origin = originatingUser;
EnsureComp<ESTileFireOriginComponent>(originatingUser.Value).Fires.Add(fire);
if (spread)
{
EnsureComp<ESTileFireComponent>(fire).Origin = originatingUser;
EnsureComp<ESTileFireOriginComponent>(originatingUser.Value).Fires.Add(fire);
}

var ev = new ESTileFireCreatedEvent(coords, originatingUser);
RaiseLocalEvent(originatingUser.Value, ref ev);
Expand Down
16 changes: 16 additions & 0 deletions Content.Shared/Explosion/ExplosionPrototype.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,15 +115,31 @@ public sealed partial class ExplosionPrototype : IPrototype
// steal code from.
[DataField("fireStates")]
public int FireStates = 3;

// ES START
/// <summary>
/// Chance per tile processed to start a fire.
/// </summary>
[DataField]
public float FireChance = 0.15f;

/// <summary>
/// Minimum level of fire started when <see cref="FireChance"/> occurs
/// </summary>
[DataField]
public int MinFireLevel = 1;

/// <summary>
/// Maximum level of fire started when <see cref="FireChance"/> occurs
/// </summary>
[DataField]
public int MaxFireLevel = 1;

/// <summary>
/// Whether the fire should spread after being spawned.
/// </summary>
[DataField]
public bool FireSpread;
Comment thread
EmoGarbage404 marked this conversation as resolved.
// ES END

/// <summary>
Expand Down
6 changes: 3 additions & 3 deletions Content.Shared/_ES/TileFires/ESSharedTileFireSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,16 @@ private void OnOriginShutdown(Entity<ESTileFireOriginComponent> ent, ref Compone
/// Spawns a tile fire at stage <see cref="stage"/> at the given entity.
/// </summary>
[PublicAPI]
public bool TryDoTileFire(Entity<TransformComponent?> entity, EntityUid? originatingUser = null, int stage = 1)
public bool TryDoTileFire(Entity<TransformComponent?> entity, EntityUid? originatingUser = null, int stage = 1, bool spread = true)
{
return TryDoTileFire(entity.Comp?.Coordinates ?? Transform(entity.Owner).Coordinates, originatingUser, stage);
return TryDoTileFire(entity.Comp?.Coordinates ?? Transform(entity.Owner).Coordinates, originatingUser, stage, spread);
}

/// <summary>
/// Spawns a tile fire at stage <see cref="stage"/> at the given entity's coordinates.
/// </summary>
[PublicAPI]
public virtual bool TryDoTileFire(EntityCoordinates coords, EntityUid? originatingUser = null, int stage = 1)
public virtual bool TryDoTileFire(EntityCoordinates coords, EntityUid? originatingUser = null, int stage = 1, bool spread = true)
{
// See server logic
return false;
Expand Down
2 changes: 2 additions & 0 deletions Resources/Prototypes/explosion.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@
fireChance: 0.8
minFireLevel: 1
maxFireLevel: 3
fireSpread: true
# ES END

# ES START
Expand All @@ -158,4 +159,5 @@
fireChance: 0.6
minFireLevel: 1
maxFireLevel: 3
fireSpread: true
# ES END
Loading