From 67e7657f3c1bbe7a7cc95cdcbd10c48b5015798e Mon Sep 17 00:00:00 2001 From: Aviu00 <93730715+Aviu00@users.noreply.github.com> Date: Tue, 2 Apr 2024 00:22:13 +0900 Subject: [PATCH] - fix: Fix offering rune not working. (#262) --- .../_White/Cult/GameRule/CultRuleSystem.cs | 4 +-- .../Cult/Runes/Systems/CultSystem.Rune.cs | 34 ++++++++----------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs b/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs index a22725cd8d..6065306ec7 100644 --- a/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs +++ b/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs @@ -90,7 +90,7 @@ public sealed class CultRuleSystem : GameRuleSystem } } - public MindComponent? GetTarget() + public Entity? GetTarget() { var cultistsRule = EntityQuery().FirstOrDefault(); @@ -99,7 +99,7 @@ public sealed class CultRuleSystem : GameRuleSystem return null; } - return mind; + return (cultistsRule.CultTarget.Value, mind); } public bool CanSummonNarsie() diff --git a/Content.Server/_White/Cult/Runes/Systems/CultSystem.Rune.cs b/Content.Server/_White/Cult/Runes/Systems/CultSystem.Rune.cs index d1275eb638..48a3ac35f5 100644 --- a/Content.Server/_White/Cult/Runes/Systems/CultSystem.Rune.cs +++ b/Content.Server/_White/Cult/Runes/Systems/CultSystem.Rune.cs @@ -439,26 +439,20 @@ public sealed partial class CultSystem : EntitySystem bool result; - var target = _ruleSystem.GetTarget(); - if (state.CurrentState != MobState.Dead) { var canBeConverted = _entityManager.TryGetComponent(victim.Value, out var mind) && - mind is {Mind: { }}; - - // Проверка, является ли жертва целью - _entityManager.TryGetComponent(target?.CurrentEntity, out var targetMind); - var isTarget = mind!.Mind!.Value == targetMind?.Mind!.Value; + mind.Mind != null && !IsTarget(mind.Mind.Value); // Выполнение действия в зависимости от условий if (canBeConverted && !HasComp(victim.Value) && - !HasComp(victim.Value) && !isTarget) + !HasComp(victim.Value)) { result = Convert(uid, victim.Value, args.User, args.Cultists); } else { - result = Sacrifice(uid, victim.Value, args.User, args.Cultists, isTarget); + result = Sacrifice(uid, victim.Value, args.User, args.Cultists); } } else @@ -470,12 +464,20 @@ public sealed partial class CultSystem : EntitySystem args.Result = result; } + private bool IsTarget(EntityUid mindId) + { + var target = _ruleSystem.GetTarget(); + if (target == null) + return false; + + return mindId == target.Value.Owner; + } + private bool Sacrifice( EntityUid rune, EntityUid target, EntityUid user, - HashSet cultists, - bool isTarget = false) + HashSet cultists) { if (!_entityManager.TryGetComponent(rune, out var offering)) return false; @@ -486,14 +488,6 @@ public sealed partial class CultSystem : EntitySystem return false; } - if (isTarget) - { - _bodySystem.GibBody(target); - AddChargesToReviveRune(); - - return true; - } - if (!SpawnShard(target)) { _bodySystem.GibBody(target); @@ -541,8 +535,8 @@ public sealed partial class CultSystem : EntitySystem if (!_entityManager.TryGetComponent(target, out var actorComponent)) return false; - _ruleSystem.MakeCultist(actorComponent.PlayerSession); _stunSystem.TryStun(target, TimeSpan.FromSeconds(2f), false); + _ruleSystem.MakeCultist(actorComponent.PlayerSession); HealCultist(target); if (TryComp(target, out CuffableComponent? cuffs) && cuffs.Container.ContainedEntities.Count >= 1)