Нерф священника (#264)

* - remove: Nuke HolyComponent.

* - tweak: SuitStorage for weapons.

* - tweak: More slots for weapons.

* - tweak: Cult magic tweaks.

* - fix: Fix desc.
This commit is contained in:
Aviu00
2024-04-04 02:04:08 +09:00
committed by GitHub
parent 5cb81d990c
commit 4ad5531d62
19 changed files with 89 additions and 60 deletions

View File

@@ -8,7 +8,6 @@ namespace Content.Server._White.Chaplain;
public sealed class NullRodSystem : EntitySystem
{
[Dependency] private readonly HandsSystem _hands = default!;
[Dependency] private readonly PopupSystem _popup = default!;
public override void Initialize()
{
@@ -24,14 +23,7 @@ public sealed class NullRodSystem : EntitySystem
if (args.SelectedWeapon == string.Empty || entity == null)
return;
if (!HasComp<HolyComponent>(entity.Value) && !HasComp<GhostComponent>(entity.Value))
{
_popup.PopupEntity($"Вам не хватает веры, чтобы использовать {Name(ent)}", entity.Value, entity.Value);
return;
}
var weapon = Spawn(args.SelectedWeapon, Transform(entity.Value).Coordinates);
EnsureComp<HolyWeaponComponent>(weapon);
Del(ent);

View File

@@ -1,6 +1,7 @@
using System.Linq;
using Content.Server._Miracle.GulagSystem;
using Content.Server.Actions;
using Content.Server.Bible.Components;
using Content.Server.Chat.Managers;
using Content.Server.GameTicking;
using Content.Server.GameTicking.Rules;
@@ -24,7 +25,6 @@ using Robust.Shared.Configuration;
using Robust.Shared.Player;
using Robust.Shared.Random;
using Content.Shared._White;
using Content.Shared._White.Chaplain;
using Content.Shared._White.Cult.Components;
using Content.Shared._White.Cult.Systems;
using Content.Shared.Mind;
@@ -357,7 +357,7 @@ public sealed class CultRuleSystem : GameRuleSystem<CultRuleComponent>
// Chaplain
if (!_mindSystem.TryGetMind(player, out _, out var mind) ||
mind.OwnedEntity is not { } ownedEntity || HasComp<HolyComponent>(ownedEntity))
mind.OwnedEntity is not { } ownedEntity || HasComp<BibleUserComponent>(ownedEntity))
continue;
// Latejoin

View File

@@ -4,7 +4,6 @@ using Content.Server._White.Cult.Items.Components;
using Content.Shared._White.Chaplain;
using Content.Shared.Mobs.Components;
using Content.Shared.Throwing;
using Content.Shared._White.Cult;
using CultistComponent = Content.Shared._White.Cult.Components.CultistComponent;
namespace Content.Server._White.Cult.Items.Systems;
@@ -13,6 +12,7 @@ public sealed class ReturnItemOnThrowSystem : EntitySystem
{
[Dependency] private readonly StunSystem _stun = default!;
[Dependency] private readonly HandsSystem _hands = default!;
[Dependency] private readonly HolyWeaponSystem _holyWeapon = default!;
public override void Initialize()
{
@@ -31,7 +31,7 @@ public sealed class ReturnItemOnThrowSystem : EntitySystem
if (!HasComp<MobStateComponent>(args.Target))
return;
if (!_stun.IsParalyzed(args.Target) && !isCultist && !HasComp<HolyComponent>(args.Target))
if (!_stun.IsParalyzed(args.Target) && !isCultist && !_holyWeapon.IsHoldingHolyWeapon(args.Target))
{
_stun.TryParalyze(args.Target, TimeSpan.FromSeconds(component.StunTime), true);
}

View File

@@ -6,27 +6,25 @@ using Content.Server.Emp;
using Content.Server.EUI;
using Content.Server._White.Cult.UI;
using Content.Shared._White.Chaplain;
using Content.Shared._White.Cult;
using Content.Shared.Chemistry.Components;
using Content.Shared.Damage;
using Content.Shared.Damage.Prototypes;
using Content.Shared.FixedPoint;
using Content.Shared.Fluids.Components;
using Content.Shared.Inventory;
using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
using Content.Shared.Stacks;
using Content.Shared.StatusEffect;
using Content.Shared.Stunnable;
using Content.Shared._White.Cult.Actions;
using Content.Shared._White.Cult.Components;
using Content.Shared._White.Cult.Systems;
using Content.Shared._White.Cult.UI;
using Content.Shared.ActionBlocker;
using Content.Shared.Actions;
using Content.Shared.Cuffs.Components;
using Content.Shared.DoAfter;
using Content.Shared.Maps;
using Content.Shared.Mindshield.Components;
using Content.Shared.Popups;
using Robust.Server.GameObjects;
using Robust.Shared.Audio;
using Robust.Shared.Map.Components;
@@ -49,6 +47,8 @@ public partial class CultSystem
[Dependency] private readonly TileSystem _tile = default!;
[Dependency] private readonly BloodSpearSystem _bloodSpear = default!;
[Dependency] private readonly PhysicsSystem _physics = default!;
[Dependency] private readonly HolyWeaponSystem _holyWeapon = default!;
[Dependency] private readonly ActionBlockerSystem _actionBlocker = default!;
private const string TileId = "CultFloor";
private const string ConcealedTileId = "CultFloorConcealed";
@@ -95,15 +95,17 @@ public partial class CultSystem
!TryComp<StatusEffectsComponent>(args.Target, out var status))
return;
if (HasComp<HolyComponent>(args.Target))
if (_holyWeapon.IsHoldingHolyWeapon(args.Target))
{
_popupSystem.PopupEntity("Священная сила препятствует магии.", args.Performer, args.Performer);
_popupSystem.PopupEntity("Сила священного оружия препятствует магии.", args.Performer, args.Performer,
PopupType.MediumCaution);
return;
}
if (HasComp<MindShieldComponent>(args.Target))
{
_popupSystem.PopupEntity("Он имплантирован чипом защиты разума.", args.Performer, args.Performer);
_popupSystem.PopupEntity("Он имплантирован чипом защиты разума.", args.Performer, args.Performer,
PopupType.MediumCaution);
return;
}
@@ -122,19 +124,18 @@ public partial class CultSystem
!TryComp<ActorComponent>(uid, out var actor))
return;
if (HasComp<HolyComponent>(args.Target))
if (_holyWeapon.IsHoldingHolyWeapon(args.Target))
{
_popupSystem.PopupEntity("Священная сила препятствует магии.", args.Performer, args.Performer);
_popupSystem.PopupEntity("Сила священного оружия препятствует магии.", args.Performer, args.Performer,
PopupType.MediumCaution);
return;
}
if (!HasComp<CultistComponent>(args.Target) && !HasComp<ConstructComponent>(args.Target) &&
(!TryComp<MobStateComponent>(args.Target, out var mobStateComponent) ||
mobStateComponent.CurrentState is MobState.Alive) &&
(!TryComp<CuffableComponent>(args.Target, out var cuffable) || cuffable.Container.Count == 0))
_actionBlocker.CanInteract(args.Target, null))
{
_popupSystem.PopupEntity("Цель должна быть культистом, быть связанной или лежать.", args.Performer,
args.Performer);
_popupSystem.PopupEntity("Цель должна быть культистом, быть скованной или парализованной.", args.Performer,
args.Performer, PopupType.MediumCaution);
return;
}
@@ -422,7 +423,7 @@ public partial class CultSystem
_bloodstreamSystem.TryModifyBloodLevel(uid, -5, bloodstream, createPuddle: false);
if (!HasComp<HolyComponent>(args.Target) &&
if (!_holyWeapon.IsHoldingHolyWeapon(args.Target) &&
_statusEffectsSystem.TryAddStatusEffect(args.Target, "Muted", TimeSpan.FromSeconds(10), true, "Muted"))
{
_popupSystem.PopupEntity("Цель обезмолвлена.", args.Performer, args.Performer);

View File

@@ -17,7 +17,6 @@ using Content.Server.Chemistry.Containers.EntitySystems;
using Content.Server.Fluids.Components;
using Content.Server.Ghost;
using Content.Server.Revenant.Components;
using Content.Shared._White.Chaplain;
using Content.Shared.Chemistry.Components.SolutionManager;
using Content.Shared.Cuffs.Components;
using Content.Shared.Damage;
@@ -446,7 +445,7 @@ public sealed partial class CultSystem : EntitySystem
mind.Mind != null && !IsTarget(mind.Mind.Value);
// Выполнение действия в зависимости от условий
if (canBeConverted && !HasComp<HolyComponent>(victim.Value) &&
if (canBeConverted && !HasComp<BibleUserComponent>(victim.Value) &&
!HasComp<MindShieldComponent>(victim.Value))
{
result = Convert(uid, victim.Value, args.User, args.Cultists);

View File

@@ -28,6 +28,7 @@ public sealed class RunicDoorSystem : EntitySystem
[Dependency] private readonly OccluderSystem _occluder = default!;
[Dependency] private readonly MobStateSystem _mobState = default!;
[Dependency] private readonly CuffableSystem _cuffable = default!;
[Dependency] private readonly HolyWeaponSystem _holyWeapon = default!;
public override void Initialize()
{
@@ -35,7 +36,7 @@ public sealed class RunicDoorSystem : EntitySystem
SubscribeLocalEvent<RunicDoorComponent, BeforeDoorOpenedEvent>(OnBeforeDoorOpened);
SubscribeLocalEvent<RunicDoorComponent, BeforeDoorClosedEvent>(OnBeforeDoorClosed);
SubscribeLocalEvent<RunicDoorComponent, AttackedEvent>(OnGetAttacked);
// SubscribeLocalEvent<RunicDoorComponent, AttackedEvent>(OnGetAttacked);
SubscribeLocalEvent<RunicDoorComponent, ConcealEvent>(OnConceal);
}
@@ -113,7 +114,7 @@ public sealed class RunicDoorSystem : EntitySystem
_doorSystem.Deny(airlock);
if (!HasComp<HumanoidAppearanceComponent>(user) || HasComp<HolyComponent>(user) ||
if (!HasComp<HumanoidAppearanceComponent>(user) || _holyWeapon.IsHoldingHolyWeapon(user) ||
TryComp(airlock, out ConcealableComponent? concealable) && concealable.Concealed)
return false;