Skip to content

Commit

Permalink
Heretics changes part 2 (#628)
Browse files Browse the repository at this point in the history
* i got that dawg in me

* dasasdsaddas

* jhkhkjj

* my lazy ass is not doing the rest

* finally.

* finally.

* jesus christ 1

* help me

* jesus christ 2

* UAAAAWHGHHGG BUABHAUBHAUBHHGH

* jesus christ 3

* sdfjsdkghjdfkljbhsfuobd

* 1984

* ash lore update

* THE CURSE OF 220

* ultra violencce

* fart

* fdgfdgbfdbf

* fgbdfgndfgn

* it's raw propheting time

* blbkblbkglbgkbgbgbgdfbfgbbb AAAAAAAAAAAAAAAAAAAAAAAAA

* fdbfsgbybdf

* bkbgkblkgbgbngfkb

* void path part 1

* REAL!!!!!!

* it is working

* ok looks good to me

* random influence spawn

* hey shitass, wanna see me bypass yaml linter?

* RAAAAAAAAAAGH

* dghgdfbsfdgbsdf

* dfvsfvavsd

* help

* help

* bbnvbnvmvbnmvbnmvbn

* guiedbook

* fhfdsghfgdhdfgh

* AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

* please

* fucking
die

* vlkblvkbbgjhjfbhnbkvbnf A

* i am malding

* 6666 lines

* FUCK

* GOD SAVE MY SOUL!!

* revert store shitassery

* dfvdfgdf

* Reapply "Uplink discounts (#580)"

This reverts commit 55540db.

* more uplink shittery revert

* FUCK

* based

* dvsfv

* dghfgghfgh

* blnkbnbknlbnklb

* :finnadie:

* finally. :finnadie:

* yeah

* bnbnmbvnm

* vblknknvblnkvblknklvbn

* fuck

* gaming

* bnkb,nkvbnklvbknvb

---------

Co-authored-by: whateverusername0 <whateveremail>
Co-authored-by: Piras314 <[email protected]>
  • Loading branch information
2 people authored and Darkmajia committed Sep 13, 2024
1 parent fedcccb commit a05fb57
Show file tree
Hide file tree
Showing 25 changed files with 752 additions and 32 deletions.
14 changes: 14 additions & 0 deletions Content.Client/Goobstation/Heretic/Ritual.CustomBehaviors.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,17 @@ public override void Finalize(RitualData args)
// do nothing
}
}

