- fix: Fix offering rune not working. (#262)
This commit is contained in:
@@ -90,7 +90,7 @@ public sealed class CultRuleSystem : GameRuleSystem<CultRuleComponent>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public MindComponent? GetTarget()
|
public Entity<MindComponent>? GetTarget()
|
||||||
{
|
{
|
||||||
var cultistsRule = EntityQuery<CultRuleComponent>().FirstOrDefault();
|
var cultistsRule = EntityQuery<CultRuleComponent>().FirstOrDefault();
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ public sealed class CultRuleSystem : GameRuleSystem<CultRuleComponent>
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return mind;
|
return (cultistsRule.CultTarget.Value, mind);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanSummonNarsie()
|
public bool CanSummonNarsie()
|
||||||
|
|||||||
@@ -439,26 +439,20 @@ public sealed partial class CultSystem : EntitySystem
|
|||||||
|
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
var target = _ruleSystem.GetTarget();
|
|
||||||
|
|
||||||
if (state.CurrentState != MobState.Dead)
|
if (state.CurrentState != MobState.Dead)
|
||||||
{
|
{
|
||||||
var canBeConverted = _entityManager.TryGetComponent<MindContainerComponent>(victim.Value, out var mind) &&
|
var canBeConverted = _entityManager.TryGetComponent<MindContainerComponent>(victim.Value, out var mind) &&
|
||||||
mind is {Mind: { }};
|
mind.Mind != null && !IsTarget(mind.Mind.Value);
|
||||||
|
|
||||||
// Проверка, является ли жертва целью
|
|
||||||
_entityManager.TryGetComponent<MindContainerComponent>(target?.CurrentEntity, out var targetMind);
|
|
||||||
var isTarget = mind!.Mind!.Value == targetMind?.Mind!.Value;
|
|
||||||
|
|
||||||
// Выполнение действия в зависимости от условий
|
// Выполнение действия в зависимости от условий
|
||||||
if (canBeConverted && !HasComp<HolyComponent>(victim.Value) &&
|
if (canBeConverted && !HasComp<HolyComponent>(victim.Value) &&
|
||||||
!HasComp<MindShieldComponent>(victim.Value) && !isTarget)
|
!HasComp<MindShieldComponent>(victim.Value))
|
||||||
{
|
{
|
||||||
result = Convert(uid, victim.Value, args.User, args.Cultists);
|
result = Convert(uid, victim.Value, args.User, args.Cultists);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = Sacrifice(uid, victim.Value, args.User, args.Cultists, isTarget);
|
result = Sacrifice(uid, victim.Value, args.User, args.Cultists);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -470,12 +464,20 @@ public sealed partial class CultSystem : EntitySystem
|
|||||||
args.Result = result;
|
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(
|
private bool Sacrifice(
|
||||||
EntityUid rune,
|
EntityUid rune,
|
||||||
EntityUid target,
|
EntityUid target,
|
||||||
EntityUid user,
|
EntityUid user,
|
||||||
HashSet<EntityUid> cultists,
|
HashSet<EntityUid> cultists)
|
||||||
bool isTarget = false)
|
|
||||||
{
|
{
|
||||||
if (!_entityManager.TryGetComponent<CultRuneOfferingComponent>(rune, out var offering))
|
if (!_entityManager.TryGetComponent<CultRuneOfferingComponent>(rune, out var offering))
|
||||||
return false;
|
return false;
|
||||||
@@ -486,14 +488,6 @@ public sealed partial class CultSystem : EntitySystem
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isTarget)
|
|
||||||
{
|
|
||||||
_bodySystem.GibBody(target);
|
|
||||||
AddChargesToReviveRune();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!SpawnShard(target))
|
if (!SpawnShard(target))
|
||||||
{
|
{
|
||||||
_bodySystem.GibBody(target);
|
_bodySystem.GibBody(target);
|
||||||
@@ -541,8 +535,8 @@ public sealed partial class CultSystem : EntitySystem
|
|||||||
if (!_entityManager.TryGetComponent<ActorComponent>(target, out var actorComponent))
|
if (!_entityManager.TryGetComponent<ActorComponent>(target, out var actorComponent))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
_ruleSystem.MakeCultist(actorComponent.PlayerSession);
|
|
||||||
_stunSystem.TryStun(target, TimeSpan.FromSeconds(2f), false);
|
_stunSystem.TryStun(target, TimeSpan.FromSeconds(2f), false);
|
||||||
|
_ruleSystem.MakeCultist(actorComponent.PlayerSession);
|
||||||
HealCultist(target);
|
HealCultist(target);
|
||||||
|
|
||||||
if (TryComp(target, out CuffableComponent? cuffs) && cuffs.Container.ContainedEntities.Count >= 1)
|
if (TryComp(target, out CuffableComponent? cuffs) && cuffs.Container.ContainedEntities.Count >= 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user