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. #932

Closed
wants to merge 8 commits into from

Conversation

VMSolidus
Copy link
Contributor

@VMSolidus VMSolidus commented Mar 6, 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

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 Psychics can(pending implementation of Golemancy in Part 2) be sacrificed by the Chaplain, albeit for a significantly more minor amount of glimmer reduction, and without any chance at obtaining Items of Power.
  • Latent Psychics are hunted by glimmer intruders such as Wisps.
  • 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.

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
  • Rework the "Backlash" mechanic, and have its effects be based on Amp/Damp
  • "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.

  • Implement "Dispel Backlash" mechanic. Dealing damage to an entity upon interrupting any power, based on the caster's stats.
  • 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. Attacking/Dispelling the projection will cause biofeedback in the user.

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.

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.

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

Pyromancy & Noospheric Bolt are being fully reworked into a set of powers that follow an "Elementalist" archetype of casters. Elementalists have higher than normal amplification, making them inherently more unstable or dangerous than other psychics. Each power has an offensive component, as well as one or more niche utility uses.

These offensive abilities all share a common theme of having more significant interactions with power level than others. Without substantial increases in Amp, the elemental powers only have minor offensive use. As an important note, creatures intended to natively be "Elementalists" such as the Ifrit, are intended to come packaged with InnateAmplification, so that they by default cast these powers at a higher level than baseline.

Pyromancy for instance is being changed to have an active component that creates a throwable fire orb, whose stats and effects are strongly dependent on the caster's Amplification. For example, a baseline human psychic with no other sources of Amplification can create a fire orb that deals 5 points of fire damage when thrown. Having higher amounts of amplification results in more potent uses of it, such as adding an explosion effect, increasing the damage, etc. For utility, Pyromancy adds some niche verbs, such as the ability to weld objects, light cigarettes with their mind, or set some flammable substances alight.

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

  • add: The trait Latent Psychic has been added.
  • add: All psychic powers have received extensive reworks. Have fun learning about what's new in-game.
  • remove: The "Become Psychic" traitor objective has been removed.

@github-actions github-actions bot added the S: Merge Conflict Fix your PR! label Mar 6, 2024
Copy link
Contributor

github-actions bot commented Mar 6, 2024

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

@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 Mar 6, 2024
@github-actions github-actions bot removed the S: Merge Conflict Fix your PR! label Mar 6, 2024
@deltanedas
Copy link
Member

If a player chooses to not be a Latent Psychic, the BecomePsionicObjective essentially becomes impossible.

you could easily just require the component for the objective to be added, but its still a shit objective either way

@VMSolidus
Copy link
Contributor Author

If a player chooses to not be a Latent Psychic, the BecomePsionicObjective essentially becomes impossible.

you could easily just require the component for the objective to be added, but its still a shit objective either way

Yea I had considered fixing it so that you can't get that objective without the component, but also came to the conclusion that it wasn't worth the effort doing that to fix what is objectively the worst traitor objective in the game. Technically the workaround to getting the objective done without the trait is to kill yourself in such a way that medbay is forced to clone you. Easily done by emagging two donut vendors and eating a pair of amatoxin donuts. But now my question is, "Why not just actually do your antag thing and feed the amatoxin donuts to somebody?..."

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 S: Merge Conflict Fix your PR! label Mar 17, 2024
@github-actions github-actions bot removed the S: Merge Conflict Fix your PR! label Mar 17, 2024
@NullWanderer
Copy link
Contributor

It seems like there is 0 intention to fix this here. But I'll just copy the code whenever it's merged into the hard fork.

@DangerRevolution
Copy link
Contributor

I'll just copy the code whenever it's merged into the hard fork.

I assume you're aware that this is going to touch a lot of Wizcode?

@NullWanderer
Copy link
Contributor

I'll just copy the code whenever it's merged into the hard fork.

I assume you're aware that this is going to touch a lot of Wizcode?

Bad design if it does. All of this could be done with minimal or no risk of merge conflicts from what I see in this pull request

@DangerRevolution
Copy link
Contributor

A)
image
B)
This isn't done
C)
EE is already touching a lot of Wizden code with loadouts & languages so there's no reason to go all the way with Psionics.

@NullWanderer
Copy link
Contributor

A) image B) This isn't done C) EE is already touching a lot of Wizden code with loadouts & languages so there's no reason to go all the way with Psionics.

We're not EE, so I'll figure out a way to port it regardless

@DangerRevolution
Copy link
Contributor

A) image B) This isn't done C) EE is already touching a lot of Wizden code with loadouts & languages so there's no reason to go all the way with Psionics.

We're not EE, so I'll figure out a way to port it regardless

That was my point yes

deltanedas added a commit to deltanedas/Delta-v that referenced this pull request Dec 27, 2024
* allow cloning living people

* fix client

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: C# Changes any cs files Changes: Localization Changes any ftl files Changes: YML Changes any yml files
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants