Skip to content

[Rando] Shuffle Crates#5017

Merged
aMannus merged 85 commits intoHarbourMasters:developfrom
A-Green-Spoon:feature/cratesanity
Mar 26, 2025
Merged

[Rando] Shuffle Crates#5017
aMannus merged 85 commits intoHarbourMasters:developfrom
A-Green-Spoon:feature/cratesanity

Conversation

@A-Green-Spoon
Copy link
Contributor

@A-Green-Spoon A-Green-Spoon commented Feb 7, 2025

Follows along with most features and settings for pots and grass: overworld/dungeon/all, including MQ, a custom model set, courtesy of @DanaTheElf, for when a crate holds a randomized item (including CTMC), and logic support. One additional feature is a set of GV/GF crates that aren't accessible in glitchless logic (outside of ER), but are shuffled in No Logic settings.

Thanks also to @leggettc18 for splitting up the location list to make room for the additional locations!

Build Artifacts

Copy link
Contributor

@aMannus aMannus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One comment just for future reference and one tiny question, looks good otherwise.

Comment on lines +183 to +202
void ObjKibako2_RandomizerSpawnCollectible(ObjKibako2* crateActor, PlayState* play) {
EnItem00* item00 = (EnItem00*)Item_DropCollectible2(play, &crateActor->dyna.actor.world.pos, ITEM00_SOH_DUMMY);
item00->randoInf = crateActor->crateIdentity.randomizerInf;
item00->itemEntry = Rando::Context::GetInstance()->GetFinalGIEntry(crateActor->crateIdentity.randomizerCheck, true, GI_NONE);
item00->actor.draw = (ActorFunc)EnItem00_DrawRandomizedItem;
item00->actor.velocity.y = 8.0f;
item00->actor.speedXZ = 2.0f;
item00->actor.world.rot.y = Rand_CenteredFloat(65536.0f);
}

void ObjKibako_RandomizerSpawnCollectible(ObjKibako* smallCrateActor, PlayState* play) {
EnItem00* item00 = (EnItem00*)Item_DropCollectible2(play, &smallCrateActor->actor.world.pos, ITEM00_SOH_DUMMY);
item00->randoInf = smallCrateActor->smallCrateIdentity.randomizerInf;
item00->itemEntry =
Rando::Context::GetInstance()->GetFinalGIEntry(smallCrateActor->smallCrateIdentity.randomizerCheck, true, GI_NONE);
item00->actor.draw = (ActorFunc)EnItem00_DrawRandomizedItem;
item00->actor.velocity.y = 8.0f;
item00->actor.speedXZ = 2.0f;
item00->actor.world.rot.y = Rand_CenteredFloat(65536.0f);
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once we get the extendible actor structs these can probably be combined as the randomizerInf will probably live on actor level instead of ObjKibako level.

@aMannus aMannus merged commit 47c653a into HarbourMasters:develop Mar 26, 2025
5 checks passed
@A-Green-Spoon A-Green-Spoon deleted the feature/cratesanity branch April 13, 2025 16:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants