Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
dcce049
Impstation Goes To Hell (#1955)
Kandiyaki Mar 17, 2025
bc38779
the first heretic flavor pass (#2038)
Kandiyaki Mar 25, 2025
f4f429f
more misc heretic fixes (#2094)
Kandiyaki Mar 28, 2025
c7c3113
sacrifice/ghoul sanity checks (#2392)
Kandiyaki May 5, 2025
0c38754
Kill Ashen Passage (#2177)
Kandiyaki Apr 9, 2025
22162fb
i hate the sacrifices i hate them with my life (#2403)
Kandiyaki May 5, 2025
93921e4
yuuuuuuuuup it's heretic fixes (#3291)
Kandiyaki Aug 20, 2025
7ed3254
removed duplicate hereticsystem
dootythefrooty Sep 7, 2025
d5d702f
namespace fixes
dootythefrooty Sep 7, 2025
36bd0d5
push ops
Lyndomen Jan 10, 2025
d4e34ae
build errors
mqole May 30, 2025
dd2b2e7
tweakin
dootythefrooty Sep 7, 2025
46ae750
don't do that??
dootythefrooty Sep 7, 2025
6e841ee
shouldn't be here
dootythefrooty Sep 7, 2025
b7afa83
namespaced ftl files
dootythefrooty Sep 7, 2025
99fc585
removed unneeded files and fixed memory ftl
dootythefrooty Sep 7, 2025
8a5f006
namespacing
dootythefrooty Sep 7, 2025
46f0cd7
my space? named.
dootythefrooty Sep 7, 2025
60ba536
always forgetting SOMETHING
dootythefrooty Sep 7, 2025
4512d92
please... be fixed
dootythefrooty Sep 8, 2025
5008213
Merge branch 'master' into imphereticsacrifice
dootythefrooty Sep 8, 2025
116e5a2
Merge branch 'master' into imphereticsacrifice
RichardBlonski Oct 20, 2025
b828cc6
Update Content.Server/_Shitcode/Heretic/EntitySystems/HellWorldSystem.cs
RichardBlonski Oct 20, 2025
60c943e
lets see what we can do here
TheSecondLord Jan 7, 2026
7a6e38a
couple minor things
TheSecondLord Jan 10, 2026
181ab37
Merge remote-tracking branch 'upstream/master' into ported-stuff
TheSecondLord Jan 10, 2026
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
25 changes: 25 additions & 0 deletions Content.Client/_Imp/Heretic/UI/HellMemoryEui.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Content.Client.Eui;

namespace Content.Client._Imp.Heretic.UI;

public sealed class HellMemoryEui : BaseEui
{
private readonly HellMemoryMenu _menu;

public HellMemoryEui()
{
_menu = new HellMemoryMenu();
}

public override void Opened()
{
_menu.OpenCentered();
}

public override void Closed()
{
base.Closed();

_menu.Close();
}
}
10 changes: 10 additions & 0 deletions Content.Client/_Imp/Heretic/UI/HellMemoryMenu.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<controls:FancyWindow xmlns="https://spacestation14.io"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
Title="{Loc 'hell-memory-title'}">
<BoxContainer Orientation="Vertical" Margin="5">
<RichTextLabel Name="MemoryNotif"/>
<BoxContainer Orientation="Horizontal" Align="Center">
<Button Name="ConfirmButton" Text="{Loc 'hell-memory-confirm'}"/>
</BoxContainer>
</BoxContainer>
</controls:FancyWindow>
20 changes: 20 additions & 0 deletions Content.Client/_Imp/Heretic/UI/HellMemoryMenu.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using Content.Client.UserInterface.Controls;
using Content.Client.Message;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.XAML;

namespace Content.Client._Imp.Heretic.UI;


[GenerateTypedNameReferences]
public sealed partial class HellMemoryMenu : FancyWindow
{
public HellMemoryMenu()
{
RobustXamlLoader.Load(this);

MemoryNotif.SetMarkup(Loc.GetString("hell-memory-text"));

ConfirmButton.OnPressed += _ => Close();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Content.Server.StationEvents.Components;

// Impstation this is MIT code licenced under Nyanotrasen namespace

/// <summary>
/// Spawns any antags at random midround antag spawnpoints, falls back to vent critter spawners.
/// Requires <c>AntagSelection</c>.
/// </summary>
[RegisterComponent]
public sealed partial class MidRoundAntagRuleComponent : Component;
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Content.Server.StationEvents;

// Impstation this is MIT code licenced under Nyanotrasen namespace

[RegisterComponent]
public sealed partial class MidRoundAntagSpawnLocationComponent : Component;
63 changes: 63 additions & 0 deletions Content.Server/_DV/StationEvents/Events/MidRoundAntagRule.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
using Content.Server.Antag;
using Content.Server.StationEvents.Components;
using Robust.Shared.Map;

namespace Content.Server.StationEvents.Events;

// Impstation heads up, this is MIT code, not AGPL. Licenced under Nyanotrasen namespace

/// <summary>
/// Makes antags spawn at a random midround antag or vent critter spawner.
/// </summary>
public sealed class MidRoundAntagRule : StationEventSystem<MidRoundAntagRuleComponent>
{
[Dependency] private readonly SharedTransformSystem _xform = default!;

public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<MidRoundAntagRuleComponent, AntagSelectLocationEvent>(OnSelectLocation);
}

private void OnSelectLocation(Entity<MidRoundAntagRuleComponent> ent, ref AntagSelectLocationEvent args)
{
if (!TryGetRandomStation(out var station))
return;

var spawns = FindSpawns(station.Value);
if (spawns.Count == 0)
{
Log.Warning($"Couldn't find any suitable midround antag spawners for {ToPrettyString(ent):rule}");
return;
}

args.Coordinates.AddRange(spawns);
}

private List<MapCoordinates> FindSpawns(EntityUid station)
{
var spawns = new List<MapCoordinates>();
var query = EntityQueryEnumerator<MidRoundAntagSpawnLocationComponent, TransformComponent>();
while (query.MoveNext(out var uid, out _, out var xform))
{
if (StationSystem.GetOwningStation(uid, xform) == station && xform.GridUid != null)
spawns.Add(_xform.GetMapCoordinates(xform));
}

// if there are any midround antag spawns mapped, use them
if (spawns.Count > 0)
return spawns;

// otherwise, fall back to vent critter spawns
Log.Info($"Station {ToPrettyString(station):station} has no midround antag spawnpoints mapped, falling back. Please map them!");
var fallbackQuery = EntityQueryEnumerator<VentCritterSpawnLocationComponent, TransformComponent>();
while (fallbackQuery.MoveNext(out var uid, out _, out var xform))
{
if (StationSystem.GetOwningStation(uid, xform) == station && xform.GridUid != null)
spawns.Add(_xform.GetMapCoordinates(xform));
}

return spawns;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Content.Server._Imp.Heretic.Components;

[RegisterComponent]
public sealed partial class HellSpawnPointComponent : Component
{
}
46 changes: 46 additions & 0 deletions Content.Server/_Imp/Heretic/Components/HellVictimComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Content.Shared.Humanoid.Prototypes;
using Robust.Shared.Map;

namespace Content.Server._Imp.Heretic.Components;

[RegisterComponent]
[AutoGenerateComponentPause]
public sealed partial class HellVictimComponent : Component
{
[DataField]
public bool AlreadyHelled = false;

[DataField]
public bool CleanupDone = false;

[ViewVariables]
[AutoPausedField]
public TimeSpan ExitHellTime = default!;

[DataField]
public EntityUid OriginalBody;

[ViewVariables(VVAccess.ReadOnly)]
public EntityCoordinates OriginalPosition;

[DataField]
public SpeciesPrototype? CloneProto;

[DataField]
public EntityUid? Mind;

[DataField]
public Boolean HasMind = false;

[DataField, AutoNetworkedField]
public TimeSpan HellDuration = TimeSpan.FromSeconds(30); // Omu - 15 seconds is an INCREDIBLY brief visit to hell

// Omu - The time that you are stunned for after exiting hell world
[DataField, AutoNetworkedField]
public TimeSpan StunTime = TimeSpan.FromSeconds(4);
}
8 changes: 8 additions & 0 deletions Content.Server/_Imp/Heretic/UI/HellMemoryEui.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Content.Server.EUI;

namespace Content.Server._Imp.Heretic.UI;

public sealed class HellMemoryEui : BaseEui
{
// serverside does nothing!
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
using System.Text;
using Content.Server.Station.Components;
using Content.Server._Goobstation.Objectives.Components;
using Content.Server._Goobstation.Heretic.EntitySystems; //imp

namespace Content.Server.GameTicking.Rules;

Expand All @@ -40,6 +41,7 @@ public sealed class HereticRuleSystem : GameRuleSystem<HereticRuleComponent>
[Dependency] private readonly NpcFactionSystem _npcFaction = default!;
[Dependency] private readonly ObjectivesSystem _objective = default!;
[Dependency] private readonly IRobustRandom _rand = default!;
[Dependency] private readonly HellWorldSystem _hell = default!; //imp

public static readonly SoundSpecifier BriefingSound =
new SoundPathSpecifier("/Audio/_Goobstation/Heretic/Ambience/Antag/Heretic/heretic_gain.ogg");
Expand Down Expand Up @@ -80,6 +82,7 @@ private void OnAntagSelect(Entity<HereticRuleComponent> ent, ref AfterAntagEntit
if (TryFindTileOnGrid(grid.Value, out _, out var coords))
Spawn(ent.Comp.RealityShift, coords);
}
_hell.MakeHell(); //imp
}

public bool TryMakeHeretic(EntityUid target, HereticRuleComponent rule)
Expand Down
Loading
Loading