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

Psionic Refactor/Rework Part 1: All The Powers, Latent Psychics. #391

Closed

Conversation

VMSolidus
Copy link
Member

@VMSolidus VMSolidus commented May 3, 2024

About the PR

This is Part 1 of 3 for my project to completely rework the entire Psionic systems, and everything else adjacent to them. Since the Psionic Systems are so all encompassing, I have elected to split the Refactor into three distinct refactors, each focused on one specific slice of Psionics.

Part 1: Powers
Part 2: Golemancy & Psychic Threats
Part 3: Glimmer Systems

This PR addresses a vast number of issues with nearly every psychic power in the game, making improvements to player experience across the board. I am also making system improvements in the code behind the scenes, with new additions that allow contributors to create all new types of items, entities, and powers. These systems are being made more interactive with each other.

Some of the powers are getting new use-cases being added, while others are getting substantial reworks. Additionally, Pyromancy & Noospheric Zap are being completely reworked into powers that can actually be used by players. There will no longer be such a thing as a power intended solely to be used by monsters. If a new psychic power is to be added, it must be obtainable by players through the same means as all other powers. Therefore it must be designed to be used by players.

That being said, with the addition of some new systems, it is still possible to have monsters cast powers far more powerfully than players, or unlock use-cases for powers that are otherwise difficult for players to obtain. This is accomplished through the new system of Psychic Amplification & Dampening.

Latent Psychic

latentpsychic

Latent Psychic is a new trait that is intended to serve as an opt-in to Psionics during character creation. This essentially allows players to decide in advance if they want to interact with the game's Psionics system, effectively letting players roleplay around psionics without needing to be concerned about random chance, or to select a role that starts psionic by default. Latent Psychic takes the place of the original PotentialPsionicComponent, and has a few changes to it from the original system:

  • Latent Psychics can hear partial snippets of Telepathy, effectively having an always-on "psychic dreams" mechanic. They cannot however speak telepathically until they obtain their first power.
  • Latent Psychic is a full prerequisite for obtaining psionic powers.
  • If the trait is lost, a character can never again become psionic unless they die, and are reincarnated by Metempsychosis.
  • For system keeping purposes, roles that start psionic by default are also Latent Psychic
  • Psionic Systems are now written with the assumption that if someone has the Latent Psychic trait, they have already opted-in to having powers. The "Do you want to be psychic" prompt has thus been removed. If you are a Latent Psychic who rolls a power, you just get the power, there's no need to ask someone who has already stated in character creation that their character is psychic if they want their character to be psychic or not.
  • The fact that Metempsychosis automatically makes you a Latent Psychic is fully intended. Think of it as a fun new way of punishing people for dying, since now they are hunted by wisps and harassed by telepaths.

Variable Casting Stats

image

With the addition of Amplification and Dampening, it's now possible for different entities to have their own unique interactions with psychic powers. Baseline crew psychics have a semi-random spread of casting stats which are generated when they gain their powers. Some jobs such as the Mystagogue and Mantis also have bonus casting stats, while entities such as the Ifrit have sufficiently high amounts of caster stats that they use their powers in fundamentally different ways than ordinary crew.

Metapsionic Pulse

Metapsionic Pulse now has two active abilities, which share a cooldown. Wide Pulse acts like the pre-rework version, and is unchanged save for being refactored. Narrow-Pulse is the new ability, which acts as a more specialized, focused use of the power. Narrow-Pulse is a short range targeted ability, which if not interrupted, will provide its caster with more detailed information about the target. As a rule, it will never give information in a direct form, players will be expected to carefully read the information, and decide for themselves what it means.

Narrow-Pulse gives cryptic information related to the following conditions about a target:

  • Whether or not the target is a Latent Psychic

  • Whether or not the target is psychic, and has unique flavor text setup for when it is scanned. All innately psychic entities should have special flavor text set aside for when scanned by a Narrow-Pulse. That includes things that wouldn't have powers, such as Oracle & Sophic Grammateus.

  • What powers, if any, does the target have?

  • Implement Narrow-Pulse.

Invisibility

