From: misomosi Date: Wed, 2 Sep 2026 13:39:59 +0000 (-0400) Subject: Remove once on OrNexts to fix spurious achieves X-Git-Url: http://git.misomosispi.com/?a=commitdiff_plain;h=refs%2Fheads%2Fmain;p=radev.git Remove once on OrNexts to fix spurious achieves --- diff --git a/CastlevaniaTheAdventure/CAV.rascript b/CastlevaniaTheAdventure/CAV.rascript index 6ebe393..c047530 100644 --- a/CastlevaniaTheAdventure/CAV.rascript +++ b/CastlevaniaTheAdventure/CAV.rascript @@ -7,23 +7,31 @@ CandleSize = 32 CandleStatusActive = 0x0280 CandleStatusInactive = 0x0000 MaxCandleActive = 4 -function StageNumber() { return byte(0xc02b) } +function Stage() { return byte(0xc02b) } function Candle(i) { return CandleStart + i * CandleSize } function CandleStatus(i) { return word(Candle(i) + 0) } function CandleID(i) { return byte(Candle(i) + 28) } +function Score() { return dword(0xc034) } +function ScoreIncreased() { return prev(Score()) < Score() } +function Lives() { return byte(0xc040) } +function LivesIncreased() { return prev(Lives()) < Lives() } gCandleID = 0 -function gCheckItemCollected(index) { - return once( - ((prev(CandleStatus(index))-CandleStatus(index))*256+CandleID(index)) == (CandleStatusActive-CandleStatusInactive)*256+gCandleID - ) +gStage = 0 +function gCheckItemCollectedWithoutScore(index) { + return ((prev(CandleStatus(index))-CandleStatus(index))*256+CandleID(index)) == (CandleStatusActive-CandleStatusInactive)*256+gCandleID } function gCheckCandleCollected(id) { gCandleID = id - return any_of(range(0, 4), gCheckItemCollected) + return once(Stage() == gStage && any_of(range(0, 4), gCheckItemCollectedWithoutScore)) } function CheckAllCandles() { - return all_of(range(0, 4), gCheckCandleCollected) + collected = disable_when(!(ScoreIncreased() || LivesIncreased()), until=ScoreIncreased() || LivesIncreased()) + gStage = 0 + collected = collected && all_of(range(0, 0x27), gCheckCandleCollected) + gStage = 1 + collected = collected && all_of(range(1, 1), gCheckCandleCollected) + return collected } -achievement(title = "RATools Test", description = "Get the Candle", points = 0, - trigger = CheckAllCandles()) \ No newline at end of file +achievement(title = "RATools Test", description = "Get the Candles", points = 0, + trigger = CheckAllCandles())