Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Latest Experimental Psychics #6

Merged
merged 97 commits into from
Jul 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
6099c11
guh
VMSolidus May 3, 2024
89d58ed
Psionic Refactor pt 1
VMSolidus May 3, 2024
afaedd2
Last bit
VMSolidus May 3, 2024
1566ee5
Last one missed
VMSolidus May 3, 2024
c832f5f
I accidentally sent the DeltaV legacy version of these
VMSolidus May 3, 2024
827bdb2
Finishing Mind Swap rework
VMSolidus May 14, 2024
22f405b
Noospheric Zap updating
VMSolidus May 14, 2024
54e7521
Merge branch 'master' into Psionic-Power-Refactor
VMSolidus May 14, 2024
f50f9df
Almost done
VMSolidus May 15, 2024
834e0eb
guh
VMSolidus May 15, 2024
372671e
More migrations
VMSolidus May 15, 2024
f3bc3d8
Final migrations
VMSolidus May 15, 2024
303d1b3
Last set of migrations
VMSolidus May 15, 2024
62163f0
Update PsionicsSystem.cs
VMSolidus May 15, 2024
83ea6ac
Almost got it, one last bug to squash
VMSolidus May 15, 2024
c569e2e
slightly more acccurate but still not quite right
VMSolidus May 15, 2024
851beba
Update PyrokinesisPowerSystem.cs
VMSolidus May 15, 2024
0597405
removing some errant instances of potentialpsionic
VMSolidus May 15, 2024
f96847f
Revert "removing some errant instances of potentialpsionic"
VMSolidus May 15, 2024
0e11da6
Final power update
VMSolidus May 15, 2024
d177e55
Update psionicPowers.yml
VMSolidus May 15, 2024
685fc5f
Update psionic.ftl
VMSolidus May 15, 2024
0d37ceb
some more small tweaks
VMSolidus May 15, 2024
324082a
Update PotentialPsionicComponent.cs
VMSolidus May 15, 2024
952b7e2
Update Content.Server/Psionics/Abilities/PsionicAbilitiesSystem.cs
VMSolidus May 15, 2024
1a1c62a
Update PsionicAbilitiesSystem.cs
VMSolidus May 15, 2024
d53708c
Merge branch 'Psionic-Power-Refactor' of https://github.com/VMSolidus…
VMSolidus May 15, 2024
e4f387d
remove downstream comments
VMSolidus May 15, 2024
f5bf4d5
Giving pyrokinesis back to ifrit, and setting up base caster stat bon…
VMSolidus May 15, 2024
626f2a5
Update familiars.yml
VMSolidus May 15, 2024
c591bc3
Merge branch 'master' into Psionic-Power-Refactor
VMSolidus May 28, 2024
4567016
Merge branch 'master' into Psionic-Power-Refactor
VMSolidus May 28, 2024
3584a4e
Update PsionicRegenerationPowerSystem.cs
VMSolidus May 29, 2024
15fc457
Merge branch 'VMSolidus-Psionic-Power-Refactor'
VMSolidus May 29, 2024
d439c5a
Revert "Merge branch 'VMSolidus-Psionic-Power-Refactor'"
VMSolidus May 29, 2024
3f44f9d
Update PsionicRegenerationPowerSystem.cs
VMSolidus May 29, 2024
0984fde
Merge branch 'master' into Psionic-Power-Refactor
VMSolidus May 29, 2024
462e91c
aaaaaaaaa
VMSolidus May 29, 2024
6fafc34
Merge branch 'Psionic-Power-Refactor' of https://github.com/VMSolidus…
VMSolidus May 29, 2024
c4db831
Update PsionicRegenerationPowerSystem.cs
VMSolidus May 29, 2024
cefe228
fun pvs fixes
VMSolidus May 29, 2024
84e4d10
Merge branch 'Simple-Station:master' into Psionic-Power-Refactor
VMSolidus May 29, 2024
c416d40
Update DispelPowerSystem.cs
VMSolidus May 29, 2024
17c17e9
Merge branch 'master' into Psionic-Power-Refactor
VMSolidus Jun 10, 2024
e3fb454
Fixing invisibility, more feedback messages
VMSolidus Jun 10, 2024
36b2409
Merge branch 'Psionic-Power-Refactor' of https://github.com/VMSolidus…
VMSolidus Jun 10, 2024
c2a20aa
Update RegenerativeStasisPowerSystem.cs
VMSolidus Jun 10, 2024
5c5ad44
Refactor mime psionics!
VMSolidus Jun 10, 2024
efccb49
Update mime.yml
VMSolidus Jun 10, 2024
c1cbaf9
Purge a bunch of unused usings
VMSolidus Jun 11, 2024
a26be04
Psionic guidebook update!
VMSolidus Jun 16, 2024
bf981e4
update guidebook
VMSolidus Jun 16, 2024
02d528e
Merge branch 'master' into Psionic-Power-Refactor
VMSolidus Jun 21, 2024
e6e69c0
Now featuring trait points
VMSolidus Jun 21, 2024
df7a78b
Fix fireball bug
VMSolidus Jun 24, 2024
2c49d79
Update LogPowerUsed
VMSolidus Jun 24, 2024
c4890df
Fixing bug with starting stat modifiers
VMSolidus Jun 25, 2024
8e9cd91
Merge branch 'master' into Psionic-Power-Refactor
VMSolidus Jun 25, 2024
afff078
More updates
VMSolidus Jun 26, 2024
d0cb65a
Partial Glimmer Refactor & Pyromancy Full Refactor
VMSolidus Jun 28, 2024
1c4f9e6
Update GlimmerSystem.cs
VMSolidus Jun 28, 2024
84c1540
Update GlimmerSystem.cs
VMSolidus Jun 28, 2024
c5b0e49
Got this backwards
VMSolidus Jun 28, 2024
2ed8c5d
More glimmer updates
VMSolidus Jun 28, 2024
f87142a
Last one for the night
VMSolidus Jun 28, 2024
d86df40
Merge branch 'master' into Psionic-Power-Refactor
VMSolidus Jun 28, 2024
89a6bb3
Mirror: StrippableSystem doafter overhaul (#205)
SimpleStation14 Jul 1, 2024
ba2d538
Make Spent Casing Ejection Not Suck (#478)
VMSolidus Jul 1, 2024
2e712c0
Automatic Changelog Update (#478)
SimpleStation14 Jul 1, 2024
8bbcafa
New glimmer functions
VMSolidus Jul 1, 2024
c8e0572
simplify GlimmerEquilibrium constant
VMSolidus Jul 1, 2024
35eb6f6
Some more small optimizations
VMSolidus Jul 1, 2024
631a4bf
Removing the single power requirement
VMSolidus Jul 2, 2024
2f2f658
Ye
VMSolidus Jul 2, 2024
7c7ab3f
Update PsionicAbilitiesSystem.cs
VMSolidus Jul 2, 2024
10ea788
1984 a while loop and make this actually work without needing one.
VMSolidus Jul 2, 2024
8e9afa0
Update PsionicAbilitiesSystem.cs
VMSolidus Jul 2, 2024
44e29dd
Zap now unlocks the next power roll.
VMSolidus Jul 2, 2024
864ba53
Revenant moved to new crit threshold
VMSolidus Jul 2, 2024
d461f4f
Don't look at this please.
VMSolidus Jul 2, 2024
4752115
First attempt at the error
VMSolidus Jul 2, 2024
10803e1
Trying this
VMSolidus Jul 2, 2024
7b89ce1
Cherrypick "Fix StrippableSystem Blunders" (#504)
VMSolidus Jul 2, 2024
606a28d
Fix Loadouts Breaking when You Spend All Your Points (#506)
WarMechanic Jul 2, 2024
0d0dd4c
Automatic Changelog Update (#506)
SimpleStation14 Jul 2, 2024
eaacdea
Revert "Trying this"
VMSolidus Jul 2, 2024
5fc1ce8
Revert "First attempt at the error"
VMSolidus Jul 2, 2024
ffb9ec9
Unflip Hands for Felinid, Vulpkanin, Harpy (#503)
Mnemotechnician Jul 2, 2024
7a12461
Cherry-Pick the Secwatch Pda App (#502)
Mnemotechnician Jul 2, 2024
2dcab4d
Automatic Changelog Update (#502)
SimpleStation14 Jul 2, 2024
2e8e56f
Fix Clothing Quick-Equip (#507)
Mnemotechnician Jul 3, 2024
6aaf466
Automatic Changelog Update (#507)
SimpleStation14 Jul 3, 2024
8897a4b
Revert "Don't look at this please."
VMSolidus Jul 4, 2024
8a0ee56
Merge branch 'Simple-Station:master' into Psionic-Power-Refactor
VMSolidus Jul 4, 2024
5b820b2
Merge remote-tracking branch 'ee-personal/Psionic-Power-Refactor' int…
VMSolidus Jul 4, 2024
2f3ee29
Revert "Merge branch 'Simple-Station:master' into Psionic-Power-Refac…
VMSolidus Jul 4, 2024
23059a8
Reapply "Merge branch 'Simple-Station:master' into Psionic-Power-Refa…
VMSolidus Jul 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,6 @@ public override Control GetUIFragmentRoot()
public override void Setup(BoundUserInterface userInterface, EntityUid? fragmentOwner)
{
_fragment = new CrimeAssistUiFragment();

_fragment.OnSync += _ => SendSyncMessage(userInterface);
}

private void SendSyncMessage(BoundUserInterface userInterface)
{
var syncMessage = new CrimeAssistSyncMessageEvent();
var message = new CartridgeUiMessage(syncMessage);
userInterface.SendMessage(message);
}

public override void UpdateState(BoundUserInterfaceState state)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using Content.Client.Message;
using Content.Shared.DeltaV.CartridgeLoader.Cartridges;
using Robust.Client.AutoGenerated;
using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Prototypes;
Expand All @@ -13,9 +12,7 @@ namespace Content.Client.DeltaV.CartridgeLoader.Cartridges;
public sealed partial class CrimeAssistUiFragment : BoxContainer
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IResourceCache _resourceCache = default!;

public event Action<bool>? OnSync;
private CrimeAssistPage _currentPage;
private List<CrimeAssistPage>? _pages;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<BoxContainer xmlns="https://spacestation14.io"
xmlns:cartridges="clr-namespace:Content.Client.DeltaV.CartridgeLoader.Cartridges"
xmlns:customControls="clr-namespace:Content.Client.Administration.UI.CustomControls"
HorizontalExpand="True"
VerticalExpand="True"
Margin="5">
<!-- All labels populated in constructor -->
<BoxContainer Orientation="Horizontal" HorizontalAlignment="Left">
<BoxContainer Orientation="Vertical">
<Label Name="Status"/>
<Label Text="{Loc 'criminal-records-console-reason'}"/>
</BoxContainer>
<customControls:VSeparator StyleClasses="LowDivider" Margin="8 0"/>
<BoxContainer Orientation="Vertical">
<Label Name="Title"/>
<Label Name="Reason"/>
</BoxContainer>
</BoxContainer>
</BoxContainer>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using Content.Shared.CartridgeLoader.Cartridges;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;

namespace Content.Client.DeltaV.CartridgeLoader.Cartridges;

[GenerateTypedNameReferences]
public sealed partial class SecWatchEntryControl : BoxContainer
{
public SecWatchEntryControl(SecWatchEntry entry)
{
RobustXamlLoader.Load(this);

Status.Text = Loc.GetString($"criminal-records-status-{entry.Status.ToString().ToLower()}");
Title.Text = Loc.GetString("sec-watch-entry", ("name", entry.Name), ("job", entry.Job));

Reason.Text = entry.Reason ?? Loc.GetString("sec-watch-no-reason");
}
}
27 changes: 27 additions & 0 deletions Content.Client/DeltaV/CartridgeLoader/Cartridges/SecWatchUi.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Content.Client.UserInterface.Fragments;
using Content.Shared.CartridgeLoader;
using Content.Shared.CartridgeLoader.Cartridges;
using Robust.Client.UserInterface;

namespace Content.Client.DeltaV.CartridgeLoader.Cartridges;

public sealed partial class SecWatchUi : UIFragment
{
private SecWatchUiFragment? _fragment;

public override Control GetUIFragmentRoot()
{
return _fragment!;
}

public override void Setup(BoundUserInterface ui, EntityUid? owner)
{
_fragment = new SecWatchUiFragment();
}

public override void UpdateState(BoundUserInterfaceState state)
{
if (state is SecWatchUiState cast)
_fragment?.UpdateState(cast);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<cartridges:SecWatchUiFragment xmlns="https://spacestation14.io"
xmlns:cartridges="clr-namespace:Content.Client.DeltaV.CartridgeLoader.Cartridges"
Margin="5"
VerticalExpand="True">
<BoxContainer Orientation="Vertical" HorizontalExpand="True" VerticalExpand="True">
<Label Text="{Loc 'sec-watch-title'}" HorizontalExpand="True" HorizontalAlignment="Center"/>
<Label Name="NoEntries" Text="{Loc 'sec-watch-no-entries'}" HorizontalExpand="True" HorizontalAlignment="Center" Visible="False"/>
<ScrollContainer HorizontalExpand="True" VerticalExpand="True">
<!-- Populated when state received -->
<BoxContainer Name="Entries" Orientation="Vertical" VerticalAlignment="Top"/>
</ScrollContainer>
</BoxContainer>
</cartridges:SecWatchUiFragment>
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Content.Shared.CartridgeLoader.Cartridges;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;

namespace Content.Client.DeltaV.CartridgeLoader.Cartridges;

[GenerateTypedNameReferences]
public sealed partial class SecWatchUiFragment : BoxContainer
{
public SecWatchUiFragment()
{
RobustXamlLoader.Load(this);
}

public void UpdateState(SecWatchUiState state)
{
NoEntries.Visible = state.Entries.Count == 0;
Entries.RemoveAllChildren();
foreach (var entry in state.Entries)
{
Entries.AddChild(new SecWatchEntryControl(entry));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2086,7 +2086,7 @@ void AddSelector(LoadoutPreferenceSelector selector, int points, string id)
selector.PreferenceChanged += preference =>
{
// Make sure they have enough loadout points
preference = preference ? CheckPoints(points, preference) : CheckPoints(-points, preference);
preference = preference ? CheckPoints(-points, preference) : CheckPoints(points, preference);
// Update Preferences
Profile = Profile?.WithLoadoutPreference(id, preference);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
using Robust.Client.GameObjects;
using Robust.Client.UserInterface;
using Content.Client.Psionics.UI;
using Content.Client.UserInterface.Fragments;
using Content.Shared.CartridgeLoader.Cartridges;
using Content.Shared.CartridgeLoader;

namespace Content.Client.Nyanotrasen.CartridgeLoader.Cartridges;
namespace Content.Client.Psionics.GlimmerMonitor;

public sealed partial class GlimmerMonitorUi : UIFragment
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<cartridges:GlimmerMonitorUiFragment xmlns:cartridges="clr-namespace:Content.Client.Nyanotrasen.CartridgeLoader.Cartridges"
<cartridges:GlimmerMonitorUiFragment xmlns:cartridges="clr-namespace:Content.Client.Psionics.GlimmerMonitor"
xmlns="https://spacestation14.io" Margin="1 0 2 0">
<PanelContainer StyleClasses="BackgroundDark"></PanelContainer>
<BoxContainer Name="SettingsBox" Orientation="Horizontal" HorizontalExpand="True" VerticalExpand="False">
<Label Text="{Loc 'glimmer-monitor-interval'}"/>
<Button Name="IntervalButton6s" Access="Public" Text="6s" StyleClasses="OpenRight"/>
<Button Name="IntervalButton1" Access="Public" Text="1m" StyleClasses="OpenRight"/>
<Button Name="IntervalButton5" Access="Public" Text="5m" StyleClasses="OpenBoth"/>
<Button Name="IntervalButton10" Access="Public" Text="10m" StyleClasses="OpenLeft"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using System.Linq;
using System.Numerics;
using Content.Client.Nyanotrasen.UserInterface;
using Content.Client.Psionics.UI;
using Robust.Client.AutoGenerated;
using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;

namespace Content.Client.Nyanotrasen.CartridgeLoader.Cartridges;
namespace Content.Client.Psionics.GlimmerMonitor;

[GenerateTypedNameReferences]
public sealed partial class GlimmerMonitorUiFragment : BoxContainer
Expand All @@ -26,12 +26,14 @@ public GlimmerMonitorUiFragment()
VerticalExpand = true;

var intervalGroup = new ButtonGroup();
IntervalButton6s.Group = intervalGroup;
IntervalButton1.Group = intervalGroup;
IntervalButton5.Group = intervalGroup;
IntervalButton10.Group = intervalGroup;

IntervalButton1.Pressed = true;
IntervalButton6s.Pressed = true;

IntervalButton6s.OnPressed += _ => UpdateState(_cachedValues);
IntervalButton1.OnPressed += _ => UpdateState(_cachedValues);
IntervalButton5.OnPressed += _ => UpdateState(_cachedValues);
IntervalButton10.OnPressed += _ => UpdateState(_cachedValues);
Expand Down Expand Up @@ -62,14 +64,12 @@ private List<int> FormatGlimmerValues(List<int> glimmerValues)
{
var returnList = glimmerValues;

if (IntervalButton5.Pressed)
{
returnList = GetAveragedList(glimmerValues, 5);
}
else if (IntervalButton10.Pressed)
{
if (IntervalButton1.Pressed)
returnList = GetAveragedList(glimmerValues, 10);
}
else if (IntervalButton5.Pressed)
returnList = GetAveragedList(glimmerValues, 50);
else if (IntervalButton10.Pressed)
returnList = GetAveragedList(glimmerValues, 100);

return ClipToFifteen(returnList);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using Content.Shared.Abilities.Psionics;
using Content.Shared.Psionics.Abilities;
using Content.Client.Chat.Managers;
using Robust.Client.Player;

namespace Content.Client.Nyanotrasen.Chat
namespace Content.Client.Psionics.Chat
{
public sealed class PsionicChatUpdateSystem : EntitySystem
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface;

namespace Content.Client.Nyanotrasen.UserInterface;
namespace Content.Client.Psionics.UI;

public sealed class GlimmerGraph : Control
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
using Content.Shared.Examine;
using Content.Shared.Input;
using Content.Shared.Radio;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Client.Input;
using Robust.Client.Player;
Expand All @@ -37,7 +36,7 @@
using Robust.Shared.Replays;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
using Content.Client.Nyanotrasen.Chat; //Nyano - Summary: chat namespace.
using Content.Client.Psionics.Chat;

namespace Content.Client.UserInterface.Systems.Chat;

Expand All @@ -61,7 +60,7 @@ public sealed class ChatUIController : UIController
[UISystemDependency] private readonly GhostSystem? _ghost = default;
[UISystemDependency] private readonly TypingIndicatorSystem? _typingIndicator = default;
[UISystemDependency] private readonly ChatSystem? _chatSys = default;
[UISystemDependency] private readonly PsionicChatUpdateSystem? _psionic = default!; //Nyano - Summary: makes the psionic chat available.
[UISystemDependency] private readonly PsionicChatUpdateSystem? _psionic = default!; //EE - Summary: makes the psionic chat available.

[ValidatePrototypeId<ColorPalettePrototype>]
private const string ChatNamePalette = "ChatNames";
Expand All @@ -82,7 +81,7 @@ public sealed class ChatUIController : UIController
{SharedChatSystem.AdminPrefix, ChatSelectChannel.Admin},
{SharedChatSystem.RadioCommonPrefix, ChatSelectChannel.Radio},
{SharedChatSystem.DeadPrefix, ChatSelectChannel.Dead},
{SharedChatSystem.TelepathicPrefix, ChatSelectChannel.Telepathic} //Nyano - Summary: adds the telepathic prefix =.
{SharedChatSystem.TelepathicPrefix, ChatSelectChannel.Telepathic} //EE - Summary: adds the telepathic prefix =.
};

public static readonly Dictionary<ChatSelectChannel, char> ChannelPrefixes = new()
Expand All @@ -96,7 +95,7 @@ public sealed class ChatUIController : UIController
{ChatSelectChannel.Admin, SharedChatSystem.AdminPrefix},
{ChatSelectChannel.Radio, SharedChatSystem.RadioCommonPrefix},
{ChatSelectChannel.Dead, SharedChatSystem.DeadPrefix},
{ChatSelectChannel.Telepathic, SharedChatSystem.TelepathicPrefix } //Nyano - Summary: associates telepathic with =.
{ChatSelectChannel.Telepathic, SharedChatSystem.TelepathicPrefix } //EE - Summary: associates telepathic with =.
};

/// <summary>
Expand Down
12 changes: 12 additions & 0 deletions Content.Server/Abilities/Mime/MimePowersComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,17 @@ public sealed partial class MimePowersComponent : Component
/// </summary>
[DataField("vowCooldown")]
public TimeSpan VowCooldown = TimeSpan.FromMinutes(5);

/// <summary
/// Psionic Feedback for if a mime with their vow intact is scanned by a Mantis
/// </summary>
[DataField("mimeFeedback")]
public string MimeFeedback = "mime-feedback";

/// <summary
/// Psionic Feedback for if a mime with their vow intact is scanned by a Mantis
/// </summary>
[DataField("mimeBrokenFeedback")]
public string MimeBrokenFeedback = "mime-broken-feedback";
}
}
38 changes: 30 additions & 8 deletions Content.Server/Abilities/Mime/MimePowersSystem.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using Content.Server.Popups;
using Content.Server.Speech.Muting;
using Content.Shared.Actions;
using Content.Shared.Actions.Events;
using Content.Shared.Alert;
Expand All @@ -10,7 +9,7 @@
using Robust.Shared.Containers;
using Robust.Shared.Map;
using Robust.Shared.Timing;
using Content.Shared.Abilities.Psionics; //Nyano - Summary: Makes Mime psionic.
using Content.Shared.Psionics.Abilities;
using Content.Shared.Speech.Muting;

namespace Content.Server.Abilities.Mime
Expand Down Expand Up @@ -58,14 +57,21 @@ private void OnComponentInit(EntityUid uid, MimePowersComponent component, Compo
EnsureComp<MutedComponent>(uid);
_alertsSystem.ShowAlert(uid, AlertType.VowOfSilence);
_actionsSystem.AddAction(uid, ref component.InvisibleWallActionEntity, component.InvisibleWallAction, uid);
//Nyano - Summary: Add Psionic Ability to Mime.
if (TryComp<PsionicComponent>(uid, out var psionic) && psionic.PsionicAbility == null)
psionic.PsionicAbility = component.InvisibleWallActionEntity;

// Mimes gain their power from a special Vow, but this vow extends to Telepathic speech.
if (EnsureComp<PsionicComponent>(uid, out var psionic))
{
psionic.TelepathicMute = true;
psionic.ActivePowers.Add(component);
psionic.PsychicFeedback.Add(component.MimeFeedback);
psionic.Dampening += 1f;
}
}

/// <summary>
/// Creates an invisible wall in a free space after some checks.
/// </summary>
// TODO: Consider separating this out from the Mime entirely, and make a standalone "Telekinetic Barricade" power.
private void OnInvisibleWall(EntityUid uid, MimePowersComponent component, InvisibleWallActionEvent args)
{
if (!component.Enabled)
Expand Down Expand Up @@ -98,9 +104,9 @@ private void OnInvisibleWall(EntityUid uid, MimePowersComponent component, Invis
return;
}
}
// Begin Nyano-code: mime powers are psionic.
_psionics.LogPowerUsed(uid, "invisible wall");
// End Nyano-code.
if (TryComp<PsionicComponent>(uid, out var psionic))
_psionics.LogPowerUsed(uid, "invisible wall", psionic, 4, 6);

_popupSystem.PopupEntity(Loc.GetString("mime-invisible-wall-popup", ("mime", uid)), uid);
// Make sure we set the invisible wall to despawn properly
Spawn(component.WallPrototype, _turf.GetTileCenter(tile.Value));
Expand All @@ -126,6 +132,14 @@ public void BreakVow(EntityUid uid, MimePowersComponent? mimePowers = null)
_alertsSystem.ClearAlert(uid, AlertType.VowOfSilence);
_alertsSystem.ShowAlert(uid, AlertType.VowBroken);
_actionsSystem.RemoveAction(uid, mimePowers.InvisibleWallActionEntity);
if (TryComp<PsionicComponent>(uid, out var psionic))
{
psionic.TelepathicMute = false;
psionic.ActivePowers.Remove(mimePowers);
psionic.PsychicFeedback.Remove(mimePowers.MimeFeedback);
psionic.PsychicFeedback.Add(mimePowers.MimeBrokenFeedback);
psionic.Dampening -= 1f;
}
}

/// <summary>
Expand All @@ -149,6 +163,14 @@ public void RetakeVow(EntityUid uid, MimePowersComponent? mimePowers = null)
_alertsSystem.ClearAlert(uid, AlertType.VowBroken);
_alertsSystem.ShowAlert(uid, AlertType.VowOfSilence);
_actionsSystem.AddAction(uid, ref mimePowers.InvisibleWallActionEntity, mimePowers.InvisibleWallAction, uid);
if (TryComp<PsionicComponent>(uid, out var psionic))
{
psionic.TelepathicMute = true;
psionic.ActivePowers.Add(mimePowers);
psionic.PsychicFeedback.Add(mimePowers.MimeFeedback);
psionic.PsychicFeedback.Remove(mimePowers.MimeBrokenFeedback);
psionic.Dampening += 1f;
}
}
}
}
Loading
Loading