From ff275b35d87b7a33a750660028c40e0401160ef0 Mon Sep 17 00:00:00 2001 From: Dentristan Date: Sat, 5 Jul 2025 16:45:19 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B0=20=D0=B2=D0=B0?= =?UTF-8?q?=D0=BC=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=20=D1=87.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Vampire/Overlay/VampireIconsSystem.cs | 31 --- .../DarkForces/Vampire/VampireAbilitiesEUI.cs | 54 ---- .../Vampire/VampireAbilitiesWindow.xaml | 54 ---- .../Vampire/VampireAbilitiesWindow.xaml.cs | 204 --------------- Content.Server/_RPSX/Bridges/IAntagBridge.cs | 10 - .../Saint/Chaplain/ChaplainSystem.Vampire.cs | 40 --- .../Saint/Chaplain/ChaplainSystem.cs | 1 - .../Items/Cross/SaintCrossSystem.Vampire.cs | 41 --- .../Saint/Items/Cross/SaintCrossSystem.cs | 1 - .../Components/VampireImmunitiesComponents.cs | 11 - .../Vampire/EUI/VampireAbilitiesEUI.cs | 45 ---- .../Vampire/Hunter/VampireImmunitySystem.cs | 52 ---- .../Abilities/VampireAbilitiesSystem.Bats.cs | 57 ---- .../VampireAbilitiesSystem.Charge.cs | 39 --- ...ampireAbilitiesSystem.ChiropteamScreech.cs | 86 ------ .../VampireAbilitiesSystem.DrinkBlood.cs | 120 --------- .../VampireAbilitiesSystem.FullPower.cs | 79 ------ .../VampireAbilitiesSystem.Paralize.cs | 108 -------- .../VampireAbilitiesSystem.Rejuvenate.cs | 82 ------ .../VampireAbilitiesSystem.Shapeshift.cs | 35 --- .../Abilities/VampireAbilitiesSystem.Trall.cs | 67 ----- .../Role/Abilities/VampireAbilitiesSystem.cs | 136 ---------- .../Role/Abilities/VampireRegenComponent.cs | 34 --- .../Role/Components/VampireRoleComponent.cs | 9 - .../Events/VampireAbilitySelectedEvent.cs | 7 - .../Role/Trall/VampireTrallRoleComponent.cs | 9 - .../Vampire/Role/Trall/VampireTrallSystem.cs | 143 ---------- .../Vampire/Role/VampireSystem.Saint.cs | 71 ----- .../GameRules/Vampire/Role/VampireSystem.cs | 168 ------------ .../Blood/VampireBloodObjectiveComponent.cs | 13 - .../Blood/VampireBloodObjectiveSystem.cs | 63 ----- .../VampireEnthrallObjectiveComponent.cs | 11 - .../VampireEnthrallObjectiveSystem.cs | 68 ----- .../Vampire/VampireTargetComponent.cs | 11 - .../_RPSX/GameRules/Vampire/VampireThirst.cs | 36 --- .../Rules/Vampire/VampireRuleComponent.cs | 10 - .../Rules/Vampire/VampireRuleSystem.cs | 39 --- .../VampireChiropteanScreechAttemptEvent.cs | 15 -- .../Attempt/VampireDrinkBloodAttemptEvent.cs | 8 - .../Attempt/VampireHypnosisAttemptEvent.cs | 15 -- .../Attempt/VampireParalizeAttemptEvent.cs | 15 -- .../_RPSX/Vampire/VampireAbilitiesEvents.cs | 84 ------ .../Vampire/VampireDrinkBloodDoAfterEvent.cs | 16 -- .../Vampire/VampireHypnoseDoAfterEvent.cs | 16 -- .../_RPSX/Vampire/VampireTrallDoAfterEvent.cs | 16 -- Resources/Locale/ru-RU/Rules/vampire.ftl | 55 ---- .../DarkForces/Vampire/abilities.ftl | 14 - .../DarkForces/Vampire/objectives.ftl | 6 - .../darkstation/DarkForces/Vampire/trall.ftl | 6 - .../Vampire/Abilities/abilities.yml | 101 -------- .../Vampire/Abilities/instant_ablities.yml | 245 ------------------ .../DarkForces/Vampire/Mobs/vampire_bat.yml | 77 ------ .../DarkForces/Vampire/Roles/icons.yml | 23 -- .../DarkForces/Vampire/Roles/objectives.yml | 28 -- .../MainGame/DarkForces/Vampire/vampire.yml | 113 -------- .../MainGame/DarkForces/antags.yml | 19 -- .../MainGame/GameRules/round_start.yml | 35 --- 57 files changed, 2952 deletions(-) delete mode 100644 Content.Client/_RPSX/DarkForces/Vampire/Overlay/VampireIconsSystem.cs delete mode 100644 Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesEUI.cs delete mode 100644 Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesWindow.xaml delete mode 100644 Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesWindow.xaml.cs delete mode 100644 Content.Server/_RPSX/DarkForces/Saint/Chaplain/ChaplainSystem.Vampire.cs delete mode 100644 Content.Server/_RPSX/DarkForces/Saint/Items/Cross/SaintCrossSystem.Vampire.cs delete mode 100644 Content.Server/_RPSX/DarkForces/Vampire/Components/VampireImmunitiesComponents.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/EUI/VampireAbilitiesEUI.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Hunter/VampireImmunitySystem.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Bats.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Charge.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.ChiropteamScreech.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.DrinkBlood.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.FullPower.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Paralize.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Rejuvenate.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Shapeshift.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Trall.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireRegenComponent.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Components/VampireRoleComponent.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Events/VampireAbilitySelectedEvent.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Trall/VampireTrallRoleComponent.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/Trall/VampireTrallSystem.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/VampireSystem.Saint.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Role/VampireSystem.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Blood/VampireBloodObjectiveComponent.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Blood/VampireBloodObjectiveSystem.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Enthrall/VampireEnthrallObjectiveComponent.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Enthrall/VampireEnthrallObjectiveSystem.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/VampireTargetComponent.cs delete mode 100644 Content.Server/_RPSX/GameRules/Vampire/VampireThirst.cs delete mode 100644 Content.Server/_RPSX/GameTicking/Rules/Vampire/VampireRuleComponent.cs delete mode 100644 Content.Server/_RPSX/GameTicking/Rules/Vampire/VampireRuleSystem.cs delete mode 100644 Content.Shared/_RPSX/Vampire/Attempt/VampireChiropteanScreechAttemptEvent.cs delete mode 100644 Content.Shared/_RPSX/Vampire/Attempt/VampireDrinkBloodAttemptEvent.cs delete mode 100644 Content.Shared/_RPSX/Vampire/Attempt/VampireHypnosisAttemptEvent.cs delete mode 100644 Content.Shared/_RPSX/Vampire/Attempt/VampireParalizeAttemptEvent.cs delete mode 100644 Content.Shared/_RPSX/Vampire/VampireAbilitiesEvents.cs delete mode 100644 Content.Shared/_RPSX/Vampire/VampireDrinkBloodDoAfterEvent.cs delete mode 100644 Content.Shared/_RPSX/Vampire/VampireHypnoseDoAfterEvent.cs delete mode 100644 Content.Shared/_RPSX/Vampire/VampireTrallDoAfterEvent.cs delete mode 100644 Resources/Locale/ru-RU/Rules/vampire.ftl delete mode 100644 Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/abilities.ftl delete mode 100644 Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/objectives.ftl delete mode 100644 Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/trall.ftl delete mode 100644 Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Abilities/abilities.yml delete mode 100644 Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Abilities/instant_ablities.yml delete mode 100644 Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire_bat.yml delete mode 100644 Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Roles/icons.yml delete mode 100644 Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Roles/objectives.yml delete mode 100644 Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/vampire.yml diff --git a/Content.Client/_RPSX/DarkForces/Vampire/Overlay/VampireIconsSystem.cs b/Content.Client/_RPSX/DarkForces/Vampire/Overlay/VampireIconsSystem.cs deleted file mode 100644 index 05ea00cba03..00000000000 --- a/Content.Client/_RPSX/DarkForces/Vampire/Overlay/VampireIconsSystem.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.StatusIcon.Components; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Prototypes; - -namespace Content.Client.RPSX.DarkForces.Vampire.Overlay; - -public sealed class VampireIconsSystem : EntitySystem -{ - [Dependency] private readonly IPrototypeManager _prototype = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnGetStatusIcon); - SubscribeLocalEvent(OnGetTrallStatusIcon); - } - - private void OnGetTrallStatusIcon(Entity ent, ref GetStatusIconsEvent args) - { - var icon = _prototype.Index(ent.Comp.StatusIcon); - args.StatusIcons.Add(icon); - } - - private void OnGetStatusIcon(Entity ent, ref GetStatusIconsEvent args) - { - var icon = _prototype.Index(ent.Comp.StatusIcon); - args.StatusIcons.Add(icon); - } -} diff --git a/Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesEUI.cs b/Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesEUI.cs deleted file mode 100644 index 2b01c3fd1ad..00000000000 --- a/Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesEUI.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Content.Client.Eui; -using Content.Shared.Eui; -using Content.Shared.RPSX.DarkForces.Vampire; -using Robust.Shared.GameObjects; -using Robust.Shared.Prototypes; - -namespace Content.Client.RPSX.DarkForces.Vampire; - -public sealed class VampireAbilitiesEUI : BaseEui -{ - private NetEntity _netEntity = NetEntity.Invalid; - private readonly VampireAbilitiesWindow _window; - - public VampireAbilitiesEUI() - { - _window = new VampireAbilitiesWindow(); - _window.OnClose += OnClosed; - _window.OnLearnButtonPressed += OnAbilitySelected; - } - - public override void Opened() - { - base.Opened(); - - _window.OpenCentered(); - } - - public override void Closed() - { - base.Closed(); - _window.Close(); - } - - public override void HandleMessage(EuiMessageBase msg) - { - base.HandleMessage(msg); - - if (msg is not VampireAbilitiesState data) - return; - - _netEntity = data.NetEntity; - _window.UpdateState(data); - } - - private void OnClosed() - { - SendMessage(new CloseEuiMessage()); - } - - private void OnAbilitySelected(EntProtoId? replaceId, string actionId, int bloodRequired) - { - SendMessage(new VampireAbilitySelected(_netEntity, replaceId, actionId, bloodRequired)); - } -} diff --git a/Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesWindow.xaml b/Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesWindow.xaml deleted file mode 100644 index 45671da8cc6..00000000000 --- a/Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesWindow.xaml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesWindow.xaml.cs b/Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesWindow.xaml.cs deleted file mode 100644 index f979e8c6a74..00000000000 --- a/Content.Client/_RPSX/DarkForces/Vampire/VampireAbilitiesWindow.xaml.cs +++ /dev/null @@ -1,204 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Numerics; -using Content.Client.Administration.UI.CustomControls; -using Content.Client.RPSX.Utils; -using Content.Client.Stylesheets; -using Content.Shared.RPSX.DarkForces.Vampire; -using Robust.Client.UserInterface.CustomControls; -using Robust.Client.AutoGenerated; -using Robust.Client.GameObjects; -using Robust.Client.Graphics; -using Robust.Client.UserInterface; -using Robust.Client.UserInterface.Controls; -using Robust.Client.UserInterface.XAML; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Localization; -using Robust.Shared.Maths; -using Robust.Shared.Prototypes; -using Robust.Shared.Utility; -using Content.Shared.Mind; - -namespace Content.Client.RPSX.DarkForces.Vampire; - -[GenerateTypedNameReferences] -public sealed partial class VampireAbilitiesWindow : DefaultWindow -{ - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IEntityManager _entityManager = default!; - - private readonly SpriteSystem _spriteSystem; - private readonly IEnumerable _prototypes; - - private readonly Thickness _defaultMargin; - - public Action? OnLearnButtonPressed; - - public VampireAbilitiesWindow() - { - RobustXamlLoader.Load(this); - IoCManager.InjectDependencies(this); - - _prototypes = _prototypeManager.EnumeratePrototypes(); - _spriteSystem = _entityManager.System(); - - _defaultMargin = new Thickness(8, 8, 8, 8); - - Title = Loc.GetString("vampire-abilities-title"); - } - - public void UpdateState(VampireAbilitiesState state) - { - StoreListingsContainer.Children.Clear(); - - CurrentBloodLevel.SetMessage(state.CurrentBlood.ToString()); - TotalBloodLevel.SetMessage(state.TotalBlood.ToString()); - - foreach (var (prototype, index) in _prototypes.WithIndex()) - { - if (state.OpenedAbilities.Contains(prototype.ActionId)) - continue; - - var panel = GetPanelContainer(index); - - var mainContainer = GetBoxContainer(BoxContainer.LayoutOrientation.Vertical); - var innerContainer = GetBoxContainer(BoxContainer.LayoutOrientation.Vertical); - - panel.AddChild(mainContainer); - mainContainer.AddChild(GetHeader(prototype.Icon, prototype.Name, prototype.BloodCost)); - mainContainer.AddChild(GetHorizontalDivider()); - mainContainer.AddChild(innerContainer); - - var button = GetButton(Loc.GetString("vampire-abilities-learn"), state.CurrentBlood >= prototype.BloodCost); - button.OnPressed += _ => OnLearnButtonPressed?.Invoke(prototype.ReplaceId, prototype.ActionId, prototype.BloodCost); - - innerContainer.AddChild(GetDescription(prototype.Description)); - innerContainer.AddChild(button); - - StoreListingsContainer.AddChild(panel); - } - } - - private Control GetHorizontalDivider() - { - return new HSeparator - { - Margin = _defaultMargin - }; - } - - - private BoxContainer GetHeader(SpriteSpecifier icon, string name, int bloodCost) - { - var mainContainer = GetBoxContainer(BoxContainer.LayoutOrientation.Horizontal); - var textContainer = GetBoxContainer(BoxContainer.LayoutOrientation.Vertical); - - mainContainer.AddChild(GetTextureRect(icon)); - mainContainer.AddChild(textContainer); - - textContainer.AddChild(GetTitle(name)); - textContainer.AddChild(GetBloodCost(bloodCost)); - - return mainContainer; - } - - private BoxContainer GetTitle(string name) - { - var container = new BoxContainer - { - Orientation = BoxContainer.LayoutOrientation.Horizontal - }; - - var label = new Label - { - Text = Loc.GetString("vampire-abilities-name"), - StyleClasses = {StyleNano.StyleClassLabelKeyText}, - Margin = new Thickness(8, 0, 0, 0), - HorizontalExpand = true - }; - - var nameLabel = new Label(); - nameLabel.Text = Loc.GetString(name); - - container.AddChild(label); - container.AddChild(nameLabel); - - return container; - } - - private BoxContainer GetBloodCost(int bloodCost) - { - var container = new BoxContainer - { - Orientation = BoxContainer.LayoutOrientation.Horizontal - }; - - var label = new Label - { - Text = Loc.GetString("vampire-abilities-bloodrequired"), - StyleClasses = {StyleNano.StyleClassLabelKeyText}, - Margin = new Thickness(8, 0, 0, 0), - HorizontalExpand = true - }; - - var bloodCostLabel = new Label(); - bloodCostLabel.Text = bloodCost.ToString(); - - container.AddChild(label); - container.AddChild(bloodCostLabel); - - return container; - } - - private PanelContainer GetPanelContainer(int index) - { - return new PanelContainer - { - PanelOverride = new StyleBoxFlat - { - BackgroundColor = index % 2 == 0 ? Color.FromHex("#2F2F2F") : Color.FromHex("#1E1E22"), - BorderColor = Color.FromHex("#1E1E22"), - }, - Margin = _defaultMargin - }; - } - - private BoxContainer GetBoxContainer(BoxContainer.LayoutOrientation orientation) - { - return new BoxContainer - { - Orientation = orientation, - Margin = _defaultMargin - }; - } - - private TextureRect GetTextureRect(SpriteSpecifier icon) - { - return new TextureRect - { - Texture = _spriteSystem.Frame0(icon), - TextureScale = new Vector2(1.5f, 1.5f), - Stretch = TextureRect.StretchMode.KeepCentered - }; - } - - private RichTextLabel GetDescription(string description) - { - var label = new RichTextLabel(); - label.SetMessage(FormattedMessage.FromMarkup(Loc.GetString(description))); - - return label; - } - - private Button GetButton(string text, bool enabled) - { - return new Button - { - Text = text, - HorizontalAlignment = HAlignment.Left, - Margin = new Thickness(0, 8, 0, 0), - Disabled = !enabled - }; - } -} diff --git a/Content.Server/_RPSX/Bridges/IAntagBridge.cs b/Content.Server/_RPSX/Bridges/IAntagBridge.cs index 1c3df492a5d..0f64fb4ff1b 100644 --- a/Content.Server/_RPSX/Bridges/IAntagBridge.cs +++ b/Content.Server/_RPSX/Bridges/IAntagBridge.cs @@ -1,6 +1,5 @@ using Content.Server.RPSX.GameTicking.Rules.Narsi; using Content.Server.RPSX.GameTicking.Rules.Ratvar; -using Content.Server.RPSX.GameTicking.Rules.Vampire; using Content.Server.Antag; using Content.Server.RPSX.DarkForces.Narsi.Progress; using Content.Shared.RPSX.DarkForces.Narsi.Roles; @@ -18,8 +17,6 @@ public interface IAntagBridge void ForceMakeRatvarRighteous(ICommonSession session); void ForceMakeRatvarRighteous(EntityUid uid); - - void ForceMakeVampire(ICommonSession session); } public sealed class StubAntagBridge : IAntagBridge @@ -32,8 +29,6 @@ public sealed class StubAntagBridge : IAntagBridge [ValidatePrototypeId] private const string DefaultRatvarRule = "Ratvar"; - [ValidatePrototypeId] - private const string DefaultVampireRule = "Vampire"; public void ForceMakeCultist(ICommonSession session) { @@ -70,9 +65,4 @@ public void ForceMakeRatvarRighteous(EntityUid uid) ForceMakeRatvarRighteous(actor.PlayerSession); } - public void ForceMakeVampire(ICommonSession session) - { - var antag = _entityManager.System(); - antag.ForceMakeAntag(session, DefaultVampireRule); - } } diff --git a/Content.Server/_RPSX/DarkForces/Saint/Chaplain/ChaplainSystem.Vampire.cs b/Content.Server/_RPSX/DarkForces/Saint/Chaplain/ChaplainSystem.Vampire.cs deleted file mode 100644 index 19502d6eb7a..00000000000 --- a/Content.Server/_RPSX/DarkForces/Saint/Chaplain/ChaplainSystem.Vampire.cs +++ /dev/null @@ -1,40 +0,0 @@ -using Content.Server.RPSX.DarkForces.Saint.Chaplain.Components; -using Content.Shared.RPSX.Vampire.Attempt; -using Robust.Shared.GameObjects; - -namespace Content.Server.RPSX.DarkForces.Saint.Chaplain; - -public sealed partial class ChaplainSystem -{ - private void InitializeVampire() - { - SubscribeLocalEvent(OnVampireScreechAttemptEvent); - SubscribeLocalEvent(OnVampireHypnosisAttemptEvent); - SubscribeLocalEvent(OnVampireParalyzeAttemptEvent); - } - - private void OnVampireParalyzeAttemptEvent(EntityUid uid, ChaplainComponent component, VampireParalizeAttemptEvent args) - { - if (args.FullPower) - return; - - args.Cancel(); - } - - private void OnVampireHypnosisAttemptEvent(EntityUid uid, ChaplainComponent component, - VampireHypnosisAttemptEvent args) - { - if (args.FullPower) - return; - - args.Cancel(); - } - - private void OnVampireScreechAttemptEvent(EntityUid uid, ChaplainComponent component, VampireChiropteanScreechAttemptEvent args) - { - if (args.FullPower) - return; - - args.Cancel(); - } -} diff --git a/Content.Server/_RPSX/DarkForces/Saint/Chaplain/ChaplainSystem.cs b/Content.Server/_RPSX/DarkForces/Saint/Chaplain/ChaplainSystem.cs index 1d54641f39f..d97a9afda7a 100644 --- a/Content.Server/_RPSX/DarkForces/Saint/Chaplain/ChaplainSystem.cs +++ b/Content.Server/_RPSX/DarkForces/Saint/Chaplain/ChaplainSystem.cs @@ -17,7 +17,6 @@ public override void Initialize() SubscribeLocalEvent(OnChaplainShutdown); InitializeNarsi(); - InitializeVampire(); InitializeAbilities(); InitializeForceWall(); } diff --git a/Content.Server/_RPSX/DarkForces/Saint/Items/Cross/SaintCrossSystem.Vampire.cs b/Content.Server/_RPSX/DarkForces/Saint/Items/Cross/SaintCrossSystem.Vampire.cs deleted file mode 100644 index 7b7e0d933c6..00000000000 --- a/Content.Server/_RPSX/DarkForces/Saint/Items/Cross/SaintCrossSystem.Vampire.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Content.Server.RPSX.DarkForces.Saint.Items.Cross; -using Content.Shared.Inventory; -using Content.Shared.RPSX.Vampire.Attempt; -using Robust.Shared.GameObjects; - -namespace Content.Server.RPSX.DarkForces.Saint.Items.Cross; - -public sealed partial class SaintCrossSystem -{ - private void InitializeVampire() - { - SubscribeLocalEvent>(OnInventoriedSaintedCrossEvent); - SubscribeLocalEvent>(OnVampireHypnosisAttemptEvent); - SubscribeLocalEvent>(OnVampireParalyzeAttemptEvent); - SubscribeLocalEvent>(OnScreechAttemptEvent); - } - - private void OnScreechAttemptEvent(EntityUid uid, SaintCrossComponent component, - InventoryRelayedEvent args) - { - args.Args.Cancel(); - } - - private void OnVampireParalyzeAttemptEvent(EntityUid uid, SaintCrossComponent component, - InventoryRelayedEvent args) - { - args.Args.Cancel(); - } - - private void OnVampireHypnosisAttemptEvent(EntityUid uid, SaintCrossComponent component, - InventoryRelayedEvent args) - { - args.Args.Cancel(); - } - - private void OnInventoriedSaintedCrossEvent(EntityUid uid, SaintCrossComponent component, - InventoryRelayedEvent args) - { - args.Args.Cancel(); - } -} diff --git a/Content.Server/_RPSX/DarkForces/Saint/Items/Cross/SaintCrossSystem.cs b/Content.Server/_RPSX/DarkForces/Saint/Items/Cross/SaintCrossSystem.cs index f6ffc727a7d..2c506cf1791 100644 --- a/Content.Server/_RPSX/DarkForces/Saint/Items/Cross/SaintCrossSystem.cs +++ b/Content.Server/_RPSX/DarkForces/Saint/Items/Cross/SaintCrossSystem.cs @@ -23,7 +23,6 @@ public override void Initialize() SubscribeLocalEvent(OnSaintCrossInit); SubscribeLocalEvent(OnItemSainted); - InitializeVampire(); InitializeDamage(); } diff --git a/Content.Server/_RPSX/DarkForces/Vampire/Components/VampireImmunitiesComponents.cs b/Content.Server/_RPSX/DarkForces/Vampire/Components/VampireImmunitiesComponents.cs deleted file mode 100644 index 6b00862e09e..00000000000 --- a/Content.Server/_RPSX/DarkForces/Vampire/Components/VampireImmunitiesComponents.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Content.Server.RPSX.DarkForces.Vampire.Components; - -[RegisterComponent] -public sealed partial class VampireHypnosisImmunityComponent : Component -{ -} - -[RegisterComponent] -public sealed partial class VampireParalizeImmunityComponent : Component -{ -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/EUI/VampireAbilitiesEUI.cs b/Content.Server/_RPSX/GameRules/Vampire/EUI/VampireAbilitiesEUI.cs deleted file mode 100644 index 33cfbd01fa8..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/EUI/VampireAbilitiesEUI.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Content.Server.RPSX.GameRules.Vampire.Role.Events; -using Content.Server.EUI; -using Content.Shared.Eui; -using Content.Shared.RPSX.DarkForces.Vampire; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using JetBrains.Annotations; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; - -namespace Content.Server.RPSX.GameRules.Vampire.EUI; - -[UsedImplicitly] -public sealed class VampireAbilitiesEUI : BaseEui -{ - [Dependency] private readonly EntityManager _entityManager = default!; - private readonly EntityUid _owner; - - public VampireAbilitiesEUI(EntityUid owner) - { - IoCManager.InjectDependencies(this); - _owner = owner; - } - - public override void HandleMessage(EuiMessageBase msg) - { - base.HandleMessage(msg); - - if (msg is not VampireAbilitySelected data) - return; - - var entityUid = _entityManager.GetEntity(data.NetEntity); - var ev = new VampireAbilitySelectedEvent(data.Action, data.BloodRequired, data.ReplaceId); - - _entityManager.EventBus.RaiseLocalEvent(entityUid, ref ev); - Close(); - } - - public override void Closed() - { - base.Closed(); - - if (_entityManager.EntityExists(_owner) && _entityManager.TryGetComponent(_owner, out var comp)) - comp.AbilitiesUiOpen = false; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Hunter/VampireImmunitySystem.cs b/Content.Server/_RPSX/GameRules/Vampire/Hunter/VampireImmunitySystem.cs deleted file mode 100644 index e8f955cb48a..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Hunter/VampireImmunitySystem.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Content.Server.RPSX.DarkForces.Vampire.Components; -using Content.Shared.Inventory; -using Content.Shared.RPSX.Vampire.Attempt; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using VampireParalizeAttemptEvent = Content.Shared.RPSX.Vampire.Attempt.VampireParalizeAttemptEvent; - -namespace Content.Server.RPSX.GameRules.Vampire.Hunter; - -public sealed class VampireImmnutiySystem : EntitySystem -{ - [Dependency] private readonly InventorySystem _inventory = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnInventoryParalizeAttempt); - SubscribeLocalEvent(OnInventoryHypnosisAttempt); - - SubscribeLocalEvent(OnParalizeAttempt); - SubscribeLocalEvent(OnHypnosisEvent); - } - - private void OnInventoryHypnosisAttempt(EntityUid uid, InventoryComponent component, VampireHypnosisAttemptEvent args) - { - if (_inventory.TryGetSlotEntity(uid, "eyes", out var item, component)) - RaiseLocalEvent(item.Value, args, true); - - if (_inventory.TryGetSlotEntity(uid, "neck", out var neckItem, component)) - RaiseLocalEvent(neckItem.Value, args, true); - } - - private void OnInventoryParalizeAttempt(EntityUid uid, InventoryComponent component, VampireParalizeAttemptEvent args) - { - if (_inventory.TryGetSlotEntity(uid, "outerClothing", out var item, component)) - RaiseLocalEvent(item.Value, args, true); - - if (_inventory.TryGetSlotEntity(uid, "neck", out var neckItem, component)) - RaiseLocalEvent(neckItem.Value, args, true); - } - - private void OnHypnosisEvent(EntityUid uid, VampireHypnosisImmunityComponent component, VampireHypnosisAttemptEvent args) - { - args.Cancel(); - } - - private void OnParalizeAttempt(EntityUid uid, VampireParalizeImmunityComponent component, VampireParalizeAttemptEvent args) - { - args.Cancel(); - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Bats.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Bats.cs deleted file mode 100644 index 8d22134f4da..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Bats.cs +++ /dev/null @@ -1,57 +0,0 @@ -using Content.Server.RPSX.GameRules.Vampire.Role.Components; -using Content.Server.Polymorph.Systems; -using Content.Shared.Polymorph; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.RPSX.Vampire; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.Manager.Attributes; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem -{ - [Dependency] private readonly PolymorphSystem _polymorphSystem = default!; - - [ValidatePrototypeId] - private const string VampireBat = "MobVampireBat"; - - [ValidatePrototypeId] - private const string VampireBatPolymorph = "VampireBatPolymorph"; - - private void InitBats() - { - SubscribeLocalEvent(OnPolymorphEvent); - SubscribeLocalEvent(OnVampireSummonBatsEvent); - } - - private void OnVampireSummonBatsEvent(EntityUid uid, VampireComponent component, VampireSummonBatsEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - - var coordinates = Transform(uid).Coordinates; - var counter = 0; - - while (counter < 6) - { - counter++; - Spawn(VampireBat, coordinates); - } - - OnActionUsed(uid, component, args); - args.Handled = true; - } - - private void OnPolymorphEvent(EntityUid uid, VampireComponent component, VampirePolymorphEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - _polymorphSystem.PolymorphEntity(uid, VampireBatPolymorph); - OnActionUsed(uid, component, args); - args.Handled = true; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Charge.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Charge.cs deleted file mode 100644 index 890147de71e..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Charge.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Content.Server.RPSX.GameRules.Vampire.Role.Components; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.RPSX.Vampire; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Maths; -using Robust.Shared.Physics.Components; -using Robust.Shared.Physics.Systems; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem -{ - [Dependency] private readonly SharedPhysicsSystem _physicsSystem = default!; - - private void InitCharge() - { - SubscribeLocalEvent(OnChargeEvent); - } - - private void OnChargeEvent(EntityUid uid, VampireComponent component, VampireChargeEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - if (!TryComp(uid, out var vampireMass)) - return; - - var transform = Transform(uid); - - var strong = 100.0f; - var direction = args.Target.Position - transform.WorldPosition; - var impulseVector = direction.Normalized() * strong * vampireMass.Mass; - - _physicsSystem.ApplyLinearImpulse(uid, impulseVector); - - args.Handled = true; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.ChiropteamScreech.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.ChiropteamScreech.cs deleted file mode 100644 index a91d9bc553a..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.ChiropteamScreech.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Content.Server.Chat.Systems; -using Content.Shared.Damage; -using Content.Shared.FixedPoint; -using Content.Shared.Humanoid; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.RPSX.Vampire; -using Content.Shared.RPSX.Vampire.Attempt; -using Content.Shared.Tag; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Map; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem -{ - [Dependency] private readonly TagSystem _tagSystem = default!; - - private static readonly DamageSpecifier WindowsDamage = new() - { - DamageDict = new Dictionary - { - {"Slash", 500}, - } - }; - - private static readonly TimeSpan DefaultParalyzeTime = TimeSpan.FromSeconds(5); - private const string WindowTag = "Window"; - - private void InitChiropteamScreech() - { - SubscribeLocalEvent(OnVampireChiropteanScreechEvent); - } - - private void OnVampireChiropteanScreechEvent(EntityUid uid, VampireComponent component, - VampireChiropteanScreechEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - args.Handled = true; - - var coordinates = Transform(uid).Coordinates; - - TryParalyzePlayers(uid, component, coordinates); - TryDestroyWindows(coordinates); - - OnActionUsed(uid, component, args); - } - - private void TryParalyzePlayers(EntityUid uid, VampireComponent component, EntityCoordinates coordinates) - { - var players = - _entityLookupSystem.GetEntitiesInRange(coordinates, ChatSystem.VoiceRange); - - foreach (var player in players) - { - var targetUid = player.Owner; - if (targetUid == uid) - continue; - - var attemptEvent = new VampireChiropteanScreechAttemptEvent(targetUid, uid, component.FullPower); - RaiseLocalEvent(targetUid, attemptEvent, true); - - if (attemptEvent.Cancelled) - continue; - - _stunSystem.TryParalyze(targetUid, DefaultParalyzeTime, true); - } - } - - private void TryDestroyWindows(EntityCoordinates coordinates) - { - var windows = _entityLookupSystem - .GetEntitiesInRange(coordinates, 5) - .Where(ent => _tagSystem.HasTag(ent.Owner, WindowTag)); - - foreach (var window in windows) - { - _damageable.TryChangeDamage(window.Owner, WindowsDamage, true, false); - } - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.DrinkBlood.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.DrinkBlood.cs deleted file mode 100644 index bf0ab6f98ae..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.DrinkBlood.cs +++ /dev/null @@ -1,120 +0,0 @@ -using System; -using System.Collections.Generic; -using Content.Server.RPSX.GameRules.Vampire.Role.Components; -using Content.Server.Body.Components; -using Content.Server.Body.Systems; -using Content.Shared.DoAfter; -using Content.Shared.Humanoid; -using Content.Shared.Nutrition.Components; -using Content.Shared.Nutrition.EntitySystems; -using Content.Shared.Popups; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.RPSX.Vampire; -using Content.Shared.RPSX.Vampire.Attempt; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem -{ - private const float HydrationFactor = 10.0f; - private const int MaxBloodFromTarget = 200; - private const int DrinkedBloodPerAction = 20; - - private static readonly HashSet AvilableBloodReagents = new() {"Blood", "SpiderBlood"}; - [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!; - [Dependency] private readonly ThirstSystem _thirstSystem = default!; - - private void InitDrinkBlood() - { - SubscribeLocalEvent(OnVampireDrinkBlood); - SubscribeLocalEvent(OnVampireDrinkBloodDoAfterEvent); - } - - private void OnVampireDrinkBlood(EntityUid uid, VampireComponent component, VampireDrinkBloodAblityEvent args) - { - if (args.Handled || args.Target == args.Performer || !CanUseAbility(component, args)) - return; - - if (!IsTargetHasBlood(args.Target)) - { - _popupSystem.PopupEntity(Loc.GetString("vampire-not-correct-blood"), args.Target, uid); - return; - } - - var attemptEvent = new VampireDrinkBloodAttemptEvent(); - RaiseLocalEvent(args.Target, attemptEvent); - - if (attemptEvent.Cancelled) - { - _popupSystem.PopupEntity(Loc.GetString("vampire-target-defence"), uid, uid); - return; - } - - var vampireTargetComp = EnsureComp(args.Target); - if (vampireTargetComp.BloodDrinkedAmmount >= MaxBloodFromTarget) - { - _popupSystem.PopupEntity(Loc.GetString("vampire-target-max-blood"), args.Target, uid, PopupType.Large); - return; - } - - SendDrinkBloodDoAfter(args); - args.Handled = true; - } - - private bool IsTargetHasBlood(EntityUid target) - { - var isHumanoid = HasComp(target); - var hasCorrectBlood = TryComp(target, out BloodstreamComponent? bloodStream) && AvilableBloodReagents.Contains(bloodStream.BloodReagent); - - return isHumanoid && hasCorrectBlood; - } - - private void SendDrinkBloodDoAfter(VampireDrinkBloodAblityEvent args) - { - var doAfterEvent = new VampireDrinkBloodDoAfterEvent(); - var doAfterEventArgs = new DoAfterArgs( - EntityManager, - args.Performer, - TimeSpan.FromSeconds(2), - doAfterEvent, - args.Performer, - args.Target, - args.Performer - ) - { - BreakOnMove = true, - BreakOnDamage = true, - MovementThreshold = 1.0f - }; - - _doAfterSystem.TryStartDoAfter(doAfterEventArgs); - } - - private void OnVampireDrinkBloodDoAfterEvent(EntityUid uid, VampireComponent component, - VampireDrinkBloodDoAfterEvent args) - { - if (args.Handled) - return; - - if (args.Cancelled) - { - return; - } - - if (!TryComp(args.Target, out var vampireTargetComp)) - return; - - _bloodstreamSystem.TryModifyBleedAmount((EntityUid) args.Target, -DrinkedBloodPerAction); - vampireTargetComp.BloodDrinkedAmmount += DrinkedBloodPerAction; - - component.CurrentBloodAmount += DrinkedBloodPerAction; - component.TotalDrunkBlood += DrinkedBloodPerAction; - - if (TryComp(uid, out ThirstComponent? thirst)) - _thirstSystem.ModifyThirst(uid, thirst, HydrationFactor); - - args.Handled = true; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.FullPower.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.FullPower.cs deleted file mode 100644 index 3fda4ecab6f..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.FullPower.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System.Linq; -using Content.Server.RPSX.GameRules.Vampire.Role.Components; -using Content.Server.Mind; -using Content.Shared.Actions; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.RPSX.Vampire; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.Manager.Attributes; -using Content.Shared.Actions.Components; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem -{ - [Dependency] private readonly MindSystem _mindSystem = default!; - - [ValidatePrototypeId] - private const string FullPowerMobVampire = "MobVampire"; - - private void InitFullPower() - { - SubscribeLocalEvent(OnVampireFullPowerEvent); - } - - private void OnVampireFullPowerEvent(EntityUid uid, VampireComponent component, VampireFullPowerEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - if (!_mindSystem.TryGetMind(uid, out var mindId, out _)) - return; - - var coordinates = Transform(uid).Coordinates; - var mobVampire = Spawn(FullPowerMobVampire, coordinates); - - _mindSystem.TransferTo(mindId, mobVampire); - - QueueDel(uid); - TransferActions(uid, component, mobVampire); - - args.Handled = true; - } - - private void TransferActions(EntityUid uid, VampireComponent oldComponent, EntityUid mobVampire) - { - var component = EnsureComp(mobVampire); - var originalActions = _actionsSystem.GetActions(uid); - foreach (var action in originalActions) - { - var keyWord = FindVampireAction(action.Comp); - if (keyWord == null) - continue; - - if (!oldComponent.OpenedAbilities.ContainsValue(action.Owner)) - continue; - - EntityUid? newActionUid = null; - if (!_actionsSystem.AddAction(mobVampire, ref newActionUid, keyWord)) - continue; - - component.OpenedAbilities[keyWord] = newActionUid.Value; - } - } - - private string? FindVampireAction(ActionComponent component) - { - foreach (var keyword in component.Keywords) - { - if (!keyword.Contains("Vampire")) - continue; - - return keyword; - } - - return null; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Paralize.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Paralize.cs deleted file mode 100644 index 7b0d94363d7..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Paralize.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using Content.Shared.Bed.Sleep; -using Content.Shared.DoAfter; -using Content.Shared.Humanoid; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.RPSX.Vampire; -using Content.Shared.RPSX.Vampire.Attempt; -using Robust.Shared.GameObjects; -using VampireParalizeAttemptEvent = Content.Shared.RPSX.Vampire.Attempt.VampireParalizeAttemptEvent; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem -{ - private void InitParalyze() - { - SubscribeLocalEvent(OnVampireFlashEvent); - SubscribeLocalEvent(OnVampireHypnosisEvent); - SubscribeLocalEvent(OnVampireHypnosisDoAfterEvent); - } - - private void OnVampireFlashEvent(EntityUid uid, VampireComponent component, VampireFlashEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - args.Handled = true; - - var coordinates = Transform(uid).Coordinates; - var humansToStun = _entityLookupSystem.GetEntitiesInRange(coordinates, 2f); - - foreach (var human in humansToStun) - { - var targetUid = human.Owner; - if (targetUid == uid) - continue; - - var attemptEvent = new VampireParalizeAttemptEvent(targetUid, uid, component.FullPower); - RaiseLocalEvent(targetUid, attemptEvent, true); - - if (attemptEvent.Cancelled) - continue; - - _stunSystem.TryParalyze(targetUid, TimeSpan.FromSeconds(5), true); - } - - OnActionUsed(uid, component, args); - } - - private void OnVampireHypnosisDoAfterEvent(EntityUid uid, VampireComponent component, VampireHypnoseDoAfterEvent args) - { - if (args.Handled || args.Cancelled || args.Target == null) - return; - - args.Handled = true; - - var target = (EntityUid) args.Target; - var sleepComponent = new SleepingComponent - { - Owner = target, - // CoolDownEnd = _timing.CurTime + TimeSpan.FromSeconds(30), - Cooldown = _timing.CurTime + TimeSpan.FromSeconds(30) - }; - - if (HasComp(target)) - RemComp(target); - - EntityManager.AddComponent(target, sleepComponent); - } - - private void OnVampireHypnosisEvent(EntityUid uid, VampireComponent component, VampireHypnosisEvent args) - { - if (args.Handled || !CanUseAbility(component, args) || args.Performer == args.Target) - return; - - var attemptEvent = new VampireHypnosisAttemptEvent(args.Target, uid, component.FullPower); - RaiseLocalEvent(args.Target, attemptEvent, true); - - if (attemptEvent.Cancelled) - return; - - args.Handled = true; - - SendHypnoseDoAfterEvent(uid, args); - OnActionUsed(uid, component, args); - } - - private void SendHypnoseDoAfterEvent(EntityUid uid, VampireHypnosisEvent args) - { - var doAfterEvent = new VampireHypnoseDoAfterEvent(); - var doAfterEventArgs = new DoAfterArgs( - EntityManager, - args.Performer, - TimeSpan.FromSeconds(3), - doAfterEvent, - args.Performer, - args.Target, - args.Performer - ) - { - BreakOnMove = true, - BreakOnDamage = true, - MovementThreshold = 1.0f - }; - - _doAfterSystem.TryStartDoAfter(doAfterEventArgs); - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Rejuvenate.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Rejuvenate.cs deleted file mode 100644 index 25284835ad9..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Rejuvenate.cs +++ /dev/null @@ -1,82 +0,0 @@ -using Content.Server.Damage.Systems; -using Content.Shared.Damage; -using Content.Shared.Mobs; -using Content.Shared.Mobs.Components; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.RPSX.Vampire; -using Content.Shared.StatusEffect; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using System; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem -{ - [Dependency] private readonly StatusEffectsSystem _statusEffects = default!; - - private static TimeSpan RegenPeriod = TimeSpan.FromSeconds(2); - - private void InitRejuvenate() - { - SubscribeLocalEvent(OnVampireRejuvenate); - SubscribeLocalEvent(OnVampireRejuvenatePlusEvent); - } - - private void OnVampireRejuvenatePlusEvent(EntityUid uid, VampireComponent component, - VampireRejuvenatePlusEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - args.Handled = true; - - EnsureComp(uid); - - RemoveStaminaCrit(uid); - OnActionUsed(uid, component, args); - } - - private void OnVampireRejuvenate(EntityUid uid, VampireComponent component, VampireRejuvenateEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - RemoveStaminaCrit(uid); - OnActionUsed(uid, component, args); - - args.Handled = true; - } - - private void RemoveStaminaCrit(EntityUid uid) - { - _statusEffects.TryRemoveStatusEffect(uid, "SlowedDown"); - _statusEffects.TryRemoveStatusEffect(uid, "Stun"); - _statusEffects.TryRemoveStatusEffect(uid, "KnockedDown"); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - var curTime = _timing.CurTime; - var vampireQuery = EntityQueryEnumerator(); - - while (vampireQuery.MoveNext(out var uid, out var vampire, out var damage, out var mobState)) - { - if (vampire.NextTick + RegenPeriod > curTime) - continue; - - vampire.NextTick = curTime; - vampire.RegenTimes += 1; - - if (mobState.CurrentState == MobState.Alive) - _damageable.TryChangeDamage(uid, vampire.HealingDamage, true, false, damage); - - if (mobState.CurrentState == MobState.Dead || vampire.RegenTimes == 20) - { - RemComp(uid); - } - } - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Shapeshift.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Shapeshift.cs deleted file mode 100644 index 5a2a43e49a1..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Shapeshift.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Content.Server.RPSX.GameRules.Vampire.Role.Components; -using Content.Server.Humanoid; -using Content.Shared.Humanoid; -using Content.Shared.Preferences; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.RPSX.Vampire; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem -{ - [Dependency] private readonly HumanoidAppearanceSystem _humanoid = default!; - - private void InitShapeshift() - { - SubscribeLocalEvent(OnVampireShapeshiftEvent); - } - - private void OnVampireShapeshiftEvent(EntityUid uid, VampireComponent component, VampireShapeshiftEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - if (!TryComp(uid, out HumanoidAppearanceComponent? humanoid) || !string.IsNullOrEmpty(humanoid.Initial)) - return; - - var profile = HumanoidCharacterProfile.RandomWithSpecies(humanoid.Species); - _humanoid.LoadProfile(uid, profile, humanoid); - - OnActionUsed(uid, component, args); - args.Handled = true; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Trall.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Trall.cs deleted file mode 100644 index 0e75359add2..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.Trall.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using Content.Server.RPSX.GameRules.Vampire.Role.Components; -using Content.Shared.DoAfter; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.RPSX.Vampire; -using Content.Shared.RPSX.Vampire.Attempt; -using Robust.Shared.GameObjects; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem -{ - private void InitTrall() - { - SubscribeLocalEvent(OnVampireTrallDoAfterEvent); - SubscribeLocalEvent(OnVampireEnthrallEvent); - } - - private void OnVampireTrallDoAfterEvent(EntityUid uid, VampireComponent component, VampireTrallDoAfterEvent args) - { - if (args.Handled || args.Cancelled || args.Target == null) - return; - - _trallSystem.MakeTrall(uid, args.Target.Value); - args.Handled = true; - } - - private void OnVampireEnthrallEvent(EntityUid uid, VampireComponent component, VampireEnthrallEvent args) - { - if (args.Handled || !CanUseAbility(component, args)) - return; - - var attemptEvent = new VampireHypnosisAttemptEvent(uid, args.Target, component.FullPower); - RaiseLocalEvent(args.Target, attemptEvent, true); - - if (attemptEvent.Cancelled || !_trallSystem.CanBeTrall(args.Target)) - { - _popupSystem.PopupEntity(Loc.GetString("vampire-trall-not-valid"), uid, uid); - return; - } - - SendEnthrallDoAfterEvent(uid, component, args); - args.Handled = true; - } - - private void SendEnthrallDoAfterEvent(EntityUid uid, VampireComponent component, VampireEnthrallEvent args) - { - var doAfterEvent = new VampireTrallDoAfterEvent(); - var doAfterEventArgs = new DoAfterArgs( - EntityManager, - args.Performer, - TimeSpan.FromSeconds(3), - doAfterEvent, - args.Performer, - args.Target, - args.Performer - ) - { - BreakOnMove = true, - BreakOnDamage = true, - MovementThreshold = 1.0f - }; - - _doAfterSystem.TryStartDoAfter(doAfterEventArgs); - OnActionUsed(uid, component, args); - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.cs deleted file mode 100644 index ec47840ee78..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireAbilitiesSystem.cs +++ /dev/null @@ -1,136 +0,0 @@ -using System.Collections.Generic; -using Content.Server.RPSX.GameRules.Vampire.Role.Events; -using Content.Server.RPSX.GameRules.Vampire.Role.Trall; -using Content.Server.DoAfter; -using Content.Server.Popups; -using Content.Server.Stunnable; -using Content.Shared.Actions; -using Content.Shared.Damage; -using Content.Shared.Popups; -using Content.Shared.RPSX.Vampire; -using Robust.Shared.Console; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Timing; -using VampireComponent = Content.Shared.RPSX.DarkForces.Vampire.Components.VampireComponent; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -public sealed partial class VampireAbilitiesSystem : EntitySystem -{ - [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; - [Dependency] private readonly IConsoleHost _console = default!; - [Dependency] private readonly DamageableSystem _damageable = default!; - [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; - [Dependency] private readonly EntityLookupSystem _entityLookupSystem = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly StunSystem _stunSystem = default!; - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly VampireTrallSystem _trallSystem = default!; - - public override void Initialize() - { - base.Initialize(); - - InitChiropteamScreech(); - InitBats(); - InitDrinkBlood(); - InitFullPower(); - InitParalyze(); - InitRejuvenate(); - InitShapeshift(); - InitTrall(); - InitCharge(); - } - - public void OnVampireInit(EntityUid uid, VampireComponent component) - { - if (component.FullPower) - { - _console.ExecuteCommand($"scale {uid} 1,2"); - return; - } - - _actionsSystem.AddAction(uid, ref component.ActionStatisticEntity, component.ActionStatistic); - _actionsSystem.AddAction(uid, ref component.ActionDrinkBloodEntity, component.ActionDrinkBlood); - _actionsSystem.AddAction(uid, ref component.ActionRejuvenateEntity, component.ActionRejuvenate); - _actionsSystem.AddAction(uid, ref component.ActionFlashEntity, component.ActionFlash); - } - - - public void OnVampireShutdown(EntityUid uid, VampireComponent component) - { - _actionsSystem.RemoveAction(uid, component.ActionStatisticEntity); - _actionsSystem.RemoveAction(uid, component.ActionDrinkBloodEntity); - _actionsSystem.RemoveAction(uid, component.ActionRejuvenateEntity); - _actionsSystem.RemoveAction(uid, component.ActionFullPowerEntity); - _actionsSystem.RemoveAction(uid, component.ActionFlashEntity); - } - - public void TryOpenAbility(EntityUid uid, VampireComponent component, VampireAbilitySelectedEvent args) - { - if (!component.FullPower && component.CurrentBloodAmount < args.BloodRequired) - return; - - EntityUid? actionUid = null; - - if (!_actionsSystem.AddAction(uid, ref actionUid, out var actionComp, args.ActionId)) - return; - - component.OpenedAbilities[args.ActionId] = actionUid.Value; - component.CurrentBloodAmount -= args.BloodRequired; - - if (args.ReplaceId == null) - return; - - var actions = _actionsSystem.GetActions(uid); - foreach (var action in actions) - { - var actionId = FindVampireAction(action.Comp); - if (actionId != args.ReplaceId) - continue; - - _actionsSystem.RemoveAction(uid, action.Owner); - component.OpenedAbilities.Remove(actionId); - } - } - - public void AddFullPowerAction(EntityUid uid, VampireComponent component) - { - _actionsSystem.AddAction(uid, ref component.ActionFullPowerEntity, component.ActionFullPower); - } - - private bool CanUseAbility(VampireComponent component, IVampireEvent args) - { - if (component.FullPower || component.CurrentBloodAmount >= args.BloodCost) - return true; - - _popupSystem.PopupEntity(Loc.GetString("vampire-not-enought-blood"), component.Owner, component.Owner, - PopupType.Medium); - return false; - } - - public List GetOpenedAbilities(EntityUid uid, VampireComponent component) - { - var openedAbilities = new List(); - var actions = _actionsSystem.GetActions(uid); - foreach (var action in actions) - { - var actionId = FindVampireAction(action.Comp); - if (actionId == null) - continue; - - openedAbilities.Add(actionId); - } - - return openedAbilities; - } - - private void OnActionUsed(EntityUid uid, VampireComponent component, IVampireEvent args) - { - component.CurrentBloodAmount -= args.BloodCost; - - if (component.CurrentBloodAmount < 0) - component.CurrentBloodAmount = 0; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireRegenComponent.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireRegenComponent.cs deleted file mode 100644 index 52a4ebc34ad..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Abilities/VampireRegenComponent.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using Content.Shared.Damage; -using Content.Shared.FixedPoint; -using Robust.Shared.GameObjects; -using Robust.Shared.Serialization.Manager.Attributes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Abilities; - -[RegisterComponent] -public sealed partial class VampireRegenComponent : Component -{ - [DataField("healingDamage")] - public DamageSpecifier HealingDamage = new() - { - DamageDict = new Dictionary - { - {"Blunt", -3}, - {"Slash", -3}, - {"Piercing", -3}, - {"Heat", -3}, - {"Cold", -3}, - {"Shock", -3}, - {"Holiness", -3} - } - }; - - [DataField("nextTick", customTypeSerializer: typeof(TimeOffsetSerializer))] - public TimeSpan NextTick; - - [DataField("RegenTimes")] - public int RegenTimes; -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Components/VampireRoleComponent.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Components/VampireRoleComponent.cs deleted file mode 100644 index 7244f423df2..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Components/VampireRoleComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Content.Shared.Roles; -using Robust.Shared.GameObjects; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Components; - -[RegisterComponent] -public sealed partial class VampireRoleComponent : BaseMindRoleComponent -{ -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Events/VampireAbilitySelectedEvent.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Events/VampireAbilitySelectedEvent.cs deleted file mode 100644 index 9e1f3685838..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Events/VampireAbilitySelectedEvent.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Robust.Shared.GameObjects; -using Robust.Shared.Prototypes; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Events; - -[ByRefEvent] -public record VampireAbilitySelectedEvent(string ActionId, int BloodRequired, EntProtoId? ReplaceId); diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Trall/VampireTrallRoleComponent.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Trall/VampireTrallRoleComponent.cs deleted file mode 100644 index 1b65acaaff1..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Trall/VampireTrallRoleComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Content.Shared.Roles; -using Robust.Shared.GameObjects; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Trall; - -[RegisterComponent] -public sealed partial class VampireTrallRoleComponent : BaseMindRoleComponent -{ -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/Trall/VampireTrallSystem.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/Trall/VampireTrallSystem.cs deleted file mode 100644 index 796f5993e6f..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/Trall/VampireTrallSystem.cs +++ /dev/null @@ -1,143 +0,0 @@ -using System; -using Content.Server.RPSX.DarkForces.Saint.Chaplain.Components; -using Content.Shared.RPSX.DarkForces.Saint.Reagent.Events; -using Content.Server.Mind; -using Content.Server.Roles; -using Content.Shared.Humanoid; -using Content.Shared.Mind; -using Content.Shared.Mindshield.Components; -using Content.Shared.Mobs.Systems; -using Content.Shared.NPC.Systems; -using Content.Shared.Popups; -using Content.Shared.Roles; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Content.Shared.Stunnable; -using Robust.Server.Audio; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Prototypes; - -namespace Content.Server.RPSX.GameRules.Vampire.Role.Trall; - -public sealed class VampireTrallSystem : EntitySystem -{ - [Dependency] private readonly NpcFactionSystem _factionSystem = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; - [Dependency] private readonly MobStateSystem _mobStateSystem = default!; - [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly SharedRoleSystem _roleSystem = default!; - [Dependency] private readonly SharedStunSystem _stun = default!; - [Dependency] private readonly AudioSystem _audioSystem = default!; - - private static TimeSpan ParalyzeOnDeTrall = TimeSpan.FromSeconds(5); - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnVampireTrallInit); - SubscribeLocalEvent(OnVampireTrallShutdown); - - SubscribeLocalEvent(OnVampireTrallDrinkSaintWater); - SubscribeLocalEvent(OnVampireTrallFlammableSaintWater); - SubscribeLocalEvent(OnBriefing); - } - - private void OnBriefing(EntityUid uid, VampireTrallRoleComponent component, ref GetBriefingEvent args) - { - if (!TryComp(uid, out var mind) || mind.OwnedEntity == null) - return; - - if (!TryComp(mind.OwnedEntity, out var trallComponent)) - return; - - if (trallComponent.OwnerUid == EntityUid.Invalid) - return; - - var ownerName = MetaData(trallComponent.OwnerUid).EntityName; - - args.Briefing = string.Empty; - args.Append(Loc.GetString("vampire-trall-briefing", ("ownerName", ownerName))); - } - - private void OnVampireTrallDrinkSaintWater(EntityUid uid, VampireTrallComponent component, - OnSaintWaterDrinkEvent args) - { - if (args.Cancelled) - return; - - RemComp(uid); - args.Cancel(); - } - - private void OnVampireTrallFlammableSaintWater(EntityUid uid, VampireTrallComponent component, - OnSaintWaterFlammableEvent args) - { - if (args.Cancelled) - return; - - RemComp(uid); - args.Cancel(); - } - - private void OnVampireTrallInit(EntityUid uid, VampireTrallComponent component, ComponentInit args) - { - if (!_mindSystem.TryGetMind(uid, out var mindId, out _)) - return; - - SetupAntagonistRole(uid, mindId, component); - } - - private void SetupAntagonistRole(EntityUid uid, EntityUid mindId, VampireTrallComponent component) - { - var antagPrototype = _prototypeManager.Index("Vampire"); - - _roleSystem.MindRemoveRole(mindId); - _roleSystem.MindAddRole(mindId, "VampireTrall"); - EnsureComp(mindId); - - _factionSystem.RemoveFaction(uid, "NanoTrasen", false); - _factionSystem.AddFaction(uid, "Vampire"); - - _popupSystem.PopupEntity(Loc.GetString("vampire-trall"), uid, uid); - _roleSystem.MindPlaySound(mindId, component.Alert); - } - - private void RemoveAntagonistRole(EntityUid uid, EntityUid mindId) - { - _roleSystem.MindRemoveRole(mindId); - - _factionSystem.RemoveFaction(uid, "Vampire"); - _factionSystem.AddFaction(uid, "NanoTrasen"); - - _popupSystem.PopupEntity(Loc.GetString("vampire-trall-free"), uid, uid); - - _stun.TryParalyze(uid, ParalyzeOnDeTrall, true); - } - - private void OnVampireTrallShutdown(EntityUid uid, VampireTrallComponent component, ComponentShutdown args) - { - if (!_mindSystem.TryGetMind(uid, out var mindId, out _)) - return; - - RemoveAntagonistRole(uid, mindId); - } - - public bool CanBeTrall(EntityUid target) - { - if (!HasComp(target) || HasComp(target)) - return false; - - if (HasComp(target) || HasComp(target)) - return false; - - return _mobStateSystem.IsAlive(target); - } - - public void MakeTrall(EntityUid owner, EntityUid target) - { - var trallComponent = EnsureComp(target); - trallComponent.OwnerUid = owner; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/VampireSystem.Saint.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/VampireSystem.Saint.cs deleted file mode 100644 index 37d2560e03d..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/VampireSystem.Saint.cs +++ /dev/null @@ -1,71 +0,0 @@ -using Content.Server.RPSX.DarkForces.Saint.Saintable.Events; -using Content.Server.RPSX.GameRules.Vampire.Role.Components; -using Content.Shared.RPSX.DarkForces.Saint.Reagent.Events; -using Content.Server.Atmos.Components; -using Content.Server.Atmos.EntitySystems; -using Content.Shared.Popups; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; - -namespace Content.Server.RPSX.GameRules.Vampire.Role; - -public sealed partial class VampireSystem -{ - [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - [Dependency] private readonly FlammableSystem _flammableSystem = default!; - - private void InitializeSaint() - { - SubscribeLocalEvent(OnVampireDrinkSaintWater); - SubscribeLocalEvent(OnVampireFlammableSaintWater); - - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - SubscribeLocalEvent(OnVampireSaintOrSilverEntity); - } - - private void OnVampireSaintOrSilverEntity(EntityUid uid, VampireComponent component, ISaintEntityEvent args) - { - args.PushOnCollide = false; - args.IsHandled = true; - - _popupSystem.PopupEntity(Loc.GetString("vampire-got-saint-damage"), uid, uid); - } - - private void OnVampireFlammableSaintWater(EntityUid uid, VampireComponent component, - OnSaintWaterFlammableEvent args) - { - if (args.Cancelled) - return; - - IgniteVampire(uid, component); - args.Cancel(); - } - - private void OnVampireDrinkSaintWater(EntityUid uid, VampireComponent component, OnSaintWaterDrinkEvent args) - { - if (args.Cancelled) - return; - - IgniteVampire(uid, component); - args.Cancel(); - } - - private void IgniteVampire(EntityUid uid, VampireComponent component) - { - if (!TryComp(uid, out var flammableComponent) || component.FullPower) - return; - - flammableComponent.FireStacks = 2; - _flammableSystem.Ignite(uid, uid); - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Role/VampireSystem.cs b/Content.Server/_RPSX/GameRules/Vampire/Role/VampireSystem.cs deleted file mode 100644 index 61ec13ac51b..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Role/VampireSystem.cs +++ /dev/null @@ -1,168 +0,0 @@ -using System.Collections.Generic; -using Content.Server.RPSX.GameRules.Vampire.EUI; -using Content.Server.RPSX.GameRules.Vampire.Role.Abilities; -using Content.Server.RPSX.GameRules.Vampire.Role.Events; -using Content.Server.EUI; -using Content.Server.Mind; -using Content.Server.Objectives; -using Content.Shared.Mind; -using Content.Shared.NPC.Systems; -using Content.Shared.Nutrition.Components; -using Content.Shared.RPSX.DarkForces.Vampire; -using Content.Shared.RPSX.Vampire; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Player; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.Manager.Attributes; -using Robust.Shared.Timing; -using VampireComponent = Content.Shared.RPSX.DarkForces.Vampire.Components.VampireComponent; - -namespace Content.Server.RPSX.GameRules.Vampire.Role; - -public sealed partial class VampireSystem : EntitySystem -{ - [Dependency] private readonly NpcFactionSystem _factionSystem = default!; - [Dependency] private readonly VampireAbilitiesSystem _vampireAbilities = default!; - [Dependency] private readonly EuiManager _euiManager = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly ObjectivesSystem _objectives = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; - - [ValidatePrototypeId] - private const string BloodObjective = "VampireBloodObjective"; - - [ValidatePrototypeId] - private const string EnthrallObjective = "VampireEnthrallObjective"; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnVampireInit); - SubscribeLocalEvent(OnVampireShutdown); - SubscribeLocalEvent(OnOpenHelpDialogEvent); - SubscribeLocalEvent(OnAbilitySelected); - - InitializeSaint(); - } - - private void OnVampireInit(EntityUid uid, VampireComponent component, ComponentInit args) - { - RemComp(uid); - - _factionSystem.RemoveFaction(uid, "NanoTrasen", false); - _factionSystem.AddFaction(uid, "Vampire"); - _vampireAbilities.OnVampireInit(uid, component); - - component.NextObjectivesCheckTick = _gameTiming.CurTime + component.ObjectivesCheckPeriod; - - if (!_mindSystem.TryGetMind(uid, out var mindId, out var mind)) - return; - - CreateObjectives(uid, component, mindId, mind); - } - - private void OnVampireShutdown(EntityUid uid, VampireComponent component, ComponentShutdown args) - { - _vampireAbilities.OnVampireShutdown(uid, component); - } - - private void CreateObjectives(EntityUid uid, VampireComponent component, EntityUid mindId, - MindComponent mindComponent) - { - var bloodObjective = _objectives.TryCreateObjective(mindId, mindComponent, BloodObjective); - var enthrallObjective = _objectives.TryCreateObjective(mindId, mindComponent, EnthrallObjective); - - if (bloodObjective != null) - { - _mindSystem.AddObjective(mindId, mindComponent, bloodObjective.Value); - component.Objectives.Add(bloodObjective.Value); - } - - if (enthrallObjective != null) - { - _mindSystem.AddObjective(mindId, mindComponent, enthrallObjective.Value); - component.Objectives.Add(enthrallObjective.Value); - } - } - - private void OnOpenHelpDialogEvent(EntityUid uid, VampireComponent component, VampireOpenHelpDialogEvent args) - { - if (args.Handled) - return; - - if (!TryComp(uid, out var actor)) - return; - - var session = actor.PlayerSession; - - if (component.AbilitiesUiOpen) - return; - - var ui = new VampireAbilitiesEUI(uid); - var state = new VampireAbilitiesState( - GetNetEntity(uid), - GetOpenedAbilities(uid, component), - component.TotalDrunkBlood, - component.CurrentBloodAmount - ); - - _euiManager.OpenEui(ui, session); - ui.SendMessage(state); - - component.AbilitiesUiOpen = true; - args.Handled = true; - } - - private List GetOpenedAbilities(EntityUid uid, VampireComponent component) - { - return _vampireAbilities.GetOpenedAbilities(uid, component); - } - - private void OnAbilitySelected(EntityUid uid, VampireComponent component, VampireAbilitySelectedEvent args) - { - _vampireAbilities.TryOpenAbility(uid, component, args); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - var curTime = _gameTiming.CurTime; - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var component)) - { - if (component.FullPower || component.NextObjectivesCheckTick > curTime) - continue; - - if (!IsObjectivesCompleted(uid, component)) - { - component.NextObjectivesCheckTick = curTime + component.ObjectivesCheckPeriod; - continue; - } - - _vampireAbilities.AddFullPowerAction(uid, component); - } - } - - private bool IsObjectivesCompleted(EntityUid uid, VampireComponent component) - { - if (!_mindSystem.TryGetMind(uid, out var mindId, out _)) - return false; - - foreach (var objective in component.Objectives) - { - var objectiveInfo = _objectives.GetInfo(objective, mindId); - if (objectiveInfo == null) - { - continue; - } - - if (objectiveInfo.Value.Progress < 1f) - return false; - } - - return true; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Blood/VampireBloodObjectiveComponent.cs b/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Blood/VampireBloodObjectiveComponent.cs deleted file mode 100644 index 0408455a418..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Blood/VampireBloodObjectiveComponent.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Robust.Shared.GameObjects; -using Robust.Shared.Serialization.Manager.Attributes; -using Robust.Shared.ViewVariables; - -namespace Content.Server.RPSX.GameRules.Vampire.Rule.Objectives.Blood; - -[RegisterComponent] -public sealed partial class VampireBloodObjectiveComponent : Component -{ - [DataField] - [ViewVariables(VVAccess.ReadWrite)] - public float RequiredBloodCount = 4000f; -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Blood/VampireBloodObjectiveSystem.cs b/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Blood/VampireBloodObjectiveSystem.cs deleted file mode 100644 index bde967ff74c..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Blood/VampireBloodObjectiveSystem.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; -using Content.Server.RPSX.GameRules.Vampire.Role.Components; -using Content.Server.Mind; -using Content.Shared.Objectives.Components; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Robust.Shared.Configuration; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Random; - -namespace Content.Server.RPSX.GameRules.Vampire.Rule.Objectives.Blood; - -public sealed class VampireBloodObjectiveSystem : EntitySystem -{ - [Dependency] private readonly MetaDataSystem _metaData = default!; - [Dependency] private readonly IRobustRandom _robustRandom = default!; - [Dependency] private readonly IConfigurationManager _cfg = default!; - [Dependency] private readonly MindSystem _mindSystem = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnObjectiveAssigned); - SubscribeLocalEvent(OnAfterObjectiveAssigned); - SubscribeLocalEvent(OnGetProgress); - } - - private void OnObjectiveAssigned(EntityUid uid, VampireBloodObjectiveComponent component, - ref ObjectiveAssignedEvent args) - { - - var count = _mindSystem.GetAliveHumans().Count; - component.RequiredBloodCount = count * 50; - } - - private void OnAfterObjectiveAssigned(EntityUid uid, VampireBloodObjectiveComponent component, - ref ObjectiveAfterAssignEvent args) - { - _metaData.SetEntityName(uid, - Loc.GetString("vampire-blood-objective-title", ("bloodCount", component.RequiredBloodCount))); - } - - private void OnGetProgress(EntityUid uid, VampireBloodObjectiveComponent component, - ref ObjectiveGetProgressEvent args) - { - args.Progress = 0f; - var entity = args.Mind.CurrentEntity; - if (entity == null) - return; - - if (!TryComp(entity.Value, out var vampireComponent)) - return; - - if (vampireComponent.FullPower) - { - args.Progress = 1f; - return; - } - - args.Progress = vampireComponent.TotalDrunkBlood / component.RequiredBloodCount; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Enthrall/VampireEnthrallObjectiveComponent.cs b/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Enthrall/VampireEnthrallObjectiveComponent.cs deleted file mode 100644 index 3e78a5ff8c9..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Enthrall/VampireEnthrallObjectiveComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Robust.Shared.GameObjects; -using Robust.Shared.Serialization.Manager.Attributes; - -namespace Content.Server.RPSX.GameRules.Vampire.Rule.Objectives.Enthrall; - -[RegisterComponent] -public sealed partial class VampireEnthrallObjectiveComponent : Component -{ - [DataField] - public float TrallCount = 2f; -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Enthrall/VampireEnthrallObjectiveSystem.cs b/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Enthrall/VampireEnthrallObjectiveSystem.cs deleted file mode 100644 index 3b102a42272..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/Rule/Objectives/Enthrall/VampireEnthrallObjectiveSystem.cs +++ /dev/null @@ -1,68 +0,0 @@ -using Content.Server.RPSX.GameRules.Vampire.Role.Components; -using Content.Server.RPSX.GameRules.Vampire.Role.Trall; -using Content.Shared.Objectives.Components; -using Content.Shared.RPSX.DarkForces.Vampire.Components; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Random; - -namespace Content.Server.RPSX.GameRules.Vampire.Rule.Objectives.Enthrall; - -public sealed class VampireEnthrallObjectiveSystem : EntitySystem -{ - [Dependency] private readonly MetaDataSystem _metaData = default!; - [Dependency] private readonly IRobustRandom _robustRandom = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnObjectiveAssigned); - SubscribeLocalEvent(OnAfterObjectiveAssigned); - SubscribeLocalEvent(OnGetProgress); - } - - private void OnObjectiveAssigned(EntityUid uid, VampireEnthrallObjectiveComponent component, - ref ObjectiveAssignedEvent args) - { - component.TrallCount = _robustRandom.Next(2, 4); - } - - private void OnAfterObjectiveAssigned(EntityUid uid, VampireEnthrallObjectiveComponent component, - ref ObjectiveAfterAssignEvent args) - { - _metaData.SetEntityName(uid, - Loc.GetString("vampire-enthrall-objective-title", ("trallCount", component.TrallCount))); - } - - private void OnGetProgress(EntityUid uid, VampireEnthrallObjectiveComponent component, - ref ObjectiveGetProgressEvent args) - { - args.Progress = 0f; - - var entity = args.Mind.CurrentEntity; - if (entity == null) - return; - - if (!TryComp(entity.Value, out var vampireComponent)) - return; - - if (vampireComponent.FullPower) - { - args.Progress = 1f; - return; - } - - var trallCount = 0; - var query = EntityQueryEnumerator(); - while (query.MoveNext(out _, out var trallComponent)) - { - if (trallComponent.OwnerUid != entity) - continue; - - trallCount++; - } - - args.Progress = trallCount / component.TrallCount; - } -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/VampireTargetComponent.cs b/Content.Server/_RPSX/GameRules/Vampire/VampireTargetComponent.cs deleted file mode 100644 index 866411b05c8..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/VampireTargetComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Robust.Shared.GameObjects; -using Robust.Shared.Serialization.Manager.Attributes; - -namespace Content.Server.RPSX.GameRules.Vampire; - -[RegisterComponent] -public sealed partial class VampireTargetComponent : Component -{ - [DataField("BloodDrinkedAmmount")] - public int BloodDrinkedAmmount; -} diff --git a/Content.Server/_RPSX/GameRules/Vampire/VampireThirst.cs b/Content.Server/_RPSX/GameRules/Vampire/VampireThirst.cs deleted file mode 100644 index b5b931866fa..00000000000 --- a/Content.Server/_RPSX/GameRules/Vampire/VampireThirst.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Content.Server.RPSX.Bridges; -using Content.Shared.EntityEffects; -using Content.Shared.Nutrition.Components; -using Content.Shared.Nutrition.EntitySystems; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.Manager.Attributes; - -namespace Content.Server.RPSX.GameRules.Vampire; - -public sealed partial class VampireThirst : EntityEffect -{ - private const float DefaultHydrationFactor = 3.0f; - - [DataField("factor")] - public float HydrationFactor { get; set; } = DefaultHydrationFactor; - - public override void Effect(EntityEffectBaseArgs args) - { - if (args is not EntityEffectReagentArgs reagentArgs) - return; - - var target = reagentArgs.TargetEntity; - var isVampire = IoCManager.Resolve().IsVampire(target); - if (!isVampire || !args.EntityManager.TryGetComponent(target, out ThirstComponent? thirst)) - return; - - args.EntityManager.System().ModifyThirst(target, thirst, HydrationFactor); - } - - protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return null; - } -} diff --git a/Content.Server/_RPSX/GameTicking/Rules/Vampire/VampireRuleComponent.cs b/Content.Server/_RPSX/GameTicking/Rules/Vampire/VampireRuleComponent.cs deleted file mode 100644 index c0f40a910e4..00000000000 --- a/Content.Server/_RPSX/GameTicking/Rules/Vampire/VampireRuleComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Robust.Shared.Analyzers; -using Robust.Shared.GameObjects; - -namespace Content.Server.RPSX.GameTicking.Rules.Vampire; - -[RegisterComponent] -[Access(typeof(VampireRuleSystem))] -public sealed partial class VampireRuleComponent : Component -{ -} diff --git a/Content.Server/_RPSX/GameTicking/Rules/Vampire/VampireRuleSystem.cs b/Content.Server/_RPSX/GameTicking/Rules/Vampire/VampireRuleSystem.cs deleted file mode 100644 index 1409f9fa4f7..00000000000 --- a/Content.Server/_RPSX/GameTicking/Rules/Vampire/VampireRuleSystem.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Linq; -using Content.Server.Antag; -using Content.Server.GameTicking.Rules; -using Content.Server.Objectives; -using Content.Shared.Mind; -using Robust.Shared.GameObjects; -using Robust.Shared.IoC; - -namespace Content.Server.RPSX.GameTicking.Rules.Vampire; - -public sealed class VampireRuleSystem : GameRuleSystem -{ - [Dependency] private readonly AntagSelectionSystem _antag = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnObjectivesTextGetInfo); - SubscribeLocalEvent(OnTextPrepend); - SubscribeLocalEvent(OnAntagSelected); - } - - private void OnTextPrepend(EntityUid uid, VampireRuleComponent component, ObjectivesTextPrependEvent args) - { - args.Text += "\n" + "На станции были вампиры"; - } - - private void OnAntagSelected(EntityUid uid, VampireRuleComponent component, AfterAntagEntitySelectedEvent args) - { - } - - private void OnObjectivesTextGetInfo(EntityUid uid, VampireRuleComponent component, - ref ObjectivesTextGetInfoEvent args) - { - args.Minds = _antag.GetAntagMindEntityUids(uid).Select(mindId => (mindId, Comp(mindId).CharacterName ?? "?")).ToList(); - args.AgentName = "Вампир"; - } -} diff --git a/Content.Shared/_RPSX/Vampire/Attempt/VampireChiropteanScreechAttemptEvent.cs b/Content.Shared/_RPSX/Vampire/Attempt/VampireChiropteanScreechAttemptEvent.cs deleted file mode 100644 index 28e48dd4e3d..00000000000 --- a/Content.Shared/_RPSX/Vampire/Attempt/VampireChiropteanScreechAttemptEvent.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Content.Shared.RPSX.Vampire.Attempt; - -public sealed class VampireChiropteanScreechAttemptEvent : CancellableEntityEventArgs -{ - public readonly EntityUid Target; - public readonly EntityUid User; - public readonly bool FullPower; - - public VampireChiropteanScreechAttemptEvent(EntityUid target, EntityUid user, bool fullPower) - { - Target = target; - User = user; - FullPower = fullPower; - } -} diff --git a/Content.Shared/_RPSX/Vampire/Attempt/VampireDrinkBloodAttemptEvent.cs b/Content.Shared/_RPSX/Vampire/Attempt/VampireDrinkBloodAttemptEvent.cs deleted file mode 100644 index 5341a39eee2..00000000000 --- a/Content.Shared/_RPSX/Vampire/Attempt/VampireDrinkBloodAttemptEvent.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Content.Shared.Inventory; - -namespace Content.Shared.RPSX.Vampire.Attempt; - -public sealed class VampireDrinkBloodAttemptEvent : CancellableEntityEventArgs, IInventoryRelayEvent -{ - public SlotFlags TargetSlots => SlotFlags.NECK; -} diff --git a/Content.Shared/_RPSX/Vampire/Attempt/VampireHypnosisAttemptEvent.cs b/Content.Shared/_RPSX/Vampire/Attempt/VampireHypnosisAttemptEvent.cs deleted file mode 100644 index 3a1334451c5..00000000000 --- a/Content.Shared/_RPSX/Vampire/Attempt/VampireHypnosisAttemptEvent.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Content.Shared.RPSX.Vampire.Attempt; - -public sealed partial class VampireHypnosisAttemptEvent : CancellableEntityEventArgs -{ - public readonly EntityUid Target; - public readonly EntityUid User; - public readonly bool FullPower; - - public VampireHypnosisAttemptEvent(EntityUid target, EntityUid user, bool fullPower) - { - Target = target; - User = user; - FullPower = fullPower; - } -} diff --git a/Content.Shared/_RPSX/Vampire/Attempt/VampireParalizeAttemptEvent.cs b/Content.Shared/_RPSX/Vampire/Attempt/VampireParalizeAttemptEvent.cs deleted file mode 100644 index 8956795ac2b..00000000000 --- a/Content.Shared/_RPSX/Vampire/Attempt/VampireParalizeAttemptEvent.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Content.Shared.RPSX.Vampire.Attempt; - -public sealed partial class VampireParalizeAttemptEvent : CancellableEntityEventArgs -{ - public readonly EntityUid Target; - public readonly EntityUid User; - public readonly bool FullPower; - - public VampireParalizeAttemptEvent(EntityUid target, EntityUid user, bool fullPower) - { - Target = target; - User = user; - FullPower = fullPower; - } -} diff --git a/Content.Shared/_RPSX/Vampire/VampireAbilitiesEvents.cs b/Content.Shared/_RPSX/Vampire/VampireAbilitiesEvents.cs deleted file mode 100644 index 735f74ddc08..00000000000 --- a/Content.Shared/_RPSX/Vampire/VampireAbilitiesEvents.cs +++ /dev/null @@ -1,84 +0,0 @@ -using Content.Shared.Actions; - -namespace Content.Shared.RPSX.Vampire; - -public interface IVampireEvent -{ - public int BloodCost { get; } -} - -public sealed partial class VampireOpenHelpDialogEvent : InstantActionEvent -{ -} - -public sealed partial class VampireDrinkBloodAblityEvent : EntityTargetActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireRejuvenateEvent : InstantActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireFlashEvent : InstantActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireHypnosisEvent : EntityTargetActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireChargeEvent : WorldTargetActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireShapeshiftEvent : InstantActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampirePolymorphEvent : InstantActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireRejuvenatePlusEvent : InstantActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireSummonBatsEvent : InstantActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireChiropteanScreechEvent : InstantActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireEnthrallEvent : EntityTargetActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} - -public sealed partial class VampireFullPowerEvent : InstantActionEvent, IVampireEvent -{ - [DataField] - public int BloodCost { get; private set; } -} diff --git a/Content.Shared/_RPSX/Vampire/VampireDrinkBloodDoAfterEvent.cs b/Content.Shared/_RPSX/Vampire/VampireDrinkBloodDoAfterEvent.cs deleted file mode 100644 index 70df2821dfd..00000000000 --- a/Content.Shared/_RPSX/Vampire/VampireDrinkBloodDoAfterEvent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Shared.DoAfter; -using Robust.Shared.Serialization; - -namespace Content.Shared.RPSX.Vampire; - -[Serializable, NetSerializable] -public sealed partial class VampireDrinkBloodDoAfterEvent : DoAfterEvent -{ - public VampireDrinkBloodDoAfterEvent() - { - } - public override DoAfterEvent Clone() - { - return this; - } -} diff --git a/Content.Shared/_RPSX/Vampire/VampireHypnoseDoAfterEvent.cs b/Content.Shared/_RPSX/Vampire/VampireHypnoseDoAfterEvent.cs deleted file mode 100644 index 110ed46c39f..00000000000 --- a/Content.Shared/_RPSX/Vampire/VampireHypnoseDoAfterEvent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Shared.DoAfter; -using Robust.Shared.Serialization; - -namespace Content.Shared.RPSX.Vampire; - -[Serializable, NetSerializable] -public sealed partial class VampireHypnoseDoAfterEvent : DoAfterEvent -{ - public VampireHypnoseDoAfterEvent() - { - } - public override DoAfterEvent Clone() - { - return this; - } -} diff --git a/Content.Shared/_RPSX/Vampire/VampireTrallDoAfterEvent.cs b/Content.Shared/_RPSX/Vampire/VampireTrallDoAfterEvent.cs deleted file mode 100644 index 4619144718b..00000000000 --- a/Content.Shared/_RPSX/Vampire/VampireTrallDoAfterEvent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Shared.DoAfter; -using Robust.Shared.Serialization; - -namespace Content.Shared.RPSX.Vampire; - -[Serializable, NetSerializable] -public sealed partial class VampireTrallDoAfterEvent : DoAfterEvent -{ - public VampireTrallDoAfterEvent() - { - } - public override DoAfterEvent Clone() - { - return this; - } -} diff --git a/Resources/Locale/ru-RU/Rules/vampire.ftl b/Resources/Locale/ru-RU/Rules/vampire.ftl deleted file mode 100644 index 00942920924..00000000000 --- a/Resources/Locale/ru-RU/Rules/vampire.ftl +++ /dev/null @@ -1,55 +0,0 @@ -## vampire - -# Shown at the end of a round of vampire -vampire-round-end-result = - { $vampireCount -> - [one] Был один вампир. - *[other] Было { $vampireCount } вампиров. - } -vampire-round-end-codewords = Кодовыми словами были: [color=White]{ $codewords }[/color]. -# Shown at the end of a round of vampire -vampire-user-was-a-vampire = [color=gray]{ $user }[/color] был(а) вампиром. -vampire-user-was-a-vampire-named = [color=White]{ $name }[/color] ([color=gray]{ $user }[/color]) был(а) вампиром. -vampire-was-a-vampire-named = [color=White]{ $name }[/color] был(а) вампиром. -vampire-user-was-a-vampire-with-objectives = [color=gray]{ $user }[/color] был(а) вампиром со следующими целями: -vampire-user-was-a-vampire-with-objectives-named = [color=White]{ $name }[/color] ([color=gray]{ $user }[/color]) был(а) вампиром со следующими целями: -vampire-was-a-vampire-with-objectives-named = [color=White]{ $name }[/color] был(а) вампиром со следующими целями: -preset-vampire-objective-issuer-syndicate = [color=#87cefa]Синдикат[/color] -# Shown at the end of a round of vampire -vampire-objective-condition-success = { $condition } | [color={ $markupColor }]Успех![/color] -# Shown at the end of a round of vampire -vampire-objective-condition-fail = { $condition } | [color={ $markupColor }]Провал![/color] ({ $progress }%) -vampire-title = Вампиры -vampire-description = Среди нас есть Вампиры... -vampire-not-enough-ready-players = Недостаточно игроков готовы к игре! Из { $minimumPlayers } необходимых игроков готовы { $readyPlayersCount }. Не удалось начать режим Вампиров. -vampire-no-one-ready = Нет готовых игроков! Не удалось начать режим Вампиров. - -## vampireDeathMatch - -vampire-death-match-title = Бой насмерть вампиров -vampire-death-match-description = Все — Вампиры. Все хотят смерти друг друга. -vampire-death-match-station-is-too-unsafe-announcement = На станции слишком опасно, чтобы продолжать. У вас есть одна минута. -vampire-death-match-end-round-description-first-line = КПК были восстановлены... -vampire-death-match-end-round-description-entry = КПК { $originalName }, с { $tcBalance } ТК - -## vampireRole - -# vampireRole -vampire-role-greeting = - Вы - агент Синдиката. - Ваши цели и кодовые слова перечислены в меню персонажа. - Воспользуйтесь аплинком, встроенным в ваш КПК, чтобы приобрести всё необходимое для выполнения работы. - Смерть Nanotrasen! -vampire-role-codewords = - Кодовые слова следующие: - { $codewords } - Кодовые слова можно использовать в обычном разговоре, чтобы незаметно идентифицировать себя для других агентов Синдиката. - Прислушивайтесь к ним и храните их в тайне. -vampire-role-uplink-code = - Установите рингтон Вашего КПК на { $code } чтобы заблокировать или разблокировать аплинк. - Не забудьте заблокировать его и сменить код, иначе любой член экипажа станции сможет открыть аплинк! -# don't need all the flavour text for character menu -vampire-role-codewords-short = - Кодовые слова: - { $codewords }. -vampire-role-uplink-code-short = Ваш код аплинка: { $code }. diff --git a/Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/abilities.ftl b/Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/abilities.ftl deleted file mode 100644 index b8a6a836fe9..00000000000 --- a/Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/abilities.ftl +++ /dev/null @@ -1,14 +0,0 @@ -#UI -vampire-abilities-title = Способности вампира -vampire-abilities-learn = Изучить -vampire-abilities-name = Название: -vampire-abilities-bloodrequired = Требуется крови: -vampire-abilities-current-blood-level = Текущий уровень крови: -vampire-abilities-total-blood-level = Всего выпито крови: -#ablities messages -vampire-not-enought-blood = Недостаточно крови -vampire-not-correct-blood = Кровь этой цели непригодна -vampire-target-defence = Цель защищена от вас святой силой -vampire-target-max-blood = Вы выпили максимальное количество крови с этой цели -vampire-trall-not-valid = Не удается зомбировать цель -vampire-got-saint-damage = Вы получили урон от святого предмета или серебра diff --git a/Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/objectives.ftl b/Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/objectives.ftl deleted file mode 100644 index b8acc419efe..00000000000 --- a/Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/objectives.ftl +++ /dev/null @@ -1,6 +0,0 @@ -vampire-blood-objective-title = Для возвышения, вам необходимо выпить { $bloodCount } единиц крови -vampire-enthrall-objective-title = Для возвышения, сделайте своими рабами { $trallCount } человек(а) -vampire-briefing = - Вы вампир, ваша задача первым стать высшим вампиром и уничтожить все живое - Остальные вампиры являются вашими врагами - Не дайте им опередись себя и станьте высшим вампиров раньше них diff --git a/Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/trall.ftl b/Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/trall.ftl deleted file mode 100644 index ffd025811fd..00000000000 --- a/Resources/Locale/ru-RU/darkstation/DarkForces/Vampire/trall.ftl +++ /dev/null @@ -1,6 +0,0 @@ -vampire-trall = Вы стали траллом вампира! Выполняйте всего его указания -vampire-trall-briefing = - Вы тралл вампира - В простонародье его раб, слушайтесь и подчиняйтесь ему беспрекословно - Имя вашего господина: { $ownerName } -vampire-trall-free = Вы больше не тралл вампира, вы НИЧЕГО не помните из того, что с вами произошло diff --git a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Abilities/abilities.yml b/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Abilities/abilities.yml deleted file mode 100644 index b528b6fff40..00000000000 --- a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Abilities/abilities.yml +++ /dev/null @@ -1,101 +0,0 @@ -- type: vampireAbility - id: VampireHypnosis - name: vampire-hypnosis - description: vampire-hypnosis-description - bloodCost: 100 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_hypnotise - actionId: VampireHypnosisAction - -#- type: vampireAbility -# id: VampireGrasp -# name: vampire-grasp -# description: vampire-grasp-description -# bloodCost: 200 -# icon: -# sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi -# state: vampire_grasp -# actionId: "test" -# -#- type: vampireAbility -# id: VampireBloodRush -# name: vampire-bloodrush -# description: vampire-bloodrush-description -# bloodCost: 200 -# icon: -# sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi -# state: vampire_blood_rush -# actionId: "test" -# - -#- type: vampireAbility -# id: VampireCharge -# name: vampire-charge -# description: vampire-charge-description -# bloodCost: 200 -# icon: -# sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi -# state: vampire_charge -# actionId: VampireChargeAction - -- type: vampireAbility - id: VampireShapeshift - name: vampire-shapeshift - description: vampire-shapeshift-description - bloodCost: 100 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_shapeshift - actionId: VampireShapeshiftAction - -- type: vampireAbility - id: VampirePolymorph - name: vampire-polymorph - description: vampire-polymorph-description - bloodCost: 150 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_poly - actionId: VampirePolymorphAction - -- type: vampireAbility - id: VampireRejuvenatePlus - name: vampire-rejuvenate-plus - description: vampire-rejuvenate-description-plus - bloodCost: 250 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_rejuvinate_plus - actionId: VampireRejuvenatePlusAction - replaceId: VampireRejuvenateAction - -- type: vampireAbility - id: VampireEnthrallScreech - name: vampire-enthrall-screech - description: vampire-enthrall-description - bloodCost: 250 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_enthrall - actionId: VampireEnthrallAction - -- type: vampireAbility - id: VampireSummonBats - name: vampire-summon-bats - description: vampire-summon-bats-description - bloodCost: 450 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_bats - actionId: VampireSummonBatsAction - -- type: vampireAbility - id: VampireChiropteanScreech - name: vampire-chiroptean-screech - description: vampire-chiroptean-screech-description - bloodCost: 700 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_screech - actionId: VampireChiropteanScreechAction diff --git a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Abilities/instant_ablities.yml b/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Abilities/instant_ablities.yml deleted file mode 100644 index abf01717271..00000000000 --- a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Abilities/instant_ablities.yml +++ /dev/null @@ -1,245 +0,0 @@ -- type: entity - parent: BaseAction - id: VampireStatisticAction - name: Statistics - description: Learn about your abilities and your blood level - components: - - type: Action - itemIconStyle: NoItem - useDelay: 0 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_statistic - - type: InstantAction - event: !type:VampireOpenHelpDialogEvent - bloodCost: 0 - -- type: entity - parent: BaseAction - id: VampireDrinkBloodAction - name: Drink Blood - description: Drink the blood of your victim - components: - - type: Action - itemIconStyle: NoItem - useDelay: 0 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_drink_blood - - type: TargetAction - interactOnMiss: false - - type: EntityTargetAction - canTargetSelf: false - whitelist: - components: - - Body - sound: - path: /Audio/DarkStation/Narsi/enter_blood.ogg - event: !type:VampireDrinkBloodAblityEvent - bloodCost: 0 - -- type: entity - parent: BaseAction - id: VampireRejuvenateAction - name: Rejuvenation - description: Removes stun and restores stamina - components: - - type: Action - itemIconStyle: NoItem - useDelay: 0 - checkCanInteract: false - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_rejuvinate - - type: InstantAction - sound: - path: /Audio/DarkStation/Narsi/summon_karp.ogg - event: !type:VampireRejuvenateEvent - bloodCost: 30 - -- type: entity - parent: BaseAction - id: VampireFlashAction - name: Flash - description: Stuns everyone standing right next to you - components: - - type: Action - itemIconStyle: NoItem - useDelay: 30 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_glare - - type: InstantAction - event: !type:VampireFlashEvent - bloodCost: 30 - -- type: entity - parent: BaseAction - id: VampireHypnosisAction - name: Hypnosis - description: Puts the victim to sleep - components: - - type: Action - itemIconStyle: NoItem - useDelay: 180 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_hypnotise - - type: TargetAction - interactOnMiss: false - - type: EntityTargetAction - canTargetSelf: false - whitelist: - components: - - Body - event: !type:VampireHypnosisEvent - bloodCost: 50 - -- type: entity - parent: BaseAction - id: VampireChargeAction - name: Dash - description: After activation, you will lunge toward the tile you clicked on - components: - - type: Action - itemIconStyle: NoItem - useDelay: 1 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_charge - - type: TargetAction - range: 16 - - type: WorldTargetAction - sound: - path: /Audio/DarkStation/Narsi/wand_teleport.ogg - event: !type:VampireChargeEvent - bloodCost: 100 - -- type: entity - parent: BaseAction - id: VampireShapeshiftAction - name: Transformation - description: Randomly changes your body features - components: - - type: Action - itemIconStyle: NoItem - useDelay: 10 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_shapeshift - - type: InstantAction - sound: - path: /Audio/DarkStation/Narsi/wand_teleport.ogg - event: !type:VampireShapeshiftEvent - bloodCost: 100 - -- type: entity - parent: BaseAction - id: VampirePolymorphAction - name: Wings - description: Turns you into a bat for 1 minute - components: - - type: Action - itemIconStyle: NoItem - useDelay: 60 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_poly - - type: InstantAction - sound: - path: /Audio/DarkStation/Narsi/summonitems_generic.ogg - event: !type:VampirePolymorphEvent - bloodCost: 50 - -- type: entity - parent: BaseAction - id: VampireRejuvenatePlusAction - name: Rejuvenation+ - description: In addition to removing stun, now also grants you short-term regeneration. - components: - - type: Action - itemIconStyle: NoItem - useDelay: 40 - checkCanInteract: false - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_rejuvinate_plus - - type: InstantAction - sound: - path: /Audio/DarkStation/Narsi/summon_karp.ogg - event: !type:VampireRejuvenatePlusEvent - bloodCost: 50 - -- type: entity - parent: BaseAction - id: VampireSummonBatsAction - name: Children of the Night - description: Summons two swarms of bats that attack everyone who is not a vampire - or a thrall - components: - - type: Action - itemIconStyle: NoItem - useDelay: 180 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_bats - - type: InstantAction - event: !type:VampireSummonBatsEvent - bloodCost: 200 - -- type: entity - parent: BaseAction - id: VampireChiropteanScreechAction - name: Ultrasonic Screech - description: Stuns all humans within hearing range and breaks glass. Can stun vampire - thralls but not other vampires. - components: - - type: Action - itemIconStyle: NoItem - useDelay: 180 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_screech - - type: InstantAction - sound: - path: /Audio/DarkStation/creepyshriek.ogg - event: !type:VampireChiropteanScreechEvent - bloodCost: 200 - -- type: entity - parent: BaseAction - id: VampireEnthrallAction - name: Порабощение - description: Превращает жертву в вашего верного раба. - components: - - type: Action - itemIconStyle: NoItem - useDelay: 180 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_enthrall - - type: TargetAction - interactOnMiss: false - - type: EntityTargetAction - canTargetSelf: false - whitelist: - components: - - Body - event: !type:VampireEnthrallEvent - bloodCost: 100 - -- type: entity - parent: BaseAction - id: VampireFullPowerAction - name: Full Power - description: Now you are the greatest vampire! Holy water is like mineral water to you. Bullets barely tickle. But silver weapons deal significant damage. - components: - - type: Action - itemIconStyle: NoItem - useDelay: 0 - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/actions.rsi - state: vampire_jaunt - - type: InstantAction - event: !type:VampireFullPowerEvent - bloodCost: 0 diff --git a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire_bat.yml b/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire_bat.yml deleted file mode 100644 index 78161637dfc..00000000000 --- a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire_bat.yml +++ /dev/null @@ -1,77 +0,0 @@ -- type: entity - name: Летучая мышь - parent: SimpleMobBase - id: MobVampireBat - suffix: Вампирская - components: - - type: MovementSpeedModifier - baseWalkSpeed: 3 - baseSprintSpeed: 6 - - type: Sprite - drawdepth: Mobs - layers: - - map: ["enum.DamageStateVisualLayers.Base"] - state: bat - sprite: Mobs/Animals/bat.rsi - - type: Physics - - type: Fixtures - fixtures: - fix1: - shape: !type:PhysShapeCircle - radius: 0.25 - density: 10 - mask: - - FlyingMobMask - layer: - - FlyingMobLayer - - type: DamageStateVisuals - states: - Alive: - Base: bat - Critical: - Base: dead - Dead: - Base: dead - - type: Butcherable - spawned: - - id: FoodMeat - amount: 1 - - type: SentienceTarget - flavorKind: station-event-random-sentience-flavor-organic - - type: Bloodstream - bloodMaxVolume: 50 - - type: MeleeWeapon - hidden: true - soundHit: - path: /Audio/Effects/bite.ogg - angle: 0 - animation: WeaponArcBite - damage: - types: - Piercing: 2 - - type: NoSlip - - type: Puller - needsHands: true - - type: NpcFactionMember - factions: - - Vampire - - type: HTN - rootTask: - task: XenoCompound - blackboard: - NavInteract: !type:Bool true - NavPry: !type:Bool true - NavSmash: !type:Bool true - -- type: polymorph - id: VampireBatPolymorph - configuration: - entity: MobVampireBat - forced: false - duration: 60 - inventory: None - allowRepeatedMorphs: true - transferDamage: true - transferName: true - revertOnCrit: true - revertOnDeath: true diff --git a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Roles/icons.yml b/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Roles/icons.yml deleted file mode 100644 index 482848550fc..00000000000 --- a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Roles/icons.yml +++ /dev/null @@ -1,23 +0,0 @@ -- type: factionIcon - id: VampireIcon - priority: 11 - showTo: - components: - - ShowAntagIcons - - Vampire - - VampireTrall - icon: - sprite: /Textures/DarkStation/MainGame/DarkForces/Vampire/icons.rsi - state: vampire - -- type: factionIcon - id: VampireTrallIcon - priority: 11 - showTo: - components: - - ShowAntagIcons - - Vampire - - VampireTrall - icon: - sprite: /Textures/DarkStation/MainGame/DarkForces/Vampire/icons.rsi - state: trall diff --git a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Roles/objectives.yml b/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Roles/objectives.yml deleted file mode 100644 index 6aeec9c755f..00000000000 --- a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/Roles/objectives.yml +++ /dev/null @@ -1,28 +0,0 @@ -- type: entity - id: VampireBloodObjective - categories: [ HideSpawnMenu ] - description: "Выпейте указанное количество крови" - components: - - type: Objective - difficulty: 0.0 - issuer: "Клан вампиров" - unique: false - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi - state: icon - - type: VampireBloodObjective - -- type: entity - id: VampireEnthrallObjective - categories: [ HideSpawnMenu ] - description: "Сделайте своими рабами указанное количество человек" - components: - - type: Objective - difficulty: 0.0 - issuer: "Клан вампиров" - unique: false - icon: - sprite: DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi - state: icon - - type: VampireEnthrallObjective - diff --git a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/vampire.yml b/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/vampire.yml deleted file mode 100644 index 3355993402d..00000000000 --- a/Resources/Prototypes/DarkStation/MainGame/DarkForces/Vampire/vampire.yml +++ /dev/null @@ -1,113 +0,0 @@ -- type: entity - name: "Вампир" - id: MobVampire - parent: SimpleSpaceMobBase - description: "Судя по всему этот вампир невероятно силен!" - components: - - type: Insulated - - type: CombatMode - - type: InputMover - - type: MobMover - - type: Tool - speed: 1.5 - qualities: - - Prying - - type: Prying - pryPowered: !type:Bool - true - force: !type:Bool - false - useSound: - path: /Audio/Items/crowbar.ogg - - type: Sprite - drawdepth: Mobs - sprite: DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi - layers: - - map: ["enum.DamageStateVisualLayers.Base"] - state: standing - - type: Physics - bodyType: Dynamic - - type: Fixtures - fixtures: - fix1: - shape: !type:PhysShapeCircle - radius: 0.25 - density: 230 - mask: - - MobMask - layer: - - MobLayer - - type: MobState - allowedStates: - - Alive - - Dead - - type: MobThresholds - thresholds: - 0: Alive - 500: Dead - - type: MeleeWeapon - range: 2.0 - hidden: true - angle: 0 - soundHit: - collection: AlienClaw - animation: WeaponArcBite - damage: - groups: - Brute: 30 - - type: DamageStateVisuals - rotate: true - states: - Alive: - Base: standing - Dead: - Base: dead - - type: Puller - needsHands: false - - type: Tag - tags: - - CannotSuicide - - DoorBumpOpener - - FootstepSound - - type: NoSlip - - type: SlowOnDamage - speedModifierThresholds: - 100: 0.9 - 250: 0.8 - 350: 0.7 - 450: 0.5 - - type: Damageable - damageContainer: Biological - damageModifierSet: VampireModiferSet - - type: MovementSpeedModifier - baseWalkSpeed: 5.00 - baseSprintSpeed: 6.00 - - type: Vampire - fullPower: true - - type: Speech - speechSounds: Alto - - type: DamageForceSay - - type: Vocal - sounds: - Male: MaleHuman - Female: FemaleHuman - Unsexed: MaleHuman - - type: Emoting - - type: BodyEmotes - soundsId: GeneralBodyEmotes - - type: Grammar - attributes: - proper: true - -- type: damageModifierSet - id: VampireModiferSet - coefficients: - Blunt: 0.4 - Slash: 0.4 - Piercing: 0.4 - Cold: 0.4 - Poison: 0.4 - Radiation: 0.4 - Asphyxiation: 0.4 - Bloodloss: 0.4 - Cellular: 0.4 diff --git a/Resources/Prototypes/DarkStation/MainGame/DarkForces/antags.yml b/Resources/Prototypes/DarkStation/MainGame/DarkForces/antags.yml index 5cf11f6e8e5..aa90bb38dcc 100644 --- a/Resources/Prototypes/DarkStation/MainGame/DarkForces/antags.yml +++ b/Resources/Prototypes/DarkStation/MainGame/DarkForces/antags.yml @@ -45,22 +45,3 @@ requirements: - !type:OverallPlaytimeRequirement time: 72000 # 20h - -#Vampire -- type: antag - id: Vampire - name: Вампир - antagonist: true - setPreference: true - objective: "Станьте высшим вампиром и уничтожьте станцию" - requirements: - - !type:OverallPlaytimeRequirement - time: 72000 # 20h - -- type: antag - id: VampireTrall - name: Тралл Вампира - antagonist: true - setPreference: false - objective: "Служите вампирам, уничтожьте станцию." - diff --git a/Resources/Prototypes/DarkStation/MainGame/GameRules/round_start.yml b/Resources/Prototypes/DarkStation/MainGame/GameRules/round_start.yml index 69901c3eab7..76c51351d35 100644 --- a/Resources/Prototypes/DarkStation/MainGame/GameRules/round_start.yml +++ b/Resources/Prototypes/DarkStation/MainGame/GameRules/round_start.yml @@ -106,38 +106,3 @@ antagPrototype: RatvarRighteous roleType: TeamAntagonist - type: RatvarRole - -- type: entity - id: Vampire - parent: BaseGameRule - components: - - type: VampireRule - - type: AntagSelection - selectionTime: IntraPlayerSpawn - definitions: - - prefRoles: [ Vampire ] - max: 2 - playerRation: 20 - blacklist: - components: - - AntagImmune - lateJoinAdditional: true - briefing: - text: vampire-briefing - color: Plum - sound: "/Audio/DarkStation/DarkForces/Vampire/vampalert.ogg" - components: - - type: Vampire - mindRoles: - - MindRoleVampire - -- type: entity - parent: BaseMindRoleAntag - id: MindRoleVampire - name: Vampire Role - # description: mind-role-thief-description - components: - - type: MindRole - antagPrototype: Vampire - roleType: SoloAntagonist - - type: VampireRole From a2531539e49461a3301f35e70cdbf3dbef04b722 Mon Sep 17 00:00:00 2001 From: Dentristan Date: Sat, 5 Jul 2025 16:47:49 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B0=20=D0=B2=D0=B0?= =?UTF-8?q?=D0=BC=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=20=D1=87.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Systems/AdminVerbSystem.AntagsDark.cs | 11 ----------- .../darkstation/maingame/gamerules/round_start.ftl | 2 -- 2 files changed, 13 deletions(-) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.AntagsDark.cs b/Content.Server/Administration/Systems/AdminVerbSystem.AntagsDark.cs index 79f4bd01e03..4ef09ae047b 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.AntagsDark.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.AntagsDark.cs @@ -38,17 +38,6 @@ private void AddDarkStationAntags(GetVerbsEvent args, ICommonSession playe }; args.Verbs.Add(narsiCultLeader); - Verb vampire = new() - { - Text = "Сделать вампиром", - Category = VerbCategory.Antag, - Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/DarkStation/MainGame/DarkForces/Vampire/icons.rsi"), "vampire"), - Act = () => _antagBridge.ForceMakeVampire(player), - Impact = LogImpact.High, - Message = "Делает цель вампиром" - }; - args.Verbs.Add(vampire); - Verb ratvar = new() { Text = "Сделать праведником Ратвара", diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/darkstation/maingame/gamerules/round_start.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/darkstation/maingame/gamerules/round_start.ftl index 895d936d627..11f30011e2e 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/darkstation/maingame/gamerules/round_start.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/darkstation/maingame/gamerules/round_start.ftl @@ -10,5 +10,3 @@ ent-MindRoleRatvar = Ratvar Cultist Role .desc = { ent-BaseMindRoleAntag.desc } ent-Vampire = { ent-BaseGameRule } .desc = { ent-BaseGameRule.desc } -ent-MindRoleVampire = Vampire Role - .desc = { ent-BaseMindRoleAntag.desc } From 472eea3d65e09a6045e34159912ca2742e577526 Mon Sep 17 00:00:00 2001 From: Dentristan Date: Sat, 5 Jul 2025 16:53:05 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B0=20=D0=B2=D0=B0?= =?UTF-8?q?=D0=BC=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=20=D1=87.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Vampire/Mobs/vampire.rsi/dead.png | Bin 372 -> 0 bytes .../Vampire/Mobs/vampire.rsi/icon.png | Bin 1457 -> 0 bytes .../Vampire/Mobs/vampire.rsi/meta.json | 21 ------ .../Vampire/Mobs/vampire.rsi/standing.png | Bin 2308 -> 0 bytes .../DarkForces/Vampire/actions.rsi/blink.png | Bin 752 -> 0 bytes .../DarkForces/Vampire/actions.rsi/meta.json | 65 ------------------ .../Vampire/actions.rsi/vampire_bats.png | Bin 732 -> 0 bytes .../actions.rsi/vampire_blood_rush.png | Bin 1440 -> 0 bytes .../Vampire/actions.rsi/vampire_charge.png | Bin 1627 -> 0 bytes .../Vampire/actions.rsi/vampire_cloak.png | Bin 792 -> 0 bytes .../Vampire/actions.rsi/vampire_disease.png | Bin 859 -> 0 bytes .../actions.rsi/vampire_drink_blood.png | Bin 548 -> 0 bytes .../Vampire/actions.rsi/vampire_enthrall.png | Bin 755 -> 0 bytes .../Vampire/actions.rsi/vampire_glare.png | Bin 659 -> 0 bytes .../Vampire/actions.rsi/vampire_grasp.png | Bin 1339 -> 0 bytes .../Vampire/actions.rsi/vampire_hypnotise.png | Bin 726 -> 0 bytes .../Vampire/actions.rsi/vampire_jaunt.png | Bin 652 -> 0 bytes .../Vampire/actions.rsi/vampire_poly.png | Bin 530 -> 0 bytes .../actions.rsi/vampire_rejuvinate.png | Bin 708 -> 0 bytes .../actions.rsi/vampire_rejuvinate_plus.png | Bin 732 -> 0 bytes .../Vampire/actions.rsi/vampire_screech.png | Bin 576 -> 0 bytes .../actions.rsi/vampire_shapeshift.png | Bin 839 -> 0 bytes .../Vampire/actions.rsi/vampire_statistic.png | Bin 635 -> 0 bytes .../DarkForces/Vampire/icons.rsi/meta.json | 17 ----- .../DarkForces/Vampire/icons.rsi/trall.png | Bin 136 -> 0 bytes .../DarkForces/Vampire/icons.rsi/vampire.png | Bin 154 -> 0 bytes 26 files changed, 103 deletions(-) delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/dead.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/icon.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/meta.json delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/standing.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/blink.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/meta.json delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_bats.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_blood_rush.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_charge.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_cloak.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_disease.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_drink_blood.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_enthrall.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_glare.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_grasp.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_hypnotise.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_jaunt.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_poly.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_rejuvinate.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_rejuvinate_plus.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_screech.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_shapeshift.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_statistic.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/icons.rsi/meta.json delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/icons.rsi/trall.png delete mode 100644 Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/icons.rsi/vampire.png diff --git a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/dead.png b/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/dead.png deleted file mode 100644 index b493eb8e1f9352fc07342e37a9de06801d9e9dbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVjv9yj0`Q6;y?}~kEe@c zNX4ADQysZl40v2^+t~|V9y6}sE|2Y0X!@Ss7XD+BX32zGySx-kvflpw**0_C=MO-j z(UBTym%^c__H}i^g4es^e$EnLXv(`SW-NLsq~*Zz!WgC?#f}WM1c|mAicFWLbSz`~ zweNppmW1l6l?=S{3o>Ut>QcUP=QtzpW1I6|T^Qt!8>$KHWax-0I1;egf1OR+vl45Q4B_rFcwu8Pck{$?`sDtXHTjL$2N9p1vEsv026ea7yt{<}NZ zn4%Sm6BY_7E-YHIqq=dW?txp`t}kcq)oXhmw~cw4@YJ%{Ka&4AcUvbEeF(hsvrluy zEB-*eq6y3Xw}t9_{owJ4n`3GT`vzX6x4;16OO5bM^YvxW0Px)Ye_^wR9J#xZa!eOrVi-nj|E&n<+0hr2eGh=FDm1nj;l73))RLN$ zkCBBE6*ngzH;h{fZ=C>5Z=wJ2P{ZK+zg?AVE03zTQ26-*vQQ}ed;wK&!M5_;|LtnS z;{At*0!?pev{f%)bojC)RIOn!KyLaum9kIMo`V21?Kw!L?30^*{@NU&YK#tFZYZu! zz`(InK~fg4B@5xZPIT^zAt?(6j-6`gYD`uCk*f7V(MZaIU%vY$w%@&VXHY5o_^w0O zyhmD5D0m*v5(+}C=KS^GZY<}}i8Iw4uPXG$l?$=`ItQLU8N>G+DrG;mzG+8akdy^U zSs+vmXYEG3&AV{cZj6d2Wx=Kek6~E+>65XB?nDCmj|>H_T_h=sNW`HNXCkuq-v0=r ztusn=>>{$P;Mm1z&1mc7z4t$gbsrW_$^zFeMlRP0aP1;lGlQzPkQpD7%*=S?!qJmo z2Km`6>9!8q*L1O_Ya{Jzx&UIo(`_B(XR{nV`DGAxZ)V2HjE_mG-a^*Q;MNF+S9c)n z{-2pCCSIN4wq5&z*46KjZtJ8{_9c%FmrI?TU( zNps2|DGLg-FZgF>im}mQ31H*aok8pBcTn|~=q^MKgx!Z28y%Ly;Nxvu)SDVEX9m;B$#TIt2=_vqOJJ!;i zGALPj0DRZREm>52520#Qd=Ix|;kz~fB`Z&J%AmDlZH%YZg>b6I9C#B#aal7XB@#{O zDTA)=&1iZHUEQ0}QwE7d6InAO)y6LcNdWs*ceN0zM(s?Pd^P3T3wOxTi>1#-?*QA% z(_Xj}i%ZG^m>jt9^S1}Tq;(Be*E?;>Cn&@0l@ZkBCtC5vcbE@2f9i5$yGkk zO*VMJZAhh`R8`okaH%*0ijU*$tZew}#+%%O~UKsBz zc#hyZ=@M0Hjv6CxkX zW0#m0&CJ_#6iO}+@7}D-+p=>{kZx8<=&MNhB{aR6Uw`_3QT~4cTLYWNW~TYq00000 LNkvXXu0mjf__oTC diff --git a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/meta.json b/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/meta.json deleted file mode 100644 index 0a7c9d15923..00000000000 --- a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/meta.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "license": "CC-BY-NC-SA-4.0", - "copyright": "Created by DarkStation Team", - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "dead" - }, - { - "name": "standing", - "directions": 4 - }, - { - "name": "icon" - } - ] -} diff --git a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/standing.png b/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/Mobs/vampire.rsi/standing.png deleted file mode 100644 index 92de81ce9b4fb32f5f2bc293f6052b91b93a23fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2308 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 diff --git a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_cloak.png b/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_cloak.png deleted file mode 100644 index 2d7635e8959d6f20039d900861bada29edb31df6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmV+z1LypSP)Px%(n&-?R9J<@m(5PwKoo_)iS0N6wINty(V*gV)l{P0hDFOObW>i0Zdvg-Yf^hcE_R5hwVZjwfko#5DA1Uuuzj_sh*BaQqs*K>~V%-nlN1VO<2wPt{XXKUl= zeyuX?s;bj_wL~H|TkFXk$q-_{W(ELXDr%7r?~TLV>O{eQ%?v{F=dK6LdqDp4vI2h0 zU&&bHiGvd-5)u7&NPb+?K_+nK2Wa%{xp!90h`;zaN+dsOmpR<6Mj~P}d0f*|Rmt^;tZz&rK*=HsTxDe!syx9vr%yYqBW3~-9qvP@MkbU)l^UvHa0e*hN7TqD*eHL z#+`j$XA|KWF8 z$P{qa=~LTjW0)q2qNLgh-$zqb4AZ2x)8?$x&m`}U1nOpM9j+6~9tj^leFH$#75u=b zB<6LG1>D|xoDD{hgB+miieihfb$yNNxOihP_TC$NxQ@$WT&yj$G6NkgyDo5>d;)ik_ zmxhvnk#xLpJP})P=iNyllh2{zbZAtx9)&?I?4g7^!Z WVfLg;*vvHm0000Px&6-h)vR9J<*m(5EXK^Vq=8)H6{kTfD|LBZyvRSyLZBB+;M6fC{e`$Fj-P|s3| ze?w0m_FOzD6w*_nF~#N}_E4=JN(vgPTQRHzO{y{W5O%U_HgRWL`asBhyfg3fJ~Qv^ zjItOX1h~P5RN`8c6Ol$&G}tHy1Gu7pIO*Qu4kc(g-;V@E>wcwCrXn*R@T=^}Yk`;+p+Rur9j?X)Wk!4S=hkUA%by#y6qh-6qY*=JZA-37PE` z^2eKKb9(DREzlyFTEmKb=j%QIFW27!km{QheZC0T^ZhOu#v!9)L)1c5UO#yZzQhipz~YC@y%?T7fOi4pX)=5GmPq|fGb z_I9?&=5&(1Du!`LvR9=$5+~I+NvdyB%6Vb0NFWySM!<^BFb)CO+u34zcAnmW`>u9g z;VBFBv_`6LlJCV0(Kb9f&c^$9oE#pJKl%(nu~Z;-^}rv2R$n*Ed9hRwZKc|&h+I_% zQ13mYSSnziAJCDwCbPZbSqabQfO&o(c6uz(1Hkm`Jhf1j?nvBWCj;q&sQ*z9A3v-$ zweNiT;z&iWY3Z4Oniyd%^9ra(4mg%YRR@G!u~hiCOK@H}qdO9Bk~bOa7vS|)7rENQu zE)@cjm&mrnWMNhm`7F5YRGZVeIJuCTqg+))SrGUeC5k78@3GPfxFOlAO4*y0h628> zWOnFjjjlwO@9|Outh->TcIw(+zm~~uPALLY6V0capG?S`9T2JiJNCfpL`ZrvSv)=a z?WhX{mNI3QXQC}h)bDZa5m4Z=@v5U-RU8{GZ*~CAcc`+xFm_`R_@A(zg39*77)ZQ{ lS}9@wz}OEOHwA1^{s3n(G505tk0Ss8002ovPDHLkV1nmJkmmpZ diff --git a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_drink_blood.png b/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_drink_blood.png deleted file mode 100644 index b53bd598338be76185e93d8a62a225f6d95d237e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 548 zcmV+<0^9wGP)Px$-bqA3R9J<*m%mcNKoG{igA62vlMEI%jDt2xK}AEyE7-`3;Mh^o`6@KL0v#1C z+E_R=IwON)5zIu+BHXbF`FlD1np|>o+28JMc5{q#jtA$8gXr4%m1D;|Oj*WZY*Y}d zX1ftT5iiDuc8deRvuPArSX$%06%Y*V78k~Ew?2U52vE;!RbUs2SG>|9F`Bs&Lb@%C zPwhHD4Y=9HVm0?-A5VHUjQf^^2<_z5t}9y0ulopCMTDD%T}6*?FG}l5WgazpvA=)1 zyg5C9FxC*Jq)G6Q0v^C|e9VTmby1#8Hqf1|1-L m8cbDEBxr-7g(fZnMC=bTRozg4{YoDI0000Px%tw}^dR9J=OmrYL-Q51%sDW%XRq@^njL#0ZH1TaK4L=y@L(HKLb23flD7l>O{ z{WB(P*c!uv7(gQ-p)KM9DJe4{qAfMpPFshLi)N;`(1EFFG4b8ZojV`rx$pftS27HP zmw~W>pzDESs~l*rKJvP&Ww(pElKX@8AJms5&H8%`fKTo2Mn1f-q7iR}VAkJbn89xr zbl|iDV#_@(P_FT-zRq%DZb`EstY(|R7yNA?2GGtAR#)#zb*tw`Jwzj33!|2Sq~K_Tpgav0|01v19))1 z50|G>zO7c)j_CU5iv!s0Zl)ei^#SmB`W_!v614h?T$>(2Q5EKd_Zo$9z|YVhml+lS*yV9SCyg*%JVa^tXl~98bf^sWDQiZCZUrE4bVxvzN`V+^MnR zNdwUHJi?2|!i?6*>QxEf;s(d1uYVTcDEEW- z$4$!RV?v=DsA`hTVTQp_n7wQUxl3j>m&dobL2N6=mxB_}V*5Y6+#o;(`w+MHKNgt*i2R|xF zxaIyJ95_pR;<4O`nm3G3-eP!ogmQP7Md;3LY3sU0?k*G@7#OQdv20(JR z;OIL|m#ne{AomAt^SJXM27T3R%4zFQ0bE3l2F(_#4*WYA(SHT7lWnoCH30LYp1&Ua z(f4A_y)_8umNcRfuPua_$JxmxK}k4XXu4E0;LMhb=TK>VX2>uBnkn-rD6P*7LG5Yq lOxZahZZP6PQ_lfG(k~cX3)7!lR!sl^002ovPDHLkV1nMsTbKX< diff --git a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_glare.png b/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_glare.png deleted file mode 100644 index 21cbfceaf7947e4c2b4dd20e86f5c716b1440fc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmV;E0&M+>P)Px%O-V#SR9J=OSHEi;F&KS1|A;U67a2?q8PbBG8B&O+Y=%r8yCieR?&)Mmh8XhC zWC@)-1+sOr#}o`Lg+Ppl;P^~W@sGO>SILs2^L^)1w~)7-{OL~beNXxdPsP_h z6uc?UWV@J|ciG8#J88j)?cFVNhZ&5W6n1<7_?k(^`S6d?tl5ErlfsTK$lvlQfaeaV znWqzgr}<^ZGAB-NTq#1PEy%A58-PmSMw1!wWo!&z9;DH%*;0fylUId}71`)GS`cOl zyH(rQiIBDY5(TLBzD}%E{GCSL7~j7blD@yYeE?wV0@PZMB2HE6A^ojbLIA*`THk5p zk*d@~$%U{)xf<%wBJOS)#i-@d(P9u+8^#iPI30AfQ0LUDk z2hZFq`JRZ0cc@NC0b#ov0C1-#2_^aA`8=+~O>YTW}(C^&ZOF$9ujIuuh1p tAZs7*0s3ulDZ-pkHyHJg#^itk_6usT`!o#zg3JH_002ovPDHLkV1gH!FwX!0 diff --git a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_grasp.png b/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_grasp.png deleted file mode 100644 index 73dc48c7d7bfb170c3511afca2e4e0826d873906..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1339 zcmV-B1;qM^P)EzLt>Nxhg23=knh3@O#hiaPGNa4Q7>`-Zc-od{GMp{O;B0n%n-4 zgMKW`G7(dBbt$|Up=10!N~Oeu&+OH?u5I)tlDYyGhwzM|YDHn0hTv9FHF-~XP|3s+ z!Y9IBO$HRcHT8I%-%L)|`O9Q25?TPO+0&hF;dl!x87(I~F6_x=OG;xN^Glq`{7P8z zu$&QeLIm*RCQgY>vJ~-2&dbi)`zC9?WeVa^zO;6RkJN?l8Y8aoRVBd#o#V~$P4WoJnwime0H~j_K)7-b{m8Rx72G~MMJKoid;aNP*?&&te_mu9Rv}QqgZ=!vJ|8F6&H;KkJC6aEfAgt${Vp8&il6~E@i@5a4_vQ%)V zaz0Vyv%LY3cEHX&7=xoBzx>E^;_hmsMd-8@`NK*GHbL}dGB2LQ-tdEK0rwWlTEvj= z4=W)6_a`@WtkW_5?MU$FsY~98uY7#V)A2Lhc=r;3dRb;stC=yk-pp|GNz8+5fsPfF z-RkL*$B88F9m$v?0GL1M03KBN^ zLigQx_mYER$m);hm_O)J8T0}46JWD1_&G?}=n3tH58h(3ZJ!Pkc4CnlQyKKRzW0j9 zl_@RC#b2>tI+W!7eyV#|fL-qj?MP5ab88$w{NyE8sFxE;1(=+K*RTC!a*KaDlooyu z+L3@a31_P&)_uMQ$a6qDplUs`%C1yETQ~~lei#E_#&T1w|KAx76kO|fcHrcc*&3UD z!PK#|h>IR!&;C8+>@nk7J2LLs<*3kozDIF9NKf>>d!*YlB{|`AC@Y~}PH0Dht-jz~ zkgy%g*j%##K)lwX(@D?S>G(yYs=yr-2(y`#o$9$AiyF&6Qo6E4zM$z^UVM z6E;_N39dHuTw&-Z_X_ZdQRD#2i>Ha#TB)&}j&xyp@w8Wj8Z(jr`z0TF)-t(JB7F1a z3dkDlLhXD7*M%$$Op)a;L0$tP3kswBM1Jks zyU223zbE_-WMyw>?#ptNeFG2;%n_{xC@1pPOF7^=;b!PthAbDn4&)s+U&1IZ?Dsql zPx%kV!;AR9J=OS3PLkKotHYIsPfgHpyax2R9Jh3<=m%HV<7gbm-E|*)kOhE~U75 zGBu@82-&)IZk9kYWGOULJK2z>Z33Y~z#ih_S|L^({d7?7d?%gcpR`UP-=aI+yZ65L z>7DLQvTYmBllN^fm`|Ftos15KVxd7hBtwYI;;eW;3`r^_vNiyGkA}vXcw;U7 z$nMrC$DyPPoYBm}DjMauCphQmngsDNv#`pI-%BrZK0E~cpldC>c~Ko^=0Wsf6}r|M zY9}OMHtPdNY6>skR-hKvg&DX(q}M-H5LHw3{YCR|bOP>A5LHva(Jrk6xBS$ZGUwPF z?Q+50Nd*$f*Sa2KU28!*AAPB5=WUPtO1eN3FsuLqZs=MISI7Hw@~|~;nQi22U0faS zk5mJ~W#|Ok@;H80dISL2+WZ3J@&|sl-qZ1HY6GE24kxFt0RZ!vSCEyDfx)%D1bNIu zQCmn@8IRe`&;eQ_d@$XBnPm8c}&_lHt^CiKaPx%MoC0LR9J=8S20fGKoorwM}bJT648bNXuK5Z>9_(7iImD0NX52WafDnTRV0gs zD{Qw_TGkB}X(&)uwv-UXm;(Ofk25wi4r0Y?JRZ;Zz5nL_u}5TChM(=@3=AjjRJPmu zn@7$1rd_W=i^J0c{R2IOxN03`0PuIeZZmObT%R}J6kN5AG9v%6Tm#s4fJfeNfEUFt zJ<6Q;^?M;j$gqk0wzUUvg2l&VTKrjQyKl}KxIS-65z0#5w)U(zX2S_)!->_L%bc(p z+0AV?CHG?oe(YF_Py|$&MC62BL|CUjktgH6((eZ$qTvLc(ZK3`(g9xYW$26sh`bbT z5XwF`2oZUyHMt_d1|*^?`NQ3lY|AC!wO$5VYd?07y!ZLBgXq2AdI?OeCvwVs;4ON} zg(?;CaQB3o*D#NqXFh@F0tvAZVUz=Ta$W(+xW8Qy79ym8qOTh#kGxbSU!F7>_vQ0s z+&30sTm?m$?gpW<43+nRs>nNG3u6JD(Lk}3R{$4byCoY7aD#BmUb0@d1ZB>wUn&Ry z)aWSt$q5ocW85IrmTev%3ZQM5C!sEKK7KZw$Z9A?<-a{enN20xF&v-A zd?|LXf+}CY#ahU=6kz!~{b|_Qfhw3UH4gkQd@lheyPV0G`?({pih!H5hS7^7FIDcT z?oC8o{CigJ#kAMW_))0{{6DS;H36*H@nW$SO2Sd({3s}13<&TC%q0000Px$%t=H+R9J=OmpxCyKpe)OYipq-r0C#a98hC?Nmv*RiHQt;0T=lqxH9o^Soi`C zY{r3w#FvoBpkZJTOcRQ=6Fu0=^y z8a9XE-Dc)>GXaPO_TOewJvh?KwStan(cloif3j{SmUIiR+Ziy0#Vy9ZNd=7M{|F$y z@38=EQXkKs^8n(zzDX%@MGs7pP||vQ06@esK-8hM))S8OdL)3L)lF>p`r>4vL73kJ z0)$bk-Srs|b;x_q%vfW5v2>ZR5XAVL7Z zW&Rww<2_yjh-?l3k#`}?px3u>|M-e6O~a4tMlyECD*()bI357#%Qh45Vq`f4O2kd% zS~VDvcoMK(!fOr?R}!%#Fc?V^h)e$y;BBDtPai<7u>6D)RySYYzVCb{tTb#?i$)-X zxQ`2xLfFhWk?j)SfMY!u&!MDQ%25WeNwK3KX_j(;|1`KzK}m=Uj5yKA5)edw0Y-kQ U%=1j^;s5{u07*qoM6N<$g7zQl@c;k- diff --git a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_rejuvinate.png b/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/actions.rsi/vampire_rejuvinate.png deleted file mode 100644 index a092edbe65d74150d277035f7d8697468ae6b4a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 708 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 diff --git a/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/icons.rsi/vampire.png b/Resources/Textures/DarkStation/MainGame/DarkForces/Vampire/icons.rsi/vampire.png deleted file mode 100644 index 2bc08f01043c8f2920f261492ce97e3364a20816..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|LOfj@LnNjq zrz9jKObEXC>wE*N&936!iGhBuulK*$&d(#WD@#aYz@2U>j9jT*Fn6#kT8 zHZv1uW@c{tcp^#X#kWUWm~M)sm?<+e*X1)Y%-<*R>X^ujvq1A1JYD@<);T3K0RVcT BGadi{