[Rando] Grassanity (#4889)

* * fixes softlock when talking to Mido without Kokiri Emerald after killing Gohma

* * moved scene check to hook
* moved vanilla conditioon into GameInteractor_Should

* * corrected hook condition
* removed 'this'

* * reverted GameInteractor and hook_handlers
* changed actor to use existing hook

* * updated kokiri emerald conditions

* * missed parentheses

* * Overworld pretty much done.
* Known issue with Market Night + 2 bushes in KF
* Known issue with Adult bush in ZR

* * fixed locations post-merge

* * renamed option and types to 'GRASSANITY'
* changed grassnity to be a combobox option
* added first 5 deku tree locations

* * color is a sickly green when containing a check
* added ZR 14 (adult only bush on the platform, not the same?)

* * forgot to rename the files to grassanity
* updated draw method to fix regrowing grass

* Removed old WIP locacc files

* * removed comments in bush actor
* added rest of Deku Tree plus MQ

* Added DC + MQ

* Fixed DC incorrect pos value on 1 loc

* JJB done minus after big octo

* Added BotW + MQ locs

* WIP grottos

* Grottos done

* Workaround to allow market grass during night

* Seperated the 2 KF bushes into 4 checks

* Hints and additional formatting

* Slightly less ghastly color

* Corrected the 2 JJB locs

* * Renaming and removal of some locs.
* Restructure in z_en_kusa.c to leave vanilla code alone.
* Formatting.

* * see previous (forgot to stage woops)

* * Clear grassIdentity on item drop
* Added check for RC on RandoDraw function
Results in no extra dupe drops, and instantly correct the color of the grass when cut instead of on collecting the item.

* * fixed dupe location spoiler names which caused occasional crash when writing spoiler log

* * reverse should

* * fixed faulty locations

* * corrected KAK location names and some formatting

* * Fixed market bushes by tree not working at night

* * merged ZR near PoH grass into a single loc

* * Changed to ShipInit (might be missing something?)
* Corrected Should in z_en_kusa.c to use original draw func when setting is Off

* * Renaming to Shuffle Grass

* * minor fix

* * keyboard fail lol

* * suggestions

* * removed unused function

* * move grass locations into ShuffleGrass
* move grass GameInteractor into GIVanillaBehavior
* minor fixes

* * pre-removed locs from dungeon.cpp

* * pre-remove from context.cpp

* * re-added Grass to context

* * added Dana's amazing custom bush models
* using CSMC to display flowers based on "contents"

* * added Dana's grass models
* refactor to lessen the clutter in the switch

* * removed fairy case

* Added back missing Deku Tree locations

* formatting

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

* re-added suggestion from previous

* removed wrong line >.>

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
This commit is contained in:
Varuuna 2025-03-26 19:33:10 +01:00 committed by GitHub
commit dd81af17bb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
295 changed files with 15086 additions and 60 deletions

View file

@ -59,6 +59,8 @@ bool showWeirdEgg;
bool showGerudoCard;
bool showOverworldPots;
bool showDungeonPots;
bool showOverworldGrass;
bool showDungeonGrass;
bool showFrogSongRupees;
bool showFairies;
bool showStartingMapsCompasses;
@ -1269,11 +1271,32 @@ void LoadSettings() {
showDungeonPots = false;
break;
}
switch (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_SHUFFLE_GRASS)) {
case RO_SHUFFLE_GRASS_ALL:
showOverworldGrass = true;
showDungeonGrass = true;
break;
case RO_SHUFFLE_GRASS_OVERWORLD:
showOverworldGrass = true;
showDungeonGrass = false;
break;
case RO_SHUFFLE_GRASS_DUNGEONS:
showOverworldGrass = false;
showDungeonGrass = true;
break;
default:
showOverworldGrass = false;
showDungeonGrass = false;
break;
}
} else { // Vanilla
showOverworldTokens = true;
showDungeonTokens = true;
showOverworldPots = false;
showDungeonPots = false;
showOverworldGrass = false;
showDungeonGrass = false;
}
fortressFast = false;
@ -1354,6 +1377,9 @@ bool IsCheckShuffled(RandomizerCheck rc) {
(loc->GetRCType() != RCTYPE_POT ||
(showOverworldPots && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
(showDungeonPots && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
(loc->GetRCType() != RCTYPE_GRASS ||
(showOverworldGrass && RandomizerCheckObjects::AreaIsOverworld(loc->GetArea())) ||
(showDungeonGrass && RandomizerCheckObjects::AreaIsDungeon(loc->GetArea()))) &&
(loc->GetRCType() != RCTYPE_COW || showCows) &&
(loc->GetRCType() != RCTYPE_FISH || OTRGlobals::Instance->gRandoContext->GetFishsanity()->GetFishLocationIncluded(loc)) &&
(loc->GetRCType() != RCTYPE_FREESTANDING ||