Skip to content

Commit

Permalink
fix altar, admin zone
Browse files Browse the repository at this point in the history
  • Loading branch information
Rxup committed Feb 24, 2025
1 parent 396cc3a commit 1359c49
Show file tree
Hide file tree
Showing 4 changed files with 281 additions and 89 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using Robust.Shared.EntitySerialization;
using Robust.Shared.EntitySerialization.Systems;
using Robust.Shared.Network;
using Robust.Shared.Player;
Expand Down Expand Up @@ -33,7 +34,12 @@ public sealed class AdminTestArenaSystem : EntitySystem
}

var path = new ResPath(ArenaMapPath);
if (!_loader.TryLoadMap(path, out var map, out var grids))
if (!_loader.TryLoadMap(path, out var map, out var grids, new DeserializationOptions
{
InitializeMaps = true,
PauseMaps = false,
StoreYamlUids = true
}))
throw new Exception($"Failed to load admin arena");

ArenaMap[admin.UserId] = map.Value.Owner;
Expand Down
61 changes: 29 additions & 32 deletions Content.Server/Backmen/Chapel/SacrificialAltarSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
using Content.Shared.Backmen.Chapel.Components;
using Content.Shared.Backmen.Psionics.Glimmer;
using Content.Shared.Backmen.Soul;
using Content.Shared.Ghost;
using Content.Shared.Hands.Components;
using Content.Shared.Players;
using Robust.Server.Audio;
Expand Down Expand Up @@ -53,61 +54,57 @@ public override void Initialize()

}

[ValidatePrototypeId<EntityPrototype>]
private const string MaterialBluespace = "MaterialBluespace1";
private void OnDoAfter(EntityUid uid, SacrificialAltarComponent component, SacrificeDoAfterEvent args)
{
_audioSystem.Stop(component.SacrificeStingStream,component.SacrificeStingStream);
component.DoAfter = null;

if (args.Cancelled || args.Handled || args.Args.Target == null)
if (args.Cancelled || args.Handled || args.Args.Target is not { } target)
return;

// note: we checked this twice in case they could have gone SSD in the doafter time.
if (!TryComp<ActorComponent>(args.Args.Target.Value, out var actor))
if (!_mindSystem.TryGetMind(target, out var mindId, out var mind))
return;

if (!_mindSystem.TryGetMind(args.Args.Target.Value, out var mindId, out var mind))
return;

_adminLogger.Add(LogType.Action, LogImpact.Extreme, $"{ToPrettyString(args.Args.User):player} sacrificed {ToPrettyString(args.Args.Target.Value):target} on {ToPrettyString(uid):altar}");
_adminLogger.Add(LogType.Action, LogImpact.Extreme, $"{ToPrettyString(args.Args.User):player} sacrificed {ToPrettyString(target):target} on {ToPrettyString(uid):altar}");

if (!_prototypeManager.TryIndex<WeightedRandomPrototype>(component.RewardPool, out var pool))
return;
var pool = _prototypeManager.Index(component.RewardPool);

var chance = HasComp<BibleUserComponent>(args.Args.User) ? component.RewardPoolChanceBibleUser : component.RewardPoolChance;

var pos = Transform(uid).Coordinates;

if (_robustRandom.Prob(chance))
Spawn(pool.Pick(), Transform(uid).Coordinates);
Spawn(pool.Pick(), pos);

int i = _robustRandom.Next(component.BluespaceRewardMin, component.BlueSpaceRewardMax);
var i = _robustRandom.Next(component.BluespaceRewardMin, component.BlueSpaceRewardMax);

while (i > 0)
{
Spawn("MaterialBluespace1", Transform(uid).Coordinates);
Spawn(MaterialBluespace, pos);
i--;
}

int reduction = _robustRandom.Next(component.GlimmerReductionMin, component.GlimmerReductionMax);
_glimmerSystem.Glimmer -= reduction;

if (actor.PlayerSession.ContentData()?.Mind != null)
{
var trap = Spawn(component.TrapPrototype, Transform(uid).Coordinates);
_mindSystem.TransferTo(mindId, trap);
var trap = Spawn(component.TrapPrototype, pos);
_mindSystem.TransferTo(mindId, trap, mind: mind);

if (TryComp<SoulCrystalComponent>(trap, out var crystalComponent))
crystalComponent.TrueName = Name(args.Args.Target.Value);
if (TryComp<SoulCrystalComponent>(trap, out var crystalComponent))
crystalComponent.TrueName = Name(target);

_metaDataSystem.SetEntityName(trap, Loc.GetString("soul-entity-name", ("trapped", args.Args.Target)));
_metaDataSystem.SetEntityDescription(trap, Loc.GetString("soul-entity-name", ("trapped", args.Args.Target)));
}
_metaDataSystem.SetEntityName(trap, Loc.GetString("soul-entity-name", ("trapped", target)));
_metaDataSystem.SetEntityDescription(trap, Loc.GetString("soul-entity-name", ("trapped", target)));

if (TryComp<BodyComponent>(args.Args.Target, out var body))
if (TryComp<BodyComponent>(target, out var body))
{
_bodySystem.GibBody(args.Args.Target.Value, false, body, false);
_bodySystem.GibBody(target, false, body, true);
}
else
{
QueueDel(args.Args.Target.Value);
QueueDel(target);
}
}