Invisibility has been reworked into a timed ability. When activated, a character turns invisible for 30 seconds. This time limit is increased by amplification, and decreased by dampening. As a tradeoff for this, characters are no longer stunned when voluntarily exiting invisibility. Characters are still stunned when being forced out of invisibility, such as by taking damage, being dispelled, etc.

Invisibility is automatically ended early when making any kind of potentially hostile action. Which includes swinging a melee weapon, shooting a gun, and throwing anything. This however counts as a "Voluntary" exit, and does not stun the user.

  • Fix a ton of bugs
  • Implement Metapulse Feedback
  • "See Invisible" no longer checks if an entity doesn't have PotentialPsionic. Instead, any entity that is intended to See Invisible needs to natively have Psionic Insulation.

Dispel

Not a lot needs to change with this power. However it does have some entirely unique numerical interactions with other system. Notably, it will have an offensive component in the form of Dispel Backlash. Dispel is also unique among powers in that it does not increase Amplification, and instead significantly increases Dampening. This makes Dispel users into a general sort of "Antimage" archetype. This power is by design seemingly boring, yet one of the most useful of all powers. I don't actually need to significantly buff it, but adding a niche offensive use-case will go a long way towards changing player perception of the power.

  • Dispel is now uniquely the only power in the game that reduces glimmer when used, based on the caster's Dampening. Glimmer reduction only happens on a successful dispel

Telegnosis

Also not a lot to change here, mostly bugfixes. But I'm also reworking what happens when someone messes with the body of a Telegnosis user, or their projection.

  • Fix bugs related to Cryo
  • Rework Telegnosis Projection so that it can be interrupted by certain conditions. Telegnosis users will be violently forced back into their body if it is significantly disturbed, harmed, or dispelled.

Regeneration

This power is receiving a new use-case, that of a self-resuscitate mechanic. If Regeneration is not on cooldown at the exact moment that its user is brought into a crit state, a special higher power variant of the power activates. After a 7 second delay, the user's body is injected with a mixture of prometheum & epinephrine, while a flavor text popup appears alerting people nearby that the body is "visibly regenerating". This "Self revive" mode has a significantly increased glimmer usage, and shares its cooldown timer with the main ability. Regeneration "Self Revive" cannot save its user from death, since a dead body cannot benefit from chemicals anyway.

  • Implement Regeneration self-resuscitate mechanic.

Mass Sleep, reworked to Regenerative Stasis

