Simple-Station / Einstein-Engines

A Space Station 14 upstream repository, inspired by Baystation12.
GNU Affero General Public License v3.0
46 stars 123 forks source link

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

Closed VMSolidus closed 2 months ago

VMSolidus commented 5 months ago

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:

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:

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.

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.

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.

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.

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

https://github.com/Simple-Station/Einstein-Engines/assets/16548818/c00b6a10-a662-4bbd-bd49-395a2c811b7c

Mind Breaking

https://github.com/Simple-Station/Einstein-Engines/assets/16548818/e60333e8-0351-44f8-9405-ff1a70a407dd

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

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 :cl: VMSolidus, OldDanceJacket, Rane, TheGungeonologist, and ScoutSucksAtSleeping

FoxxoTrystan commented 4 months ago

If its not fnished, should be a draft instead?

VMSolidus commented 4 months ago

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

VMSolidus commented 4 months ago

image

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

github-actions[bot] commented 4 months ago

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

github-actions[bot] commented 4 months ago

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

github-actions[bot] commented 4 months ago

RSI Diff Bot; head commit 0984fdea585cec818fb90b5ee331594d95e21af1 merging into 9c087755aaf336965901ffe113eb76c383b9a3ee This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi

| State | Old | New | Status | --- | --- | --- | --- | | equipped-OUTERCLOTHING | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/equipped-OUTERCLOTHING.png) | ![]() | Removed | icon | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/cs_corpo_jacket.rsi/icon.png) | ![]() | Removed

Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi

| State | Old | New | Status | --- | --- | --- | --- | | equipped-OUTERCLOTHING | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/equipped-OUTERCLOTHING.png) | ![]() | Removed | icon | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/ee_corpo_jacket.rsi/icon.png) | ![]() | Removed

Resources/Textures/Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi

| State | Old | New | Status | --- | --- | --- | --- | | equipped-OUTERCLOTHING | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi/equipped-OUTERCLOTHING.png) | ![]() | Removed | icon | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/hi_corpo_jacket.rsi/icon.png) | ![]() | Removed

Resources/Textures/Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi

| State | Old | New | Status | --- | --- | --- | --- | | equipped-OUTERCLOTHING | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi/equipped-OUTERCLOTHING.png) | ![]() | Removed | icon | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/hm_corpo_jacket.rsi/icon.png) | ![]() | Removed

Resources/Textures/Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi

| State | Old | New | Status | --- | --- | --- | --- | | equipped-OUTERCLOTHING | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi/equipped-OUTERCLOTHING.png) | ![]() | Removed | icon | ![](https://raw.githubusercontent.com/Simple-Station/Einstein-Engines/9c087755aaf336965901ffe113eb76c383b9a3ee/Resources/Textures/Clothing/OuterClothing/WinterCoats/id_corpo_jacket.rsi/icon.png) | ![]() | Removed

Edit: diff updated after 0984fdea585cec818fb90b5ee331594d95e21af1

github-actions[bot] commented 3 months ago

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

VMSolidus commented 3 months ago

I've fixed the following issues there were reported by Deep Station 14

VMSolidus commented 3 months ago

https://github.com/Simple-Station/Einstein-Engines/assets/16548818/43018e20-708e-407d-a201-966162a6fdbc

Mimes have been added to the Psionic Refactor! There is now a special field in the Psionic Component for entities to potentially be "Telepathically Mute". Mimes are now the first Entity that has the ability to "Hear" but not "Speak" Telepathically. However, their inability to speak telepathically is tied to their Mime Vow! If this Vow is broken, a Mime regains his ability to speak in telepathy.

VMSolidus commented 3 months ago

image

I have now completely rewritten the Psionics guidebook, such that it now more accurately reflects information from this Refactor. I'd like to give a special thank you to thegungeonologist(on Discord) for his constant assistance in playtesting and commentary regarding the Psionics system.

VMSolidus commented 3 months ago

image

Now featuring trait points. I'll add in three more traits later.

DangerRevolution commented 3 months ago

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 commented 3 months ago

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

Worth looking.

VMSolidus commented 3 months ago

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.

github-actions[bot] commented 2 months ago

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

github-actions[bot] commented 2 months ago

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

github-actions[bot] commented 2 months ago

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

DEATHB4DEFEAT commented 2 months ago

force push moment

VMSolidus commented 2 months ago

WHAT HOW?

DEATHB4DEFEAT commented 2 months ago

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

VMSolidus commented 2 months ago

Oh goddamnit help me fix this please