Closed AlexKnauth closed 7 months ago
Idea for letting ManualSplit
work: have the autosplitter automatically move on to the next split for its own internal state, but without sending a split action or any other action to the timer.
For example on splits A, ManualSplit, C, D
:
When A
happens, the autosplitter sends a split action to the timer and moves its internal state to ManualSplit
, but then immediately moves its internal state to C
.
If the user does nothing, does not manually split, then when C
happens, the autosplitter will wrongly split what the timer thinks is ManualSplit
, but the autosplitter thinks is C
. Then the autosplitter will be on D
.
Hopefully the user will notice something wrong at this point, and they might manually undo ManualSplit
, then manually skip ManualSplit
, then manually split or skip C
. If C
is an event split this is fine. But if C
is a continuous split then it might appear to the user that manually undoing ManualSplit
just doesn't work, so they might just manually skip C
instead. After that the 2 states will be back in sync again, with both on D
, so this isn't the worst.
Idea for PureSnail
: look at HeroControllerStates
focusing
, see when health increases relative to when focusing
is true/false. Also look at MPCharge
(I think), to see when it has consumed the soul needed to heal.
By looking at focusing
, it should be able to exclude gaining health by other means such as a bench.
By looking at focusing
, health
, maxHealth
, and MPCharge
(I think), it should be able to include focusing while remaining at full health.
Common themes:
mem.PlayerDataStringList
withscenesGrubRescued
,scenesEncounteredDreamPlantC
map
,killed
,given
(tip: use#[serde(rename = "name")]
on these variants)Splits on hksplitmaker:
0geo.json
,100-completion.json
,106.json
,107-comsob.json
,107-everything.json
,112-comsob.json
,112-everything-10-notch.json
,112-everything-11-notch.json
,12ms.json
,16ms.json
,3vf-kings-station.json
,3vf-stag-nest.json
,4ms-0geo.json
,4ms.json
,5-mimics.json
,8ms-fc-stag.json
,8ms.json
,a1uba.json
,acn-1221.json
,acn.json
,acnkgpz.json
,acnnsc.json
al2ba.json
,all-geo-chests.json
,marissa-audience.json
,myla-flower.json
ManualSplit
Question: should this be in here even if I have to tell people "DO NOT MANUALLY SPLIT" because I don't know what the split index is? If it's only used as the final split it should be fine, but otherwise it seems irresponsible.all-achievements.json
,all-bosses-base-game.json
,all-bosses-grimm-troupe-nmms.json
,all-bosses-grimm-troupe.json
,all-bosses-hidden-dreams-nmms.json
,all-bosses-hidden-dreams.json
,all-bosses-lifeblood.json
,all-broken-charms.json
all-geo-rocks.json
Question: Why does this useHuntersMark
as an end-triggering autosplit? Answer: because the Kronk mod atHollowKnight.Kronk/Kronk/Kronk.cs
SendMessageToLivesplit
setsPlayerData.killedHunterMark
to true for 0.1s so that Livesplit has a chance to autosplit.all-hallownest-seals.json
,all-keys.json
,all-kings-idols.json
,all-skills-1432plus.json
,all-skills-2023-reroute.json
,all-skills-ag.json
,all-skills-emilitia.json
,all-skills.json
,all-stag-stations.json
,all-unbreakable-charms-ss.json
,all-unbreakable-charms.json
,all-wanderers-journals.json
,all-whispering-roots.json
,any-1432plus-isma.json
,any-1432plus-shade-soul.json
,any-1432plus-spore.json
,any-1432plus.json
,any-ag.json
,any-nmms-1028.json
,any-nmms.json
,any-ss.json
,any.json
,cartographer.json
,clawless-shade-cloak.json
colo1-waves.json
,colo2-waves.json
,colo3-waves.json
colo1.json
,colo2.json
,colo3.json
All just Manual Split?eat-me-too.json
,empty-hall.json
,mylas-revenge.json
,egg-101.json
,egg.json
,elderbug.json
,elegy.json
,enraged-guardian.json
,eternal-ordeal-1mg.json
,florist.json
,fool-1221.json
,ggg.json
ghostbusters.json
godhome-ending.json
,godhome.json
,gpz.json
grass.json
Ended
to detect thisgreat-hopper.json
,grubsong.json
,happy-couple-1221.json
,happy-couple.json
hiveblood.json
although this might be out of date wrt Slopeball?kronk.json
Question: Why does this useHuntersMark
as an end-triggering autosplit? Answer: because the Kronk mod atHollowKnight.Kronk/Kronk/Kronk.cs
SendMessageToLivesplit
setsPlayerData.killedHunterMark
to true for 0.1s so that Livesplit has a chance to autosplit.lbc.json
,low-ab.json
,low-ag.json
,low-nmms.json
,low-te-dropless.json
,low.json
,marmu.json
,max-0-geo.json
,menderbug.json
,mr-mushroom-ending.json
,myla.json
,nice-1221.json
,nice.json
,nkg.json
,nmg.json
,nosk.json
p1.json
,p2.json
,p3.json
,p4.json
,p5.json
p5bo.json
,round.json
,pop-percent.json
,pop.json
pure-snail.json
PureSnail
Question: is thestore.CheckIncreasedBy(Offset.health, 1)
check here the right thing? this seems like it would wrongly exclude focusing while already at full health, or DeepFocus to increase by 2, and might wrongly include gaining health by other means such as a bench. is there a better way?rando-te.json
,room-timer.json
,salubras-blessing.json
,save-myla.json
,sbaco.json
,sbcmo.json
,sbico.json
,shriek.json
,spelless-dreamshield.json
,spelless-low.json
,spelless-te-dreamshield.json
,spelless-te.json
,spelless.json
,te-1432plus.json
,te-ag.json
,te-nmms.json
,te.json
,te-flukamoth.json
witness.json
ManualSplit
Just be careful to only manually split when it's markedManualSplit
worldsoul.json
,wp-1315plus.json
,wp.json
,zote.json
What about the now-deprecated
106-comfy.json
, and itsPreGrimmShop
split? Re-implement as a Lantern Shoptimisation split? See: https://github.com/AlexKnauth/hollowknight-autosplit-wasm/compare/shoptimisationFor
witness.json
: with so many manual splits, this category could use some new autosplits for Quirrel. But that can be for another time.