Mass Sleep is being completely replaced with a new targeted version of Regeneration. Upon completing a short channel(which doesn't require the caster to stand still, but can be interrupted), it injects the target with prometheum, while also putting the target to sleep for the duration of however long it takes the body to process said prometheum. This is done to address Mass Sleep's status as a "Shitter Power", since in practice it was essentially only used by people to troll the crew.

  • Rework Mass Sleep

Mind Swap

Just some small changes to make it less of a shitter power. Mind swap is getting some exit conditions added, in which the user is automatically shunted back into their original body(whether it is intact or not). This is mainly to address a downright shocking meta of mind swap traitors activating a minibomb, and then swapping to the captain a moment before the bomb goes off. While I applaud the creativity involved, this really isn't something I want to encourage.

  • Mind Swap reworked. Mind Swap now requires that both bodies be alive, conscious, and not insulated for the duration. If either entity becomes insulated, critical, or dead, the mind swap immediately ends.

Pyromancy/Noospheric Bolt, Full Rework into the "Elementalist" family of powers

Pyromancy and Noospheric Bolt have both been reworked into powers that are fully intended to be used by players. Rather than being a point and click button, Pyromancy launches a fireball whose effects scale with the Psicaster's stats. Noospheric Bolt has also been scaled with players in mind.

ZAP.mp4

Mind Breaking

permanent.mindbreaking.mp4

Mind breaking takes on a far more serious undertone with this update, and its effects are befitting something that could be considered a capital punishment. Where before, a mind broken individual could regain their powers through the ordinary means of drugs and luck, this new update changes the dynamic. Mind breaking now not only removes any powers a psychic might have, but also strips away their Latent Psychic trait, permanently removing their ability to become a psychic again. The popup that appears gives players a taste of the seriousness of the act, which will no doubt shock some people. It is not an act that should be performed lightly, and performing it on someone undeserving of it should feel like an actual crime.

Technical details

  • Two new variables have been added to PsionicComponent, Amplification & Dampening. Amplification represents a caster's "Power level" while utilizing psychic powers. Higher amplification increases numerical effects of powers, potentially unlocking new use-cases, while also increasing the glimmer generated. Dampening does the opposite, and it represents an opposing force, an inherent resistance to power. Dampening decreases all numerical effects of powers, but also makes them safer to use.
  • All "Crew" psychics start with Amp & Damp of 1 by default, which are increased by having psychic powers, or rare "Items of Power"
  • All psychic powers need to have a specified amount(if any) that they modify a Psychic's Amplification & Dampening
  • Each power, and every innately psychic entity needs to have a Metapulse Feedback added
  • Additionally, each power needs to have a Dispel Backlash, if applicable
  • New powers need to modify an entity's PsionicComponent when initialized, and undo whatever they added when uninitialized.

TBD, fill out as I check off objectives.

Media

Removal of BecomePsionicObjective

This has essentially always been a bad traitor objective, since it does not require any form of antagonistic behavior, nor any interaction with any other player. Additionally, its fundamentally incompatible with the changes to who can become Psionic, since being Psionic in the first place is now something you do by opt-in(or accidentally via Metempsychosis). If a player chooses to not be a Latent Psychic, the BecomePsionicObjective essentially becomes impossible.

Breaking changes

Changelog
🆑 VMSolidus, OldDanceJacket, Rane, TheGungeonologist, and ScoutSucksAtSleeping

  • add: The trait Latent Psychic has been added.
  • remove: The "Become Psychic" traitor objective has been removed.
  • tweak: Psychics have become refactored, featuring new systems allowing for varying casting stats
  • add: Pyrokinesis has been reworked, and is now available to be rolled by psychics
  • add: Noospheric Zap has been reworked, and is now available to be rolled by psychics
  • add: Metapsionic Pulse has a new sub-power added, allowing users to gain specific information about psychic entities
  • add: Regeneration has a new self-revive mechanic added
  • add: Mass Sleep has been replaced with Regenerative Stasis
  • add: Mind Swap has been reworked. Mind swaps can be ended early by a variety of conditions, the caster is vulnerable to damage taken by the victim
  • add: Dispel has had new use cases added.
  • add: Both the Mystagogue and Mantis now have roundstart casting stat improvements
  • add: Mindbreaking is now a permanent affliction.
  • add: A new guidebook has been written for Psionics.

@github-actions github-actions bot added Changes: C# Changes any cs files Changes: Localization Changes any ftl files Changes: YML Changes any yml files labels May 3, 2024
@VMSolidus VMSolidus marked this pull request as ready for review May 15, 2024 00:47
@VMSolidus VMSolidus marked this pull request as draft May 15, 2024 00:53
@VMSolidus VMSolidus marked this pull request as ready for review May 15, 2024 01:05
@github-actions github-actions bot added the Changes: UI Changes any XAML files label May 15, 2024
@FoxxoTrystan
Copy link
Member

If its not fnished, should be a draft instead?

@VMSolidus VMSolidus marked this pull request as draft May 15, 2024 04:11
@VMSolidus VMSolidus marked this pull request as ready for review May 15, 2024 21:32
@VMSolidus
Copy link
Member Author

NOW I AM FINALLY DONE WITH THIS. LET'S GO.

@VMSolidus
Copy link
Member Author

image

I ran the tests locally, and have gotten all-tests-passed. Github tests are still broken, unfortunately.

Content.Server/Abilities/Mime/MimePowersSystem.cs Outdated Show resolved Hide resolved
Content.Server/Anomaly/AnomalySystem.Psionics.cs Outdated Show resolved Hide resolved
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would recommend moving these out of the Nyanotrasen namespace given this is a big rework to the whole system.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not actually going to move the Oracle systems out of Nyanotrasen folders until Part 3 of the Psionic Refactor. Until then I am not taking maintainer responsibility for the non-updated Oracle and Sophie.

@@ -63,11 +66,14 @@ action-name-noospheric-zap = Noospheric Zap
action-description-noospheric-zap = Shocks the conciousness of the target and leaves them stunned and stuttering.

action-name-pyrokinesis = Pyrokinesis
action-description-pyrokinesis = Light a flammable target on fire.
pyrokinesis-power-used = A wisp of flame engulfs {THE($target)}, igniting {OBJECT($target)}!
action-description-pyrokinesis = Hurl a small gateway to the plane of Gehenna at your target.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a gateway to where?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gehenna, a place in Jewish mythology that is analogous to the common depictions of Hell. This esoteric description is given intentionally as a way of tying it to the planned addition of the Sheol-PLC Gehennothermic Engine, with the assumption that the source of fire created by Pyromancers, Ifrits, the SPGE, and Fire Anomalies, are all the same location that we as humans would describe, but is not necessarily literally, Hell.

@@ -16,7 +16,10 @@
- type: Oracle
- type: Speech
speechSounds: Tenor
- type: PotentialPsionic
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this meant to be here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it's required for the Mantis to be able to use his scan power on Oracle, Metem Machine, and Sophie.

@DangerRevolution DangerRevolution added Priority: 2-High Needs to be resolved as soon as possible Holy Shit Status: Needs Discussion Must be discussed Size: 1-Very Large For especially large issues/PRs Status: Needs Review Someone please review this Type: Rework Large changes to a system, like a mix between the Balancing, Codebase, and Respace labels labels May 15, 2024
@github-actions github-actions bot added the Changes: Audio Changes any ogg files label May 15, 2024
@github-actions github-actions bot added the Status: Merge Conflict FIX YOUR PR AAAGH label May 29, 2024
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

1 similar comment
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot added Changes: Config Changes any configuration files Changes: Sprite Changes any png or json in an RSI Changes: Workflow Changes any GitHub workflow files and removed Changes: Audio Changes any ogg files labels May 29, 2024
@DangerRevolution
Copy link
Contributor

One more ask: getting Psionic powers should give some sort of indication to the player rather than just having powers suddenly appear in the action bar. i.e "You feel your mind open..." or something like that?

@DangerRevolution DangerRevolution dismissed their stale review June 26, 2024 12:44

New changes :O

@DangerRevolution
Copy link
Contributor

Some concerns have been raised about the power of fireball; primarily in being able to hit (strongly) more than one enemy :)

