feat(slender): tear his own screen as the pages go - #253
Open
TheMeinerLP wants to merge 1 commit into
Open
Conversation
…g static 2.14.0 shipped this as a sound, which was the wrong reading of what was asked for: the effect was meant to be seen, not heard. It is a picture now. PageGlitchService puts the same worn-tape veil the survivors get from seeing the slender onto his own screen, driven by the round instead of by a line of sight. A baseline climbs a level at a time as the pages disappear, and each find pulses one level above it for pageGlitchPulseSeconds. Nothing is needed in the resource pack that is not already there. Three things this needed: GazeSink.attach(player, worldTint) splits the two halves of the signal. The veil says how far the round has got; the DARKEN_SCREEN bit takes the world's light with it, which is right for a survivor and wrong for the hunter. The slender gets the veil alone. The signal instance is shared with SlenderGazeService rather than a second one being built. A player has one carrier, and two boss bars would draw two full-screen quads over each other. SlenderGazeService now drops a player on SlenderReviveEvent. PlayerQuitListener promotes a living survivor when the slender leaves, so neither the death nor the disconnect listener covered him: he stayed tracked and was measured against himself, distance zero, which reads as the worst level for the rest of the round. The static's six settings collapse into pageGlitchEnabled and pageGlitchPulseSeconds. PageFoundEvent, which 2.14.0 introduced for the sound, stays as it is and now carries the glitch instead.
7 tasks
Contributor
Test results 360 files 360 suites 2m 25s ⏱️ Results for commit fab4982. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed changes
Replaces the slender's static from 2.14.0 with what was actually asked for: a VHS effect he sees, not one he hears. #252 read "Rauscheffekt" as sound; the request was the picture coming apart, the way an old tube TV does.
He is the only player in a round without a page counter. The survivors watch theirs climb, he only learns the score when it ends.
PageGlitchService(game/.../glitch/) gives him that counter as his own screen tearing:SlenderGaze.LEVELSwhen the last one goes. Until the first page there isNONE, not the weakest level: an untouched round has nothing to say yet.pageGlitchPulseSecondsbefore falling back.Nothing new is needed in the resource pack. The channel, the
cygnus:glitchfont and the shader that draws the veil are all already there for the gaze glitch; this only feeds them from a second source.Three things worth a look in review:
GazeSink.attach(player, worldTint)splits the two halves of the signal. The veil says how far the round has got; theDARKEN_SCREENbit takes the world's lighting with it. That is right for a survivor looking at the slender and wrong for the slender himself — darkening his world takes the sight he hunts with. He gets the veil alone.The signal instance is shared with
SlenderGazeServiceinstead of a second one being built. A player has one carrier, and two boss bars would each expand to a full-screen quad and stack; the diagnostic note about exactly that failure is already inBossBarGazeSignal. Slender and survivors are disjoint, so the two services never address the same player, except across a hand-over, which the service watches for.A bug fix that fell out of that hand-over case.
PlayerQuitListenerpromotes a living survivor to slender when the old one quits, so neither the death nor the disconnect listener inSlenderGazeServicecovered him. Left tracked,levelFormeasured him against himself: distance zero, which reads as the worst level, for the rest of the round. He is dropped onSlenderReviveEventnow. This one is independent of the feature and applies to 2.14.0 as it stands.Types of changes
Checklist
10 tests in
PageGlitchServiceTestcover the clean start, both ends of the baseline, the pulse and how long it holds, the hand-over to a new slender, the missing world tint, the round's end, the off switch and a missing slender.BossBarGazeSignalTestgains the tint-less attach,SlenderGazeServiceTestthe promoted survivor,GameConfigReaderTestthe two settings. Both settings are documented inconfig.properties.example.Further comments
pageGlitchEnabledandpageGlitchPulseSecondsreplace the sixslenderStatic*settings from 2.14.0. Since 2.14.0 is already released, a server that set any of them will find them gone; none of them has a counterpart here, because the sound they configured no longer exists.PageFoundEventstays exactly as 2.14.0 introduced it and now carries the glitch instead of the sound.The pulse sits one level above the baseline, so at the last page it has nowhere left to go. That is deliberate — the round ends within seconds at that point. The baseline curve is linear across
SlenderGaze.LEVELS; if it should stay clean longer and fall apart late, that is one line inlevel().The VHS sound built for the old version lives in OneLiteFeatherNET/cygnus-pack#34. Nothing in Cygnus references it after this PR; whether the pack keeps the asset is a separate call.