All edge cases for bottle combinations and replacement/filling mirrors the real game, as well we produce the compass text, and does not render the item exactly as the original game does. (I would have preferred rendering the item since its only cosmetic but I couldn't find a way to do it).
This also swaps the table redirect stuff for using the direct item id's which is a lot more clear and does not substitute anything for 'good enough' and covers all the edge case ids that have been documented.
This is purely a cosmetic change to present the visual of the item without affecting the cutscene making any tricks for GIM still work and just looks more polished.
This supplies effects of ALL game versions (including MZX build) as well as providing text table.
To note: we still can crash with GIM even when returning item None EVEN at least with returning Kokiri Tunic (I can't really figure out why) and there are a few items in the table that use extra data that I don't know how to implement here just yet but the info is in the docs under "Variable".
In the case of disabling the gim restoration, the game would still crash. This change adds a text id protection to prevent crashing, as well prevents invalid items from crashing directly, and also makes it so the game will no longer crash when having GIM disabled in the menu.
Co-authored-by: serprex <159546+serprex@users.noreply.github.com>
LoadCustomGfx's check being gated by OR condition broke gCustomMasterSwordInSheathDL, i can only assume this is because the sheathed sword DL is the "default" state called by link's skeleton. that condition in customequipment.cpp is not the cause of the log spam that #6862 aimed to fix so it was unneeded
In EnTest_Destroy, the check for nearby Stalfos uses
Actor_FindNearby which includes killed actors (update == NULL)
still in the linked list. When multiple Stalfos die in the
same frame or in quick succession, the last one to be destroyed
still sees the others in the actor list and skips the BGM
restore call (func_800F5B58).
Replace Actor_FindNearby with a custom check that only counts
living actors (update != NULL). This ensures the miniboss BGM
is properly restored to the dungeon theme when the last
Stalfos in a group is defeated.
Co-authored-by: serprex <159546+serprex@users.noreply.github.com>
So this fixes some logical errors with loading the resources so its checking they exist before trying to test-load them... It also added a cache for the alt skeleton by tunic type so we arent constantly trying to reassign the tunic (This change in particular may prevent instant model swapping depending how the model swap with custom content is handled if loaded in a menu like NEI does)... Current system was just spamming that check over and over and trying to reload skeletons constantly so I opted for detecting if the tunic actually changes THEN allow a recheck here, otherwise exit out early. The skeleton.cpp and skeleton.h files can be reverted if suspected that will interfere with intended custom model usage.
Triforce Pieces can now be tokens for bridge or ganon's soul. & can be tokens for multiple rewards
Wincon can now be arbitrary conditions
Ganon's Soul (removed from existing boss soul options) can now be arbitrary conditions
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
When 2 players are in the fairy fountain and 1 activates the great fairy cutscene, it can force the other player into the cutscene as well, and I've had some crashes arbitrarily too so this guarentees that doesnt happen.
Fixes an issue where actors do not load properly after creating a savestate and then going to either a new scene or loading a different area of the map (graveyard near shadow -> main section of graveyard dampes door is missing after loading again.)