Worth looking.

@VMSolidus
Copy link
Member Author

Some concerns have been raised about the power of fireball; primarily in being able to hit (strongly) more than one enemy :)

Worth looking.

I'm probably going to multiply the expected damage output of the fireball by glimmer/1000, so that it'll hit for ~25 at standard human casting stats and at glimmer equilibrium. That'll also mean it'll be INTENSELY tied to glimmer for damage, and at very low glimmer it'll do comparatively little damage. Which is fine, because that's what I'm trying to go for by factoring glimmer equilibrium into powers.

Copy link
Contributor

github-actions bot commented Jul 5, 2024

This pull request has conflicts, please resolve those before we can evaluate the pull request.

Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot removed the Status: Merge Conflict FIX YOUR PR AAAGH label Jul 17, 2024
Copy link
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot added the Status: Merge Conflict FIX YOUR PR AAAGH label Jul 20, 2024
@VMSolidus VMSolidus closed this Jul 20, 2024
@github-actions github-actions bot removed Changes: Audio Changes any ogg files Changes: Documentation Changes any xml or md files Changes: YML Changes any yml files Changes: UI Changes any XAML files Changes: C# Changes any cs files Changes: Localization Changes any ftl files labels Jul 20, 2024
@DEATHB4DEFEAT
Copy link
Member

force push moment

@VMSolidus
Copy link
Member Author

WHAT HOW?

@DEATHB4DEFEAT
Copy link
Member

You force pushed it into nothing, so there's nothing to PR, so it can't exist.

@VMSolidus
Copy link
Member Author

Oh goddamnit help me fix this please

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Holy Shit Priority: 2-High Needs to be resolved as soon as possible Size: 1-Very Large For especially large issues/PRs Status: Merge Conflict FIX YOUR PR AAAGH Status: Needs Discussion Must be discussed Status: Needs Review Someone please review this Type: Rework Large changes to a system, like a mix between the Balancing, Codebase, and Respace labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants