]> localhost Git - radev.git/commitdiff
Remove once on OrNexts to fix spurious achieves main
authormisomosi <[email protected]>
Wed, 2 Sep 2026 13:39:59 +0000 (09:39 -0400)
committermisomosi <[email protected]>
Wed, 2 Sep 2026 13:42:49 +0000 (09:42 -0400)
CastlevaniaTheAdventure/CAV.rascript

index 6ebe393b23e8b261659eda7af39ba8e58f1232e5..c04753094cb698d77aef4c6e381ad9f888c2abb0 100644 (file)
@@ -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())