Expand All @@ -122,39 +119,39 @@ protected override void AttemptSacrifice(EntityUid agent, EntityUid patient, Ent
// can't sacrifice yourself
if (agent == patient)
{
_popups.PopupEntity(Loc.GetString("altar-failure-reason-self"), altar, agent, Shared.Popups.PopupType.SmallCaution);
_popups.PopupEntity(Loc.GetString("altar-failure-reason-self"), altar, agent, Shared.Popups.PopupType.MediumCaution);
return;
}

// you need psionic OR bible user
if (!HasComp<PsionicComponent>(agent) && !HasComp<BibleUserComponent>(agent))
if (!(HasComp<PsionicComponent>(agent) || HasComp<BibleUserComponent>(agent) || HasComp<GhostComponent>(agent)))
{
_popups.PopupEntity(Loc.GetString("altar-failure-reason-user"), altar, agent, Shared.Popups.PopupType.SmallCaution);
_popups.PopupEntity(Loc.GetString("altar-failure-reason-user"), altar, agent, Shared.Popups.PopupType.MediumCaution);
return;
}

// and no golems or familiars or whatever should be sacrificing
if (!HasComp<HumanoidAppearanceComponent>(agent))
if (!(HasComp<HumanoidAppearanceComponent>(agent) || HasComp<GhostComponent>(agent)))
{
_popups.PopupEntity(Loc.GetString("altar-failure-reason-user-humanoid"), altar, agent, Shared.Popups.PopupType.SmallCaution);
_popups.PopupEntity(Loc.GetString("altar-failure-reason-user-humanoid"), altar, agent, Shared.Popups.PopupType.MediumCaution);
return;
}

if (!HasComp<PsionicComponent>(patient))
{
_popups.PopupEntity(Loc.GetString("altar-failure-reason-target", ("target", patient)), altar, agent, Shared.Popups.PopupType.SmallCaution);
_popups.PopupEntity(Loc.GetString("altar-failure-reason-target", ("target", patient)), altar, agent, Shared.Popups.PopupType.MediumCaution);
return;
}

if (!HasComp<HumanoidAppearanceComponent>(patient) && !HasComp<MetempsychosisKarmaComponent>(patient))
{
_popups.PopupEntity(Loc.GetString("altar-failure-reason-target-humanoid", ("target", patient)), altar, agent, Shared.Popups.PopupType.SmallCaution);
_popups.PopupEntity(Loc.GetString("altar-failure-reason-target-humanoid", ("target", patient)), altar, agent, Shared.Popups.PopupType.MediumCaution);
return;
}

if (!HasComp<ActorComponent>(patient))
{
_popups.PopupEntity(Loc.GetString("altar-failure-reason-target-ssd", ("target", patient)), altar, agent, Shared.Popups.PopupType.SmallCaution);
_popups.PopupEntity(Loc.GetString("altar-failure-reason-target-ssd", ("target", patient)), altar, agent, Shared.Popups.PopupType.MediumCaution);
return;
}

Expand Down
9 changes: 9 additions & 0 deletions Content.Shared/Backmen/Chapel/SharedSacrificialAltarSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using Content.Shared.Buckle.Components;
using Content.Shared.Cuffs;
using Content.Shared.Cuffs.Components;
using Content.Shared.DoAfter;
using Content.Shared.Verbs;

namespace Content.Shared.Backmen.Chapel;
Expand All @@ -10,6 +11,9 @@ public abstract class SharedSacrificialAltarSystem : EntitySystem
{
[Dependency]
private readonly SharedCuffableSystem _cuffable = default!;

[Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!;

public override void Initialize()
{
base.Initialize();
Expand All @@ -28,6 +32,11 @@ private void OnUnstrappedEvent(EntityUid uid, SacrificialAltarComponent componen
args.Cancelled = true;
return;
}
if (component.DoAfter is {} id)
{
_doAfterSystem.Cancel(id);
component.DoAfter = null;
}
}

private void OnStrappedEvent(EntityUid uid, SacrificialAltarComponent component, ref StrapAttemptEvent args)
Expand Down
Loading

0 comments on commit 1359c49

Please sign in to comment.