mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 13:37:47 +03:00
Ports Blob from https://github.com/Goob-Station/Goob-Station/pull/975 that was ported from https://github.com/Rxup/space-station-14. Credit to VigersRay for original code, Roudenn and Rxup for maintaining and jorgun for the Goob port. --- - [X] Port https://github.com/Goob-Station/Goob-Station/pull/975; - [X] Port https://github.com/Goob-Station/Goob-Station/pull/1209; - [X] Port Blob related code from https://github.com/Goob-Station/Goob-Station/pull/1262; - [X] Port Blob related code from https://github.com/Goob-Station/Goob-Station/pull/1340; - [X] Port https://github.com/Goob-Station/Goob-Station/pull/1408; - [X] Port https://github.com/Goob-Station/Goob-Station/pull/1419; - [X] Port https://github.com/Goob-Station/Goob-Station/pull/1440; - [X] Port https://github.com/Goob-Station/Goob-Station/pull/1817; - [X] Port https://github.com/Goob-Station/Goob-Station/pull/2077; - [ ] ~Port https://github.com/Goob-Station/Goob-Station/pull/1916~; - [ ] ~Port https://github.com/Goob-Station/Goob-Station/pull/1917~; - [X] Port https://github.com/Goob-Station/Goob-Station/pull/2077; - [X] Port https://github.com/Goob-Station/Goob-Station/pull/2092; - [X] Port https://github.com/Goob-Station/Goob-Station/pull/2546; - [X] Port https://github.com/Rxup/space-station-14/pull/963; - [X] Port https://github.com/Rxup/space-station-14/pull/998; - [ ] ~Port https://github.com/Goob-Station/Goob-Station/pull/2563~. - [X] Enable Blob and Blob gamemode; - [X] Add `StationGlobConfig` to all stations; - [X] Use `AnnouncerSystem` in `BlobRuleSystem.cs`; - [X] Blob language and Hivemind (from https://github.com/Rxup/space-station-14/pull/176); - [x] Change CVars location; - [X] Add media. --- <details><summary><h1>Media</h1></summary> <p> https://youtu.be/-WtMQwRcmrU?si=su3An6RtiCTZg-DV </p> </details> --- 🆑 VigersRay, Roudenn, Rxup, vladospupuos, fishbait and Kyoth25f - add: Added a new antagonist: Blob --------- Co-authored-by: fishbait <gnesse@gmail.com> Co-authored-by: Fishbait <Fishbait@git.ml> Co-authored-by: Aiden <aiden@djkraz.com> Co-authored-by: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Co-authored-by: lanse12 <cloudability.ez@gmail.com> Co-authored-by: BombasterDS <deniskaporoshok@gmail.com> Co-authored-by: Aviu00 <93730715+Aviu00@users.noreply.github.com> Co-authored-by: Piras314 <p1r4s@proton.me> Co-authored-by: shibe <95730644+shibechef@users.noreply.github.com> Co-authored-by: Ilya246 <57039557+Ilya246@users.noreply.github.com> Co-authored-by: JohnOakman <sremy2012@hotmail.fr> Co-authored-by: Fat Engineer Gaming <159075414+Fat-Engineer-Gaming@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Rouden <149893554+Roudenn@users.noreply.github.com>
67 lines
2.5 KiB
C#
67 lines
2.5 KiB
C#
using System.Numerics;
|
|
using Content.Shared.Explosion;
|
|
using Content.Shared.Explosion.Components;
|
|
using Content.Shared.Explosion.EntitySystems;
|
|
using Robust.Server.GameObjects;
|
|
using Robust.Shared.GameStates;
|
|
using Robust.Shared.Map;
|
|
namespace Content.Server.Explosion.EntitySystems;
|
|
|
|
// This part of the system handled send visual / overlay data to clients.
|
|
public sealed partial class ExplosionSystem : SharedExplosionSystem
|
|
{
|
|
public void InitVisuals()
|
|
{
|
|
SubscribeLocalEvent<ExplosionVisualsComponent, ComponentGetState>(OnGetState);
|
|
}
|
|
|
|
private void OnGetState(EntityUid uid, ExplosionVisualsComponent component, ref ComponentGetState args)
|
|
{
|
|
Dictionary<NetEntity, Dictionary<int, List<Vector2i>>> tileLists = new();
|
|
foreach (var (grid, data) in component.Tiles)
|
|
{
|
|
tileLists.Add(GetNetEntity(grid), data);
|
|
}
|
|
|
|
args.State = new ExplosionVisualsState(
|
|
component.Epicenter,
|
|
component.ExplosionType,
|
|
component.Intensity,
|
|
component.SpaceTiles,
|
|
tileLists,
|
|
component.SpaceMatrix,
|
|
component.SpaceTileSize);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Constructor for the shared <see cref="ExplosionEvent"/> using the server-exclusive explosion classes.
|
|
/// </summary>
|
|
private EntityUid CreateExplosionVisualEntity(MapCoordinates epicenter, string prototype, Matrix3x2 spaceMatrix, ExplosionSpaceTileFlood? spaceData, IEnumerable<ExplosionGridTileFlood> gridData, List<float> iterationIntensity)
|
|
{
|
|
var explosionEntity = Spawn(null, MapCoordinates.Nullspace);
|
|
var comp = AddComp<ExplosionVisualsComponent>(explosionEntity);
|
|
|
|
foreach (var grid in gridData)
|
|
{
|
|
comp.Tiles.Add(grid.Grid.Owner, grid.TileLists);
|
|
}
|
|
|
|
comp.SpaceTiles = spaceData?.TileLists;
|
|
comp.Epicenter = epicenter;
|
|
comp.ExplosionType = prototype;
|
|
comp.Intensity = iterationIntensity;
|
|
comp.SpaceMatrix = spaceMatrix;
|
|
comp.SpaceTileSize = spaceData?.TileSize ?? DefaultTileSize;
|
|
Dirty(explosionEntity, comp);
|
|
|
|
// Light, sound & visuals may extend well beyond normal PVS range. In principle, this should probably still be
|
|
// restricted to something like the same map, but whatever.
|
|
_pvsSys.AddGlobalOverride(GetNetEntity(explosionEntity));
|
|
|
|
var appearance = AddComp<AppearanceComponent>(explosionEntity);
|
|
_appearance.SetData(explosionEntity, ExplosionAppearanceData.Progress, 1, appearance);
|
|
|
|
return explosionEntity;
|
|
}
|
|
}
|