public sealed partial class RitualKnowledgeBehavior : RitualCustomBehavior
{
public override bool Execute(RitualData args, out string? outstr)
{
outstr = null;
return true;
}

public override void Finalize(RitualData args)
{
// do nothing
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using Content.Server.Atmos.EntitySystems;
using Content.Server.Body.Systems;
using Content.Server.Heretic.Components;
using Content.Server.Temperature.Components;
using Content.Server.Temperature.Systems;
using Content.Shared.Damage;
using Content.Shared.Damage.Prototypes;
using Content.Shared.Examine;
Expand All @@ -9,6 +11,7 @@
using Content.Shared.Interaction.Events;
using Content.Shared.Physics;
using Content.Shared.Popups;
using Content.Shared.Temperature.Systems;
using Content.Shared.Weapons.Melee.Events;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
Expand Down Expand Up @@ -37,6 +40,7 @@ public sealed partial class HereticBladeSystem : EntitySystem
[Dependency] private readonly BloodstreamSystem _blood = default!;
[Dependency] private readonly DamageableSystem _damage = default!;
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly TemperatureSystem _temp = default!;

private EntityQuery<PhysicsComponent> _physicsQuery;
private HashSet<Entity<MapGridComponent>> _targetGrids = [];
Expand Down Expand Up @@ -74,7 +78,8 @@ public void ApplySpecialEffect(EntityUid performer, EntityUid target)
break;

case "Void":
// check void pull
if (TryComp<TemperatureComponent>(target, out var temp))
_temp.ForceChangeTemperature(target, temp.CurrentTemperature - 5f, temp);
break;

default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
using Robust.Shared.Timing;
using System.Linq;
using Content.Shared.Humanoid;
using Content.Server.Temperature.Components;
using Content.Server.Body.Components;

namespace Content.Server.Heretic.EntitySystems;

Expand Down Expand Up @@ -46,7 +48,11 @@ public bool ApplyMarkEffect(EntityUid target, string? path)
break;

case "Flesh":
_blood.TryModifyBleedAmount(target, 5f);
if (TryComp<BloodstreamComponent>(target, out var blood))
{
_blood.TryModifyBleedAmount(target, 5f, blood);
_blood.SpillAllSolutions(target, blood);
}
break;

case "Lock":
Expand Down Expand Up @@ -83,7 +89,8 @@ public bool ApplyMarkEffect(EntityUid target, string? path)
case "Void":
// set target's temperature to -40C
// is really OP with the new temperature slowing thing :godo:
_temperature.ForceChangeTemperature(target, Atmospherics.T0C - 40f);
if (TryComp<TemperatureComponent>(target, out var temp))
_temperature.ForceChangeTemperature(target, temp.CurrentTemperature - 100f, temp);
break;

default:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ public void ApplyGraspEffect(EntityUid performer, EntityUid target, string path)
break;

case "Void":
if (HasComp<TemperatureComponent>(target))
_temperature.ChangeHeat(target, -10f, true);
if (TryComp<TemperatureComponent>(target, out var temp))
_temperature.ForceChangeTemperature(target, temp.CurrentTemperature - 20f, temp);
_statusEffect.TryAddStatusEffect<MutedComponent>(target, "Muted", TimeSpan.FromSeconds(8), false);
break;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
using Content.Server.Heretic.EntitySystems;
using Content.Shared.Dataset;
using Content.Shared.Heretic;
using Content.Shared.Heretic.Prototypes;
using Content.Shared.Tag;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using System.Text;

namespace Content.Server.Heretic.Ritual;

public sealed partial class RitualKnowledgeBehavior : RitualCustomBehavior
{
// made static so that it doesn't regenerate itself each time
private static Dictionary<ProtoId<TagPrototype>, int> requiredTags = new();
private List<EntityUid> toDelete = new();

private IPrototypeManager _prot = default!;
private IRobustRandom _rand = default!;
private EntityLookupSystem _lookup = default!;
private HereticSystem _heretic = default!;

// this is basically a ripoff from hereticritualsystem
public override bool Execute(RitualData args, out string? outstr)
{
_prot = IoCManager.Resolve<IPrototypeManager>();
_rand = IoCManager.Resolve<IRobustRandom>();
_lookup = args.EntityManager.System<EntityLookupSystem>();
_heretic = args.EntityManager.System<HereticSystem>();

outstr = null;

// generate new set of tags
if (requiredTags.Count == 0)
for (int i = 0; i < 4; i++)
requiredTags.Add(_rand.Pick(_prot.Index<DatasetPrototype>("EligibleTags").Values), 1);

var lookup = _lookup.GetEntitiesInRange(args.Platform, .75f);
var missingList = new List<string>();

foreach (var look in lookup)
{
foreach (var tag in requiredTags)
{
if (!args.EntityManager.TryGetComponent<TagComponent>(look, out var tags))
continue;
var ltags = tags.Tags;

if (ltags.Contains(tag.Key))
{
requiredTags[tag.Key] -= 1;
toDelete.Add(look);
}
}
}

foreach (var tag in requiredTags)
if (tag.Value > 0)
missingList.Add(tag.Key);

if (missingList.Count > 0)
{
var sb = new StringBuilder();
for (int i = 0; i < missingList.Count; i++)
{
if (i != missingList.Count - 1)
sb.Append($"{missingList[i]}, ");
else sb.Append(missingList[i]);
}

outstr = Loc.GetString("heretic-ritual-fail-items", ("itemlist", sb.ToString()));
return false;
}

return true;
}

public override void Finalize(RitualData args)
{
// delete all and reset
foreach (var ent in toDelete)
args.EntityManager.QueueDeleteEntity(ent);
toDelete = new();

if (args.EntityManager.TryGetComponent<HereticComponent>(args.Performer, out var hereticComp))
_heretic.UpdateKnowledge(args.Performer, hereticComp, 4);

// reset tags
requiredTags = new();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ heretic-ritual-fail-temperature-cold = It is not cold enough here.
heretic-ritual-fail-sacrifice-ash = There's either not enough of them dead, or burning.
## side quests
heretic-ritual-side-knowledge = Ritual of Knowledge
heretic-ritual-side-shark = Scorching Shark
heretic-ritual-side-cloak = Void Cloak
heretic-ritual-side-ghoul = Shattered Ritual
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ knowledge-path-flesh-s2-desc =
Your Mansus Grasp gains the ability to create a ghoul out of corpse with a soul.
Ghouls have only 50 health and look like husks to the heathens' eyes, but can use Bloody Blades effectively.
You can only create one at a time by this method.
knowledge-path-flesh-s3-name = Imperfect Ritual
knowledge-path-flesh-s3-desc =
Expand All @@ -20,14 +19,13 @@ knowledge-path-flesh-s3-desc =
Allows you to transmute a corpse and a poppy to create a Voiceless Dead.
The corpse does not need to have a soul.
Voiceless Dead are mute ghouls and only have 100 health, but can use Bloody Blades effectively.
You can only create two at a time.
knowledge-path-flesh-s4-name = Mark of Flesh
knowledge-path-flesh-s4-desc =
That's when I saw them, the marked ones. They were out of reach. They screamed, and screamed.
Your Mansus Grasp now applies the Mark of Flesh. The mark is triggered from an attack with your Bloody Blade.
When triggered, the victim begins to bleed significantly.
When triggered, the victim violently spills all it's blood on the ground.
knowledge-path-flesh-s5-name = Knitting of Flesh
knowledge-path-flesh-s5-desc =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ knowledge-path-side-s3-flask-desc =
knowledge-path-side-s5-name = Ritual of Knowledge
knowledge-path-side-s5-desc =
You learn a special, one-time-only ritual that requires 4 different items,
from various organs to candles to stun batons, in various quantities.
Performing this ritual instantly grants you 4 knowledge points.
from various organs to candles and stun batons.
Performing this ritual grants you 4 knowledge points and resets the items needed.
knowledge-path-side-s7-sphase-name = Space Phase
knowledge-path-side-s7-sphase-desc =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ knowledge-path-void-s7-name = Seeking Blade
knowledge-path-void-s7-desc =
Fleeting memories, fleeting feet. I mark my way with frozen blood upon the snow. Covered and forgotten.
When a target is marked, use your Void Blade to teleport right next to them without breaking the blade.
Your blade freezes enemies. Additionally, when a target is marked, activate the Void Blade in your hand to teleport right next to them without breaking the blade.
knowledge-path-void-s8-name = Void Pull
knowledge-path-void-s8-desc =
Expand Down
Loading

0 comments on commit a05fb57

Please sign in to comment.