-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Ghost types #37949
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
base: master
Are you sure you want to change the base?
Ghost types #37949
Conversation
|
RSI Diff Bot; head commit c0676ed merging into 9880648 Resources/Textures/Mobs/Ghosts/ghost_human.rsi
|
|
I think this is a very fun idea |
|
wacky as heck that either windows or aseprite decided to automatically rename some sprites, ill fixie it later along with some other thingi |
|
really neat concept, does this work with adminghosts? or does this generally not apply? |
|
Please tell me ashing would do something, moths need SOMETHING good this season V_V |
floating pile of ash |
if you mean making them available as admin ghosts then i can prolly do that? otherwise i dunno what you mean
after getting this thingi to workie well i may look to add additional states in case someone is ashed or blown up |
|
I dig it. |
To ash, the victim must first burn to death. So it will most likely be the fire ghost. |
|
i forgor about caustic!!!!! blehhhhhhhhh, ill handle that after all those other stuffies if i can thinkie of how it should look bcus rn i got no idea |
You see that guy get melted by the Ark of the Covenant? Maybe a melted/sludge ghost |
looked that up and melting may workie, thanks for the recommendation ^^ |
|
expect this to take a bunch longer bcusies silksong is gonna eat a lot of my time x3 |
|
oki thats enough of a break back to figuring out this thingi bcus uh yeah im confus but ill likely pester people so progress can be made mhm |
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.
looks pretty good! If you have questions let me know here or discord
| var ghost = SpawnAtPosition(GameTicker.ObserverPrototypeName, spawnPosition.Value); | ||
| var ghostComponent = Comp<GhostComponent>(ghost); | ||
|
|
||
| if (TryComp<GhostSpriteStateComponent>(ghost, out var state)) |
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 is a little sussy, could you try listening for the OnMapInit in the GhostSpriteState system? That might be a better way to do this
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.
If i were to listen to the MapInitEvent the GhostSpriteStateSystem would trigger before the GhostSystem transfers the players mind to their ghost, which causes issues by making it way harder and convoluted to get the mind ( i think )
ill get back to tis after going through the other comments
((i think MapInitEvent is what you meant, sorry if thats wrong, its the thingi that came up when looking for it))
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.
cooked I'll look into it
| visuals: | ||
| enum.GhostVisuals.Damage: | ||
| ghostVariant: | ||
| ghost_blunt1: { state: ghost_blunt1 } # this is an icki way of doing this u.u -Thinbug |
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 agree with your comment 🤔
I swear there is a better way to do this, spend a little bit of time but if you can't figure it out let me know and I'll try do investigate. Maybe this is the only way to do it but I doubt it 🤔
|
almosts done with tis just the last feww steps have been tricky as heck so yeah slow |
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.
Some more things!
…nd now itss cooler and i can go eepy
|
i did change all the b's and s's and p's into B's and S's and P's!!!! git just didnt feel like recognizing it smh u.u will fixie but bleh its silly |



















About the PR
Added a system that changes a player ghost sprite according to the damage they took before dying
Full list:
*Bloodloss, Caustic are missing sprites, could not think of a good way to show that so far u.u
Why / Balance
Intended to make the ghosts way more expressive and less repetitive, a fun cosmetic change
Technical details
Oki, biggest pr ive done so far u.u
(Not perfect, ideally it would be done trough markings, but i dont think you can remove pixels with that. So it would be impossible to have a marking that removes a chunk of the ghost)
Tweaks GhostComponent
Added a Damage thingi required to do the sprite changes
Tweaks DamageableSystem
New GetHighestDamageType, it goes trough all the damages of a given dictionary and saves the highest type as a string. If multiple damages are the "highest", they will be saved too
Tweaks Observer.yml
Gave it a GhostSpriteState, Appearance and GenericVisualizer components to handle changing
the sprite state
It currently has a very icki list of all the sprites it can possible choose, which i dont know how to smooth out
New StoreDamageTakenOnMindComponent/System
Added to the mob base (that has health and is capable of taking damage) and body part base. It saves the body damage dictionary and damage specifier inside of the entity MindComponent
New GhostSpriteStateComponent/System
Contains a public method that searches an entity mind for damage values, and it applies a sprite to it according to the damage found
Media
(blackish background bcus yeah ghosts are super duper transparent)

Requirements
Breaking changes
Changelog
🆑