Conversation
iaada
left a comment
There was a problem hiding this comment.
Revenant system is a mess but we don't need to fix it all at once. Fixing up corporeal is a good step forward.
| _physics.SetCollisionMask(args.Target, fixture.Key, fixture.Value, (int) (CollisionGroup.SmallMobMask | CollisionGroup.GhostImpassable), fixtures); | ||
| _physics.SetCollisionLayer(args.Target, fixture.Key, fixture.Value, (int) CollisionGroup.SmallMobLayer, fixtures); |
There was a problem hiding this comment.
Hardcoding these collision groups feels wrong. If we move them to the component it's possible this status effect can find a use beyond just Revenant and be given a more generic name. Though resetting the collision groups is tricky, especially while accounting for the possibility of having multiple of the same component at the same time.
I can't think of a great solution.
| public virtual void OnApplied(Entity<CorporealStatusEffectComponent> ent, ref StatusEffectAppliedEvent args) | ||
| { | ||
| _appearance.SetData(uid, RevenantVisuals.Corporeal, true); | ||
| _appearance.SetData(args.Target, RevenantVisuals.Corporeal, true); |
There was a problem hiding this comment.
I feel the same way about the appearance data as I do the collision groups. I'd love to find a more generic solution but I'm drawing a blank.
There was a problem hiding this comment.
I'd prefer to leave it until the revenant system is refactored
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
About the PR
Converts
Corporealinto new status effects.Why / Balance
#38575
Technical details
Corporeal visibility is now handled through a refresh-based status effect flow instead of directly changing
VisibilityComponenton apply/remove. I addedVisibilityModifierStatusComponentwithaddVisibilityandremoveVisibilityfields so status effects define their visibility changes declaratively.VisibilityModifierStatusSystemrefreshes visibility by relayingRefreshVisibilityModifiersEventto all active status effects and recomputing the final mask from their combined modifiers. I also addedVisibilityModifierStatusTrackerComponentto preserve the baseline visibility between refreshes, andRevenantSystem.MakeVisible()now resets that baseline after manual visibility changes.StatusEffectCorporealuses the new component.Media
Requirements
Breaking changes
The
Corporealstatus effect has been removed and replaced withStatusEffectCorporealfor the new status effect system.The
CorporealComponenthas been removed and replaced withCorporealStatusEffectComponentChangelog