Runes stuff
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
namespace Content.Server.White.Cult.Items.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class BloodBoilProjectileComponent : Component
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using Content.Server.White.Cult.Items.Components;
|
||||
using Content.Server.White.Cult.TimedProduction;
|
||||
using Content.Shared.White.Cult;
|
||||
using Content.Shared.White.Cult.Pylon;
|
||||
using Robust.Shared.Physics.Events;
|
||||
|
||||
namespace Content.Server.White.Cult.Items.Systems;
|
||||
|
||||
public sealed class BloodBoilProjectileSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<BloodBoilProjectileComponent, PreventCollideEvent>(PreventCollision);
|
||||
}
|
||||
|
||||
private void PreventCollision(EntityUid uid, BloodBoilProjectileComponent component, ref PreventCollideEvent args)
|
||||
{
|
||||
if (HasComp<CultistComponent>(args.OtherEntity) || HasComp<ConstructComponent>(args.OtherEntity) ||
|
||||
HasComp<CultistFactoryComponent>(args.OtherEntity) || HasComp<SharedPylonComponent>(args.OtherEntity))
|
||||
{
|
||||
args.Cancelled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -997,6 +997,8 @@ public sealed partial class CultSystem : EntitySystem
|
||||
float severity,
|
||||
CultRuneBloodBoilComponent component)
|
||||
{
|
||||
cultists = cultists.Where(HasComp<CultistComponent>).ToHashSet(); // Prevent constructs from using the rune
|
||||
|
||||
if (cultists.Count < component.SummonMinCount)
|
||||
{
|
||||
_popupSystem.PopupEntity(Loc.GetString("cult-blood-boil-rune-need-minimum"), user, user);
|
||||
@@ -1006,17 +1008,6 @@ public sealed partial class CultSystem : EntitySystem
|
||||
var xformQuery = GetEntityQuery<TransformComponent>();
|
||||
var xform = xformQuery.GetComponent(rune);
|
||||
|
||||
foreach (var cultist in cultists)
|
||||
{
|
||||
if (!TryComp<BloodstreamComponent>(cultist, out var bloodstreamComponent))
|
||||
return false;
|
||||
|
||||
_bloodstreamSystem.TryModifyBloodLevel(cultist, -40, bloodstreamComponent, createPuddle: false);
|
||||
}
|
||||
|
||||
var projectileCount =
|
||||
(int) MathF.Round(MathHelper.Lerp(component.MinProjectiles, component.MaxProjectiles, severity));
|
||||
|
||||
var inRange = _lookup.GetEntitiesInRange(rune, component.ProjectileRange * severity, LookupFlags.Dynamic);
|
||||
inRange.RemoveWhere(x =>
|
||||
!_entityManager.HasComponent<HumanoidAppearanceComponent>(x) ||
|
||||
@@ -1032,6 +1023,20 @@ public sealed partial class CultSystem : EntitySystem
|
||||
|
||||
_random.Shuffle(list);
|
||||
|
||||
var bloodCost = -120 / cultists.Count;
|
||||
|
||||
foreach (var cultist in cultists)
|
||||
{
|
||||
if (!TryComp<BloodstreamComponent>(cultist, out var bloodstreamComponent))
|
||||
return false;
|
||||
|
||||
_bloodstreamSystem.TryModifyBloodLevel(cultist, bloodCost, bloodstreamComponent);
|
||||
}
|
||||
|
||||
var projectileCount =
|
||||
(int) MathF.Round(MathHelper.Lerp(component.MinProjectiles, component.MaxProjectiles, severity));
|
||||
|
||||
|
||||
while (projectileCount > 0)
|
||||
{
|
||||
var target = _random.Pick(list);
|
||||
@@ -1206,6 +1211,7 @@ public sealed partial class CultSystem : EntitySystem
|
||||
if (teleportRune)
|
||||
{
|
||||
var teleportRuneEntity = _entityManager.SpawnEntity(rune, transform.Value);
|
||||
_xform.AttachToGridOrMap(teleportRuneEntity);
|
||||
|
||||
_entityManager.TryGetComponent<CultRuneTeleportComponent>(teleportRuneEntity, out var sex);
|
||||
{
|
||||
@@ -1243,7 +1249,7 @@ public sealed partial class CultSystem : EntitySystem
|
||||
var damageSpecifier = new DamageSpecifier(_prototypeManager.Index<DamageTypePrototype>("Slash"), 10);
|
||||
_damageableSystem.TryChangeDamage(uid, damageSpecifier, true, false);
|
||||
|
||||
_entityManager.SpawnEntity(rune, transform.Value);
|
||||
_xform.AttachToGridOrMap(_entityManager.SpawnEntity(rune, transform.Value));
|
||||
}
|
||||
|
||||
private bool SpawnShard(EntityUid target)
|
||||
|
||||
@@ -153,3 +153,24 @@
|
||||
whitelist:
|
||||
components:
|
||||
- Body
|
||||
|
||||
- type: entity
|
||||
id: ProjectileCult
|
||||
parent: BaseBulletHighVelocity
|
||||
name: Blood
|
||||
description: FUCK.
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: White/Cult/suka.rsi
|
||||
- type: Projectile
|
||||
damage:
|
||||
groups:
|
||||
Burn: 10
|
||||
Brute: 10
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
color: "#ff4300"
|
||||
radius: 2.0
|
||||
energy: 7.0
|
||||
- type: BloodBoilProjectile
|
||||
|
||||
Reference in New Issue
Block a user