diff --git a/README.md b/README.md index 0cb169fad..7edbec19c 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,8 @@ Thanks to Frame#5375 and AloXado320 for also helping with silhouette stuff - Use `render_multi_image` to draw large texture rectangles consisting of multiple images on the screen. - More info in `puppyprint.c` - Wiseguy's Farcall TLB mapping allows to store executable code inside uncompressed segments, that can be loaded and ran as needed, instead of it having to be loaded at all times. See `farcall.h` in the include folder for instructions and details. +- Red Coin Stars now support up to 99 red coins! You can have red coin stars specific to areas, or you can use the hidden red coin star's 2nd behavior param to set a red coin +count required to spawn the star. # UltraSM64 diff --git a/src/game/behaviors/hidden_star.inc.c b/src/game/behaviors/hidden_star.inc.c index 449316b03..06f5c2b8d 100644 --- a/src/game/behaviors/hidden_star.inc.c +++ b/src/game/behaviors/hidden_star.inc.c @@ -50,8 +50,14 @@ void bhv_hidden_star_trigger_loop(void) { void bhv_bowser_course_red_coin_star_init(void) { s16 numRedCoinsRemaining = count_objects_with_behavior(bhvRedCoin); - o->oHiddenStarTriggerTotal = numRedCoinsRemaining + gRedCoinsCollected; - o->oHiddenStarTriggerCounter = o->oHiddenStarTriggerTotal - numRedCoinsRemaining; + if (o->oBehParams2ndByte != 0) { + o->oHiddenStarTriggerTotal = o->oBehParams2ndByte; + o->oHiddenStarTriggerCounter = gRedCoinsCollected; + } + else { + o->oHiddenStarTriggerTotal = numRedCoinsRemaining + gRedCoinsCollected; + o->oHiddenStarTriggerCounter = o->oHiddenStarTriggerTotal - numRedCoinsRemaining; + } } void bhv_bowser_course_red_coin_star_loop(void) { diff --git a/src/game/behaviors/spawn_star.inc.c b/src/game/behaviors/spawn_star.inc.c index bc57646d6..6fbc6faca 100644 --- a/src/game/behaviors/spawn_star.inc.c +++ b/src/game/behaviors/spawn_star.inc.c @@ -164,8 +164,15 @@ void bhv_hidden_red_coin_star_init(void) { o->activeFlags = ACTIVE_FLAG_DEACTIVATED; } - o->oHiddenStarTriggerTotal = numRedCoinsRemaining + gRedCoinsCollected; - o->oHiddenStarTriggerCounter = o->oHiddenStarTriggerTotal - numRedCoinsRemaining; + if (o->oBehParams2ndByte != 0) { + o->oHiddenStarTriggerTotal = o->oBehParams2ndByte; + o->oHiddenStarTriggerCounter = gRedCoinsCollected; + } + else { + o->oHiddenStarTriggerTotal = numRedCoinsRemaining + gRedCoinsCollected; + o->oHiddenStarTriggerCounter = o->oHiddenStarTriggerTotal - numRedCoinsRemaining; + } + } void bhv_hidden_red_coin_star_loop(void) {