Changeling devour and transform (#34002)
* Initial: Create Devour componentry, preliminary identity storage and the systems for Devouring * I have genuinely no idea what i'm doing - 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. * Holey moley, Transform, better devour, oh my! - 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!) * Proper tail stealing and Damage modifier attempt 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 * MAJOR CLEANUP AND FIXES AUGH 3 DAYS!!! - 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 * Examine stuff, more cleanup, Jumpsuit ripping - 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 * Doing things properly, UI sorta kinda works. - 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 * Got an entity for the Frontend transform Issue with the looks * Stick a camera into a fake mobs forehead - 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 * Raaaaadiallllllls also fix protection coefficents - Change FancyWindow to Radial - Fix Issue where coeffeient checking was the wrong way round * absolutely massive cleanup, no more camera in mobs - 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 * Fix "Ui elements" dying on the screen - some minor cleanup - don't start the entities that get cloned * ftl, cleanup, and fixing missing transform details - 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 * Some extra cleanup * Fix some false assumptions about TypingIndicator - Bubbles now transfer on spawned humans rather than used humans - Clean up YET MORE CODE - make it so you can't eat yourself * Oooprs, forgot to add a Husked Corpse Loc * Missing period in the husked corpse loc * bad devour windup placeholder * Husking and WIP Lungs - Husking now will be prevented from Revival fully and will change the appearance of players * Add finalized Sprites for actions and final meta - add devour on and off sprites - add transform action sprite - Add Armblade sprite for future use - Credit obscenelytinyshark for the sprites <3 * Remove ling lungs, Entity<> everything - 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 * cleanup, admin logging, WIP Roles * Admin verb, Roundstart, gamerule stuff - 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!! * Armor Coefficent Check - Remove bespoke changeling armor check and replace it with a generic armor coefficient query. * move to UnrevivableComponent instead of husked - Move UnrevivableComponent to shared - add Analyzable and ReasonMessage to UnrevivableComponent to give granular control of the message and whether or not it shows up in the analyzer - remove the check for HuskedComponent in DefibrillatorSystem * aaaaaaa CopyComp - Some cleanup - make Vocal system shared - make VocalSystem Not make more Actions than it needs - Use some code from ChameleonProjector so we can copy components - partially ungod method the Transform system * Cleanup, Moving more things to CopyComp - TransformBodyEmotes now uses CopyComp (it's a server component so i need to tell the server to deal with it - TypingIndicatorComponent also now uses CopyComp - cleaned up old, now unused "replace" methods in favor of CopyComp - BodyEmotesSystem now has a publically accessable LoadSounds to deal with the same problem Screaming had * WIP * Devour Windup noise, ForensicsSystem cleanup * Revert VocalSystem Changes - Reverted Moving VocalSystem to shared, copy comp acomplishes it - added component.ScreamActionEntity = null; for copy comp * cleanup unneeded comments * revert an accidental line removal * Remove duplicate SharedHumanoidAppearanceSystem * Cleanup Typo's and import Forensics components for Dna * Some more forensics calls * cleanup use CopyComp for now until CopyComps * CR cleanup * Undo some SharedHumanoidAppearanceSystem changes * Confound these spaces * Some Copycomp stuff and fixing some PVS override * use the proper TryCopyComps that are merged * Change TransformMenu with RadialWithSector * All sounds done, Fix lack of typing indicator issue * Updated attributions to include used sound authors * some ftl typos and mind_role text issue * DNA, Screaming, appearance, grammar, wagging - reduced all of the above using ApplyComponentChanges - Issue still remains with bodyEmotes sticking around in the UI * Fix UI stuff, partials, entprotoid, good practices - bunch of partials added - UI now has a predicted message - EntProtoID in the admin verb - RipClothing now uses Entity<ButcherableComponent> - husking is now optional (off by default) for testing/till we have hivemind/when we figure out what were doing with devour - remove TransformGrammarSet * More CR stuff and documentation - Make TargetIsProtected less of a meme, with a prototype set of DamageTypes to check - Documenation everywhere - Move DevourEvents into its own file * Predicted sounds and fix the comp clone list - Made all start and stop sounds shared - Split out the rest of the events and UI stuff into subfiles - Fixed some Clone comp list issues where comments had -'s causing them to be read incorrectly * Damage cap check, Identity Shutdown cleanup, cleanup * Sound stuff (but actually this time) * Missed documentation * Missed Documentation and a EntProtoId * Remove unused dependency * Remove a nullcheck * Some dummy minplayers * CR - Husked now uses a rem/ensure * Update Actions in the Prototype * Fixup mindswap handover - cleanup and handover PVS on mindswap * Fixup Missing meta from accidental "Take-theirs" * Add the Armblade to the roundstart-role * Cleanup, CR (everything but the UI and renames) * missed a spot * missed some more whitespace * Renames * Primary constructor and a space in these trying times * User interface stuff for Slime transformation * popup prediction * Ling devour no longer makes duplicate identities - added a key to identities to the original victim - Add some extra clone settings * add guard statements to OnClones * SentOnlyToOwner additions * fix for sound stoppage error * Move Organ deleter into soon to be atomized husk * clone event inventory * mono sounds * lower sound volume * Fix networked sound warning * Clone comps thing * review * attributions * Fix clobbered changes * I'm gonna weh out - whole bunch of CR changes * fix some very buggy git * okay its fixed * address most review points * fix inventory * we hate entityuids * fix test and more cleanup * move this * fix more stuff * fix validation and rootable * Remove Quickswitch due to some UI quirks * oops left out some better explanation * remove dangling LastConsumed component fields * fix test fail * try this * cleanup cloning subscriptions, add movement speed modifier * fix slime storage * fix cloning setting inheritance * Add session information to transform admin logs * slay the integration test hydra * dwarf size * more volume tweaks * comments * improve comments and unpredict deletion due to errors when shutting down the server * fix displancement cloning --------- Co-authored-by: ScarKy0 <scarky0@onet.eu> Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
This commit is contained in:
35
Resources/Prototypes/Antag/changeling.yml
Normal file
35
Resources/Prototypes/Antag/changeling.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
- type: entity
|
||||
parent: MobHuman
|
||||
id: MobLing
|
||||
name: Urist McLing
|
||||
suffix: Non-Antag
|
||||
components:
|
||||
- type: ChangelingDevour
|
||||
- type: ChangelingIdentity
|
||||
- type: ChangelingTransform
|
||||
- type: ActionGrant
|
||||
actions:
|
||||
- ActionRetractableItemArmBlade # Temporary addition, will inevitably be a purchasable in the bio-store
|
||||
|
||||
- type: entity
|
||||
id: ActionChangelingDevour
|
||||
name: "[color=red]Devour[/color]"
|
||||
description: Consume the essence of your victims and subsume their identity and mind into your own.
|
||||
components:
|
||||
- type: Action
|
||||
icon: { sprite : Interface/Actions/changeling.rsi, state: "devour" }
|
||||
iconOn: { sprite : Interface/Actions/changeling.rsi, state: "devour_on" }
|
||||
priority: 1
|
||||
- type: TargetAction
|
||||
- type: EntityTargetAction
|
||||
event: !type:ChangelingDevourActionEvent
|
||||
|
||||
- type: entity
|
||||
id: ActionChangelingTransform
|
||||
name: "[color=red]Transform[/color]"
|
||||
description: Transform and assume the identities of those you have devoured.
|
||||
components:
|
||||
- type: Action
|
||||
icon: { sprite : Interface/Actions/changeling.rsi, state: "transform" }
|
||||
- type: InstantAction
|
||||
event: !type:ChangelingTransformActionEvent
|
||||
@@ -1,13 +1,12 @@
|
||||
# Settings for cloning bodies
|
||||
# If you add a new trait, job specific component or a component doing visual/examination changes for humanoids
|
||||
# then add it here to the correct prototype.
|
||||
# The datafields of the components are only shallow copied using CopyComp.
|
||||
# The datafields of the components copied using CopyComp.
|
||||
# Subscribe to CloningEvent instead if that is not enough.
|
||||
|
||||
# for basic traits etc.
|
||||
# used by the random clone spawner
|
||||
# for basic physical traits
|
||||
- type: cloningSettings
|
||||
id: BaseClone
|
||||
id: Body
|
||||
components:
|
||||
# general
|
||||
- DetailExaminable
|
||||
@@ -15,8 +14,9 @@
|
||||
- Fingerprint
|
||||
- NpcFactionMember
|
||||
# traits
|
||||
# - LegsParalyzed (you get healed)
|
||||
- BlackAndWhiteOverlay
|
||||
- Clumsy
|
||||
# - LegsParalyzed (you get healed)
|
||||
- LightweightDrunk
|
||||
- Muted
|
||||
- Narcolepsy
|
||||
@@ -26,14 +26,6 @@
|
||||
- PermanentBlindness
|
||||
- Snoring
|
||||
- Unrevivable
|
||||
# job specific
|
||||
- BibleUser
|
||||
- CommandStaff
|
||||
- Clumsy
|
||||
- MindShield
|
||||
- MimePowers
|
||||
- SpaceNinja
|
||||
- Thieving
|
||||
# accents
|
||||
- Accentless
|
||||
- BackwardsAccent
|
||||
@@ -62,6 +54,30 @@
|
||||
- SouthernAccent
|
||||
- SpanishAccent
|
||||
- StutteringAccent
|
||||
|
||||
# for job-specific traits etc.
|
||||
- type: cloningSettings
|
||||
id: Special
|
||||
components:
|
||||
- BibleUser
|
||||
- CommandStaff
|
||||
- MindShield
|
||||
- MimePowers
|
||||
- SpaceNinja
|
||||
- Thieving
|
||||
|
||||
# antag roles
|
||||
- type: cloningSettings
|
||||
id: Antag
|
||||
components:
|
||||
- HeadRevolutionary
|
||||
- Revolutionary
|
||||
- NukeOperative
|
||||
|
||||
# a full clone with all traits and items, but no antag roles
|
||||
- type: cloningSettings
|
||||
id: BaseClone
|
||||
parent: [Body, Special]
|
||||
blacklist:
|
||||
components:
|
||||
- AttachedClothing # helmets, which are part of the suit
|
||||
@@ -69,26 +85,47 @@
|
||||
- Implanter # they will spawn full again, but you already get the implant. And we can't do item slot copying yet
|
||||
- VirtualItem
|
||||
|
||||
# all antagonist roles
|
||||
- type: cloningSettings
|
||||
id: Antag
|
||||
parent: BaseClone
|
||||
components:
|
||||
- HeadRevolutionary
|
||||
- Revolutionary
|
||||
- NukeOperative
|
||||
|
||||
# for cloning pods
|
||||
- type: cloningSettings
|
||||
id: CloningPod
|
||||
parent: Antag
|
||||
parent: [BaseClone, Antag]
|
||||
forceCloning: false
|
||||
copyEquipment: null
|
||||
copyInternalStorage: false
|
||||
copyImplants: false
|
||||
|
||||
# spawner
|
||||
# for paradox clones
|
||||
- type: cloningSettings
|
||||
id: ParadoxCloningSettings
|
||||
parent: [BaseClone, Antag]
|
||||
|
||||
# changeling identity copying
|
||||
- type: cloningSettings
|
||||
id: ChangelingCloningSettings
|
||||
parent: Body
|
||||
components:
|
||||
# These are already part of the base species prototype that is spawned for the clone,
|
||||
# that means we only need to copy them over when switching between species.
|
||||
# So these don't need to be part of the Body settings, unless someone makes a trait that adjusts these components.
|
||||
- BodyEmotes
|
||||
- Fixtures
|
||||
- Speech
|
||||
- TypingIndicator
|
||||
- ScaleVisuals # for dwarf height
|
||||
eventComponents:
|
||||
# these need special treatment in the event subscription
|
||||
- Inventory # arachnid pockets and diona feet
|
||||
- Wagging # lizard tails
|
||||
- Vocal # voice sounds
|
||||
- Storage # slime storage
|
||||
- Rootable # diona
|
||||
- Sericulture # arachnids
|
||||
- MovementSpeedModifier # moths when weightless
|
||||
copyEquipment: null
|
||||
copyInternalStorage: false
|
||||
copyImplants: false
|
||||
|
||||
# spawner
|
||||
- type: entity
|
||||
id: RandomCloneSpawner
|
||||
name: Random Clone
|
||||
|
||||
@@ -225,6 +225,30 @@
|
||||
mindRoles:
|
||||
- MindRoleTraitorReinforcement
|
||||
|
||||
- type: entity
|
||||
id: Changeling
|
||||
parent: BaseGameRule
|
||||
components:
|
||||
- type: GameRule
|
||||
minPlayers: 25
|
||||
- type: AntagSelection
|
||||
definitions:
|
||||
- prefRoles: [ Changeling ]
|
||||
max: 3
|
||||
playerRatio: 15
|
||||
briefing:
|
||||
text: changeling-role-greeting
|
||||
color: Red
|
||||
components:
|
||||
- type: ChangelingDevour
|
||||
- type: ChangelingIdentity
|
||||
- type: ChangelingTransform
|
||||
- type: ActionGrant
|
||||
actions:
|
||||
- ActionRetractableItemArmBlade # Temporary addition, will inevitably be a purchasable in the bio-store
|
||||
mindRoles:
|
||||
- MindRoleChangeling
|
||||
|
||||
- type: entity
|
||||
id: Revolutionary
|
||||
parent: BaseGameRule
|
||||
|
||||
6
Resources/Prototypes/Roles/Antags/changeling.yml
Normal file
6
Resources/Prototypes/Roles/Antags/changeling.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
- type: antag
|
||||
id: Changeling
|
||||
name: roles-antag-changeling-name
|
||||
antagonist: true
|
||||
setPreference: false # TODO: set this to true once Changeling exits WIP status
|
||||
objective: roles-antag-changeling-objective
|
||||
@@ -307,3 +307,16 @@
|
||||
exclusiveAntag: true
|
||||
subtype: role-subtype-zombie
|
||||
- type: ZombieRole
|
||||
|
||||
# Changeling
|
||||
- type: entity
|
||||
parent: BaseMindRoleAntag
|
||||
id: MindRoleChangeling
|
||||
name: Changeling Role
|
||||
components:
|
||||
- type: MindRole
|
||||
antagPrototype: Changeling
|
||||
exclusiveAntag: true
|
||||
roleType: SoloAntagonist
|
||||
subtype: role-subtype-changeling
|
||||
- type: ChangelingRole
|
||||
|
||||
14
Resources/Prototypes/SoundCollections/changeling.yml
Normal file
14
Resources/Prototypes/SoundCollections/changeling.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
- type: soundCollection
|
||||
id: ChangelingDevourConsume
|
||||
files:
|
||||
- /Audio/Effects/Changeling/devour_consume.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: ChangelingDevourWindup
|
||||
files:
|
||||
- /Audio/Effects/Changeling/devour_windup.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: ChangelingTransformAttempt
|
||||
files:
|
||||
- /Audio/Effects/Changeling/changeling_transform.ogg
|
||||
Reference in New Issue
Block a user