-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
Changeling devour and transform #34002
base: master
Are you sure you want to change the base?
Conversation
- added the radial menu, it has nothing in it. - trying to get it to populate. the event under the event is broken, i don't know why, but apparently it's not typed right - Added a placeholder transform - oh also fixed up some devour stuff and moved some things around.
- Move DnaComponent into Shared because we need it for the DNA cloning - Make Transform MOSTLY work on the LAST identity devoured. - Fix some issues on devour that involved prediction, canceling and Damage exeucting (Thanks Plykiya for pointing out AttemptFrequency!)
Add check to add a wagging component on the Changeling if the victim's species Prototype had one. attempt to add the Damage mitigation check
- Nullspaced a clone of a victim - fix audio using server virtualized Pvs (i hate this) - fix the mispredicted doafters - Clean up a wholelotta code - utilize clone systems to clone appearances - Move CloneAppearance from server to shared So we can actually access it
- make rotting prevent the action - Add ripping of clothing (guh why is it also server) - add some System stuff for pushing husked corpse inspection - clean up more badcode
- Utilize Relayed events for Devour checking - Get a UI that partially works, Says the name of identities, doesn't show their looks - Make use of the New Dynamic BUI assignment - commit the sin of no client prediction cause nullspace entities aren't networked
Issue with the looks
- Get the UI to see the net entity in pause space by using a ViewSubscriber to get the Pvs from the initially stored identity entity - Remove all the other parts used to try to get this to work before hand
- Change FancyWindow to Radial - Fix Issue where coeffeient checking was the wrong way round
- cleaned up event variables that are not needed - Removed the use of a Pause space and go back to Nullspace usage - use a PvsOverride rather than ViewSharing - Remove old commented out code and Lots of unused code
- some minor cleanup - don't start the entities that get cloned
- add replace functionality to TypingIndicatorSystem and BodyEmotesSystem - add placeholder sounds and functions to TransformBodyEmotes - add extra Pvs handling for later use - attributions for the funny straw sound - Sound collections for all of the sounds - various cleanups
- Bubbles now transfer on spawned humans rather than used humans - Clean up YET MORE CODE - make it so you can't eat yourself
- Husking now will be prevented from Revival fully and will change the appearance of players
995ba6b
to
27f31ee
Compare
- add devour on and off sprites - add transform action sprite - Add Armblade sprite for future use - Credit obscenelytinyshark for the sprites <3
- Remove the ling lungs stuff for now... body system is overly complicated, makes my head hurt - Switch every method to use Entity<> from Uid, Comp format
- add a Admin verb to make Changelingification easy! - Add game rule stuff for admin verb and to tell the hapless goober how to be a changeling... sorta - clean up parts to make VV easy... USE THE VERB!!
private void OnChangelingDevourAttempt(EntityUid uid, ArmorComponent component, InventoryRelayedEvent<ChangelingDevourAttemptEvent> args) | ||
{ | ||
var slash = component.Modifiers.Coefficients.ContainsKey("Slash") && component.Modifiers.Coefficients["Slash"] < 1f - args.Args.ProtectionThreshold; | ||
var blunt = component.Modifiers.Coefficients.ContainsKey("Blunt") && component.Modifiers.Coefficients["Blunt"] < 1f - args.Args.ProtectionThreshold; | ||
var pierce = component.Modifiers.Coefficients.ContainsKey("Piercing") && component.Modifiers.Coefficients["Piercing"] < 1f - args.Args.ProtectionThreshold; | ||
|
||
args.Args.Protection = slash || blunt || pierce; | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know this is still in draft but anything ling related shouldn't be in the armor system. What are you trying to do?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was brought up in Development on discord and is being changed to be a query of some form for the coefficents.
Was caused as a failure to understand what InventoryRelays do and how to make one, and has been clarified (will be the next commit i do)
For future reference, the Intent is to check that the outerClothing is not over a protection threshold and cancel the devour attempt should the target be unable to be consumed (a feature described in the ling doc)
About the PR
Adds Changelings Devour and Transform Componentry and Systems to Achieve what is set out in The Changeling Doc
With the new components and Systems a Player is able to Consume Other humanoids for their Identities to later Assume their visage, speaking and all things that make up them.
Why / Balance
Followed https://docs.spacestation14.com/en/space-station-14/round-flow/proposals/changeling.html directly.
Assumptions made not defined within the doc:
Devour can be used on a living being
Devour does 25 damage per second after windup (10/10/5 slash/pierce/blunt)
Double pressing the transform button will transform into the last Identity Consumed
Fingerprints are the Tell for changelings, While everything from their Gender, DNA, TypingBubble, voice descriptor are changed, their Fingerprints will always be the original Identities prints
Technical details
Added ChangelingTransformComponent and System for controlling Transformation
Added ChangelingDevourComponent and System for managing the action of Consuming people
Added ChangelingIdentityComponent and System for Storing references to Consumed Identities and managing aspects that require additional functionality for devouring and Consuming (like spawning clone's of victims into nullspace as well as assisting with Pvs)
Identities when consumed are stored in nullspace via the HumanoidAppearanceComponent's Clone appearance function, and are paused. These entities will be Forced Into the PVS of the changeling so that later when the Transform Ui is utilized, these entities can be used to show the sprites of the identity.
During transform all information is transferred from these nullspace entities onto the acting entity.
Media
lingdemo1.mp4
Requirements
Breaking changes
Moved DNA into Shared
Moved HumanoidAppearanceComponent::CloneAppearance into Shared
TODO:
Changelog
No CL No Fun (yet)