TeamREPENTOGON / TeamREPENTOGON/REPENTOGON
Better support for Rep+ completion marks
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 345
- Forks
- 51
- Avg merge
- 11h 2m
- Merged PRs (30d)
- 4
Description
In Rep+, the "progression" event counters appear to be a bitmask. This is causing issues with Isaac.GetCompletionMark/SetCompletionMark
It doesn't appear to be a simple 0=off,1=normal,2=hard anymore.
It appears to be more like this:
local completionMarkDifficulty = {
off = 1 << -1, -- 0
normal = 1 << 0, -- 1 (grey mark)
hard = 1 << 1, -- 2 (red mark)
online_normal = 1 << 2, -- 4 (blue mark)
online_hard = 1 << 3, -- 8 (purple mark)
}
For example, I got a blue mark with Judas for Moms Heart. The event counter returns 7
Isaac.GetPersistentGameData():GetEventCounter(EventCounter.PROGRESSION_KILL_MOMS_HEART_WITH_JUDAS) -- returns 7
However, Isaac.GetCompletionMark(PlayerType.PLAYER_JUDAS, CompletionType.MOMS_HEART) is returning 3 (which could mean normal + hard)
"7" appears to be saying that normal, hard, and online normal should all be enabled. I get a red mark in single player and a blue mark in online.
local value = 7
print(value & completionMarkDifficulty.normal == completionMarkDifficulty.normal) -- true
print(value & completionMarkDifficulty.hard == completionMarkDifficulty.hard) -- true
print(value & completionMarkDifficulty.online_normal == completionMarkDifficulty.online_normal) -- true
print(value & completionMarkDifficulty.online_hard == completionMarkDifficulty.online_hard) -- false
Isaac.SetCompletionMark(PlayerType.PLAYER_JUDAS, CompletionType.MOMS_HEART, 2) -- 2 for hard
...causes PROGRESSION_KILL_MOMS_HEART_WITH_JUDAS to go from 7 to 6
...which is effectively disabling normal
...strange
Trying to set a larger value with SetCompletionMark throws an error (e.g. 3)
It doesn't feel like everything here is fully synced up.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source file or test is named. Start by reproducing the documented GetEventCounter, GetCompletionMark, and SetCompletionMark examples for Judas and Mom's Heart, then trace how the progression value is interpreted. Done means the completion-mark APIs stay consistent with the reported normal, hard, and online bitmask values without rejecting valid values.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, lua
- Domain
- api, reverse-engineering
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100