Compare commits

..

1489 Commits

Author SHA1 Message Date
Malkierian 4aaad850bd Bump to Bravo 9.1.1. (#5922) 2025-11-04 17:40:02 -07:00
Malkierian cf275b1a6c Implement logger changes (#5914)
* Implement logger changes, and make default log level dynamic based on debug/release.

* Bump LUS.

* typo

Co-authored-by: Eblo <7004497+Eblo@users.noreply.github.com>

---------

Co-authored-by: Eblo <7004497+Eblo@users.noreply.github.com>
2025-11-03 18:54:01 -07:00
Philip Dubé 0014f40676 rando BOTWMQ: only turn the water level crystal switch into toggle (#5902) 2025-11-03 18:49:11 -07:00
Malkierian f015a1b339 Apply expected lexicographical sort to initial and new mod addition list. (#5904) 2025-11-03 18:48:48 -07:00
Malkierian b2090dcf83 Add "CuccosToReturn": 1 to Main Randomizer preset. (#5915) 2025-11-03 18:00:31 -07:00
Malkierian ebf8a3b47f Fix Song Shuffle Off (#5918)
* Temporarily fixes Song Shuffle Off causing songs to not be given on seeds created solely from spoilers.

* Remove instead of comment.
2025-11-03 17:40:54 -07:00
Pepper0ni f3b0d8e230 quick fix ZR grass logic (#5906) 2025-11-01 11:45:23 +01:00
Jordan Longstaff 1ba6cf643d Modularize coloured ToT Medallions hook (#5877)
* Modularize colourized ToT Medallions hook

* Add overlooked reset of Forest Medallion colour

* Move asset variables to hook file

* Fix includes

* Remove forward declarations

* Use data structures to reduceboilerplate code

* Simplify data structures, reduce boilerplate even more

* Correct patchName2 checks

* Clang format

* Add brackets on if statements
2025-10-29 13:36:29 -07:00
Malkierian b30191f369 Set cutsceneIndex to 0 to bypass cutscene shenanigans when spawning in ToT as adult. (#5899)
Unify savedSceneNum at -1 regardless of starting age.
2025-10-29 09:05:14 -07:00
Jordan Longstaff a419b431a7 Modularize Pause Warp hook (#5869)
* Modularize Pause Warp hook

* Make RegisterPauseMenuHooks static

* Merge pausewarp.c into hook module

* Use brackets with if statements

* Fix timer bug with spoiling items
2025-10-28 20:52:18 -07:00
Malkierian 48f4f56bac Change disabling rules for Skip Feeding Jabu-Jabu to reflect the fact that it only works in rando based on the rando setting. (#5889) 2025-10-28 17:01:59 -07:00
Pepper0ni 1b29c0cad3 fix logic error with detu tree torch room (#5898) 2025-10-28 16:57:16 -07:00
Malkierian 74312442d5 Fix wrong CVar on Hookshot Identifier. (#5883) 2025-10-25 19:52:22 -07:00
Malkierian ad2807ce32 Fix adding Enable Mods twice as search widget. (#5880)
Fix a couple typos in search widget extra terms.
2025-10-23 18:32:00 -07:00
Malkierian ae1cee9b13 Bump to version Copper Alfa 9.1.0. (#5866) 2025-10-21 19:01:39 -07:00
Malkierian 56a05c392e Update to latest LUS commit with clip adjustments. (#5865) 2025-10-21 18:27:24 -07:00
xxAtrain223 955ee9b9ba Fix doorType calculation for shutter doors (#5862) 2025-10-20 21:59:50 -07:00
Malkierian dc5e9686c0 Mod Menu Tweaks (#5844)
* Fix mod order retention.
Remove mods in the CVar that no longer exist.

* Rework mod list init for enabled-by-default with extension changing to disable.

* Rework entire system for default enabled.
Disabled mods are renamed for sake of saving a CVar.
Menu now has an edit mode, cancel button, and apply & close.
Move Enable Alternate Assets to be Enable Mods in the mod menu.
Couple small fixes in the item tracker.

* Try to fix Mac.

* Remove disabling for Enable Mods while editing.
Add info about load order in relation to the list.

* Fix archives being added multiple times across multiple init passes.

* Add full-row drag and drop.
Swap columns.
Add information about dragging to header.

* Remove enable/disable flow, and setup the menu to only handle load order.
Change AltAssets to default on.
Move menu to Settings tab.
Move tab hotkey widget to mod menu.
Fix alt assets migrator value.

* Reverse list order for priority on top.

* Remove ExtensionType.
2025-10-20 10:51:56 -07:00
Philip Dubé 8d441f3ae5 fix rando hints for bridge requirements (#5857) 2025-10-20 10:51:43 -07:00
Malkierian 7004c1fc4f Fix GS not being marked as collected when not shuffled. (#5861) 2025-10-20 10:51:33 -07:00
Jordan Longstaff c806f23494 Potion Shop back door open at night (#5849)
* Potion Shop back door open at night

* Rerun clang-format

* Standard initFunc naming
2025-10-17 08:18:12 -07:00
Philip Dubé 1cd2f60e24 sign hints: add gtg, display destination not source (#5850) 2025-10-17 08:17:53 -07:00
Malkierian 6ef8be58d7 LUS ref bump for cursor visibility tweaks. (#5848) 2025-10-16 08:43:38 -07:00
Philip Dubé a73d80c82b shuffle thieves' hideout entrances (#5619)
* shuffle gerudo fortress entrances

* tracker names

* typo

* don't jail from TH in mixed gerudo entrance shuffle

* split RR_TH_KITCHEN_TOP

* fix incorrect logic re near gs to long roof

* whitespace

* Shuffle Thieves' Hideout

* increase ENTRANCE_OVERRIDES_MAX_COUNT
2025-10-15 19:10:10 -07:00
Malkierian c0aa3deb93 Fix Notes Conditions (#5847)
* Fix conditions for personal notes being displayed and the notes display type option being disabled.

* clang
2025-10-15 16:43:57 -07:00
Cameron 56ab4c51fd Rando: Split fairysanity into distinct options (#5726)
* Split Fairysanity into groups

* Split fairy registration per type

* fix song fairy shuffle locations

* Change "Song Fairies" to "Fairy Spots"

* Update preset settings

* clang format

* simplify `shouldRegister` logic
2025-10-13 15:11:55 -07:00
Philip Dubé 73f3427ced rando: remove vanilla (#5805) 2025-10-13 15:10:51 -07:00
Philip Dubé e254c1f908 botw: water level toggle (#5710)
amazingly the code already handles the flag being cleared to raise the water level,
so only need to setup hooks for ocarina spot to toggle

In MQ it's a diamond switch, so only need to turn it into a toggleable diamond switch
2025-10-13 15:10:24 -07:00
Malkierian 94b07aaa73 Pull in LUS audio API selection fix. (#5840) 2025-10-13 08:47:46 -07:00
Malkierian 8302c2322f Standardizes naming conventions for ShipInit and MenuInit registrations. (#5837)
Fixes missing `static` keywords for two `ShipInit` registrations.
2025-10-10 13:26:06 -07:00
Philip Dubé f253d24cdc Cheat: Disable Sandstorm (#5800)
* Cheat: Disable Sandstorm

Can also be considered an A11y feature,
tho it'll always be hard with the muted colors,
even if we added option to reduce fog

* extern C?
2025-10-10 10:25:41 -07:00
Malkierian 52a8f6c281 Program Execution Argument Extraction (#5807)
* Add function to be able to feed specific path into to process programmatically, and setup drag and drop functionality.

* Encapsulate dropped file functionality from Switch and Wii U.

* Fix dropped file detection, and fix ShowYesNowBox return checking.
2025-10-09 16:51:04 -07:00
briaguya 57c368aa2c update lus includes for new LUS file structure (#5820)
* Bump LUS to include FileDropMgr's new registration system and initial cursor visibility changes.

* New LUS ref.

* Remove default on for cursor always visible.
Add option to camera controls next to enable mouse input for autocapture.
Set autocapture on startup.

* next LUS

* clang again

* Add "EnableMouse" CVar check to startup SetAutoCaptureMouse.

* Back to LUS main.

* lus version with fixes we need

* very wip

* get it building

* soh otr

* bump lus before fixing soh side stuff

* build

* still builds

* mac error

* bump otrexporter

* bump to lus main

* upstream otrexporter

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2025-10-09 16:50:51 -07:00
briaguya 7700b34646 bump otrexporter (#5835) 2025-10-09 01:49:33 -04:00
Philip Dubé 82e2fbb43f null audio engine (#5834)
depends on https://github.com/Kenix3/libultraship/pull/909
2025-10-08 17:26:03 -07:00
Philip Dubé 0973a4211e Fix grass graphic in Shuffle Grass (#5831)
Previously rendering grass as wrong kind in MQ Dodongo room above stairs

Updated code to match decomp logic
2025-10-07 09:23:18 -07:00
Philip Dubé 474d944cfa RT_GROUND_JUMP (#5745)
* RT_GROUND_JUMP, RT_GROUND_JUMP_HARD

based on zootr logic

* 2 groundjumps in Gerudo Fortress
2025-10-06 21:33:59 -07:00
Malkierian 04780de5ec Pulls in the Mac Prism fix. (#5832) 2025-10-06 17:03:38 -07:00
Philip Dubé 5e199ffea8 RT_HOOKSHOT_EXTENSION (#5704)
* 2 hookshot extension tricks

* consolidation

* not a glitch

* cleanup spirit logic

* clang
2025-10-05 18:24:32 -07:00
aMannus f4336cdec7 Add fairy event to outside deku tree (#5830) 2025-10-05 18:02:13 -07:00
Philip Dubé b337f38737 Add a RT_GF_JUMP case (#5828)
Adult can make jump without hover boots by jumping beside the wall (oddly, to the higher part of slope)

Only matters with Shuffle Climb
2025-10-05 11:04:38 -07:00
briaguya dd2628f737 sequence notifs (updated #5265) (#5824)
* Adds ability for Notifiations to not make a noise

This is probably the only feature that will use it, the noise makes sense for most things we want to use notifications for, but it playing on every scene transition was a bit distracting.

* Adds a hook for OnSeqPlayerInit

* Uses new hook and displays notification instead of overlay text

* Changes names to prevent collisions

Will be registering other types of hooks that will need different ShipInitFuncs in this same file later.

* Change Icon

* Change CVarName and remove now-unused duration slider

* Update ConfigMigrator for CVar changes.

* clang-format

* fix

* bring back duration control

* config v4

* fix v4 migration

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2025-10-04 18:57:01 -07:00
Philip Dubé 6c724382f5 rando: fix reentry of jabu blue warp (#5829)
* rando: fix reentry of jabu blue warp

entrance randomizer uses VB_PLAY_BLUE_WARP_CS to set a flag,
which was not called when entering jabu blue warp without ruto

* alternative
2025-10-04 18:54:53 -07:00
PurpleHato 004890f2f8 French Translation - Treesanity (#5827)
* French Translation

* French Translation
2025-10-02 17:06:58 -07:00
Nivomi c22fbc08d7 Fix "SpawnActor::CanBeApplied" check which would also actually spawn the actor, thus causing two actors two be spawned (also fix for WithOffset) (#5822) 2025-10-02 15:47:48 -07:00
Pepe20129 5cac826f97 Add a warning for disabled network (#5629)
* Update SohMenu.cpp

* clang

* Prevent warning from appearing in release builds
2025-10-02 15:45:58 -07:00
Philip Dubé 545cc396b4 Treesanity (#5541)
* treesanity

co-authored-by: turbofist

* market tree at night

* NL Trees

* remove LUSLOG

* feedback

* format

* golden skulltula tree qol

* post-rebase

* trust -129

* remove tree graphic, crate csmc

* format

* feedback

* ObjectExtension
2025-10-02 11:24:18 -07:00
PurpleHato e10b882c08 [ADD] - 3D Scenes for pre-render areas (#5804)
* Hard removal 2D ones for now

* override some scene values for prerender tests (#46)

* Adult Link Cloudy

* Fix: Child Link Night ToT Exterior

* Fix for real now

* Tweak: Skybox castle courtyard

* WIP - adjusting for patterns

* Hooked all code, needs testing

* Hookified

* Clean up

* Update Fog Control

* clang

* Fix skybox override to only affect 3D pre-rendered scenes

Prevent the 3D scene renderer from overriding skyboxes on all scenes

Previously, the function was applying skybox changes to every scene, overriding the intended skyboxes throughout the game (Example: Kokiri Forest with a blue sky instead of it's original "greyish" one)
Now it only applies custom skybox settings to scenes in the skyboxControlList, preserving original skyboxes for other scenes

* Remove commentary and forgot to add Zelda's courtyard skybox

* Move code to shipInit.

* Early return for VB_SHOULD.

* clang

* Fix missing !

* Feedback fixes.

* clang

* Fix CVAR

* Modify Skybox for scenes with multiple viewpoints.

* setting position change to blend in the "modder stuff can do"

* Adressed review

* tooltip space missing, oops

* InitFunc

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
Co-authored-by: Caladius <clatini88@gmail.com>
2025-09-30 19:03:55 -07:00
Eblo 5ed3db0a7e Allow non-ASCII characters on Windows (#5741) 2025-09-30 19:00:30 -07:00
Malkierian 004ad3aea3 LUS Bump, Mouse Capture/Cursor Visibility Improvements (#5797)
* Bump LUS to include FileDropMgr's new registration system and initial cursor visibility changes.

* New LUS ref.

* Remove default on for cursor always visible.
Add option to camera controls next to enable mouse input for autocapture.
Set autocapture on startup.

* next LUS

* clang again

* Add "EnableMouse" CVar check to startup SetAutoCaptureMouse.

* Back to LUS main.

* Final LUS ref bump.
2025-09-30 19:00:05 -07:00
Patrick12115 11a73f88ae [Enhancement] Allow Slingshot and Bow to break randomized beehives (#5793)
* Add slingshot and bow damage checks

* Move to Rando and add Logic, hopefully

* Missing spacing
2025-09-30 12:16:26 -07:00
Philip Dubé dbbbe0f727 RT_SHADOW_UMBRELLA_CLIP (#5668)
* RT_SHADOW_UMBRELLA_CLIP

This is technically a glitch, but offers a novice trick & less requirements

Particularly important in doorsanity for child access

* feedback, move location to upper since it has multiple paths of access
2025-09-30 12:11:31 -07:00
Pepe20129 3cf1d65466 Mod menu V1 (#4962)
* Proof of Concept

* Fixed saving/loading

* Switch sides & add arrow buttons

* Update mod_menu.cpp

* Remove old mod loading code

* Small cleanup

* Post-merge fixes

* Update mod_menu.cpp

* Lots of changes

* clang format

* Address review

* Update SohMenuEnhancements.cpp
2025-09-30 08:35:37 -07:00
Philip Dubé b7de53bf8d Move logic bools to LogicVal enum (#5727)
* Move logic bools to LogicVal enum

Tired of seeing logic reset bugs
This opens up moving bools to bitset
This opens up tracking logic dependencies so events doesn't reevaluate everything
This opens up various events reusing logic vals (already done for LOGIC_BLUE_FIRE_ACCESS)

* ammo comments, fix magic regression
2025-09-29 18:51:07 -07:00
briaguya 7c8fc85c50 update macports (#5819) 2025-09-28 21:08:14 -07:00
Pepper0ni 207de8f408 Remove HasAccessTo and non-self-referncing Here (#5700)
* Remove HasEccessTo and non-sel-referncing Here

* fix here related logic errors
2025-09-27 18:53:20 +02:00
Spodi 14d269d99e Fix Multi-Window not checked by default (#5806)
* Fix Multi-Window not checked by default

Last time i tested with a new config file this was actually on, despite it showing off. So now it shows ON by default :)

* clang
2025-09-26 07:50:24 -07:00
Pepe20129 4b9c949428 Fix dark link ice floors (#5808) 2025-09-26 07:50:16 -07:00
Pepper0ni c7975898a5 Apply price logic to bean salesman (#5811)
* apply price logic to bean salesman

* clang
2025-09-25 23:24:51 -07:00
Malkierian b30c4ab7da Fix issues arising from the Search Widgets PR. (#5813) 2025-09-25 08:28:23 -07:00
Extloga a576bffe3a Additions for the German translation in hint_list.cpp (#5803) 2025-09-19 17:31:20 -07:00
Philip Dubé eeb5a809ae Rando: option for Mido to hint location of Kokiri Sword (#5724)
* Rando: option for Mido to hint location of Kokiri Sword

also fix bug where Mido blocks path to Deku Tree when Closed Forest off but Zelda's Letter not skipped

* french

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>

---------

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2025-09-18 19:58:30 -07:00
William Casarin 8e15cefe2b dev-tools: add bit label on flags table (#5658)
* build: add -Wformat-security

On some distros format-security is turned on to detect possible issues
with non-string literals as format strings

Let's explicitly turn it on and fix the ImgUi text formatting to avoid
compile issues on those platforms

Signed-off-by: William Casarin <jb55@jb55.com>

* save-editor: add flag table bit index labels

Signed-off-by: William Casarin <jb55@jb55.com>

---------

Signed-off-by: William Casarin <jb55@jb55.com>
2025-09-18 13:34:41 -07:00
enzu.ru 577c5639df Improve Nix support (#5777)
* Fix FindOpusFile NixOS bug

* better documentation
2025-09-18 13:29:35 -07:00
Philip Dubé b944d01b12 atomic saving (#5792)
prefer rename to copy/delete, this avoids issues with partial writes
2025-09-18 13:29:21 -07:00
Philip Dubé 7cce840472 rando: fix bug where Mido blocks path to Deku Tree when Closed Forest off but Zelda's Letter not skipped (#5785) 2025-09-17 17:40:06 -07:00
Patrick12115 4bc2bb5592 Wiggle (#5794) 2025-09-17 17:39:30 -07:00
Philip Dubé 911c107b6e saves: use single white space when formatting (#5791)
this halves size of rando saves
2025-09-17 17:24:52 -07:00
Malkierian a88cac300e Restores IS_RANDO default for the "Always Win Dampe Digging Game" enhancement and changes the tooltip to reflect the default status rather than the forced on status. (#5788) 2025-09-17 13:13:19 -07:00
Malkierian ba693ecac4 Search Exclusion and Search Widgets (#5656)
* Implement widget search exclusion.
Exclude all external windows from the search.

* Add second column to search results for non-widget results.

* Implement extra search index.
Add various controls, audio editor, and tracker options to the extra search index.
Fix capitalization on a few options.
Add click-to-view functionality to extra search column.

* Add extraSearchWidgets for searching through non-menu widgets.
Convert Controls extraSearches to widgets. Used to display in-window, as well as provide reference to extraSearchWidgets.

* Swap Audio search to menu widget search system.

* Fix missing static on a ShipInit instance.

* Implement SearchWidgets in popout windows.
Remove remaining vestiges of custom search.

* Add SearchWidget for randomizing audio on seed gen.

* Remove comments on color picker entries in WidgetType.

* Put all search results in middle column for width management.
Change combobox alignment and label position in search results to unify them all to left and above for better organization.
Add "Search Results" text to header of results page for clarification.

* clang
2025-09-16 18:57:33 -07:00
Philip Dubé e6663a1c49 entrance shuffle: sign hints (#5335)
* entrance shuffle: sign hints

* update entrance tracker with hint

* show sign hints when any entrances shuffled

* only hint when entrance shuffled

* avoid crash when loading rando file

* fix kf exit

* correct hint from sign outside kokiri forest

* 3 signs on DMT

* improve naming
2025-09-16 17:52:47 -07:00
Malkierian 524ba26034 Merge pull request #5776 from A-Green-Spoon/tweak/gerudo-jail-swap
Prevent hideout guards from asking to throw Link in jail
2025-09-11 08:43:00 -07:00
Malkierian f7ab811c20 Merge pull request #5770 from Extloga/develop
Fixes for the German translation in several files
2025-09-11 08:42:45 -07:00
Malkierian 640a7d24b4 Merge pull request #5766 from A-Green-Spoon/standardize-entrance-names
Standardize deku scrub grotto entrance names
2025-09-11 08:42:37 -07:00
Malkierian 7ff2355c7e Merge pull request #5787 from Malkierian/blair-dev-9-8
Actual Blair->Develop 9/8
2025-09-10 10:27:07 -07:00
Malkierian e5d0f7befa Fix conflict resolution for SkipBlueWarp's VB_GIVE_ITEM_FROM_BLUE_WARP. 2025-09-10 09:10:51 -07:00
Malkierian 64280146fe Merge branch 'develop-blair' of github.com:Malkierian/Shipwright into blair-dev-9-8 2025-09-08 20:56:12 -07:00
Eric Hoey ac93d7cc15 Add additional glitch-aiding cutscenes for MQ (#5769)
* add mq jabu chest + mq spirit switch cs

* update tooltip
2025-09-08 20:44:45 -07:00
Pepper0ni 27f2292f9d Fix gerudo card generation failures (#5774)
* quick fix gerudo card

* submodules pls
2025-09-08 20:44:36 -07:00
Malkierian 837f497ea6 Encapsulate BeginTable for item and check tracker settings windows. (#5778) 2025-09-08 20:44:27 -07:00
Extloga 405fc7a31d Fixes for the German translation in util.cpp (#5768)
* Fixes for the German translation in util.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in util.cpp

* Revert the fixes for the German translation in item_list.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in util.cpp

* Fixes for the German translation in kaleidoscope_ger.json

* Revert the fixes for the German translation in kaleidoscope_ger.json

* Fixes for the German translation in util.cpp
2025-09-08 20:44:19 -07:00
Eric Hoey e9f1296781 add scene check to hook and custom message 2025-09-03 14:48:46 -04:00
Extloga aacb4ad2f7 Fixes for the German translation in shops.cpp 2025-08-29 19:43:32 +02:00
Extloga bd4e146599 Fixes for the German translation in item_list.cpp 2025-08-29 19:33:02 +02:00
Extloga 52d452307e Fixes for the German translation in scenes_ger.json 2025-08-29 13:41:31 +02:00
Extloga a76c1ca9db Fixes for the German translation in filechoose_ger.json 2025-08-29 13:39:11 +02:00
Extloga beea799081 Fixes for the German translation in kaleidoscope_ger.json 2025-08-29 13:38:40 +02:00
Extloga fc866e695e Fixes for the German translation in randomizer.cpp 2025-08-29 13:09:45 +02:00
Extloga 9a59af2a5e Fixes for the German translation in hint_list_item.cpp 2025-08-29 12:57:20 +02:00
Extloga e0e3cb21a3 Fixes for the German translation in item_list.cpp 2025-08-29 12:41:52 +02:00
Extloga 113e899f09 Fixes for the German translation in shops.cpp 2025-08-29 12:38:55 +02:00
Extloga 3c084ef2a1 Fixes for the German translation in item_list.cpp 2025-08-29 12:17:35 +02:00
Extloga 263afb9c09 Fixes for the German translation in item_list.cpp 2025-08-29 02:21:23 +02:00
Malkierian cbd376afa9 Search Tweaks (#5767)
* Increase vibrancy of search field color.
Set autofocus to only happen on fresh menu load.

* Revert tooltip addition.
2025-08-28 08:59:45 -07:00
Eric Hoey 93c163a99c standardize scrub entrances and matching check 2025-08-27 12:53:56 -04:00
PurpleHato 7b38093665 [TWEAK] Localization support for the Notification System (#5751)
* Localization support

* stick/nuts updrage french  wording

* forgot german questItem and function adaptation for these

* names

* clang

* name + clang

* should be the last one :derp:

* German typo
2025-08-26 12:34:29 -07:00
Eblo 4c269cab30 Add restoration for NTSC 1.0 shutter door range (#5757) 2025-08-25 12:51:50 -07:00
Eric Hoey d8453b2b68 Prevent MQ Spirit softlock with increased crawl speed (#5667)
* disable crawl speed increase if MQ Spirit boulder exists

* bring max speed back to 5
2025-08-25 12:03:23 -07:00
William Casarin 6e6f8dcc9d build: add -Wformat-security (#5646)
On some distros format-security is turned on to detect possible issues
with non-string literals as format strings

Let's explicitly turn it on and fix the ImgUi text formatting to avoid
compile issues on those platforms

Signed-off-by: William Casarin <jb55@jb55.com>
2025-08-25 12:03:13 -07:00
Philip Dubé 7ee7084746 logic: remove commented glitched key logic (#5651)
this code is obsolete with glitch logic being implemented as tricks
2025-08-25 12:03:05 -07:00
Glought bdaf352440 Adds "Randomize on Randomizer Generation" options to Audio and Cosmetics Editors (#5387)
* Add "Randomize on Randomizer Generation" options to Audio and Cosmetics Editors

 * Added "Randomize All Music and Sound Effects on Randomizer Generation" to the Audio Editor.

 * Added "Randomize All on Randomizer Generation" to the Cosmetics Editor.

When enabled, these options randomize audio and/or cosmetics during a new randomizer generation.

* Added "OnRandomizerGeneration" Hook.
 * It is executed on Randomizer Generation.

* Changed AudioEditor and CosmeticsEditor "Randomize all on Randomizer Generation" options to use the "OnRandomizerGeneration" Hook.

* Renamed "OnRandomizerGeneration" to "OnGenerationCompletion.
Renamed "GameInteractor_ExecuteOnRandomizerGeneration" to "GameInteractor_ExecuteOnGenerationCompletion"
Moved "GameInteractor_ExecuteOnGenerationCompletion" from "GenerateRandomizer" to the end of "GenerateRandomizerImgui".

* Removed "GameInteractor_ExecuteOnGenerationCompletion()" from "GameInteractor_Hooks.h" and "GameInteractor_Hooks.cpp"
The "OnGenerationCompletion" hook is now called directly at the end of "GenerateRandomizerImgui" in "randomizer.cpp"

---------

Co-authored-by: Glought <663343+Glought@users.noreply.github.com>
2025-08-25 12:02:30 -07:00
Eblo cc477fbef2 [Enhancement] Toggle grave hole geometry (#5754)
* Add enhancement to toggle grave hole geometry

* Replace malloc and vector with fixed-size arrays

* Make newSurfaceTypes static
2025-08-25 12:01:50 -07:00
Philip Dubé 860bc57a2a fix incorrect description (#5752) 2025-08-25 12:01:33 -07:00
Mike 4a9a98d93c SDL_GameControllerDB repo owner gabomdq -> mdqinc (#5740)
* SDL_GameControllerDB repo owner gabomdq -> mdqinc

gabomdq redirects to mdqinc

* Docs SDL_GameControllerDB repo owner gabomdq -> mdqinc
2025-08-25 12:01:25 -07:00
Philip Dubé 3128fb0112 Fix crash on selling big poe (#5733)
* Fix crash on selling big poe

Easiest steps to reproduce: set poe's to 0, put big poe in inventory, trigger text using big poe bottle

I overlooked selling poes with using bottle instead of talking to collector

* disable hint when count zero
2025-08-25 12:01:17 -07:00
Pepe20129 9eafa852b5 Fix Dampe Going Backwards (#5731)
* Add FixDampeGoingBackwards

* Update SohMenuEnhancements.cpp
2025-08-25 12:00:59 -07:00
balloondude2 21e37d9ac2 Fix the Show Horizontal Resolution Field option v2 (#5744)
* move showHorizontalResField initialization

* remove redundant assignment

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

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-08-25 12:00:28 -07:00
Eric Hoey 820d097c84 Fix King Dodongo door switch cutscene (#5729)
* fix parathenses to properly OR

* clang clang clang
2025-08-25 12:00:04 -07:00
Pepper0ni 224efe2946 Fix TOT_MASTER_SWORD when the master sword is stated with but not shuffled. (#5705)
* Fix TOT_MASTER_SWORD when the master sword is stated with but not shuffled.

* remove RC_MASTER_SWORD_PEDESTAL
2025-08-25 11:59:47 -07:00
Malkierian b6166f41c8 Restore previous state of z_door_warp1.c, and reimplement boss rush blue warp bypass. This also fixes the issue with shadow and spirit medallions not being given in vanilla without cutscene skips on. (#5763)
Ensure shadow and spirit medallions get queued when skipping story cutscenes in vanilla.
2025-08-25 11:59:38 -07:00
Jordan Longstaff 9ff9bebaa2 Fix faulty Nocturne trigger when receiving Fire Medallion (#5761) 2025-08-25 11:59:28 -07:00
Pepe20129 7b4df9bdb2 Boss Rush cleanup (#5652)
* Reduce stuff in the `.h`s & use `COND_HOOK` + variants

* Move some boss rush stuff from `z_file_choose.c`

* clang

* Update BossRush.cpp
2025-08-13 12:08:32 -07:00
Philip Dubé fadae49977 shipinit bonk damage (#5653)
* shipinit bonk damage

* no initFunc
2025-08-13 09:46:36 -07:00
Pepe20129 ee20f7f762 Fix max count for TH keys (#5670) 2025-08-12 20:39:31 -07:00
nclok1405 ce38e03562 Allow console commands in debug save (#5675) 2025-08-12 20:38:44 -07:00
Eric Hoey 568639dfc0 skip ItemGet for small keys after skeleton key (#5730) 2025-08-12 20:37:08 -07:00
Philip Dubé 9cdffc080b small typo fixes (#5680)
incorrect RR was tripping up my code generator
2025-08-12 20:36:51 -07:00
PurpleHato c597e1c4ce TWEAK: SoT Time Travel - Allow Swordless (#5716)
* Magic number + more modular

* tweak + switch

* forgot basic oot

* linebreak

* c-lang
2025-08-12 19:57:19 -07:00
Pepe20129 526d221c56 Add timestamps for remaining custom rando items (#5713) 2025-08-12 19:57:02 -07:00
Pepe20129 3e39a94083 Turn song text into a notification (#5712) 2025-08-12 19:56:52 -07:00
Eric Hoey e104870e6a remove !IS_RANDO check (#5728) 2025-08-12 19:56:07 -07:00
xxAtrain223 353ad944be Removed SHUTTER_BACK_LOCKED and SHUTTER_BOSS from GetDungeonSmallKeyDoors. (#5738) 2025-08-12 19:55:38 -07:00
Malkierian 89c1c97522 Add missing CVar check for tab key processing for alt asset toggle. (#5736) 2025-08-09 11:17:33 -07:00
Pepe20129 6d4c6f8ea6 Rando: Remove ice trap effect from vanilla ice trap chests (#5711) 2025-08-05 20:43:41 -07:00
Pepper0ni b87f1432fd properly clear location subcatagories when generating a seed (#5707) 2025-08-05 20:43:19 -07:00
Malkierian 429021d434 Add THRescuedAllCarpenters to reset list to prevent seed bleed of bridge. (#5725) 2025-08-05 18:28:19 -07:00
Malkierian be77a9be71 Fix Dpad Navigation and Dpad equips on Inventory (#5708)
* Encapsulates ship-specific stuff inside the first state checks in menu draw functions to prevent function bleed.

* clang
2025-07-29 18:47:43 -07:00
Malkierian 1d20000411 MPQ Support LUS Bump (#5570)
* Adapt to changes to LUS regarding including MPQ support.

* CMake compile definitions are stupid.

* Don't manually close O2RArchive.

* Finish LUS bump, including SoH-side fix for font free crash.
2025-07-28 08:54:31 -07:00
aMannus 73209fcf2c Merge pull request #5697 from Malkierian/blair-foxtrot-dev
Blair Foxtrot -> Develop
2025-07-25 11:56:33 +02:00
Malkierian 27d88c80b1 Merge branch 'develop-blair' of github.com:Malkierian/Shipwright into blair-foxtrot-dev 2025-07-24 10:04:06 -07:00
Malkierian 7d7072f717 Bump version to 9.0.5 (#5694) 2025-07-23 21:31:13 -07:00
Jordan Longstaff ccf3d4b6a0 Add playing icon to improve Audio Editor indicator (#5686) 2025-07-23 20:48:01 -07:00
AltoXorg d06cf6bf10 timesplitdata.json obey app directory (#5693) 2025-07-23 20:45:46 -07:00
Malkierian d51e88b972 Rando Versioning (Again) (#5691)
* Adds Sulu/Spock rando block check (data not empty, but all sub-entries null), and put that and data being empty to the old file flow.
Also moves the `SaveFile` call to after everything else is loaded to preserve sohStats block.

* Add check for blank buildVersion in sohStats block for determining old saves.

* clang
2025-07-23 20:45:22 -07:00
Malkierian c588d48672 Bump version to Blair Echo. (#5690) 2025-07-21 22:21:59 -07:00
Malkierian 35ad68578e Prevent empty randomizer blocks from triggering the rando version flow. (#5689)
Clear SpoilerLog CVar when unsupported spoiler log is discovered on load.
2025-07-21 22:19:04 -07:00
Malkierian 5066fbf82c Fix old file deletion. (#5688) 2025-07-21 17:57:40 -07:00
Malkierian 47c5a7f308 Bump version to Blair Delta 9.0.3, and fix a typo. (#5687) 2025-07-21 14:31:48 -07:00
Pepper0ni 37fb25d2b3 Fix logic for items given at run start due to settings (#5665)
* initial changes

* submodules

* fix master sword, skip zelda and skip epona logic

* I for one welcome our new clang overlords...
2025-07-21 11:00:39 -07:00
Shishu the Dragon 681e8dda26 Ivan: collect deku seeds (#5654) 2025-07-21 10:47:03 -07:00
Malkierian a93b484cf3 Add Clear Devices button that will erase the controllers block. (#5683) 2025-07-21 10:44:53 -07:00
OtherBlue dfa10383e4 Split Skip Pickup Messages (#5648)
* Split Skip Pickup Messages

following ZFG's comment https://youtube.com/clip/UgkxF-LDaR-zyTkqSkqtP3dkLrCca_KGScIw?si=RJY9SIG8QKSiWgVl

splits the Skip Pickup Messages time saver for consumables and bottle pickups

* CVar updates I missed

* another cvar I missed
2025-07-02 21:35:49 -07:00
Malkierian 237dcfec74 Move all maps from Menu.h to the source files that use them. (#5644) 2025-07-01 17:40:42 -07:00
Philip Dubé ec54d02c0c Spirit Flags (#5631)
1. skip cutscene delay for sun on floor & sun on block
2. persist sun on floor temp flag
3. persist big mirror being solved before platform lowered

2 removes need for weird bomb key logic
3 needed for shuffle doors
2025-07-01 12:04:26 -07:00
Philip Dubé cddc7353af tts: replace rupee count with key count in dungeons (except first 3 child dungeons) (#5642) 2025-07-01 10:54:39 -07:00
aMannus 48d2193fec CrowdControl additions & improvements (#5104)
* CrowdControl additions & improvements

* Update after dev merge

* clang format

* Revert "clang format"

This reverts commit 1be5ad18f5.

* clang format
2025-07-01 10:54:26 -07:00
Philip Dubé 05a7f728e7 dev tools save editor: change dungeon drop down to current dungeon (#5635) 2025-07-01 10:30:02 -07:00
aMannus db58c3a029 Fix clang-format ps1 script (#5637)
* Fix clang-format ps1 script

* use path variable
2025-06-30 16:56:55 -07:00
Philip Dubé f80836d8b7 Enemy Randomizer: all the invis (#5621)
Fire Keese, Floormaster, Ice Keese, Keese, Redead, Stalfos
2025-06-30 14:52:45 -07:00
Philip Dubé 928bb7767b reduce logical implications of closed forest (#5626)
* reduce logical implications of closed forest

closed forest should only be about kokiri blocking the way,
no need to try plug alternate forest escapes out

* revert adult deku being unlocked in forest without showing mido sword/shield
2025-06-30 14:52:02 -07:00
Malkierian 96d3b480b1 Merge pull request #5638 from Malkierian/blair-dev-6-30
Blair->Dev 6/30
2025-06-30 14:31:30 -07:00
Malkierian 7f3d2adc63 Fix whitespacing in presets. 2025-06-30 13:04:51 -07:00
Malkierian 015dcf2af1 Fix typo. 2025-06-30 10:58:49 -07:00
Malkierian 30d1932354 Re-add new preset items to new preset files. 2025-06-30 09:37:02 -07:00
Malkierian 002e8e9f09 Merge branch 'develop-blair' of github.com:Malkierian/Shipwright into develop 2025-06-30 09:28:11 -07:00
Malkierian 32683e2a74 Change early return in CheckTrackerLoadGame to check specifically for Boss Rush instead of Not Rando. (#5634) 2025-06-29 19:12:04 -07:00
Philip Dubé 063fb2577f cleanup, trying to speed up build (#5627) 2025-06-29 18:21:47 -07:00
Malkierian 16c3cb1adf Tracker circle (#5632)
* Fix item tracker circle display.

* Add .o2r to .gitignore.

* clang
2025-06-29 18:06:21 -07:00
Philip Dubé 112fbc5a4b trick: ledge clip into gtg (#5618)
* trick: ledge clip into gtg

* fix
2025-06-29 13:57:57 -07:00
Malkierian a9b857469e Fix Boss Rush scene/cutscene setup after Bongo/Twinrova. (#5623)
Also prevent check tracker crash loading Boss Rush.
2025-06-28 17:48:21 -07:00
Eblo 9924ebbd05 Enhancement to double pause menu animation speed (#5615)
* Add enhancement to speed up pause menu animation

* Rename CVar to FasterPauseMenu

* Rename kaleido to pause menu

* Rename register func to InitFasterPauseMenu
2025-06-28 07:50:28 -07:00
Malkierian 1161ce3546 Expand tooltip for Free Look to explain camera locks and scene reload. (#5624) 2025-06-28 07:50:06 -07:00
louist103 e15f8d395b Backport 2ship streamed audio (#5457)
* Bring over changes from 2ship

# Conflicts:
#	.github/workflows/apt-deps.txt
#	soh/CMakeLists.txt
#	soh/soh/resource/importer/AudioSampleFactory.h
#	soh/soh/resource/importer/AudioSequenceFactory.cpp
#	soh/soh/resource/importer/AudioSequenceFactory.h
#	soh/soh/resource/importer/AudioSoundFontFactory.h

* Update xml format

* Format and fix mixer for Windows

* Fixes for new LUS

* Good ole clang-format
2025-06-27 17:15:02 -07:00
Philip Dubé 9e686ae6f6 Shuffles: use ObjectExtension system for rando object identity (#5603) 2025-06-25 22:00:53 -07:00
Eric Hoey 8b616c8709 first person to first-person (#5616) 2025-06-25 21:54:57 -07:00
Pepper0ni 1d24edaa92 Split Gerudo Fortress and fix break room logic errors (#5338)
* Separate HBA range

* Separate 4 rooftop regions

* Rest of rooftops

* Small cleanup

* Whoops

* Create `thieves_hideout.cpp` & move `gerudo_fortress.cpp`

* Ground and some inside

* More outside cleanup and more inside

* Kitchen

* Final tweaks

* Use `TH_` prefix for Thieves' Hideout locations

* Add clarifying images (+ `.xcf` source)

* Thieves' Hideout is overworld

* Fix `RC_GF_GS_TOP_FLOOR` & blue -> violet entrance

* Address review

* Update gerudo_fortress.cpp

* Address review

* Split "CarpenterRescue"

* Rename events

* Update logic.cpp

* Move from function to event

* Rename most of the regions

* Address review

* Add new conections

* update logic, get it working

* apply clang format

* undo clang format in logic files

* final reordering

* remove additions to .gitIgnore

* Fix some jump trick logic

* clean up ShufflePots

* fix submodules

* update for review and talk to jail and always gate PRs

* change thieves hideout to scene handling

* final fixes and update enum names and hint text

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-06-25 21:54:48 -07:00
Eric Hoey 63bd4ed565 cast to signed 16-bit to stop truncation (#5617) 2025-06-25 21:42:27 -07:00
Philip Dubé c2e7adf915 more tricks (#4866)
* more tricks

1. big poe without epona
2. king dodongo with chu
3. morpha without hookshot
4. open underwater chests (ignore water temple usage for now because water logic is weird)
5. DC MQ stairs without stick, also bring over vanilla alternatives for stairs

rename RT_DC_STAIRCASE to RT_DC_STAIRS_WITH_BOW

* consistency
2025-06-25 09:33:47 -07:00
Jordan Longstaff 3b82b8eeff Ruto no longer targetable with sitting down skip (#5611) 2025-06-25 09:27:45 -07:00
Eric Hoey 74560a360d fix pot param (#5610) 2025-06-23 18:32:35 -07:00
louist103 040e0e1921 Tools update (#5454)
* Bump ZAPDTR & OTRExporter.
Changes to use o2r by default
Changes to the new player animation format

# Conflicts:
#	OTRExporter
#	ZAPDTR
#	soh/soh/OTRGlobals.cpp
#	soh/src/code/z_skelanime.c

* Fix actions

* Format

* Cherry pick ZAPDTR

* Update exporter

* Move configs to port

* Remove copy

* Remove more XML copies

* Remove extractor directory from actions builds.

* Fix OTRExporter for linux

* FIx ZAPD volatile

* Format

* Fix extractor?

* Fix linux

* Fix

* Remove appimage stuff

* Screnity now

* Remove ZAPD from install paths

* Remove soh.sh.in

* Fix linux

* Cleanups and use a thread for message box
2025-06-23 21:29:40 -04:00
Malkierian 4676242086 Fix dpad navigation on Quest Status pause screen. (#5607) 2025-06-23 16:02:04 -07:00
xxAtrain223 afde504a0f Updated SpoilerFileExists to cache the results. (#5606) 2025-06-23 16:01:49 -07:00
xxAtrain223 17613d1f50 Fix Available Checks On Load (#5599)
* Setup call to RecalculateAvailableChecks instead of direct call.

* Remove RecalculateAvailableChecks from CheckTrackerSettingsWindow::DrawElement.
2025-06-23 15:52:17 -07:00
Philip Dubé 64f9e433da Tag navi dive tricks as glitches (#5598) 2025-06-22 21:35:17 -07:00
Malkierian e0ebc115ce Initialize OTRGlobals' Context early to prevent non-portable crash during asset archive lookup. (#5605) 2025-06-22 16:32:37 -07:00
Malkierian cf0ea3033e Fix warning for euro symbol in CustomMessageManager.h. (#5604) 2025-06-22 12:41:13 -07:00
Malkierian 2d59721b7a Small fixes to allow running and seed generation. (#5600) 2025-06-19 22:10:06 -07:00
nclok1405 7ecefa8f90 Converted "Passage of Time on File Select" to ShipInit Hook (#5595) 2025-06-19 18:59:46 -07:00
nclok1405 7514bdc08b Convert enemy-specific cheats "No ReDead/Gibdo Freeze" and "Keese/Guay don't Target You" to hooks (#5597) 2025-06-19 15:06:10 -07:00
Sirius902 3943242cb2 Dynamically construct weird frame data (#5195) 2025-06-19 15:05:57 -07:00
Schicksal88 517b52176c German translation cleanup (#5471)
* German translation cleanup

- German ice trap names and code for it to show up. Changed the order of translations to english/french/german to make it consistent with item_list.cpp.
- German shops as those are now complete.
- German translation for ingame fileselect rando menu.
- Added function to mark an item as plural. This is necessary to have proper grammar in most german sentences. If an item has a € at the end of it and the sentence it get's inserted into has |singular|plural| forms defined, the singular part get's removed.
- Added the plural markers & |singular|plural| parts to the entire german script where it was necessary.
- Fixed grammar, typos, inconsistencies and now everything uses official Zelda-game names.
- Fixed vanilla/master quest map text

* ice trap fix

accidentally commented out french twice instead of spanish. fixed.

* German Randomizer

Some fix for Schicksal

* Fix number 2

Fix number 2 for Schicksal

* Update soh/soh/Enhancements/custom-message/CustomMessageManager.cpp

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

* clang format

---------

Co-authored-by: amafresh <arminamayeh@gmail.com>
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-06-19 14:53:50 -07:00
Philip Dubé 7f3aac36b2 ShuffleFreestanding: ShipInit (#5583) 2025-06-19 14:53:15 -07:00
Philip Dubé 1e60c48e3a a11y: linux tts with espeak-ng (#5428)
* a11y: linux tts with espeak-ng

* dlopen

* Show setting on Linux
2025-06-19 14:27:56 -07:00
Philip Dubé 4c31f2bc88 Extend RT_BLUE_FIRE_MUD_WALLS (#5215)
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2025-06-19 13:43:39 -07:00
Philip Dubé 180d6a1b90 FasterShadowShip.cpp (#5114)
Makes boat 25x faster
2025-06-19 13:42:53 -07:00
Philip Dubé 561f151615 a11y: tts integration with randomizer start menu (#5414) 2025-06-19 13:42:00 -07:00
nclok1405 565d57112e Japanese translation for Better Debug Warp Screen (#5491)
* Japanese translation for Better Debug Warp Screen

* Incorporate fixes by balloondude2 (except Shield/Treasure Chest Grave inconsistencies which I'm unsure how to handle that)

* Localize "Scene Selection" header for each language

* Added/Restored the ability to render Hiragana characters using GFXP_HIRAGANA macro
2025-06-19 13:41:41 -07:00
Philip Dubé 7f4c570a47 ShuffleFairies: ShipInit (#5582)
* ShuffleFairies: ShipInit

* fix big fairy items
2025-06-19 13:40:37 -07:00
Philip Dubé 073205c862 ShufflePots: ShipInit (#5584) 2025-06-19 13:40:24 -07:00
nclok1405 4f95ab3f46 Add/Restore the option to automatically boot into Debug Warp Screen (#5485)
* Added/Restored the option to automatically boot into Debug Warp Screen

* clang-formated

* Added a new hook and moved Boot To Debug Warp Screen to it

* clang

* Added DebugEnabled to initFunc's CVar list. This should prevent Debug Warp from being triggered when Boot to Debug Warp option is enabled but Debug Mode option is disabled.

* No longer hijacks CustomLogoTitle

* Disable "Boot Sequence" dropdown when Boot to Debug Warp Screen is enabled
2025-06-19 13:39:03 -07:00
Philip Dubé c0ea595fa5 rando: always spawn gerudo guard behind gate (also fix gaurd typos) (#5399)
* rando: always spawn guard behind gate (also fix gaurd typos)

someone had seed where they had card so couldn't be caught to pass gate in reverse wasteland

* move guard spawn logic to hook
2025-06-19 13:38:11 -07:00
Philip Dubé a9ede7d46e SwitchTimerMultiplier: fix crash due to missing actor param (#5593) 2025-06-19 13:37:48 -07:00
Malkierian be22c02d00 Reapply "Set Sample Rate to 32000 hz (#4780)" (#5234) (#5508)
This reverts commit feea299291.

Also applies rupee screech fix LL provided to 2ship.
2025-06-19 13:34:47 -07:00
Philip Dubé 81b3123586 timesavers: shipinit (#5416)
* timesavers: shipinit

* feedback

* intro skip not unconditional
2025-06-19 13:34:11 -07:00
Pepe20129 87c971372d Change Region's scene string with a SceneId (#5398)
* Change region scene from string to sceneid

* Deduce `timePass` from scene

* Deduce `areas` from scene where possible

No possible for `RR_CASTLE_GROUNDS` & "link's pocket" areas

* Update zoras_fountain.cpp

* Applied clang format

* Address review

* Address review

* Clang format

* Fix pseudo regions

* Format

* Address review

* Address review
2025-06-19 13:32:39 -07:00
Philip Dubé 4c547416cc replace MT RNG with PCG (#4973)
replace boost hashing with FNV-1a
removes boost as a dependency
2025-06-19 13:31:35 -07:00
Pepper0ni b564148380 Add wallet to mask logic, clean up mask logic (#5567) 2025-06-19 13:28:50 -07:00
Malkierian a9a49ccbe6 Adds saving and loading for location exclusion, and hooks the check tracker up to return false from IsVisibleInCheckTracker if a location was excluded. (#5594) 2025-06-19 13:26:43 -07:00
Pepper0ni 2daf343755 Change excluded checks to have junk instead of non-advancment. (#5592)
* Change excluded checks to have junk instead of non-advancment

* loud frying pan noises
2025-06-19 13:26:30 -07:00
Malkierian 081338b9f9 Merge pull request #5577 from Malkierian/dev-blair-6-12
Blair -> Develop 6/12
2025-06-18 13:01:13 -07:00
Pepper0ni b932b8f6c9 Clarify hint text for pots in interiors (#5591)
* Clarify hint text for pots in interors

* Make dampe's pots text less like a naming error
2025-06-18 08:39:09 -07:00
Pepper0ni 19e9f39a9a Hardcode spirit hands to be dungeon checks (#5590)
* Hardcode spirit hands to be dungeon checks

* CLANG CLANG CLANG!
2025-06-16 15:29:46 -07:00
Pepper0ni aa7693a103 fix various oversights with altar hint off (#5589) 2025-06-16 15:29:22 -07:00
Pepper0ni f2bc7cd1dc Fix rare crash in randomiser generation (#5585) 2025-06-15 10:22:36 -07:00
xxAtrain223 620d08002c RecalculateAvailableChecks Fix - IsSaveLoaded Guard (#5587)
* Added IsSaveLoaded guard clause to RecalculateAvailableChecks.

* Combined RecalculateAvailableChecks guard clauses.
2025-06-15 10:22:03 -07:00
Malkierian 35361c9e8d Create macro to make All and None buttons for cutscene skips trigger ShipInit for each CVar changed. (#5576) 2025-06-15 10:20:09 -07:00
Philip Dubé 330e64180c Difficulty: SwitchTimerMultiplier (#5555)
* Difficulty: FireTimerMultiplier

Introduces slider to adjust timer on fire walls resetting switches

* rename, add more timers

* also shadow trial, dampe race, deku water

* avoid decrementing timer to 0, which with BgMizu can cause timer to go below 0 & break

* gtg eye statue

* also scale torches

* tooltip

* Limit difficulty: torches stop at -3 & shadow temple torch puzzle stops at -4

* put timer condition as should when convenient
2025-06-15 10:19:58 -07:00
Jordan Longstaff b600836e4f New options that affect feeding Jabu-Jabu (#5397)
* New options that affect feeding Jabu-Jabu

* Add hints for what Jabu-Jabu wants

* Roll back "key" settings to just closed/open, finish rando logic

* Revert "Add hints for what Jabu-Jabu wants"

This reverts commit 2a1974a669.

* Fix vanilla enhancement disabler
2025-06-15 10:19:52 -07:00
Pepper0ni eefe7729ab CanUse instead of HasItem for Hover Boots to reach jabu switch ledge (#5581)
* CanUse instead of HasItem for Hover Boots to reach jabu switch

* also fix a similar issue in fountain
2025-06-14 07:51:33 -07:00
Jordan Longstaff ab9af742fa Finish hint translations for fish by waterfall (#5466)
* Finish hint translations for fish by waterfall

* Revise
2025-06-13 22:43:31 -07:00
Philip Dubé 213ea742eb Gerudo Guards: offer to throw you in jail (#5390)
* Gerudo Guards: offer to throw you in jail

Necessary for logic to use being captured in routing

* don't intercept Ge3

* TODO_TRANSLATE

* cleanup
2025-06-13 22:43:25 -07:00
Malkierian cd32181415 Fix incorrect merge conflict resolution. 2025-06-12 22:41:19 -07:00
Malkierian c2b6942282 clang 2025-06-12 17:57:29 -07:00
Malkierian 2b1322d723 Merge branch 'develop-blair' of github.com:Malkierian/Shipwright into develop 2025-06-12 17:46:47 -07:00
Jason 62c03abfd4 Updates docs/MODDING.md example to reflect current codebase (#5558)
* Update docs/MODDING.md change example to reflect current codebase

* Changes to MODDING.md (#5558): fixes slight typo

* Changes to MODDING.md (#5558): fix typo and remove uneeded explanation that minimum and maximum are floats
2025-06-12 13:39:21 -07:00
Malkierian bf3add7a72 Re-add ShipInit::InitAll() to the end of applyPreset(). (#5574) 2025-06-12 13:24:19 -07:00
Philip Dubé 9432b3420b tts: only announce timer at 10s intervals (#5559)
* tts: only announce timer at 30s

1. reading out every second doesn't have enough time to even say more than a number
2. tts is hard to hear the rest of the game over while it's counting non stop

* under a minute announce every 10s
2025-06-12 13:23:47 -07:00
Pepper0ni c7e3e08f8d Fix club moblins moving out of bounds and remove them from the no-clear-room list (#5569) 2025-06-12 13:23:42 -07:00
Philip Dubé 52debea44b Difficulty: CuccosToReturn (#5552)
* Difficulty: CuccosToReturn

Mirrors rando option

* remove RSK_CUCCO_COUNT

* revert forcing rando to at least 1
2025-06-11 14:41:54 -07:00
Malkierian 69792e9717 Save and Randomizer Version Control (#5557)
* Add version control for Rachael saves and old rando saves.

* Change spoiler drop success sound to puzzle success chime.
Add spoiler drop fail sound (sys_error).
Improve path sanitizer operation.
Add check for a spoiler having a version and it equaling running version. Deletes spoiler CVar if spoiler becomes unusuable while running, and prevents loading dropped spoilers that don't match.

* clang

* Remove backslash escaping from Sanitize.
Remove duplicate Sanitize from Context and make it use SohUtils.
Fix typo.
2025-06-11 14:39:15 -07:00
Philip Dubé 07328a0ecb remove leftover No Dampe Fire checkbox (#5561)
got moved to difficulty dropdown
2025-06-11 14:38:34 -07:00
Philip Dubé af99ef8e07 Hookify TreesDropSticks (#5566)
* Hookify TreesDropSticks

* fix off by one
2025-06-11 14:38:12 -07:00
Rozelette dbc2ff09b5 Convert actor health bars to use ObjectExtension (#5565) 2025-06-11 14:37:34 -07:00
Malkierian 0b9fe2d9b9 Fix Search Crash from Scrolling (#5571)
* Fix search crashing when section child scrolled too far.

* clang
2025-06-11 14:35:57 -07:00
Eric Hoey ad850e50b1 prevent OOB write for BGM fix in grotto mixed pools (#5572) 2025-06-11 14:35:49 -07:00
Pepe20129 abb0a93945 Add Anubis, Flare Dancer, Skull Kid & Spear Moblin to enemy randomizer (#5483)
* Add Anubis, Flare Dancer, Skull Kid & Spear Moblin

* Include spear moblins and exclude flare dancer in clear rooms

* Exclude anubis from clear rooms

* Fix skull kill issues

* Clang format

* Address review

* Use hook

* Update z_en_mb.c
2025-06-04 18:07:57 -07:00
Philip Dubé 5b2c30edb0 Faster water temple gate (#5556)
* rando: faster water temple gate

* move to time saver
2025-06-04 17:09:06 -07:00
nclok1405 3377dc636a Default to Hiragana keyboard when playing in Japanese (#5543)
* Default to Hiragana keyboard in Name Entry screen when playing in Japanese (NTSC behavior)

* clang-formated
2025-06-04 17:08:50 -07:00
Philip Dubé 3a60c3f651 SkipAmyPuzzle (#5550) 2025-06-04 17:08:36 -07:00
Philip Dubé 56a53e9fac consolidate RAND_GET_OPTION (#5553) 2025-06-04 17:08:27 -07:00
Pepe20129 f5d8f1eece Add ShuffleSongs.cpp & RO_SONG_SHUFFLE_OFF (#5534)
* ShuffleSongs.cpp

* Address review and fix build

* Update soh/soh/Enhancements/randomizer/settings.cpp

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

* Change back to "Off"

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-05-30 12:51:21 -07:00
Malkierian 40fa3c8d64 Convert RandomizerInf to the dynamic #define model to allow for automatic string names. (#5537) 2025-05-29 19:14:32 -07:00
Pepe20129 40da9997c5 Fix some dark link issues (#5532) 2025-05-29 07:51:35 -07:00
Philip Dubé 2b360d4bbe Rebottle Blue Fire (#5375)
* Rebottle Blue Fire

* hookify
2025-05-29 07:06:53 -07:00
Hunter Marshall fc10e36cdb Fix minor mistakes in region table (#5545)
* Fix minor mistakes in region table

* Update soh/soh/Enhancements/randomizer/location_access/dungeons/ice_cavern.cpp

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

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-05-27 14:34:36 -07:00
Pepper0ni f0e36c2694 Fix failure to assign areas to regions on initial spoiler load (#5540) 2025-05-27 13:19:30 -07:00
Malkierian fa6f45bde5 Fix Preset List with no customs available (#5535)
* Surround preset file processing with the fs::exists check rather than returning early.

* clang
2025-05-27 13:19:14 -07:00
xxAtrain223 de96f3cd0a Typo Fixes (#5533)
* Fixed a couple typos.

* Ran clang format.
2025-05-24 10:39:53 -07:00
Jordan Longstaff 4e8e6d2313 Move Rupee Dash Mode hook to its own file (#5178)
* Move Rupee Dash Mode hook to its own file

* Rename initFunc
2025-05-23 20:29:43 -07:00
Rozelette 8b4cad1710 Rework ActorViewer to use hooks (#5474)
* Rework ActorViewer to use hooks

* Rework ActorViewer to use hooks

* Remove ResetData
2025-05-23 18:47:08 -07:00
xxAtrain223 d330f22071 Available Checks Entrance Shuffle (#5363)
* EntranceShuffler ApplyEntranceOverrides.

* Updated ApplyEntranceOverrides.

* Updated ApplyEntranceOverrides.

* Initial Entrance Discovery.

* Added Randomizer_EntranceDiscovered.

* Updated Randomizer_DiscoverRegion to discover unshuffled connected regions.

* Removed extra semi-colon.

* Update to latest entranceShuffleTable.

* Format fixes.

* Updated EntranceDiscovered to account for entrances not in the entranceShuffleTable.

* Rediscover regions when loading a game.

* Rediscover entrances when enabling Available Checks.

* Added Rando::Context::ParseTricksJson.

* Updated ApplyEntranceOverrides to skip default (unset) overrides.

* Fix clang-format failed check.

* Set mLACSCondition when loading a Randomizer game.

* Updated rediscover loop to use MAX_ENTRANCE_RANDO_USED_INDEX.

* Move entrance discovered into ProcessExits.

* Discover spawns when pulling/placing the master sword.

* Discover adult/child spawn when using Song of Time to switch age.

* Reset logic and ApplyOrStoreItems without applying the item effects to the save when calculating available checks.

* Removed !itemLoc->IsAddedToPool() from the check tracker.

* Remove region discovery as its not needed anymore.

* Cleanup changed files for PR.

* Added Available Checks - Process Undiscovered Exits DebugConsole command.

* Added initial Available Checks - Recalculate DebugConsole command.

* ACPUE, recalculate only if save loaded. ACR, set age and times for the starting region.
2025-05-23 17:49:01 -07:00
TheLynk f2298c6a8e Add Two New Tricks "Navi dive" (#5477)
* add navi dive bottom of the well

* add kokiri sword logic for botw

* Optimisation Logic

* Add Navi Dive Lost Wood

* Update Logic

* Move IsChild in logic trick

* Add brackets

* Clang-Format

* Tweak Text

Tweak Text

* Final Push ?

* It's really the last push
2025-05-23 15:37:30 -07:00
Malkierian 99c3fa6006 Preset Manager (#5459)
* Add presets sidebar, proof of concept row-based listing.

* Complete and unify section check/x drawing.

* Add error state to InputString, and corresponding members and builders to InputOptions.
Implement saving and loading of preset files.

* Implement `Config::SetBlock()`.
Implement Apply.
Implement Delete.
Some json structure changes.

* Apply `CVarClear()` calls in CVar-prefixed widget functions.

* Comment out satellite preset pickers for now.

* clang

* Fix ButtonOptions initializer list.

* I hate clang...

* Loop new preset checkbox creation.
Restore auto-resizing to new preset popup.
Remove errant BeginDisabled in randomizer (merge artifact?).

* Add BlockInfo struct to make array with all info for each block.
Setup loops for all other same-ish situations (applying presets, setting up columns, etc) based on blockInfo.

* Save tracker windows info for later restoration.
Lay the groundwork for said restoration.

* Complete tracker window restoration on preset application.

* Fix RadioButtonsOptions builder parameter type.
Add race lockout to new and apply buttons.

* Revert application of CVarClear on UIWidgets widgets (need to preserve manually-set default states).

* Remove enhancements satellite picker.
Swap randomizer satellite picker to use the manager presets, only displays presets with randomizer section included.
Move built-in presets to the asset archive, and remove delete button on them.
Remove PresetEntries.cpp.

* Fix locations and tricks tabs not updating live when applying preset with new system.

* Apply RandoGenerating lockout to rando preset Apply button.

* Fix new presets not being properly filtered in satellite selectors.

* Fix currently selected presets getting deleted still being selected in satellite selectors.

* Change BigPoeTargetCount in preset files to 1.
2025-05-23 14:57:49 -07:00
Philip Dubé 3a069e621e Fix warnings (#5516)
* use size_t instead of uint8_t for hint ids

* va_arg int instead of s16

warning: second argument to 'va_arg' is of promotable type 's16' (aka 'short'); this va_arg has undefined behavior because arguments will be promoted to 'int' [-Wvarargs]

* more issues like #5443
2025-05-23 14:21:25 -07:00
Malkierian d69a45674f Adds a check for "OneDrive" in the execution path to the startup errors that prevent running. (#5522) 2025-05-23 14:06:25 -07:00
Rozelette a2541fded8 Exclude build dependencies from clang format (#5490) 2025-05-23 14:06:19 -07:00
nclok1405 150029fa49 Set default player name to "リンク" ("Link" in Katakana) when playing in Japanese (#5487) 2025-05-23 14:05:59 -07:00
Rozelette e4448f491e Add ObjectExtension system (#5429) 2025-05-23 14:05:33 -07:00
Jordan Longstaff db8440e744 Move Shadow Tag Mode hook to its own file (#5179)
* Move Shadow Tag Mode hook to its own file

* Rename initFunc
2025-05-23 14:04:43 -07:00
Jordan Longstaff d8acc32876 Move Daytime Gold Skulltulas mod hook to its own file (#5174)
* Move Daytime Gold Skulltulas mod hook to its own file

* Fix externs?

* Rename initFunc
2025-05-23 14:04:20 -07:00
Malkierian ae480e107e Implement Log Level selector setting (#5263)
* Implement Log Level selector setting.

* run clang

* Enum for default value.

* PR feedback: use CVAR_DEVELOPER_TOOLS in CVar builder.

* Slight change to try to force a PR update.

* screw you clang
2025-05-23 14:03:30 -07:00
Philip Dubé ca32dfd246 Dampe Fire (#5521)
* No Dampe Fire

* spicy

* bikeshed
2025-05-23 14:03:20 -07:00
Philip Dubé 24013e2e5c skip bottling big poes (#5247)
* setting to skip bottling big poes

empty bottle still required to collect

avoids logic needing to work around player soft locking by filling bottles without poe collector access

* No option, zero option

* TEXT_BIG_POE_COLLECTED_RANDO

* update preset

* fix talking to poe collector after receiving item
2025-05-23 14:00:35 -07:00
Pepper0ni a9fc317a5a Fix crash when no valid enemies are selected (#5519)
* fix crash when no valid enemies are selected

* Clanged
2025-05-22 15:23:14 -07:00
Philip Dubé 1d716a5975 ShuffleBeehives.cpp (#5511) 2025-05-22 15:18:03 -07:00
Pepper0ni 2511275b8b Fix getting heart containers on pocket and skipped impas song (#5518)
* fix getting heart containers on pocket and skipped impas song

* curse you clang! CURSE YOU!
2025-05-21 15:01:54 -07:00
Malkierian 79b6719db3 Change soh.otr loading to use LocateFileAcrossAppDirs() instead of just the app bundle path. (#5525) 2025-05-21 11:30:16 -07:00
Pepper0ni 01ce1eeac8 Fix oversight in lab boots trick, you need to be able to swim back up (#5524) 2025-05-21 08:51:43 -07:00
Pepper0ni 5bf3761a18 Fix Boss and Tower entryways skipping requirements in decoupled (#5484)
* Fix boss and tower entryways in decoupled

* Add patches to child boss room entryways

* Apply fixes

* remember to set ALL the new exits
2025-05-21 08:51:34 -07:00
Philip Dubé 4216776cd6 Fix entrance optimization (#5520)
I'm an idiot
2025-05-19 22:47:04 -07:00
Malkierian e1f6297807 Merge pull request #5517 from HarbourMasters/develop-blair
Develop blair
2025-05-19 09:19:44 -07:00
briaguya 081f82875a fix link voice missing when hanging off ledges (#5506)
* fix link voice missing when hanging off ledges

* remove unused bitrate var

* hardcoded but justified

* format
2025-05-18 21:24:57 -07:00
Pepper0ni 4334a132e3 fix the wrong codepath being used in CanBuy when generating seeds (#5514) 2025-05-18 14:28:55 -07:00
briaguya f0e40fd1dc fix incorrect token count in messages when tokensanity is off (#5503)
* fix incorrect token count in messages when tokensanity is off

* Update OTRGlobals.cpp
2025-05-18 14:26:10 -07:00
Pepper0ni f16e34e8b8 fix and rename IsKeysanity to IsFireLoopLocked (#5515)
* c

* fix and rename IsKeysanity

* add comment
2025-05-18 14:25:18 -07:00
briaguya 53566c9a73 fix incorrect __VA_ARGS__ use in lusprintf version of osSyncPrintf (#5510) 2025-05-18 16:25:24 -04:00
briaguya 50f42b93fe fix "is valid for C/ObjC but not for C++" warnings (#5512) 2025-05-18 16:25:00 -04:00
Malkierian ecad59e31f Add tooltip to Generate Seed button when disabled indicating the need to be on File Select. (#5509) 2025-05-17 18:52:45 -07:00
Pepper0ni 8e34942924 Toggle the vanilla flags instead of the rando flags when removing one time scrubs (#5504) 2025-05-17 18:06:24 -07:00
xxAtrain223 e0d5fbec42 Available Checks Prices (#5446)
* Improved the item location price availability.

* Moved the available checks price logic into location_access.cpp.

* Fixed typo and clarified check status identified.
2025-05-17 18:05:20 -07:00
Eric Hoey b30fff5d57 Skip Forest Temple Basement Pillars Cutscene (#5473)
* vb forest pillar cs skip

* change to one point cutscene skip

* rm whitespace
2025-05-17 17:56:57 -07:00
xxAtrain223 66351fa4e4 Remove freestanding key from Bottom of the Well Perimeter. (#5496) 2025-05-17 17:30:01 -07:00
xxAtrain223 9cb6530858 Fix Enable Available Checks from title screen. (#5502) 2025-05-17 17:29:53 -07:00
briaguya 3c0e7bcf72 bump lus (to bump imgui) (#5501) 2025-05-17 17:12:05 -04:00
briaguya b418db7792 bump lus (#5500) 2025-05-17 15:35:51 -04:00
briaguya 4f0ed2949e fix seed gen underflow (#5499) 2025-05-17 07:55:21 -07:00
briaguya 026c7619da set soh c standard to 23 (#5498) 2025-05-17 02:16:59 -04:00
Christopher Leggett 6acabae38f Prevent another use of gSaveContext during Seed Generation (#5458)
* Prevent BeanPlanted using gSaveContext for seed gen

* address malk's comment about extern

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2025-05-16 23:11:04 -07:00
Archez 9010b8c540 port over nametag improvements from 2ship (#5160) 2025-05-17 01:09:23 -04:00
Malkierian e673eaefb6 Warnings Round 2 (mostly Rando) (#5486)
* Handle virtually all warnings in `soh/Enhancements/randomizer`.
Handle order of operations warning in FasterHeavyBlockLift.

* Missed a few.

* Add float-specific versions of some M_PI and M_SQRT defines, and swap them in for the static casts in draw.cpp.

* Swap a static cast for M_PIf in check tracker code.
2025-05-16 21:54:36 -07:00
Malkierian 23a5198986 Merge pull request #5497 from HarbourMasters/develop-blair
blair -> dev
2025-05-16 21:46:00 -07:00
Pepper0ni 5b6844ccd8 reapply changes needed for C23 build on develop (#5467) 2025-05-17 00:41:14 -04:00
Malkierian b900f8599a Bump LUS to latest, and handle tinyxml and gfx_pc changes. (#5470) 2025-05-16 21:14:55 -07:00
briaguya 4fd0bf402e set c standard to 17 (#5492) 2025-05-16 15:07:52 -07:00
Pepper0ni e8c2db8151 remove all refernces to Doge (#5488) 2025-05-15 19:51:14 -07:00
Malkierian 45d9fe54d2 Warnings Squashing Round 1 (#5469)
* Fix truncation warning in `entrance.h`.

* Fix type warning in fishsanity.cpp

* Fix implicit conversion warnings in BossRush, Mouse, and UIWidgets.hpp.

* Add Random_Float and use it in GameInteractor_RawAction.cpp.
Make non-specified seed init a separate function.

* clang after type change

* Fix truncation and conversion warnings in ExtraTraps.cpp.

* Resolve type conversion warnings in InputViewer.cpp.

* Resolve some type conversion warnings in hook_handlers.cpp.

* Remove `Random_Float`, and apply `RandomDouble` where it was being used instead.
Add proper range notation to `RandomDouble` to denote the lack of inclusivity for the max part of the range.

* Convert c-style casts to static_cast.
2025-05-13 19:30:04 -07:00
Philip Dubé afc52f07d2 location_access: don't short circuit event access logic (#5216)
event logic is only run while event isn't set
2025-05-13 12:30:22 -07:00
Philip Dubé eb95f9060f Faster empty bottle, faster bean skulltula (#5355)
* Faster empty bottle, faster bean skulltula

* shipinit
2025-05-13 12:30:04 -07:00
Philip Dubé f9cde383b7 ignore out of bounds entrance overrides in json (#5253)
was causing segfault when using settings from door shuffle on develop
2025-05-12 20:33:21 -07:00
Pepper0ni f72085b6ca fix oversight in dragon room of MQ water (#5482) 2025-05-12 20:31:40 -07:00
Eric Hoey 804a24861b add option description to LACS reward options (#5472) 2025-05-07 14:45:42 -07:00
Jordan Longstaff 6cbb298f76 Skip Kakariko and Hyrule Castle gate cutscenes (#5314)
* Skip Kakariko gate cutscenes

* Simplify a bit

* Revert "Simplify a bit"

This reverts commit ffa68c130fede6962bb4488b85c9ec61ccc60170.

* Add Hyrule Castle gate skip

* Add missing backtick

* Redo simplifications

* Run clang-format

* Proper casting of clearCamera argument

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>

---------

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2025-05-06 17:01:36 -07:00
Eric Hoey 6a93625f5c VBify Crawl Speed Enhancement and Add Exlcude Glitch-Aiding Crawlspace Option (#5465)
* add menu option

* VBify + add conditions

* oops wrong func

* clean up includes + casting

* move z_player externed functions

* better name

* correct menu text

* one last name final final

* maintain glitch-aiding selection
2025-05-06 17:00:33 -07:00
Jordan Longstaff 19eb4f39ab Skip trial barrier dispel cutscenes (#5464) 2025-05-01 20:27:20 -07:00
Philip Dubé a0e49f9960 a11y: read out changes in action button (#5421)
* a11y: read out changes in action button

* remove drop & throw & putaway

* down when on horse

* typos
2025-05-01 20:26:15 -07:00
Philip Dubé 626511ffb1 CheckBeatable: move clearing ctx->playthroughBeatable into function (#5408) 2025-05-01 20:11:55 -07:00
Philip Dubé 1a322c3eb5 OTRGlobals: use SohUtils::CopyStringToCharBuffer (#5328)
* OTRGlobals: use SohUtils::CopyStringToCharBuffer

* size_t

* fix issues when max buffer size is 0
2025-05-01 20:11:01 -07:00
Philip Dubé 3c33185d1a optimize GetEntrance (#5257) 2025-05-01 19:36:03 -07:00
Philip Dubé d790ea4bce use LOGIC_BUY_STICKS / LOGIC_BUY_NUTS in logic (#5251) 2025-05-01 19:34:56 -07:00
Jordan Longstaff bc3b17f4ab Add coloured text as current BGM indicator in Audio Editor (#5392) 2025-05-01 19:00:43 -07:00
Pepper0ni 4c9063caa7 Remove redundent entrance logic check when adding a region to the pool. (#5413)
* remove redundent entrance logic check when adding a region to the pool.

* how did this trigger clang...
2025-05-01 19:00:31 -07:00
Pepper0ni baa91cbadb Format map GI text (#5417)
* Format map GI text

* dum
2025-05-01 19:00:22 -07:00
Philip Dubé 4debe6829a Apply final specifier to classes inheriting from Ship::GuiWindow (#5443)
Was getting infamous c++ style warnings:
```
In file included from /home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:8:
In file included from /home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.hpp:12:
In file included from /home/erpre/s/ShipWright/soh/soh/SohGui/SohMenuBar.h:3:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/include/libultraship/libultraship.h:5:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/include/libultraship/bridge.h:4:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/src/public/bridge/resourcebridge.h:9:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/src/resource/type/Texture.h:3:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/src/resource/Resource.h:3:
In file included from /home/erpre/s/ShipWright/soh/../libultraship/src/resource/File.h:3:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/string:42:
In file included from /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/char_traits.h:57:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SohGui::SohMenu' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SohGui::SohMenu>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SohGui::SohMenu>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SohGui::SohMenu>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<SohGui::SohMenu, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<SohGui::SohMenu, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[18], const char (&)[10]>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<SohGui::SohMenu, std::allocator<void>, const char (&)[18], const char (&)[10]>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<SohGui::SohMenu>::__shared_ptr<std::allocator<void>, const char (&)[18], const char (&)[10]>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<SohGui::SohMenu>::shared_ptr<std::allocator<void>, const char (&)[18], const char (&)[10]>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:121:21: note: in instantiation of function template specialization 'std::make_shared<SohGui::SohMenu, const char (&)[18], const char (&)[10]>' requested here
  121 |     mSohMenu = std::make_shared<SohMenu>(CVAR_WINDOW("Menu"), "Port Menu");
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SohConsoleWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SohConsoleWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SohConsoleWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SohConsoleWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<SohConsoleWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<SohConsoleWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[24], const char (&)[13], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<SohConsoleWindow, std::allocator<void>, const char (&)[24], const char (&)[13], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<SohConsoleWindow>::__shared_ptr<std::allocator<void>, const char (&)[24], const char (&)[13], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<SohConsoleWindow>::shared_ptr<std::allocator<void>, const char (&)[24], const char (&)[13], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:124:27: note: in instantiation of function template specialization 'std::make_shared<SohConsoleWindow, const char (&)[24], const char (&)[13], ImVec2>' requested here
  124 |     mConsoleWindow = std::make_shared<SohConsoleWindow>(CVAR_WINDOW("SohConsole"), "Console##SoH", ImVec2(820, 630));
      |                           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SohGfxDebuggerWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SohGfxDebuggerWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SohGfxDebuggerWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SohGfxDebuggerWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<SohGfxDebuggerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<SohGfxDebuggerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[28], const char (&)[17], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<SohGfxDebuggerWindow, std::allocator<void>, const char (&)[28], const char (&)[17], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<SohGfxDebuggerWindow>::__shared_ptr<std::allocator<void>, const char (&)[28], const char (&)[17], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<SohGfxDebuggerWindow>::shared_ptr<std::allocator<void>, const char (&)[28], const char (&)[17], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:128:14: note: in instantiation of function template specialization 'std::make_shared<SohGfxDebuggerWindow, const char (&)[28], const char (&)[17], ImVec2>' requested here
  128 |         std::make_shared<SohGfxDebuggerWindow>(CVAR_WINDOW("SohGfxDebugger"), "GfxDebugger##SoH", ImVec2(820, 630));
      |              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SohStatsWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SohStatsWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SohStatsWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SohStatsWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<SohStatsWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<SohStatsWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[22], const char (&)[11], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<SohStatsWindow, std::allocator<void>, const char (&)[22], const char (&)[11], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<SohStatsWindow>::__shared_ptr<std::allocator<void>, const char (&)[22], const char (&)[11], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<SohStatsWindow>::shared_ptr<std::allocator<void>, const char (&)[22], const char (&)[11], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:131:25: note: in instantiation of function template specialization 'std::make_shared<SohStatsWindow, const char (&)[22], const char (&)[11], ImVec2>' requested here
  131 |     mStatsWindow = std::make_shared<SohStatsWindow>(CVAR_WINDOW("SohStats"), "Stats##Soh", ImVec2(400, 100));
      |                         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'AudioEditor' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<AudioEditor>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<AudioEditor>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<AudioEditor>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<AudioEditor, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<AudioEditor, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[25], const char (&)[13], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<AudioEditor, std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<AudioEditor>::__shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<AudioEditor>::shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:139:31: note: in instantiation of function template specialization 'std::make_shared<AudioEditor, const char (&)[25], const char (&)[13], ImVec2>' requested here
  139 |     mAudioEditorWindow = std::make_shared<AudioEditor>(CVAR_WINDOW("AudioEditor"), "Audio Editor", ImVec2(820, 630));
      |                               ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'InputViewer' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<InputViewer>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<InputViewer>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<InputViewer>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<InputViewer, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<InputViewer, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[25], const char (&)[13]>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<InputViewer, std::allocator<void>, const char (&)[25], const char (&)[13]>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<InputViewer>::__shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13]>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<InputViewer>::shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13]>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:141:25: note: in instantiation of function template specialization 'std::make_shared<InputViewer, const char (&)[25], const char (&)[13]>' requested here
  141 |     mInputViewer = std::make_shared<InputViewer>(CVAR_WINDOW("InputViewer"), "Input Viewer");
      |                         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'InputViewerSettingsWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<InputViewerSettingsWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<InputViewerSettingsWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<InputViewerSettingsWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<InputViewerSettingsWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<InputViewerSettingsWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[33], const char (&)[22], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<InputViewerSettingsWindow, std::allocator<void>, const char (&)[33], const char (&)[22], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<InputViewerSettingsWindow>::__shared_ptr<std::allocator<void>, const char (&)[33], const char (&)[22], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<InputViewerSettingsWindow>::shared_ptr<std::allocator<void>, const char (&)[33], const char (&)[22], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:143:33: note: in instantiation of function template specialization 'std::make_shared<InputViewerSettingsWindow, const char (&)[33], const char (&)[22], ImVec2>' requested here
  143 |     mInputViewerSettings = std::make_shared<InputViewerSettingsWindow>(CVAR_WINDOW("InputViewerSettings"),
      |                                 ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'CosmeticsEditorWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<CosmeticsEditorWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<CosmeticsEditorWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<CosmeticsEditorWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<CosmeticsEditorWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<CosmeticsEditorWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[29], const char (&)[17], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<CosmeticsEditorWindow, std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<CosmeticsEditorWindow>::__shared_ptr<std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<CosmeticsEditorWindow>::shared_ptr<std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:147:14: note: in instantiation of function template specialization 'std::make_shared<CosmeticsEditorWindow, const char (&)[29], const char (&)[17], ImVec2>' requested here
  147 |         std::make_shared<CosmeticsEditorWindow>(CVAR_WINDOW("CosmeticsEditor"), "Cosmetics Editor", ImVec2(550, 520));
      |              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'ActorViewerWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<ActorViewerWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<ActorViewerWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<ActorViewerWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<ActorViewerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<ActorViewerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[25], const char (&)[13], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<ActorViewerWindow, std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<ActorViewerWindow>::__shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<ActorViewerWindow>::shared_ptr<std::allocator<void>, const char (&)[25], const char (&)[13], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:150:14: note: in instantiation of function template specialization 'std::make_shared<ActorViewerWindow, const char (&)[25], const char (&)[13], ImVec2>' requested here
  150 |         std::make_shared<ActorViewerWindow>(CVAR_WINDOW("ActorViewer"), "Actor Viewer", ImVec2(520, 600));
      |              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'ColViewerWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<ColViewerWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<ColViewerWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<ColViewerWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:602:2: note: in instantiation of member function 'std::_Sp_counted_ptr_inplace<ColViewerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_M_dispose' requested here
  602 |         _Sp_counted_ptr_inplace(_Alloc __a, _Args&&... __args)
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:970:6: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<ColViewerWindow, std::allocator<void>, __gnu_cxx::_S_atomic>::_Sp_counted_ptr_inplace<const char (&)[29], const char (&)[17], ImVec2>' requested here
  970 |             _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
      |             ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:1713:14: note: in instantiation of function template specialization 'std::__shared_count<>::__shared_count<ColViewerWindow, std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
 1713 |         : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
      |                     ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:463:4: note: in instantiation of function template specialization 'std::__shared_ptr<ColViewerWindow>::__shared_ptr<std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
  463 |         : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
      |           ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr.h:1007:14: note: in instantiation of function template specialization 'std::shared_ptr<ColViewerWindow>::shared_ptr<std::allocator<void>, const char (&)[29], const char (&)[17], ImVec2>' requested here
 1007 |       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
      |              ^
/home/erpre/s/ShipWright/soh/soh/SohGui/SohGui.cpp:153:14: note: in instantiation of function template specialization 'std::make_shared<ColViewerWindow, const char (&)[29], const char (&)[17], ImVec2>' requested here
  153 |         std::make_shared<ColViewerWindow>(CVAR_WINDOW("CollisionViewer"), "Collision Viewer", ImVec2(520, 600));
      |              ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:15: note: qualify call to silence this warning
   88 |         __location->~_Tp();
      |                      ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:88:2: warning: destructor called on non-final 'SaveEditorWindow' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
   88 |         __location->~_Tp();
      |         ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/stl_construct.h:149:12: note: in instantiation of function template specialization 'std::destroy_at<SaveEditorWindow>' requested here
  149 |       std::destroy_at(__pointer);
      |            ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/alloc_traits.h:720:9: note: in instantiation of function template specialization 'std::_Destroy<SaveEditorWindow>' requested here
  720 |         { std::_Destroy(__p); }
      |                ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.2.1/../../../../include/c++/14.2.1/bits/shared_ptr_base.h:616:28: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<void>>::destroy<SaveEditorWindow>' requested here
  616 |         allocator_traits<_Alloc>::destroy(_M_impl._M_alloc(), _M_ptr());
      |                                   ^

...
```
2025-05-01 19:00:10 -07:00
Eric Hoey 6c14311b66 add dragon room CS (#5461) 2025-05-01 18:59:47 -07:00
Jordan Longstaff a016453042 Ganon's Tower barrier dispelled if cutscene is skipped (#5462)
* Ganon's Tower barrier dispelled if cutscene is skipped

* More format-compliant comment
2025-05-01 18:59:37 -07:00
Eric Hoey 7cbb0d4d61 Add Missing MQ Jabu Small Crates (#5452)
* also change grass to match

* add crates back
2025-04-29 17:40:01 -04:00
xxAtrain223 e13714e88d Added missing comma. (#5450) 2025-04-29 14:23:40 -07:00
Eric Hoey 17ed54dbc5 add DC boss switch exception + tooltip (#5447) 2025-04-29 17:20:04 -04:00
Eric Hoey fec676bbf8 Fix C-Down Position with Anchor Left (#5423) 2025-04-23 17:29:44 -04:00
briaguya 3d3d9c5226 add some imgui ids in input editor (#5439)
* add some imgui ids in input editor

* clang format
2025-04-22 20:39:10 -07:00
Malkierian 8a8ea676ba Prevents hidden button combo setting from hiding the personal notes window when window type is Window. (#5441) 2025-04-22 20:38:45 -07:00
Pepper0ni 103a36e5fe fix MQGTG right side resetting (#5442) 2025-04-22 20:38:14 -07:00
Pepper0ni 3c4f38e2f0 make sure adult is spawned for big poe check (#5431) 2025-04-22 17:16:16 -07:00
Pepper0ni fbbfc07ff1 port over autoFunc punctuation changes and translations (#5426)
---

Co-authored-by: PurpleHato <47987542+PurpleHato@users.noreply.github.com>
Co-authored-by: amafresh <arminamayeh@gmail.com>
2025-04-21 14:21:42 -07:00
Pepper0ni 29af294b0c fix TODO_TRANSLATE language replacement in cases where the text is already formatted (#5415)
* fix TODO_TRANSLATE language replacement in cases where the text is already formatted

* oops
2025-04-17 10:22:12 -04:00
Malkierian 52a3058926 Merge pull request #5409 from Malkierian/blair-charlie-dev-merge
Blair Charlie to Develop
2025-04-15 16:15:51 -07:00
Malkierian 14907a24b0 Merge branch 'develop-blair' of github.com:HarbourMasters/Shipwright into develop 2025-04-15 15:44:16 -07:00
Christopher Leggett 1b6dc13491 Blair Charlie version bump (#5407) 2025-04-15 14:27:55 -04:00
Malkierian 02ef33393a Implements a rand inf for Ruto's letter to apply to logic to track it separate from the underwater item check. (#5405) 2025-04-15 13:13:30 -04:00
Archez 5ae8ce4eac Fix Entrance Rando weather override behavior (#5403)
* Add AfterSceneCommands hook

* move ER weather override to AfterSceneCommands
2025-04-14 19:11:36 -04:00
Malkierian 5e399fe7a2 Race Lockout (#5364)
* Implement race lockout on the new menu, with option for opt-out.

* Cal's requests.
2025-04-13 19:29:29 -04:00
Jordan Longstaff 46b40b0220 Fix misspelling of Broken Giant's Knife fix CVar (#5395) 2025-04-12 12:12:48 -04:00
Malkierian 1416b2490a Change the Reset All callback back to CosmeticsEditor_ResetAll, because it's already set up to not reset HUD position stuff. (#5385) 2025-04-12 09:14:13 -04:00
Pepper0ni f304de2eb1 fix oversight in forest trial first room (#5381) 2025-04-11 22:56:47 -04:00
Malkierian fc0cbbe9e7 Improve tracker dock bgs (#5383)
* Modify the flow for applying opacity to docked tracker windows only when they are docked to the "Main - Deck" dockspace.

* Add opacity clamping for check tracker.
2025-04-11 22:54:52 -04:00
Archez 824c203b97 Merge pull request #5374 from Malkierian/blair-bravo-dev-merge
Blair Bravo -> develop 4-9
2025-04-11 17:20:08 -04:00
Malkierian f0f2157a4c Move processing for RAND_INF_WEIRD_EGG to trade item processing so it happens whenever you get the egg. (#5382)
Remove RSK check for garden entrance because access is still handled by `CanUse(RG_WEIRD_EGG)`.
2025-04-11 15:49:34 -04:00
Proloe 698fca8862 Fixed right stick aiming being significantly less precise than left stick aiming. (#5388) 2025-04-11 15:44:40 -04:00
Archez 86e1e8e3aa Fix boss key kaleido text for NTSC (#5389) 2025-04-11 13:42:08 -04:00
Christopher Leggett 05e96f310d Fix Fishing-related checks location pool (again) (#5378) 2025-04-11 10:15:31 -04:00
Eric Hoey a93917bb4a Fix Adult Fishing as Child Softlock (#5377)
* pass a pointer not a pointer to a pointer

* update GIVanillaBehavior comment

* also drop this
2025-04-10 17:14:25 -04:00
Malkierian 9783f918d2 Add ImGuiWindowFlags_NoSavedSettings to notification windows to prevent cluttering the imgui.ini (#5380) 2025-04-10 09:50:35 -04:00
Malkierian 1791a0c52c Fix input viewer's first-open position calculation. (#5376) 2025-04-10 09:49:21 -04:00
Malkierian 7e78694aee Merge branch 'develop-blair' of github.com:HarbourMasters/Shipwright into develop 2025-04-09 16:12:46 -07:00
Christopher Leggett 85bc67ef24 Blair Bravo version bump (#5372) 2025-04-09 19:04:28 -04:00
Malkierian a99e8836fb Allow seeded enemy rando to use the values of the enemy list selection. (#5371) 2025-04-09 18:18:44 -04:00
Malkierian c12349a7a3 Add check for bean inventory slot having bean on it to allow availability to succeed with ammo count 0. (#5370) 2025-04-09 16:58:06 -04:00
Pepper0ni 73400f5856 IC ledge to fountain child logic fixed (#5368)
* IC ledge to fountain child logic fixed

* fully unblob ZF
2025-04-09 16:46:43 -04:00
Malkierian e98a6c3748 Fix migrators for tracker colors to match new menu formats. (#5369)
Add temporary additional clearing to CVarColorPicker's reset functionality to resolve already migrated issues.
2025-04-09 16:38:27 -04:00
Malkierian c3322c85ae Swap call to RecalculateAvailableChecks() in SaveFile() to a variable that triggers a recalculation in DrawElement(). (#5366) 2025-04-09 15:26:20 -04:00
Extloga c21c632c09 Additions for the currencies in randomizer.cpp (#5344)
* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp

* Rearrangement of the currencies in randomizer.cpp
2025-04-09 15:24:05 -04:00
Pepper0ni 93d49d5c41 Fix ZD beehives and some small cleanup. (#5353)
* clean up zora domain logic

* revert useless short circuits
2025-04-09 15:17:25 -04:00
Christopher Leggett cf75520394 Fix crash in Message Viewer when playing with an NTSC OTR. (#5367) 2025-04-09 15:16:25 -04:00
Eric Hoey 9250af0216 add check for agony option (#5365) 2025-04-09 13:01:26 -04:00
Christopher Leggett 2576f75b1a Fix non-loach fish making it into the pool when Loach Only is selected. (#5360) 2025-04-09 12:20:37 -04:00
PurpleHato 30520a7565 Rando: Last missing french + tiny tweak (#5359)
* Update hint_list_exclude_overworld.cpp

* missing ones

* Oops forgot a '
2025-04-09 11:35:39 -04:00
Pepper0ni f2161297a8 Fix break room access and crates underneath crates logic (#5347)
* fix break room acces and crates underneath crates logic

* apply GF_JUMP to the jump from NEAR_GS to LONG_ROOF to reach BREAK_ROOM
2025-04-09 11:21:22 -04:00
Extloga c1885991fa Additions for the German translation in two files (#5351)
* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Additions for the German translation in hint_list_exclude_overworld.cpp

* Additions for the German translation in hint_list_exclude_overworld.cpp
2025-04-08 16:31:52 -04:00
Malkierian f5e0179e2b Fix a couple typos in enhancement descriptions. (#5358) 2025-04-08 11:44:24 -07:00
Malkierian f0f6259d2f Fix Docked Tracker Ghosting (#5354)
* Dynamically changes a tracker's chosen color's opacity to full when it registers as docked to fix the framebuffer ghosting.

* remove debugging
2025-04-08 10:22:25 -07:00
Archez 1b17fea3d0 Add temporary patch for invisible boulder fragments (#5352) 2025-04-08 12:53:39 -04:00
Archez 88669742a2 Fix copyright tex for GC JP (#5324)
* Fix copyright tex for GC JP

* add 2004 texture for jp ce
2025-04-08 08:38:28 -07:00
Eric Hoey 4a3d60d061 Fix Rando Give for Adult Fishing as Child Glitch (#5349)
* VBVBVB

* Update soh/soh/Enhancements/randomizer/hook_handlers.cpp

* Update soh/soh/Enhancements/randomizer/hook_handlers.cpp

* first try
2025-04-08 11:27:08 -04:00
Pepper0ni d40fa00b9e Mixed pools now properly disables itself when hidden. (#5341)
* mixed pools now sets itself off when hidden

* the clanging never ends
2025-04-08 08:26:18 -07:00
Pepper0ni 88154d78c8 Fix Market Grass and Crate logic (#5340)
* fix market grass and crate logic

* apply clang
2025-04-08 08:26:04 -07:00
Malkierian ae7654cb0e Change check total array types to s16 to handle more check totals (thanks storage temple). (#5348)
Fix typos regarding `overridden` in various parts of the codebase.
2025-04-08 10:13:08 -04:00
Malkierian 71bd48cba9 Move the white iron knuckle entry in randomizedEnemySpawnTable to match the order of enemyCvarList. (#5350) 2025-04-08 07:45:35 -04:00
Christopher Leggett b71a0c5803 Fix checking gSaveContext for used small keys (#5346) 2025-04-07 19:07:07 -04:00
PurpleHato 4acbf799cc French Rando : Add missing text + some tweaks (#5327)
* Should cover everything, I hope

* One last

* final tweaks for real this time

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp

Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp

Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp

Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>

* TODO_TRANSLATE is a macro no a string Hato

---------

Co-authored-by: Extloga <141232749+Extloga@users.noreply.github.com>
2025-04-07 18:34:56 -04:00
briaguya 98146c29f9 fix blank names in spoiler (#5329)
* fix blank names in spoiler

* replace a couple more `.english`/`.french` with `.GetEnglish()`/`.GetFrench()`
2025-04-07 17:24:24 -04:00
Pepper0ni c351a2cf75 Fix shop translations and unify untranslated message alerts. (#5312)
* try to fix messages, crashing on vanilla text

* oops

* adjust shop flavor translations to better fit on 2 lines

* run clang format
2025-04-07 17:22:23 -04:00
Eric Hoey 497f90a392 Set Savewarp in Ganondorf to Ganon's Tower in Entrance Rando (#5339) 2025-04-07 13:27:47 -04:00
Eric Hoey a247c06be8 Various menu fixes (#5321)
* input viewer + rang + draw + circledisp

* clang
2025-04-04 18:49:03 -04:00
Christopher Leggett ee23d02921 move AltAssets to gSettings from gEnhancements (#5323) 2025-04-04 15:25:30 -04:00
Archez 2589448057 Fix boss title card extraction for NTSC; Fix Morpha water (#5320) 2025-04-04 11:57:37 -04:00
Malkierian cb7d9279e4 Fix the GS Map combobox in the Flags tab of the save editor not remembering the selected index, and also rework it to remove the label. (#5317) 2025-04-04 11:00:05 -04:00
Christopher Leggett 38574bbb9e Fix excluded locations on subsequent seed generations (#5302) 2025-04-04 10:15:04 -04:00
Christopher Leggett e2bb2edb8a Fix the start with Master Sword option (#5304) 2025-04-04 10:14:23 -04:00
Archez f37c3aa228 clang-format .hpp files (#5307)
* Add hpp files to clang-format script

* clang-format hpp files
2025-04-03 23:33:35 -04:00
PBillodeau 9a78b04e68 ESC now toggles menubar (#5293)
* ESC now toggles menubar

* Update "menubar" to "menu" in README

* Add mouse capture toggle to README
2025-04-03 17:33:02 -07:00
Pepper0ni 4f783d5945 fix oversight causing big poes check not to run (#5303) 2025-04-03 16:47:56 -04:00
Archez 2deea6e105 Better verbose output for clang-format (#5306) 2025-04-03 15:23:47 -04:00
Philip Dubé ef8fa17e7c simplify clang-format script (#5274)
checked that -print0 & -0 also exist in apple's manpages
2025-04-03 00:36:10 -04:00
Philip Dubé 1e51f1e162 Cleanup whitespace (#5281) 2025-04-03 00:16:52 -04:00
inspectredc fd96bf6b14 Fix Disable Bomb Billboarding (#5290) 2025-04-03 00:06:16 -04:00
Archez 1c248ded02 Bump Blair Alfa (#5283) 2025-04-02 16:21:47 -04:00
aMannus dc20abe10b Fix upgrade crash in rando settings (#5282) 2025-04-02 15:59:04 -04:00
Malkierian 58925bc770 More check renames (#5262)
* Rename a few more entrances to better match interior contents, and a lot of check names to match their grotto names.

* Undo debug commit. Now it's just text changes.
2025-04-02 10:24:01 -07:00
inspectredc ccb7839eda Reload font on language change (#5279) 2025-04-02 12:38:12 -04:00
inspectredc c5e0e32391 Fix Names On Custom Message (#5278)
* Fix Names On Custom Message

* Display Blank Name

* format
2025-04-02 09:45:51 -04:00
inspectredc 2476a7752d Use sOptionsMenuSettings to avoid OOB read (#5277) 2025-04-02 07:56:30 -04:00
inspectredc a5a80bd8a2 Fix Crash On Play Scene Inits (#5276) 2025-04-02 07:40:43 -04:00
inspectredc 9892bfaffa Fix Title Logo Flame Colors (#5275) 2025-04-01 23:56:25 -04:00
Archez 8f126344a4 Apply clang-format to files (#5273) 2025-04-01 22:33:38 -04:00
Archez e8389e0b2e Add clang-format scripts and github runner action (#5270) 2025-04-01 17:09:44 -04:00
Christopher Leggett 17b91ecc2d Fix some misc. Rando menu issues (#5272)
* Fix issue where random and clear seed buttons overlap text input.

* Fix issue where item scale is incorrectly disabled.

On fresh json, there was a mismatch on the defaults where SGIA_JUNK was default for the actual
combobx but SGIA_DISABLED, was used as the default when the CVar was checked in the scale slider's
PreFunc.
2025-04-01 22:53:07 +02:00
xxAtrain223 2bde8fbe5d Use GetDungeonFromScene (#5271)
* Use GetDungeonFromScene.

* Remove SceneToDungeon map.
2025-03-31 21:18:07 -07:00
Christopher Leggett 05219cbbf7 Prevent GameplayStats and TimeDisplay from getting reset on ship json drag and drop (#5269) 2025-03-31 21:28:48 +02:00
Pepper0ni eb17f2e99d Lock mask select behind zelda's letter in rando (#5267)
* Lock mask select behind letter in rando

* change to rand inf
2025-03-31 21:15:41 +02:00
xxAtrain223 35d17b8b0b Available Randomizer Checks (#5091)
* Calculate accessible checks and show them in the check tracker.

* Added added DoorUnlocked checks to the Fire Temple doors.

This is needed when calculating Accessible checks while playing and using small keys. Otherwise checks will appear unaccessible because Keys have been used.

* Changed RecalculateAccessibleChecks to use the logic ReachabilitySearch.

* Reverted DoorUnlocked changes.

* Added recalculate_accessible_checks debug console command.

* Skip CanBuy check when calculating accessible checks, it spoils that some items can't be bought with the current wallet.

* Set RAND_INF_ZELDAS_LETTER.

* Don't add locations to the pool when calculating accessible checks.

* Save and Load randomizer trick options.

* Get the number of used small keys.

* Added check if bean was planted.

* Show number of Accessible checks in each Area.

* Accounted for missing RG_POCKET_CUCCO in logic HasItem and ApplyItemEffect.

* Show accessible checks via an icon.

* Check shop price against current wallet.

* Recalculate Accessible Checks in CheckTrackerLoadGame instead of LoadFile.

* RecalculateAccessibleChecks on save.

* Don't unset Zelda's Letter.

* Added Only Show Available Checks checkbox.

* Rename Accessible Checks to Available Checks.

* Added option to Enable Available Checks.

* Remove debug console to recalculate available checks, this can now be done by toggling Enable Available Checks in the settings.

* Remove extra requiredTrial.

* Default "Hide unshuffled shop item checks" unchecked.

* Updated GetSmallKeyCount to return int8_t.

* Default AmmoDrop to true until the setting is implemented.

* Fixed Sleeping Waterfall timesaver.

* Updated Only Show Available Checks to let Show Hidden Items reveal hidden available checks.

* Revert "Don't unset Zelda's Letter."

This reverts commit 4b5903940f.

* Set RAND_INF_ZELDAS_LETTER.

* Revert "Fixed Sleeping Waterfall timesaver."

This reverts commit 9b62fd5297.

* Added isMagicAcquired to Logic::HasItem.

* GetDungeonSmallKeyDoors return static emptyVector.

* Comment out AmmoCanDrop in ResetLogic.

* Added location_access CanBuy todo.

* Reverted Get and Set SmallKeyCount to use uint8_t and handled -1 keys.

* Added todo for MQ Water GetUsedSmallKeyCount.
2025-03-30 22:18:42 -07:00
Archez ae209709ea Default VSync on to match LUS default (#5261) 2025-03-30 19:24:59 -04:00
Archez 9355aca23e More prep for clang-format (#5239) 2025-03-31 00:17:09 +02:00
Archez bcd8842bde Fix messages crashing when no ntsc game is loaded (#5259)
* Fix messages crashing when no ntsc game is loaded

* rename func
2025-03-31 00:16:44 +02:00
inspectredc 0dc5ff4984 NTSC GC Support (#5254)
* copy n64 pal 10

doing this so i can check diffs i make

* transfer german->jp icon item

* overlays, message data, icon item jpn, audio, code

todo: title_static, gameplay keep

* add kanji and fix title cards

* title static

* spell folder correctly

* boss title cards, do action, icon item, item name, map name

* headers for jpn stuff

* gameplay_keep

* Scenes, audio, jp text extraction, rom support, overlay fixes, sheik & darunia

todo: test & disable darunia fix cvar for ntsc

* msgptr init fix

* icon item offsets

* comment out title cards until zapd can fix itself (we extract these in a different file anyway)

* compile and font implemented to get past title screen

* file select

* message, kaleido and everything else but rando

* uintptr_t

* rando and custom messages working!

* ntsc-j 1.0 support

* n64 logo?

* copy ntsc 10 to 11

* ntsc 11 extraction

* change title version names

* copy ntsc 11 to 12

* ntsc 12 extraction

* clean up some todos

* re checkout submodules post merge

* fix US filename

* support cross-version filenames

* add new versions to non-mq list

* use correct message table init

* Fix ntsc nes message table overriding pal nes message table

* actual fix, allows extraction

* fix file name using wrong font of file being hovered over

* Fix barinade crash

* re-add pal

* better jabu fix and revert LUS

* fix gerudo title cards

* better better owl select

* more owl fixes

* build

* fix some name decode issues

* Switch Language Mid Text

* Fix PAL displaying for JP filenames

* Fix AskToEquip Crash

* Disable Credits Timing Fix on NTSC

* Fix JP Text positioning

* basic language switching (BIG todo: file select, title screen)

* Title Screen Hopefully working

* add ntsc to linux appimage stuff, TODO: add .v64/.n64 support

* Update OTRExporter

* Fix pause to decide offset

* Fix bomb item name crash

* fix fire arrows and PoH

* builds

* update asset changes and fix menu language changing

* fix name decode

* Fix crashes and add rando/boss rush select stuff

* Revive debug feature by setting language cvar too

* Fix ocarina text speed softlock, and update jp text speed changes

* Merge remote-tracking branch 'upstream/develop' into NTSC

* Fix options menu and let pal use japanese fully

* Resolve some suggestions

* match up gTextSpeed changes to english (still broken!)

* Fix text speed crash

* Set default filename language on save init funcs

* copy n64 ntsc 1.2 to gc nmq ntsc and add rom info

* extractor working for ntsc gc u

* Extraction Works

* bump otrexporter

* Display same correct info for n64 ntsc-j and ntsc-u

* ovl asset fixes

* final font diff

* change the correct ovl file choose xml

* copy asset files for jp

* JP Working

* Copy jp and us xmls to mq

* MQ Working

* quicktext more closely aligned with decomp

* add versions to mq switch

* linux appimage v64/n64 checksums

* bump zapd

* Credits Fix Tooltip Adjusted

* update supported hashes json

* update shasums to include JP n64

* add shasum hashes

* Bump submodules back to upstream
2025-03-31 00:16:24 +02:00
Pepper0ni 026a418789 Fix various HBA issues (#5246)
* Fix various HBA issues

* forgot to save

* cleanup to address review
2025-03-30 23:51:20 +02:00
Pepper0ni c38205ddcf Apply better big poe logic (#5245) 2025-03-30 23:51:00 +02:00
Archez 035c03bd85 Bump latest LUS main (#5252) 2025-03-30 23:28:53 +02:00
Pepper0ni 28393fba78 Fix early eyeball frog source adaption in King Zora (#5255)
* Fix early eyeball frog source adaption in king zora

* revert inftable sets
2025-03-30 15:07:48 -04:00
Pepper0ni 714b9a731a Fix fast money accumulator setting (#5256) 2025-03-30 14:52:29 -04:00
Malkierian e21d322a22 Convert grass shuffle locations to use automatic spoiler name creation. (#5243) 2025-03-30 14:18:19 -04:00
Archez ae029a3f06 Replace old methods with ShipUtils (#5151)
* Replace old methods with ShipUtils

* remove PAL naming
2025-03-30 13:54:40 -04:00
inspectredc 6140b2ec8f NTSC Support (N64) (#4198)
* copy n64 pal 10

doing this so i can check diffs i make

* transfer german->jp icon item

* overlays, message data, icon item jpn, audio, code

todo: title_static, gameplay keep

* add kanji and fix title cards

* title static

* spell folder correctly

* boss title cards, do action, icon item, item name, map name

* headers for jpn stuff

* gameplay_keep

* Scenes, audio, jp text extraction, rom support, overlay fixes, sheik & darunia

todo: test & disable darunia fix cvar for ntsc

* msgptr init fix

* icon item offsets

* comment out title cards until zapd can fix itself (we extract these in a different file anyway)

* compile and font implemented to get past title screen

* file select

* message, kaleido and everything else but rando

* uintptr_t

* rando and custom messages working!

* ntsc-j 1.0 support

* n64 logo?

* copy ntsc 10 to 11

* ntsc 11 extraction

* change title version names

* copy ntsc 11 to 12

* ntsc 12 extraction

* clean up some todos

* re checkout submodules post merge

* fix US filename

* support cross-version filenames

* add new versions to non-mq list

* use correct message table init

* Fix ntsc nes message table overriding pal nes message table

* actual fix, allows extraction

* fix file name using wrong font of file being hovered over

* Fix barinade crash

* re-add pal

* better jabu fix and revert LUS

* fix gerudo title cards

* better better owl select

* more owl fixes

* build

* fix some name decode issues

* Switch Language Mid Text

* Fix PAL displaying for JP filenames

* Fix AskToEquip Crash

* Disable Credits Timing Fix on NTSC

* Fix JP Text positioning

* basic language switching (BIG todo: file select, title screen)

* Title Screen Hopefully working

* add ntsc to linux appimage stuff, TODO: add .v64/.n64 support

* Update OTRExporter

* Fix pause to decide offset

* Fix bomb item name crash

* fix fire arrows and PoH

* builds

* update asset changes and fix menu language changing

* fix name decode

* Fix crashes and add rando/boss rush select stuff

* Revive debug feature by setting language cvar too

* Fix ocarina text speed softlock, and update jp text speed changes

* Merge remote-tracking branch 'upstream/develop' into NTSC

* Fix options menu and let pal use japanese fully

* Resolve some suggestions

* match up gTextSpeed changes to english (still broken!)

* Fix text speed crash

* Set default filename language on save init funcs

* bump otrexporter

* Display same correct info for n64 ntsc-j and ntsc-u

* quicktext more closely aligned with decomp

* linux appimage v64/n64 checksums

* bump zapd

* Credits Fix Tooltip Adjusted

* update supported hashes json

* update shasums to include JP n64
2025-03-30 12:29:59 -04:00
Archez 0e23adc237 Change Fullscreen toggle into button (#5236) 2025-03-30 12:20:21 -04:00
Christopher Leggett 554379fd70 Fix some options not updating correctly when dropping jsons and applying Presets (#5240)
* Re-Run ship init funcs on json drop and preset apply

* Prevent registering rando locations from running more than once

* Moves registered=true right after early return

* Move ShipInit call into applyPreset
2025-03-29 00:02:38 -04:00
Malkierian 4d18a36e1a Clarify "Outside Temple of Time" entrance names. (#5241) 2025-03-28 19:22:51 -07:00
Archez b66623c152 Fix freezard graphics crash with enemy health scaling (#5232) 2025-03-28 09:30:56 +01:00
Christopher Leggett 32923d83f2 Don't place items on Chest game. (#5233)
This causes it to fall back on vanilla behavior, fixing the crash
Where it tried to draw something invalid.
2025-03-28 04:31:04 +01:00
Malkierian feea299291 Revert "Set Sample Rate to 32000 hz (#4780)" (#5234)
This reverts commit 9455579f42.
2025-03-28 04:27:01 +01:00
Philip Dubé b417b87d1c Shuffle cleanup (#5222)
* Shuffle cleanup

* Grass can be cut with Goron's Bracelet
* Gohma's grass can be cut without defeating Gohma

* more whitespace
2025-03-27 07:48:37 +01:00
aMannus 3e34934e01 Add grass and crates to hell preset (#5221) 2025-03-27 07:47:36 +01:00
Eric Hoey 006650d37b update break room (#5223) 2025-03-27 07:47:19 +01:00
Malkierian 0ac3f4d6b4 Fix typo in tracker autoscroll tooltip (#5226) 2025-03-27 07:42:41 +01:00
aMannus 057434cdf3 Update Dev Tools Windows (#5220)
* Update dev tools windows

* Review comments
2025-03-26 22:26:11 +01:00
Eric Hoey 47c653a0e5 [Rando] Shuffle Crates (#5017)
* location list + enums

* add identity function

* add new files + hook handlers + settings + crate struct

* add dungeon struct + large crate locations

* fix wasteland name + add overworld hints

* add dungeon hints

* add to item pool

* opt desc + check tracker + overworld locs

* add VB funcs + fix fire locs + dmc crate + shuffle crates not pots again

* fix crate option def

* fix gy crate area

* add ow locs

* context + more location_list

* fix kak crate

* add gv child crates + make exceptions for OOB GF crates + fix GF rht name

* finish adding gv crates + align GF child crates + fix adult GF locs

* fix VB draw + adjust color

* begin logic

* add child archery crate + overworld logic

* deku + dc + rename dc locs

* gtg + spirit

* fire temple logic

* start water temple + some renaming

* finish water temple + renames

* fix dmc crate

* remove child GV + GF crates :( + simplify hints + french

* fix dungeon hint + add french attempt

* cleanup

* smol crate loc list + enums

* setup small crates

* fix fire temple fairy hints

* add logic

* fix small crates + locs

* align GF crates without moving

* add child GV-GF crates for No Logic

* convert to shipinit

* whitespace

* remove old comments

* assets

* proper cap

* better comments on not-shuffled crates

* update for context changes

* update for rest of context changes

* cleanup

* fix shadow hint RHT

* more cleanup

* count to three

* child gf logic

* gv cow crate

* loc list spacing

* remove redundant small crates

* remove left over vb funcs

* split out location list

* fix van spawns

* move NL crates to new type

* rm whitespace

* more whitespacing

* more more whitespace

* update VB

* restore support for custom models

* prep dungeon for develop

* update context for location changes

* finish context post-develop merge

* add heart crates to CSMC

* update loc list + logic fix

* update breakroom crates to adult only

* newline to make github happy

* revise vbshoulds

* formatting sheesh

* update vb info

* BRACKET

* whitespacent

* ws finalfinal
2025-03-26 21:32:32 +01:00
briaguya 9ff49403a8 shipinit (r)ba (#5025)
* RBA and BA

* move rba to shipinit

* make the vanilla condition actually a vanilla condition

* update should docs

* move ba to shipinit

* don't pass things

* try a different readability strategy

* remove option/preset entries

---------

Co-authored-by: rozlette <Rozelette@users.noreply.github.com>
2025-03-26 20:07:54 +01:00
Archez f1a45cf2ec Fix Tektite texture body break parts for custom skeletons (#5214)
* Fix Tektite body break parts for custom skeletons

* explicit null check
2025-03-26 20:05:06 +01:00
aMannus b2ba5a6481 Add clang format off to shuffle grass (#5219) 2025-03-26 19:59:43 +01:00
Christopher Leggett 540aad6715 Don't place GBK into the pool for Triforce Hunt (#5218) 2025-03-26 19:40:03 +01:00
Varuuna dd81af17bb [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>
2025-03-26 19:33:10 +01:00
aMannus c1ff45a240 More minor menu/cvar fixes (#5213)
* Minor fixes

* Hide unshuffled shop checks default fix
2025-03-26 11:07:26 +01:00
Philip Dubé 8832bcaf12 Try make item pool size match location pool size (#5181)
Also avoid putting random junk into the pool to begin with

When smaller, add junk from pending junk items

When larger, remove junk from the item pool

This avoids issue where shuffles which add items to pool (souls, overworld keys, triforce pieces) would hit assert about item pool size exceeding location pool size
2025-03-25 15:00:32 -04:00
Extloga 364fec4d29 Additions and fixes for the German translation in several files (#5173)
* Additions and fixes for the German translation in item_list.cpp

* Additions and fixes for the German translation in hint_list_exclude_dungeon.cpp

* Additions and fixes for the German translation in hint_list_exclude_overworld.cpp

* Additions and fixes for the German translation in hint_list_item.cpp

* Additions and fixes for the German translation in randomizer.cpp

* Additions and fixes for the German translation in randomizer.cpp

* Fix for the French translation in item_list.cpp

* Additions and fixes for the German translation in hint_list_exclude_dungeon.cpp

* Fixes for the English text in settings.cpp

* Fixes for the English text in SohMenuEnhancements.cpp

* Fixes for the English text in SohMenuDevTools.cpp

* Fixes for the English text in SohMenuRandomizer.cpp

* Fixes for the English text in ResolutionEditor.cpp

* Fixes for the English text in enemyrandomizer.cpp

* Fixes for the English text in gameplaystats.cpp

* Fixes for the English text in savefile.cpp

* Fixes for the English text in enemyrandomizer.cpp

* Fix for the English text in SohMenuEnhancements.cpp

Co-authored-by: aMannus <mannusmenting@gmail.com>

---------

Co-authored-by: aMannus <mannusmenting@gmail.com>
2025-03-25 19:55:53 +01:00
Malkierian 2fd3825569 Fix warning from popped, minimized menu. (#5212)
* Fix warning from popped, minimized menu.

* Pre-empt another possible missing Pop.
2025-03-25 10:41:25 -07:00
Christopher Leggett 6abacc1024 Fix the player state flag that Tailparasan checks for for Damage Effect (#5211)
* Fix the player state flag that Tailparasan checks for

* Updated comment for accuracy
2025-03-25 18:12:50 +01:00
Christopher Leggett ebc3616a3a lus bump to fix shader issues (#5210) 2025-03-25 16:42:52 +01:00
Archez aabeffa254 prep for clang format (#5202) 2025-03-25 09:22:18 +01:00
Archez 0f1fb1e5de Add OOB texture fix entry for Arrow heads (#5207) 2025-03-25 09:21:44 +01:00
Archez 890f3ccee6 Change soh override windows to use different cvar name (#5208) 2025-03-25 09:20:08 +01:00
Archez 5bf1dc8285 Fix unhandled opcode crash with authentic gfx patches (#5206) 2025-03-24 21:27:38 -04:00
Christopher Leggett 084627b8af Force excluded locations update when preset is applied. (#5205)
* Force excluded locations update when preset is applied.

* Apply same fix for tricks tab

* Address review comment
2025-03-24 22:58:56 +01:00
aMannus c7ff6e4700 Update enhancement and randomizer presets (#5193)
* Prepare fresh presets

* Separate preset files & finish hell preset

* Enhancement presets done

* Finish randomizer presets

* Update missed enhancement cvar

* Better split presets.h

* Address review comments
2025-03-24 22:22:51 +01:00
Christopher Leggett 43510e5ad9 Fix Skull Tokens from Chests locking you in place (#5198)
* temp fix for chest skulltulas

* Implement way to load a vanilla message into a CustomMessage

* dynamically inserts autodismiss text code to skulltula text.
2025-03-24 22:21:09 +01:00
aMannus bddef32a5a fix defaults + modIndex (#5201) 2025-03-24 20:09:39 +01:00
lilacLunatic dc5bc1aa6c Mouse Support (#4673)
* mouse

* (mouse) small fix

* "fix" implicit declaration

* LUS 1.2

* empty commit to force CI re-run

* include new mouse LUS

* deleted:    soh/soh/Enhancements/controls/GameControlEditor.cpp

* [mouse]LUS

* fix input viewer header

* Bump LUS for mouse support

* Mouse Support

* Comment cleanup

* Adding the actual mouse enhancement files

* Fix (?) Windows and Mac builds

* Maybe fix MacOS now

* Why was it compiling with this??

* Mouse input viewer handling

* [Mouse] LUS bump

* [mouse] LUS

* (Mouse) bump LUS for dxgi fix

* F2 mouse notif

* Update soh/soh/Enhancements/controls/Mouse.h

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/controls/Mouse.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Fix mouse shield ranges to match control stick behavior

* Use early returns in Mouse_HandleQuickspin

* newline cleanup

* cleanup

* rename BUTTON_COLOR_MOUSE_BEIGE to BUTTON_COLOR_MOUSE_GRAY

* 'Enable Mouse' tooltip

* Fix includes

* Comments re mouse quickspin

* bullshit

* Hook handler for cursor recentering on shield

* Hook handler for first person mouse aiming

* Hook handlers for mouse quickspin

* Hook handlers for mouse shield control

* Hook registration conditions

* Enable Mouse -> Enable Mouse Controls

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-03-24 19:33:55 +01:00
briaguya 26aa36fe7b bump lus (#5187)
* pushing what i have so i can try to figure out HW_REG errors

* HW_REG (fix? workaround? either way it builds now)

* factory fixes and shaders

* bump again

* bump again

* copy shaders for `ExtractAssets` too (instead of just in `GenerateSohOtr`)
2025-03-24 09:34:07 +01:00
Philip Dubé 9ae9dc4977 Fix SFM wolfos logic (#5192)
* Fix SFM logic

SFM mixed child wolfos / adult moblin logic, making both incorrect

In particular, Din's Fire is ineffective on Moblins, & slashing your way through them should not be in logic

Adds trick for getting through SFM as adult without killing moblins

Includes small cleanup elsewhere in logic

* moblins not required
2025-03-24 09:11:45 +01:00
Sirius902 1053b0e0cf Prefix icon paths with CMAKE_SOURCE_DIR (#5197) 2025-03-24 08:56:08 +01:00
briaguya edd8561ddc assignable tunics/boots - dont throw items (#5045)
* don't throw items when using assigned tunics/boots

* didn't actually need that

* simplify logic so we don't need to check for holding items

* just use a vb should

* fix comment
2025-03-24 08:46:22 +01:00
Malkierian c7e3ef9e4d Wrong type for CVarGetInt on waterfall open enhancement. (#5200) 2025-03-23 21:52:07 -07:00
Malkierian e25058c256 Fix sleeping waterfall enhancement and rando option combinations. (#5199) 2025-03-23 21:34:06 -07:00
Christopher Leggett 45b8f228d9 Remove MenuOptionIndex Middleman and fix rando presets (#5185)
* Remove CVar Middleman and fix rando presets

* Throwing in a couple of typo corrections
2025-03-23 19:07:12 +01:00
Malkierian 2564721b2c Change default index retrieval to sidebarOrder vectors. (#5189) 2025-03-23 09:42:34 -07:00
Malkierian 9ffe2ab2b9 Some cleanup (#5183)
* Resolve size_t conversion warnings in UIWidgets.hpp

* Change "Better Debug Warp Menu" to default on.

* Change All/None checkboxes (for item counts and cutscene skips) to buttons.

* Remove all/none for item counts.
Remove arrays for item counts, create widgets directly.
2025-03-22 16:51:59 -07:00
Malkierian 69a32ffba6 Restore combobox functionality to Bunny Hood Effect (#5167)
* Restore combobox functionality to Bunny Hood Effect, and tweak the tooltip.

* Tweak the description a bit more.

* Final tweak?
2025-03-21 18:42:59 +01:00
Pepe20129 983c075a33 Overworld Key Tracker (#5164)
* Overworld Keys Tracker

* Update randomizer_item_tracker.cpp

* Fix id collision

* Post-merge fixes

* Update soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp

Co-authored-by: Archez <Archez@users.noreply.github.com>

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2025-03-21 17:53:17 +01:00
Malkierian ae5e41f7a0 Fix Dungeon Spoiling in Trackers (#5168)
* Prevent spoiling dungeons in check and item trackers if MQ is set to Selection, but selection for specific dungeon is Random.

* Account for other options using "Set Dungeon Quests".
2025-03-21 12:32:46 +01:00
Philip Dubé 1e294134af Remove EnFr_RandomizerCheckFromSongIndex (#5169)
* Remove EnFr_RandomizerCheckFromSongIndex

Also handle missing return in RawAction::CheckFlag

Also adjust jabu jabu shabom timer override to be non-overflowing constant (but same constant)

* Update soh/soh/Enhancements/enemyrandomizer.cpp

Co-authored-by: Archez <Archez@users.noreply.github.com>

* remove shabom room hack from z_obj_roomtimer.c

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2025-03-21 12:27:53 +01:00
Malkierian 04458f2274 Allow F1 to close the menubar modal via new IsPopupOpen() and DismissPopup functions in SohModalWindow. (#5166) 2025-03-21 12:26:03 +01:00
Archez 1bcab06fed Rework CI build caching for stability (#5170)
* improve github build caching

* add back network build flag

* add back sdlnet
2025-03-21 12:23:01 +01:00
Malkierian e21a3e4c0f Add check for GAMEMODE_END_CREDITS in Audio Editor's OnSceneInit hook (#5172)
* Add check for GAMEMODE_END_CREDITS in Audio Editor's OnSceneInit hook to prevent sequence shuffles mid-credits.

* Move extern "C" block up.
2025-03-21 12:22:22 +01:00
Archez 57bc5690e2 Mono dev tools (#5175)
* apply mono font to some dev tool windows

* soh gui wrappers for gfxdebugger and console to set mono font

* it can be just a little larger
2025-03-21 12:21:33 +01:00
Archez 985bf91945 prevent some timesavers applying in boss rush (#5163) 2025-03-20 20:20:50 +01:00
aMannus b6f957b36f More Menu Improvements (#5155)
* fix mismatch on default value for notification position

* Fix checkbox vertical offset for multiline

* Moooore changeees too theee menuuuuuu

* capitalization again

* Fix controller config & remove test var
2025-03-20 20:19:16 +01:00
Christopher Leggett 65564e9469 Fix typo in Mute Low HP Alarm CVar (#5161) 2025-03-20 08:46:52 -07:00
Jordan Longstaff f02032aed4 Skip dialogue before getting Gerudo membership card (#5058)
* Skip dialogue before getting Gerudo membership card

* Change to misc interaction

* Change to forced NPC dialogue

* Rename VB flag
2025-03-20 12:07:43 +01:00
Christopher Leggett 8958db5c2b Fix CVar mismatches for skip forced dialog and unrestricted items. (#5159) 2025-03-20 00:21:31 -04:00
Christopher Leggett b3ed249021 Fix Pot Shuffle crash caused by removal of id check (#5158)
* Fix Pot Shuffle crash caused by removal of id check.

* Properly unregister ShufflePots Hook
2025-03-19 23:03:42 -04:00
Philip Dubé 723375a344 fix type signature of Randomizer_DrawMysteryItem (#5156) 2025-03-19 22:19:19 -04:00
Jordan Longstaff 224c810e39 Link can move around while carpenters escape (#5055) 2025-03-20 00:05:20 +01:00
Jordan Longstaff 818c7e4633 Skip carpenter dialogue before Gerudo mini-boss (#5057)
* Skip carpenter dialogue before Gerudo mini-boss

* Apparently I'd forgotten the include

* IS_RANDO default
2025-03-20 00:03:59 +01:00
Malkierian 6ad503e1d2 Adds a modal registration for pressing F1 and confirming Quit from the menu button. (#5154)
Fixes near shortcuts gossip stone name to include "grotto" to signify it's in the grotto.
2025-03-19 23:57:08 +01:00
aMannus 4243eb67ae Exclude nabooru from boss souls (#5152) 2025-03-19 23:52:33 +01:00
Pepe20129 79b53e5920 Change Compass Colors Match Dungeon to Map & Compass Colors Match Dungeon (#5042)
* Colored maps & compasses with shipinit

* Update SohMenuBar.cpp

* Post-merge fixes

* Whoops
2025-03-19 23:52:16 +01:00
Archez a6ff511af5 Exclude zora sapphire from random enemy size (#5153) 2025-03-19 21:53:46 +01:00
Jordan Longstaff 70fc060381 Fix Forest Stage upgrades with Skip Misc Interactions (#5052)
* Fix Forest Stage upgrades with Skip Misc Interactions

* Explicit upgrade checks
2025-03-19 20:03:15 +01:00
Philip Dubé 28944cc68f fix some warnings (#5135)
* fix some warnings

* fix error caught by mac build, fix 3 more warnings

* merge fix

* feedback

* remove color refactor
2025-03-19 12:30:44 -04:00
aMannus 7dd3c1b2ac update model (#5150) 2025-03-19 15:46:02 +01:00
Christopher Leggett 17b19ddd73 Remove GBK Triforce Hunt as an option (#5117)
Where we were previously checking it, just check the separate triforce hunt option instead.
The option under GBK settings was always kind of a dummy option that wasn't meant to actually be selected, and it was set automatically when Triforce Hunt was on.
This PR just cuts out the middle man, so to speak.
2025-03-19 14:11:56 +01:00
aMannus 7f8e3d4337 randomizer enhancement menu improvements (#5148) 2025-03-19 13:50:04 +01:00
aMannus 80850615c3 Fix key color issues (#5149) 2025-03-19 13:49:51 +01:00
aMannus 5517e22f6e Exclude skip get item animations outside of rando (#5147) 2025-03-19 12:42:56 +01:00
Philip Dubé b7b5949bc4 Some location access fixes (#5121)
* Some location access fixes

Split out a few fixes I've made while working on #5105

* assert false

* IC feedback
2025-03-19 12:42:18 +01:00
aMannus 04d79222d4 fix crash (#5146) 2025-03-19 12:34:52 +01:00
aMannus d109aa795a Remove Shuffle Pots assert (#5145)
* Remove assert

* Remove exceptions to the assert
2025-03-19 12:34:01 +01:00
Pepper0ni 7a6778c940 exclude maps from junk only GI skip (#5140) 2025-03-19 11:21:39 +01:00
Pepper0ni dd7dee8f07 Fix finite shields getting thier effect applied in SCL (#5130) 2025-03-19 11:15:55 +01:00
Philip Dubé 37a2730df2 remove unused 3drando custom message code (#5138) 2025-03-19 11:15:43 +01:00
Archez 9795f696c8 Hook unregister fixes and hook debugger tweaks (#5139)
* clang-format before

* Hook unregister fixes and hook debugger tweaks
2025-03-19 11:14:43 +01:00
Philip Dubé 7c227dcc42 remove color from UIWidgets::WidgetOptions (#5141) 2025-03-19 11:11:47 +01:00
xxAtrain223 0f81e6d82b Initialize the RegionTable when loading a file. (#5144) 2025-03-19 11:11:26 +01:00
aMannus c72efd08a9 Menu - Enhancements and cheats re-organisation (#5142)
* First pass cheats, extra modes, minigames, difficulty, fixes, graphics

* More progress. One tab left

* Enhancements & cheats done and fix for item tracker font
2025-03-19 08:43:14 +01:00
Pepper0ni 233c07d16a Fix entrance oversight in shield grave (#5137) 2025-03-18 11:32:54 -04:00
aMannus ab5ea0e8ee Further Menu Improvements (#5129)
* Menu improvements

* Update calc for button offsets

* Fix enemy rando UI
2025-03-18 10:12:45 +01:00
Christopher Leggett 9e883ece96 Fix/modern menu/secret flag (#5131)
* Adds ability to set InputString fields as "secret"

Meaning it shows the text as dots like a password field. Currently nothing that is merged into the main branch uses this but Anchor will need it.

* Adds an `addedFlags` field to InputOptions.
2025-03-18 09:26:09 +01:00
Spodi 546b915106 Unify FPS and V-Sync controls and behavior between renderer (#5132)
* FPS and refresh rate logic changes

Changes FPS behavior on all renderer (despite the actual set FPS):
- Clamp FPS to refresh rate when V-Sync on (or can't be disabled)
- Stick to refresh rate when "MatchRefreshRate" is toggled on

* Max 360 FPS for slider on all renderers

* "Match Refresh Rate" unification

Checkbox for all renderer. Was a button for DirectX.

* Fix wrong CVAR for Match Refresh Rate

* More descriptive V-Sync tooltip

* Fix wrong CVar for DISABLE_FOR_DEBUG_MODE_OFF
2025-03-18 09:24:50 +01:00
Malkierian 63ae14cc30 Menu Header Button Reorder (#5134)
* Move close menu button to right side, farthest right, and move Quit SoH to the left of the Reset button.
Also remove last reference to 2ship in tooltips.

* Change Resolution Editor's use of CVarGet to `GetInterpolationFPS()` in OTRGlobals.
2025-03-18 09:24:32 +01:00
PurpleHato a95883b6b3 Multiple Rando Text related stuff (#5125)
* Multiple Rando Text related stuff

- Mostly french rework / completion of missing lines
- Removal of a duplicate entry for Richard's house overworld key
- Correct naming for the English pond
- Addition of missing text in English and french

* Txeak uncessary spaces
2025-03-17 20:15:53 +01:00
Malkierian c18d427619 Setup F11 to toggle the fullscreen CVar to keep it synced with fullscreen state. (#5128) 2025-03-17 20:13:35 +01:00
Malkierian a6163ca2e8 Fixes skip get item prefix in hook handlers and the space in ClimbSpeed CVar. (#5127)
Also moves Item Scale option into rando enhancements to match skip get item animation, as it's directly tied.
2025-03-16 23:36:06 -07:00
aMannus f3b3e0f5eb Use percentage of screen size as padding (#5123) 2025-03-16 23:00:47 +01:00
Malkierian 05ab17d3a8 Reimplement ImGui Scaling option. (#5124) 2025-03-16 23:00:30 +01:00
Pepper0ni 112fab503f Fix oversight in HC storms grotto (#5120) 2025-03-16 22:00:31 +01:00
Pepe20129 797fe2d989 Fix Ganon's Tower entrance logic (#5115)
* Fix tower

* Update fire_temple.cpp
2025-03-16 21:58:04 +01:00
Christopher Leggett a97f853a14 Prevent Big Octo one point cutscene from playing twice. (#5113) 2025-03-16 21:55:14 +01:00
Malkierian 5b622683f4 Clean up Push/Pop font calls in check and item trackers by adding them instead to Begin/EndFloatWindows functions. (#5122)
Add missing PopFont call to entrance tracker.
2025-03-16 21:51:52 +01:00
Malkierian 7e392e63a8 Modern Menu (#5116)
* Add menu files, hook menu up to window system.
Temporarily rename new menu's UIWidgets to UIWidgets2 to allow both menu systems to coexist temporarily.

* Finish implementing new menu.
Rename 2ship UIWidgets to UIWidgets2 to complete facilitation of both menus working for now.

* More preliminary setup

* More prepwork, begin on settings options

* Finish settings, add enhancements windows

* Fix search function not looking past first columns.

* Add dev tool windows

* Finish dev tools

* Add about window

* Fully replace about window

* Remove moved menu items from menubar, add more windows to new menu

* Implement WindowButtonOptions.
Add ability to not embed popout windows when not popped out.
Add ability to hide the button for WindowButtons.
Fix Entrance Tracker from showing when not enabled.

* Fix entrance tracker settings embedded display.
Fix entrance tracker settings window original size declaration.

* Initial implementation of themed radio button widget.

* Move "About" section to second column of general.
Fix sidebar sections starting in second column.

* Restore Entrance Tracker `Draw()` to allow for custom styling.

* Fix combobox positioning formatting.
Fix color picker end spacing.
Convert everything in check tracker settings to UIWidgets2 (except color pickers and section headers).
Make all tracker windows not embed.

* Minor cleanup

* Fix main volume defaults & mirror jitter fix removal on dev

* Improve color picker with RGB/RGBA options. Not finished.

* Finish creating CVarColorPicker and implement for Check Tracker background color.
Fix tracker and network prefixes.

* Finish check tracker settings and convert check tracker.

* Port all Cheats menu except for Beta Quest

* Port over Beta Quest to new menu

* Remove old cheats menu

* Port cutscene skips to modern menu

* Port Timesaver Enhancements to new menu

* Port the Items and Item Count Messages submenu

* Port Difficulty Options to new Menu

* Removes options that have been ported thus far.

* Port "Reduced Clutter" options to new menu

* Add forgotten callbacks to Hyper Enemies/Bosses

* Copy StateButton to UIWidgets2, and implement custom padding for them in the tracker.

* Ports some pause menu related settinga

* Change tracker window active title color.
Make state buttons smaller in tracker to get more info on screen.

* Convert window title active theming to all windows.

* Port the rest of Enhancements->Gameplay to new menu

* Port the "Graphics" Enhancements to new menu

* Ports Fixes over to the Modern Menu

* Ported Restorations to Modern Menu

* Ported Extra Modes to new menu

* Port Autosave and Boot Sequence to modern menu

* Cleans up some leftover data for ported buttons

* Ports Enhancement Presets to new menu

* Port Additional timers to new menu. Removes Enhancements from old menu

* Cleans up some unused stuff

* Ports Randomizer Enhancements to modern menu

* Convert Item Tracker Settings. Something's wrong with the comboboxes in a second column of a table.

* Fix combobox alignment and label position calculations.

* Convert Entrance Tracker window.

* Save Editor Info tab finished.
Added `PushStyleInput` and `PushStyleTabs` for Info tab.
Fixed some indentation in entrance tracker source.
Added font push to tracker windows.

* Increase size of all icons in save editor.

* Convert flag groups to child windows for automatic sizing and border drawing.

* Flags tab completed.
Finished inventory tab.

* Convert save editor help hover to UIWidgets2.

* Various fixes and corrections

* Start cosmetics editor, fix theme colors not updating

* Cosmetics editor conversion progress

* Remove Mac internal resolution restrictions.

* Copy over advanced resolution partial and enable most options as a custom widget.

* Add size to float sliders, more cosmetics editor progress

* Fix incorrect cvar for notifications

* Radio button & header color options, more cosmetics editor progress

* Finish cosmetics editor conversion

* Create and apply THEME_COLOR macro. Resides in SohGui for easy access to mSohMenu.

* Move ResolutionEditor to SohGui directory.

* Add labels to build info.
Fix slider width calculations.

* Fix some advanced resolution widget hiding.

* Fully implement Advanced Resolution options.
Fix graphics settings formatting.
Improve slider label position calculations.
Implement Clamp options on sliders.

* Finish save editor.
Convert save editor code to `using namespace UIWidgets2`.
Fix search crashing on time splits window.
Remove `SetLastItemHoverText` from `UIWidgets2`.

* Unify cvar sectioning in time splits.

* Add InputString and InputInt widgets, and corresponding CVar Widgets

* Adds Widget Type for Inputs, not currently used.

* Convert Sail to modern menu

* Add Combobox that takes a vector of std::strings

* Convert checkbox and combobx to new widgets

* Add Tristate checkbox

* Convert sliders and tristate checkboxes

* Convert top half of Rando window

* remove/replace remainder of UIWidgets usage in option.cpp

* Converts tricks, locations, and removes old UIWidgets refs

* Fix windows build errors

* Remove Tri-State checkboxes

* Use PushStyleInput instead of PushStyleSlider

lol oops didn't realize it was a thing in Ship.

* Rebase and address review comments

* Convert Crowd Control to modern menu.

* Fix build error

* Audio editor progress

* Re-add CVar SaveOnNextFrame calls to Resolution Editor.
Remove old Resolution Editor files.

* Convert TimeSplits to new menu.
Fix a few enum warnings.

* Decrease padding on Arrow Buttons

* Audio editor + gameplay stats done

* Give Randomizer Menu more screen real-estate

* Port plandomizer menu

* Fix slider width calculation and allow combobox LabelPosition::None

* Fix None labelPos and slider width for inline labels

* Fix all slider value label insertions.
Convert Collision Viewer.

* Minor Collision Viewer enum change.
Convert Actor Viewer.

* Theme/convert Message Viewer.

* Add font to Message Viewer.
Theme Value Viewer.

* DL Viewer and SohModals themed.

* Convert Input Viewer.

* Missed some color settings in Input Viewer.
Removed UIWidgets references from Controller Config, and restored SoH version.

* Remove UIWidgets.hpp include from multiple files.

* Completely remove old UIWidgets.
Rename UIWidgets2 to UIWidgets.
Move Accessibility and Language options to new menu.

* Fix Gfx Debugger not showing up.
Remove menubar registration.

* Fix clearCvars references.

* Fix passing std::string to const char* argument.

* enum name spacing

---------

Co-authored-by: aMannus <mannusmenting@gmail.com>
Co-authored-by: Christopher Leggett <chris@leggett.dev>
2025-03-15 16:11:30 -07:00
Christopher Leggett c54883da72 Fix more missing location pool exclusions (#5108)
* Fix more location pool exclusion misses

* Add assert to ensure item pool isn't too large.

This will catch any issues where too many items are getting
added to the pool in Debug mode. It only checks to make sure the item
pool is smaller than the location pool, as the code actually handles
that just fine by placing Junk if the pool runs out. The Item Pool being
larger than the location pool though could easily result in items not
being placed. Logic should prevent a seed like that actually being
generated, but No Logic does no such checks.

* Add TODO comment for Item Pool, should be same size as Location Pool.

* Prevent Completed Triforce from ending up in Location List
2025-03-12 10:32:45 -07:00
Malkierian 9b9a0061ab Unify spoiler name creation across all shuffle types, and remove all versions of constructor functions with explicit spoilerName parameters except base. (#5111) 2025-03-12 10:32:17 -07:00
Philip Dubé 6dedf8a277 Gerudo Valley: fix regression with previous fix when combined with overworld shuffle (#5109)
Missed this in #5094 since only in last week I started becoming familiar with entrance shuffle logic
2025-03-12 10:32:03 -07:00
Philip Dubé 39e52aa8e6 Fix Gerudo Valley entrance logic (#5094)
* Fix Gerudo Valley entrance logic

Logic assumed cucco could be used as child to get around lacking bronze scale,
but this assumption fails if you enter grotto ledge from grotto or initial spawn

* fix lower/upper mixup

* fix: you can walk to lake hylia

* adult can jump across
2025-03-06 16:59:02 -07:00
Philip Dubé eb6c0d9d29 presets: clear blocks (#5098)
* presets: clear blocks

this avoids needing to list every new cvar in presets.h

* avoid resetting selected preset

* no cvar lists, clear less blocks on drop
2025-02-28 04:34:16 +01:00
Jordan Longstaff 2d78cb561a Move Broken Giant's Knife fix hook to its own file (#5049)
* Move Broken Giant's Knife fix hook to its own file

* Separate IS_RANDO out of value macro

* Remove redundant extern

* One-line comment
2025-02-28 04:33:48 +01:00
Pepe20129 06387060d6 Trade cleanup (#4971)
* Move adult trade to flags

* Move child trade to flags

* Fix vanilla

* Address review

* Rename `trade_shuffle` to `ShuffleTradeItems`

* Fix mac build

* Update GIVanillaBehavior.h

* Update z_kankyo.c

* Update z_en_heishi2.c
2025-02-25 12:09:01 +01:00
Philip Dubé db41c6513b Move boss kill logic into CanKillEnemy (#5000)
* Move boss kill logic into CanKillEnemy

Added hammer as being able to defeat Morpha

* add hammer vs gohma, king dodongo, & twinrova
2025-02-25 10:25:45 +01:00
Philip Dubé e516f45e23 logic: allow finding big poe in bottle for reward logic (#5075)
* logic: allow finding big poe in bottle for reward logic

only applies when big poe count is set to 1

* Allow multiple big poe bottles for when big poe requirement > 1
2025-02-25 09:30:05 +01:00
Archez 66844fb220 Fix crash with scene logging paths (#5081) 2025-02-25 09:14:27 +01:00
Archez 5fcdf74f5c Exclude debug file and cutscene map from auto save (#5088)
* Exclude debug file and cutscene map from auto save

* Remove ganon's lair from auto save exclusion
2025-02-25 09:13:31 +01:00
Archez f023a46a5d Use gamemode enum (#5089)
* Use gamemode enum

* update console command for file_select
2025-02-25 09:13:17 +01:00
Philip Dubé 51310db68f ShuffleCows.cpp (#5093) 2025-02-25 09:11:46 +01:00
briaguya acdb2dd324 bump lus (#5092) 2025-02-20 23:48:11 -05:00
Philip Dubé 49c5e19041 Fix rando generation crash (#5076)
Assertion failed in CreateChildAltarHints because all 3 stones were placed on fairies/beehives while those were disabled

Fix: consolidate on Context building settings dependant location lists. Overworld vs Dungeon should not operate so differently
2025-02-20 22:37:57 -05:00
Jordan Longstaff b6e2a995f1 Use VB hook to fix Deku Nut upgrade bug (#5047)
* Use VB hook to fix Deku Nut upgrade bug

* Use constexpr, remove unused extern

* Separate IS_RANDO out of value macro

* Restore mask check in hook

* Call VB hook in SkipMiscInteractions hook

* Mask of Truth hook not registered in rando
2025-02-19 20:22:56 -05:00
Eric Hoey 75f33a00d8 Remove Right-Stick Aiming from Enhancement Presets (#5086) 2025-02-19 19:08:24 -05:00
Archez 3d7da51fc7 Remove committed mods folder (#5082) 2025-02-17 20:33:36 -05:00
Miles Acquaviva cc25c96385 Added and implemented TrailType enum (#5059)
* added TrailType enum

* fixed build, moved declaration

* added enhancement comment

* Apply suggestions from code review

---------

Co-authored-by: link5669 <acqmiles@gmail.com>
2025-02-17 20:03:55 -05:00
aMannus 489cd84faa Clean up autosave header (#5077) 2025-02-17 17:43:51 -05:00
briaguya 6f22c05eec pin linuxdeploy (#5070)
* test forked linuxdeploy

* pin version
2025-02-16 08:25:30 +01:00
briaguya 2645a5fce2 bump lus (#5065) 2025-02-15 15:58:26 -05:00
briaguya 169a3d742d make cmake_minimum_required consistent between root CMakeLists.txt and soh/CMakeLists.txt (#5066)
also remove some version checks that don't apply anymore
2025-02-15 00:59:02 -05:00
briaguya 20a9f41906 remove unused VB_SHOULDs (#5056)
* remove an unused should

* another unused

* remove more unused

* one more

* remove case

* more cases for unused shoulds
2025-02-14 21:32:25 +01:00
Christopher Leggett 6df5abc30b Fix ER + Fishsanity settings combos (#5061) 2025-02-14 21:30:11 +01:00
aMannus 668040562f Autosave Overhaul (#5022)
* Autosave interval based

* Move to save on soft reset, remove adjustable interval

* Use new BeforeExitGame hook to prevent non-existent data problems

* Fix check tracker crash, remove BeforeExitGame hook

* update comment
2025-02-14 21:29:22 +01:00
Eric Hoey dbf7fcf775 explicitly exclude ganon + triforce completed (#5050) 2025-02-13 10:10:27 +01:00
Christopher Leggett f7d6a47139 Fix issues leftover from PR #5023 (#5054) 2025-02-13 10:09:58 +01:00
Archez 0ce9807df6 ShipInit and move ValueViewer rendering out of src (#5039) 2025-02-12 21:52:18 +01:00
Christopher Leggett d4b9e8c835 Remove locations from pool that are not shuffled. (#5023)
* Cleanup of unshuffled locations from pool/spoiler

* Removes unshuffled scrubs from the location pool

* Fix some instances of weird spacing

* Actually remove placement of vanilla freestandings

* Cleans up some now unnecessary code.

* Minor Optimization of PlaceItemsForType

* Fixes some grammer and spelling

* Another grammar fix
2025-02-12 21:42:58 +01:00
Archez 266792599e Add hilite setup calls around all custom GI draws (#5043) 2025-02-12 21:32:28 +01:00
Archez 135c2e8217 Remove POLY_KAL and restore POLY_OPA for kaleido (#5041) 2025-02-12 21:30:06 +01:00
Miles Acquaviva 297a056dff Created and implemented PosType enum (#5046)
* Created and implemented PosType enum

* fixed formatting

---------

Co-authored-by: link5669 <acqmiles@gmail.com>
2025-02-12 21:28:17 +01:00
Eric Hoey 499a23e9a3 restore night lock + remove interior lock (#5048) 2025-02-12 21:22:00 +01:00
Eric Hoey 126c3b532f fix loop order + reorder case for clarity (#5044) 2025-02-12 21:21:43 +01:00
briaguya 37fd39c7b5 shipinit dont show master sword (#4989)
* Initial Commit

* Added full functionality for both Hylian and Mirror

* Included Format

* Removed Format

* Pedestal Cutscene

* Much Less OnGameUpdating

* Fix function call

* use enums

* move animation skip to vb should

* move taking out master sword to put in pedestal check into vb should

* move the rest of it over

* extra newline was bugging me

* update on `"IS_RANDO"` and use `COND`s

* make new "uncategorized" section for VB enum

* move shoulds to new file

* move vb rsk checks into conds

---------

Co-authored-by: Patrick12115 <Patrick12115@hotmail.com>
Co-authored-by: Malkierian <malkierian@gmail.com>
2025-02-12 15:32:40 +01:00
Archez 46c6d2f526 Restore pause link drawing behavior to use the work buffer (#5038) 2025-02-11 22:36:12 +01:00
Sarge-117 f5fa0f4e00 fix typo (#5036) 2025-02-11 16:18:16 -05:00
Garrett Cox ac72ebaaa3 Fix issue with pause buffer input window not applying correctly to closing save prompt state and move code around to be in order of operations (#4975) 2025-02-11 09:56:48 -05:00
briaguya a7f837014f fix dark link not getting hit when stunned (#5028)
in https://github.com/HarbourMasters/Shipwright/pull/3280 both `0x00400000` and `0x04000000` were replaced with `PLAYER_STATE1_SHIELDING`.

`0x00400000` is `PLAYER_STATE1_SHIELDING`, but  `0x04000000` is `PLAYER_STATE1_DAMAGED`

this fixes the spots in `z_en_torch2` where we had `PLAYER_STATE1_SHIELDING` where it should have been `PLAYER_STATE1_DAMAGED`
2025-02-09 12:58:27 -05:00
briaguya 29cecd8502 fix dark link softlock (#5027) 2025-02-09 11:49:56 -05:00
aMannus 0177690b54 Remove potion values (#5021) 2025-02-09 09:34:02 +01:00
Spodi 8ce5c46531 Remove "Jitter Fix" option (#5020)
This was just confusing for users.
2025-02-09 01:07:02 -05:00
briaguya c11887edcd bump lus (#5026) 2025-02-09 01:06:31 -05:00
briaguya 6abf30aa2f document vb shoulds (#5004) 2025-02-08 19:12:13 +01:00
Philip Dubé 14a14bb7ef DC logic: more mud walls (#5019)
A few mud walls in DC logic still used SmashOrBlast, preventing alternative blue fire trick logic
2025-02-08 19:09:18 +01:00
aMannus 8f3711f008 simplify pause menu link (#5013) 2025-02-08 19:08:52 +01:00
Christopher Leggett 2400ad1d68 Start splitting Location List into ShipInit functions (#5011)
* Move fairy checks to separate file

* Moves pot locations to ShipInit function

* Move Freestanding locations to a ShipInit function

* Remove some extra newlines that were pasted in

* Move fish locations to ShipInit function

* Remove ON_BOOT, as it's not really necessary

* Fix weird spacing
2025-02-06 20:30:23 -07:00
briaguya ca0617b035 add some documentation to RegisterShipInitFunc (#4995) 2025-02-06 21:47:06 -05:00
Christopher Leggett f2a3ac1740 Fix enabledTricks getting incorrectly logged. (#5012) 2025-02-06 15:40:38 -07:00
Archez eafe7f0b04 Fix save warping in links house with entrance rando (#5009)
* Fix save warping in links house with entrance rando

* account for interrior shuffle all
2025-02-06 08:33:41 -07:00
Malkierian 4044ab34c3 Add Fortress and Colossus entrance groups to the entrance tracker data, and adjusted the check tracker accordingly (for autoscroll). (#5001) 2025-02-05 16:11:48 -07:00
Archez 3cd4851474 Defer scene DList resource loading to in-game and support alt pathing (#4986)
* Defer scene dlist resource loading to in-game and support alt pathing

* feedback
2025-02-04 18:03:35 -05:00
aMannus b2cb3ff87d Unlock locked interior doors with overworld keys enabled (#4948)
* Update LockOverworldDoors.cpp

* Remove key logic from interiors

* Fix entrances, this time while awake
2025-02-04 15:08:28 +01:00
briaguya 811ffa5e98 fix rainbow all (#4991) 2025-02-04 11:32:44 +01:00
briaguya e44877cca8 implement RemoveSpinAttackDarkness using shipinit and custom update func (#4987)
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-02-04 10:49:31 +01:00
Archez 40f2e16842 Macos game mode support (#4993)
* Remove macos startup script and rework cpack bundling

---------

Co-authored-by: Lars-Christian Selland <larsy1995@gmail.com>

* Add helper for creating mods folder

---------

Co-authored-by: Lars-Christian Selland <larsy1995@gmail.com>

---------

Co-authored-by: Lars-Christian Selland <larsy1995@gmail.com>
2025-02-04 10:48:41 +01:00
briaguya 11e07a8f9d rework assignable tunic/boots to use shipinit and hooks (#4978)
* don't put away items when equipping tunics/boots

* vb

* don't need that return

* ok i guess i'm going down the rabbit hole

* more rabbit hole

* shipinit and more hooks

* clean up

* use fewer params, add a missing condition

* make the loops make sense
2025-02-04 10:44:02 +01:00
briaguya 8ae8770db8 pull in startMode docs (#4988) 2025-02-03 18:58:49 -05:00
Philip Dubé c7f335f23c Prefer EVENTCHKINF constants to hex (#4965)
Also remove unnecessary const qualifiers that flood warnings
2025-02-03 11:08:58 +01:00
Philip Dubé e7e02735b0 rando: vanilla dungeon rewards (#4836)
* rando: vanilla dungeon rewards

* gift from rauru is dungeon location, not pocket

* missing apostrophe in preset description

* neither pocket nor gift should be listed in dungeonRewardLocations
2025-02-03 10:57:35 +01:00
Philip Dubé e5ddcce7f2 use CanKillEnemy more (#4867)
* use CanKillEnemy more

reviewed instances of RG_KOKIRI_SWORD in logic

* kokiri does not damage spikes

* confirmed hammer works vs dodongos

* 3
2025-02-03 10:46:59 +01:00
Xeokn 33d7b173fa Additional Sail commands (#4970)
* Additional Sail Commands.

Adds "SpawnEnemyWithOffset" and "SpawnActor" to Sail Functions.

* Small Corrections

Indentation my beloved
2025-02-02 17:00:59 -05:00
briaguya ac9b8c2e87 better soft reset (#4984) 2025-02-02 02:33:04 -05:00
briaguya f4604673e0 clean up/fix mq dungeon and required trial parsing logic (#4979) 2025-02-01 22:11:56 -05:00
Malkierian b62808dc2d Prevent adding Gerudo Fortress Keyring when Keyrings are set to off. (#4981) 2025-02-01 19:38:22 -07:00
briaguya 133825c1cd update to latest LUS main (#4976) 2025-01-31 11:41:03 -07:00
Malkierian 1744f1fc18 Set Item Tracker Total Checks window to only scale text if Item Tracker window type is Floating. (#4963)
Increase default width to account for window type title text.
2025-01-30 10:37:17 +01:00
Christopher Leggett 7df9641297 Exclude locations fix (#4969)
* Properly check for Excluded Location option.

* Remove GetOption overloads, weren't working anyway
2025-01-29 08:12:42 -07:00
Malkierian 1f65bde583 Move most ImGui-related files/code to an SohGui subfolder. (#4968) 2025-01-28 18:45:21 -07:00
briaguya 668e266ecc clamp addAlpha when skipping spinning logos to prevent softlock (#4964)
* debug print logos seen

* maybe this is the fix, not sure if there's a better option i'm overlooking

* use clamp

* msvc plz

* msvc?

* max is cleaner
2025-01-27 18:59:46 -07:00
Malkierian 41cf6b3338 LUS bump (#4960) 2025-01-27 14:13:14 -07:00
briaguya 744fab4b05 fix build (#4961) 2025-01-27 13:21:40 -07:00
Pepe20129 31cd419d6f Update kakariko.cpp (#4959) 2025-01-27 11:31:50 -07:00
Christopher Leggett b5e6342bc1 Rip Settings out of Rando::Context (#4943)
Not completely happy with everything here but this should fix the bugs
related to settings getting cleared on save load.
2025-01-27 11:30:04 -07:00
Malkierian ef0350d830 Add translation for bottle item RGs to itemIDs for assigning to slots in logic.cpp (#4954)
Change `CanEmptyBigPoes` to reset to false instead of true.
2025-01-27 09:48:13 -07:00
briaguya 83000e2f6a bump lus (controllerdb device at boot fix) (#4951)
* test controllerdb device at boot fix

* lus main
2025-01-26 19:37:14 +01:00
Eric Hoey 97c686c2a6 Fix fairy shuffle in LW Scrub Grotto and Royal Family Tomb (#4934)
* add missing fairy locations+hint text

* match rft chest name
2025-01-25 16:35:20 -07:00
Malkierian 8f67efee58 Entrance Names Redux (#4941)
* Add "Blue Warp" to the boss sides of the blue warp pairs to differentiate from the bosses on the other sides of boss doors.
Fix some names that weren't the same in both pairs of entrances.
Renamed a few other entrances for clarification.

* Add function to check entrance name consistency.
Fix remaining non-matching names.

* Document CheckEntranceNames.
Remove declaration of it from the header.
2025-01-25 10:09:17 -07:00
Eric Hoey b6aa01b28c fix fire temple hints (#4950) 2025-01-25 09:51:07 -07:00
Christopher Leggett e99771f69c Cause spoiler to be re-parsed on soft-reset (#4944) 2025-01-25 09:50:44 -07:00
Garrett Cox 8ac8dc3fd0 Move trap handler to its own file and make the additional trap types seeded (#4942) 2025-01-25 09:50:36 -07:00
briaguya 388eb487e3 rework "Authentic Logo Screen" and "Fast File Select" (#4939)
* skip z_title with button press

* use `RegisterShipInitFunc`

* rip out a bunch of custom ztitle code

* ok now it's almost fully back to vanilla

* titles are back for a limited time

enjoy #Skipping

* move old customizations into new custom draw

* finally getting the hang of this shipinit thing

* vb should let it snow

* boot sequence logic

* clean up logic to better handle changing boot sequence settings

* remove fast file select stuff

* remove authentic logo screen setting

* about window - not super pretty but not ugly imo

* maybe this fixes windows

* maybe alloca? idk why it's working in other files

* just pulling in every include hoping something works

* Revert

This reverts commit c1d02c9a40.

* try some macro fixing magic

* fix another c vs cpp thing

* do it without an extra var

* make `GitCommitHashTruncated` a private member on `AboutWindow` instead of truncating on draw

* move logo asset defs to `soh_assets.h`

* Apply suggestions from code review

Co-authored-by: Archez <Archez@users.noreply.github.com>

* VB_SHOULDN'T

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2025-01-24 10:21:15 -05:00
briaguya 6d94cf9bac bump LUS (joystick thread hint) (#4946) 2025-01-24 10:20:53 -05:00
Garrett Cox aa2ad23601 Replace old pause buffer input experience with a more accurate one (#4918) 2025-01-23 01:30:34 +00:00
Garrett Cox 69e3342808 Fix improper usage of GetFinalGIEntry, passing the RG instead of GI (#4938) 2025-01-22 11:39:08 -06:00
Eric Hoey bc561efa8e change RCs to RHTs (#4932) 2025-01-21 16:51:17 +01:00
Malkierian c781a76e89 Add DMT Cow Grotto Storms Fairy to DMT location access. (#4931) 2025-01-21 10:05:36 +01:00
Pepper0ni 04c0697379 Clean up settings and add boss soul files (#4891)
* Clean up settings and add boss soul files

* address reviews

* didn't realise there was more

* add comment for how to undummy stealth
2025-01-21 06:46:52 +01:00
Philip Dubé ad9984ef68 pause warp: check player has buttons (#4927)
* pause warp: check player has buttons

* feedback
2025-01-21 06:45:33 +01:00
PurpleHato 26e92a063f ADD: French translations for rando on file select (#4928)
* French translation for rando file select

* better seed than Seed
2025-01-21 06:45:15 +01:00
Pepper0ni 6f8ac16a9e Add DMT cow fairy and give overworld misc song fairies hints (#4930) 2025-01-21 06:44:56 +01:00
aMannus 8a5dd6323c Use textures for boss souls in item tracker (#4925)
* Use textures for boss souls in item tracker

* Fix builds
2025-01-21 00:12:49 +01:00
aMannus 5c4a6ae8c0 Hint purge (#4924) 2025-01-21 00:03:38 +01:00
Philip Dubé 936b159a67 fix 4 warnings (#4922)
1. pragma in cpp
2. missing return
3. unnecessary function call
4. remove impossible null check
2025-01-21 00:03:21 +01:00
Garrett Cox eab11d7f56 Lock overworld doors Randomizer option (#4489) 2025-01-21 00:03:02 +01:00
aMannus ded1c721f2 Fix particles (#4923) 2025-01-20 22:37:44 +01:00
aMannus 878a8fe465 Fix boss soul ice traps (#4921) 2025-01-20 22:37:11 +01:00
briaguya 63046a89ec simplify controllers (#4914)
* start moving towards just using `ShipDeviceIndex::SDLGamepad`

* rename `ShipDeviceIndex` to `ShipDeviceType`

* all sdl mappings are always `ShipDeviceType::SDLGamepad`

* create new `physicaldevice` directory where the new stuff can live

* `ConnectedPhysicalDeviceManager`

* start to not need index mapping manager

* somes fixes and stuff

* remove more shipdeviceindex stuff

* more removing and what not

* axis thresholds

* rename some stuff and remove device icons

* back to all stuff visible

* show connected device names

* bring in mouse color from lus input editor window

* lus

* remove

* more stuff

* more lus

* basic filtering

* update lus

* upstream LUS

* make `Controller_ShouldRumble` make sense
2025-01-20 19:51:39 +01:00
Christopher Leggett 8244d63719 Fix rando menu sliders so they update on JSON drop (#4912) 2025-01-19 18:06:54 -07:00
Christopher Leggett 526aad59d5 Fix the trick options loop (#4917)
It initialized an array with a size, which pre-filled
it all with nullptrs, and then used push_back on top of that.
So it was a bunch of nullptrs followed by the actual
option pointers. Fixed by calling reserve instead of
constructing with a size, so it reserves the memory it needs
without actually filling the vector with nullptrs, so push_back
properly starts from the beginning.
2025-01-19 18:06:42 -07:00
Philip Dubé ed674f1ed2 mOptionGroups: populate RSG_TRICKS with loop (#4909)
There were some tricks missing, using loop makes one less place to update when adding tricks
2025-01-19 20:49:59 +01:00
Malkierian 7a7eed74db entrancesMap cleanup (#4905)
* Make spoiler entrancesMap use the same names and display scheme as the entrance tracker.

* Use `Entry` in place of grotto `Exit` and interior `Outside`.
2025-01-19 20:45:30 +01:00
aMannus 2a172de52a Cosmetics Editor tweaks (#4904)
* Cosmetics Editor Tweaks

* More work on keys
2025-01-19 20:45:07 +01:00
Lord Jabu Jabu 3357543538 Dev Feature - Create VS Code Build tasks and update build documentation (#4895)
* Added vs code build tasks

* Fix typo in BUILDING.md regarding CMake Tools plugin

* Add "Build All" task to VS Code configuration
2025-01-19 13:49:23 -05:00
aMannus c466c92905 Uncomment chime on one points (#4901) 2025-01-18 23:54:59 +01:00
Eric Hoey 3061b138fa pause menu behind advanced + remove from applysideeffects (#4903) 2025-01-18 19:54:52 +01:00
aMannus 8a5dd022f6 Fix ice trap size not getting reset (#4897) 2025-01-18 11:46:59 +01:00
aMannus 188b9757da Fix triforce hunt timer (#4896) 2025-01-18 11:46:48 +01:00
aMannus b4f7d2289a Play success sound on dropping in spoiler log (#4899) 2025-01-18 11:46:38 +01:00
aMannus 7d2a4e5818 Default "Hide unshuffled shop item checks" to off (#4900) 2025-01-18 11:46:01 +01:00
Archez d1b7a5b814 Fix new Boss Soul skeleton based items (#4902)
* Fix and tweak boss soul skeleton patterns

* slow down morpha tex scroll

* extern c

* lower kotake a little
2025-01-18 11:45:21 +01:00
Pepper0ni 47fdaabd1b Update Actor Flags to decomp (#4822) 2025-01-16 04:02:23 +01:00
Pepper0ni 88a432aac5 fix minor issues and a BotW rupee (#4888) 2025-01-16 03:26:11 +01:00
aMannus 7f4344e28e Fix mystery items applying to GI skipped items (#4886) 2025-01-16 00:12:30 +01:00
aMannus a06b6c4365 check tracker typos (#4885) 2025-01-16 00:12:16 +01:00
aMannus 5ae527c194 Shuffle Fairies - Fix fairies spawning without playing song (#4884)
* Fix fairies spawning without playing song

* Better if statement
2025-01-15 23:12:06 +01:00
Jordan Longstaff 0497ad20d8 Rename Business Scrub functions/flags from decomp (#4776)
* Rename Business Scrub functions/flags from decomp

* Update XML references
2025-01-15 11:23:06 -05:00
aMannus a86205b999 [RANDO] Boss Soul Shuffle using actual boss models (#4827)
* First pass for first 8 bosses

* Finish all souls
2025-01-15 15:26:44 +01:00
Pepper0ni 3e6a0ef566 Add Dana's models to the game, add cosmetic customisation for keys and rename Bombchus in Logic (#4311)
* initial implementation of new models

* fix typo

* Add smaller skeleton key model and try to fix windows build

* stupid windows, you made me look bad!

* make DrawBombchuBag function work

* small cleanups

* OOGGA BOOGA BOO

* fix post merge leftovers

* post merge fix

* Added Big Key Lighting override to show vanilla lighting when unchanged

* rename CustomdLists into customIconDLs

* post merge fixes

* fix some tooltip issues

* post merge cleanup and some small menu changes

* post merge fix

* post merge fix

* add new boss soul model, colours broken

* update boss soul model for env support

* Add dungeon customise buttons to cosmetic editor

* fix mac build?

* keys don't support alpha

* fix submodules

* ring now draws

* fix keyring colours

* Add bombchu Bag RG, fix boss soul skull colour

* address reviews
2025-01-15 14:18:52 +01:00
Pepper0ni 95a4e1cfba Fix big poe bottle logic (#4837)
* fix big poe logic

* oops
2025-01-15 13:47:30 +01:00
Philip Dubé d3c619ec2f Fix ImgUI red boxes (#4869)
Invisible buttons needed unique IDs
2025-01-15 13:46:47 +01:00
Fredrik Andreasson 651623a845 [Rando] Prevent alarm when at full HP (#4831)
* * Prevent low HP alarm when at full HP for 1 heart start

* * updated name
2025-01-15 13:15:08 +01:00
Pepe20129 a46cfff438 Move some cheats to Shipinit (#4819)
* Infinite ammo

* Infinite health

* Infinite magic

* Infinite money

* Infinite Nayru's love

* Unrestricted items

* Freeze time

* Easy QPA

* Easy ISG

* Deku stick cheats

* Moon jump cleanup

* Update Ammo.cpp

* Address reviews
2025-01-15 13:08:33 +01:00
Pepper0ni ce289c0be9 Properly store starting age in spoiler log (#4873)
* properly store starting age in spoiler log

* convert ResolvedStatingAge to a setting to store it in the save
2025-01-15 13:05:52 +01:00
Pepe20129 7f31fd2e4e Organize ship specific save context additions (#4597)
* Basic restructure

* Undo most randomizerInf changes for now

* Small fixes

* Fix linux & mac builds?

* Fix remnants of randomizerInf changes

* Post-merge fix

* Post-merge fix
2025-01-15 13:04:47 +01:00
Malkierian 0d80c4695f Change UnregisterGameHook type for freestanding handler to OnVanillaBehavior to match registration type. (#4883) 2025-01-14 21:49:49 -07:00
Pepper0ni 2fc3a563c9 fix spirit MQ south child climb chest logic (#4850) 2025-01-13 11:17:12 -07:00
briaguya b774d39bc7 fix tooltip wonkyness (#4856) 2025-01-12 02:06:34 +01:00
Pepper0ni 66f5e6c26c Fix generation errors exposed by loccacc refactor (#4861)
* Fix generation errors exposed by loccacc refactor

* oops
2025-01-12 01:50:50 +01:00
Eric Hoey 61de721fe5 Fix Skeleton Key Hint (#4860)
* add skeleton key hint text

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_item.cpp

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>

* add end quote back, oops

---------

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2025-01-12 01:49:24 +01:00
Eric Hoey 4a91d94507 pass one + pass two + pass three (#4863) 2025-01-12 01:48:27 +01:00
Jordan Longstaff 0ae7f626a1 Added skip of Forest Stage leader cutscene (#4818) 2025-01-11 10:55:36 +01:00
Pepe20129 8e8befc6d5 Update settings.cpp (#4830) 2025-01-11 10:53:45 +01:00
Pepper0ni 7ea6422b6f fix LW Boulder (#4835) 2025-01-11 08:44:02 +01:00
Pepe20129 1ee31e5d61 Location access files cleanup (#4750)
* Move/Rename locacc files

* Format locacc files

* Split hyrule field file into HF, LH & LLR files

* Split castle town file into MK, TOT & HC/OGC files

* Split kakariko file into KAK & GY files

* Split death mountain file into DMT, GC & DMC

* Split lost woods file into KF, LW & SFM files

* Split gerudo valley file into GV, GF, HW & COLO files

* Move most files into the overworld/dungeons folder

Gerudo fortress needs to be split into gerudo fortress & thieves hideout, the former into overworld and the latter into dungeons

* Remove the optional second condition function

We won't need it as we're doing glitches differently from 3ds rando

* Post-merge fixes

* Split zora's domain file into ZR, ZD & ZF files

* Post-merge fixes

* Forgot to save the file

* Remove the optional second condition function from entrances & events

* Update bottom_of_the_well.cpp

* Add clarifying comment in `gerudo_fortress.cpp`

* Post-merge fixes

* Post-merge fixes

* Remove `s` from `RegionTable_Init_GerudoTrainingGrounds`

* Post-merge fixes
2025-01-11 08:28:23 +01:00
briaguya 6a5e5e2a75 imgui 1.90.6 -> 1.91.6 (#4838) 2025-01-11 02:02:05 -05:00
Fredrik Andreasson 3b26bd0402 Fix Mido without Emerald softlock (#4824)
* * 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
2025-01-10 23:14:31 -07:00
Pepper0ni 8dc2b0cec2 fix a few default cutscene settings (#4834) 2025-01-10 23:13:04 -07:00
Archez 4e8ccce002 Move Window calls to portside (#4833)
* Move LUS window calls to portside

* move dropped frame handling to port side

* Use fast3d all in one draw

* bump to upstream lus
2025-01-11 00:33:19 -05:00
Pepper0ni 323ea2df96 Fix song Fairies (#4826)
* Fix song fairies

* forgot a bool
2025-01-08 17:51:51 +01:00
Alejandro Asenjo Nitti 9455579f42 Set Sample Rate to 32000 hz (#4780)
* Set Sample Rate to 32000 hz

* PR review

* .DesiredBuffered = 1680
2025-01-08 01:08:20 -05:00
Jordan Longstaff 707b135711 Rename stick and nut capacity settings in save editor (#4825) 2025-01-08 00:46:48 -05:00
PurpleHato 5d6f20bf55 Frenchsanity (translations) (#4817)
* Most of french rando message

* Should be all

* Plural

* Better wording

* forgot one

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp

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

* Update soh/soh/Enhancements/randomizer/3drando/hint_list/hint_list_exclude_dungeon.cpp

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

* Missing ones

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-01-08 05:58:52 +01:00
Pepper0ni ad596387c6 Stop Adult Anju from breaking (#4767)
* stop anju from breaking

* remove comments

* remove whitespace
2025-01-08 05:50:24 +01:00
Philip Dubé 51fcf4d2c6 Add trick for using blue fire on mud walls (#4810) 2025-01-08 05:49:55 +01:00
Pepper0ni 349aac10be Fix some flipped entrance data in Entrace Rando (#4828)
* fix a reversed entrance entry

* whitespace pls

* fix market entrance IDs
2025-01-07 21:33:18 -05:00
Archez a00df04ffd Fix Naborru fight CS for child and with entrance skips (#4821) 2025-01-07 18:54:48 -05:00
Philip Dubé 47ba512351 Clean up enemy logic (#4816)
* Fix logic thinking naked adult can clear wolfos grotto

Use CanKillEnemy more

* GERUDO_WARRIOR. Can defeat with a lot more than swords

* one more flare dancer

* Put defeating Gerudo Warrior with slingshot/bombchu behind trick
2025-01-07 19:32:52 +01:00
aMannus 61a1d12ffe Fix shuffled fairies despawning (#4823) 2025-01-07 19:32:20 +01:00
Pepper0ni 6ec71964a1 fix ITEM_00's giving twinrovas check (#4820) 2025-01-06 14:36:12 -07:00
Pepper0ni cb738306d8 Actually fix issues with log settings (#4813)
* remove taking settings from a loaded spoiler instead of the imGUI settings

* actually fix most SpoilerLoad issues

* fix vanilla saves making future generations have so settings

* remove extra comment
2025-01-06 07:34:51 +01:00
Philip Dubé 2f8bb02502 fix assertion error due to CanUse(RG_BRONZE_SCALE) (#4814) 2025-01-05 22:36:04 -07:00
briaguya 34f77dda92 address some controller duping issues (#4805)
* try no wgi

* bump

* bump to latest LUS main
2025-01-05 21:32:54 +01:00
Philip Dubé 7267b47a83 check tracker: don't show GS from wrong quest when always showing GS (#4803)
* check tracker: don't show GS from wrong quest when always showing GS

also fix comparing `char*` to `""`

* IsQuestOfLocationActive
2025-01-05 19:36:34 +01:00
aMannus 23466e5a5e Freestanding Shuffle fixes & extract to separate file (#4808)
* Freestanding fixes

* Copy paste fail

* Temporary vanilla items fix
2025-01-05 19:10:46 +01:00
Pepper0ni 700c1a808d remove taking settings from a loaded spoiler instead of the imGUI settings (#4812) 2025-01-05 19:09:04 +01:00
aMannus 537a57c361 Introduce in-game Randomizer Settings menu, remove plando mode (#4804)
* Initial mockup

* Rip out part of plando mode, implement rando settings menu

* MVP new randomizer flow

* Translation support and code cleanup

* Fixes and more cleanup

* Fix whoopsie

* Fix whoopsie 2
2025-01-05 18:42:45 +01:00
Pepper0ni 55e1af9e81 Fairysanity (#4744)
* Define VB for fairy group spawning

* Add skeleton of new files for fairy shuffle

* Add option to enable/disable fairy shuffle

* Add field to fairy entities to hold randomizer data

* Expose the current grotto id, or find it if not shuffled

This is necessary since, unlike chest or scrub grottos,
fairy fountains, lacking any elements that would normally
differ between grottos, often have identical respawn data.
This change enables fairy shuffle to correctly identify
which fairy fountain was entered so it could load the right
checks.

* Initialise fairy groups if detected

* Randomize first set of fairies

* Make randomized fairies collectible

* VBify fairy healing customization

* Add remaining grotto fairies

* Add remaining fairy group spawns

* Override bean sprouts spawning fairies

* Define bean sprout fairy checks

* Add HasItem and CanUse entries for magic beans.

* Define logic for bean sprout fairies

* Enabling looking up fairies by z coordinate

* Add Temple of Time Gossip Stones

Logic might look a little weird. While the Gossip Stones
respond to Sun's Song, the scene transition takes priority,
so the fairies aren't actually obtainable. Adult does not have
day and night versions and is fully capable of acquiring the
fairies with Sun's Song.

Song of Time is similar, but rather than being dependant on
age, it's dependant on the timesaver to switch ages anywhere
with Song of Time. In this case, the fairies still spawn,
but the age transition deletes them before giving the chance
to collect them. While I could've chosen to ignore this and
simply require the player to disable the enhancement before
playing if it's their only option, I instead decided to
accomodate the enhancement and require one of the other songs
in order for the check to be in logic.

* Disable quick age change around gossip stones to simplify logic

* Add remaining gossip stone fairies

* Finish gossip stone fairies

* Add Desert Colossus Oasis

* Restrict fairy type

Somehow, it was previously possible for Navi to get detected
as a randomized fairy and rendered as an item. I was not
able to reproduce the behavior, but this should prevent it
from happening again.

* Add overworld special fairy spots

* Add mini-dungeon fairy song spots

* Add remaining dungeons except Shadow

* Add Shadow Temple fairies

* Add fairy check flags to the save editor

* Filter fairy checks from check tracker

* Add hints for fairy checks

* get fairysanity as far as I can for now

* fix a few obvious issues

* now builds

* try to convert FairyOnVanillaBehaviorHandler to vardic args

* convert RegisterFairyCustomization to REGISTER_VB_SHOULD

* fix some generation issues

* remove the list of fairy locations

* fix up logic

* more logic changes for gossip stones

* try silly thing for windows

* more stupid

* more dumb testing

* more testing

* small fixes

* implement inside fence storms fairy

* add inside fence storms fairy to logic

* remove duplicate hints (stupid conflicts)

* oops

* Rewrite game interfacing code of fairy shuffle

* Better function names

---------

Co-authored-by: Angel Bulfone <mbulfone@gmail.com>
Co-authored-by: aMannus <mannusmenting@gmail.com>
2025-01-05 14:52:27 +01:00
aMannus 7021230fd5 Fix jabu pot locations (#4811) 2025-01-05 13:42:08 +01:00
aMannus f8fa4416de Port over ShipInit from 2Ship (#4756)
* Port over ShipInit and transform Moon Jump as example

* Clean up moon jump

* Updated moon jump structure & cvar defines
2025-01-05 10:48:49 +01:00
inspectredc f0b02d6c7e Custom Tunics (#4774)
* Custom Tunics

Co-authored-by: MoriyaFaith 46070717+MoriyaFaith@users.noreply.github.com

* Works for necessary scenarios

* make variable static again
2025-01-05 10:05:12 +01:00
Pepper0ni 91720a3857 Fix forest tooltip again and fix logic issue in fishanity age split (#4801)
* first forest tooltip again

* Fix logic issue with fishanity age split
2025-01-05 09:38:35 +01:00
Malkierian bbc4cc3305 Fix shield invert tooltips and X-axis application (#4802)
* Update Forest and Carpenters CVars in the migrator.

* Fix shield invert tooltips and X-axis application.
2025-01-04 00:41:14 -07:00
Malkierian 8648cdeca5 Fix the GBK give after completing the triforce in triforce hunt. (#4800) 2025-01-03 15:40:30 -07:00
Pepper0ni a9113aa7ba set the logic context to the main save when initing the save (#4796) 2025-01-03 10:04:57 -07:00
Jordan Longstaff 1b6508556d Fix Broken Giant's Knife flag not resetting (#4608)
* Fix Broken Giant's Knife flag not resetting

* Force setting on in rando

* Fix flag when checkbox is toggled
2025-01-03 00:16:03 -07:00
Jordan Longstaff 1a040b3198 Skip Ganondorf boss battle intro (#4693) 2025-01-03 00:14:49 -07:00
briaguya 822d93880d bump lus (#4793) 2025-01-02 23:52:30 -07:00
Malkierian f5b5690361 Make Let It Snow toggle always visible in Silly Cosmetics. (#4759)
* Make Let It Snow toggle always visible in Silly Cosmetics.

* Add tooltip.
2025-01-02 23:44:47 -07:00
Philip Dubé 5155905efa fix 3 trick locations from spirit to ice cavern (#4792) 2025-01-02 23:07:40 -07:00
Philip Dubé 6133ebe135 cleanup indentation around trees drop sticks (#4778)
* cleanup indentation around trees drop sticks

* combine the range check
2025-01-02 23:07:14 -07:00
Jordan Longstaff 7e481c3f69 Rename code file for inventory functions (#4783) 2025-01-02 23:06:50 -07:00
Philip Dubé d70c061c5e minigames: render ammo even when out-of-minigame ammo is infinite (#4785) 2025-01-02 23:06:27 -07:00
briaguya e57a052468 Update GAME_CONTROLLER_DB.md (#4784) 2025-01-02 18:22:50 -07:00
Philip Dubé fceb083dc0 check tracker: fix Clear (#4791)
when pressing Clear the input is cleared but list was not updated
2025-01-02 18:22:15 -07:00
Pepper0ni 0544c494e6 Fix 2 broken rupees in ice cavern (#4789) 2025-01-02 14:43:56 -07:00
Pepper0ni 237f8b903a Fix scarce and minimal item pools removing shuffled sticks and nuts. (#4787)
* fix scarce and minimal item pools removing stick and nut upgrades when they are shuffled.

* improve clarity
2025-01-02 14:12:12 -07:00
Pepe20129 966a86c508 Tricks Cleanup (#4740)
* Quick cleanup

* Re-add experimental tag

* Cleanup and small explanations

* Implement RT_DAMAGE_BOOST_SIMPLE & RT_HOVER_BOOST_SIMPLE

* Update tricks.cpp

* Move glitch status to a tag

* Fully remove the unused LENS & BKSKIP tags

* Enable some disabled tricks

* Add RT_ZF_GREAT_FAIRY_WITHOUT_EXPLOSIVES
2025-01-02 09:44:30 -07:00
Pepper0ni 0d0e03bedc fix cheese logic (#4786) 2025-01-02 09:44:15 -07:00
Pepper0ni 396e2fd5ff fix freestanding tracking (#4782) 2025-01-01 15:09:23 -07:00
Philip Dubé 4c6a2a4b64 fix potsanity looking at deku tree MQness when dealing with pots between quests (#4773)
* fix potsanity looking at deku tree MQness when dealing with pots between dungeons

also don't need a loop for a range check

* share logic between placing freestanding & pots

* fix settings typo

* fix all freestanding items still being shuffled

this reinstates original freestanding method of filling in unused locations,
but also extend logic so that when only dungeons have freestanding shuffled
we don't render overworld freestanding as 3d versions until collected

* lift optimization check
2025-01-01 13:26:41 -07:00
Extloga 21e55563b4 Additions and fixes for two translations in hint_list.cpp (#4771)
* Fixes for the German translation in hint_list.cpp

* Additions for two translations in hint_list.cpp

* Fixes for two translations in hint_list.cpp

* Fixes for two translations in hint_list.cpp
2024-12-29 08:30:31 -07:00
Reuben D'Souza fc8d581efb fix: readme typos (#4768)
* fix: change complier to compiler

* fix: repeated the
2024-12-27 22:25:25 -07:00
Pepper0ni 32c20b6ebe several small fixes (#4762) 2024-12-26 11:51:16 -07:00
Archez 61e91526cd Fix transition wipe not rendering properly (#4757) 2024-12-26 08:26:04 -07:00
briaguya f7b8ddccfd don't use magic numbers in EnItem00_CustomItemsParticles (#4728)
* don't use magic numbers in `EnItem00_CustomItemsParticles`

* Update particle enums, add deku/stick bag RGs (#377)

---------

Co-authored-by: aMannus <mannusmenting@gmail.com>
2024-12-25 21:18:20 -07:00
Philip Dubé 3ac06d4afc fix missing newline in merchant option text (#4758) 2024-12-25 21:16:42 -07:00
Malkierian 2dccacc7f9 Change Kakariko Guard Gate Exit destination name to Bottom Exit rather than Middle. (#4752) 2024-12-25 21:14:35 -07:00
Pepper0ni 1f99dcf56a Clean up Kakariko logic and fix some errors, move AtNight into CanGetNightTimeGS. (#4748)
* fix kakariko logic

* Update soh/soh/Enhancements/randomizer/3drando/location_access/locacc_kakariko.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-12-25 21:14:21 -07:00
aMannus 1c2fbba709 Convert audio sliders from float to int (#4709)
* Audio sliders float -> int

* Implement migrator

* Must construct additional if statements
2024-12-23 12:35:56 -07:00
Pepper0ni e8cf9a61cc Fix fortress pots being considered dungeon in pot replacment (#4749)
* Fix fortress pots being considered dungeon in pot replacment

* change to use IsDungeon, make IsDungeon cleaner
2024-12-23 19:16:53 +01:00
Philip Dubé 781bbb85ae remove out of bounds array access, matching upstream fix (#4751) 2024-12-22 23:05:04 -07:00
Pepper0ni 9ea9100787 Freestanding Rupees/Hearts Shuffle (#4686)
* Enable freestanding items other than heart pieces and keys

* Add option to disable freestanding rupee & heart shuffle

* Add items to pool

* Actually add shuffle setting

* Define overworld locations

* Add logic for overworld freestanding checks

* Add freestanding items for child dungeons.

* Add checks for Ice Cavern and Bottom of the Well

* Add checks for Forest Temple and Gerudo Training Grounds

* Add checks for Fire Temple and Water Temple

* Add Shadow Temple checks

This does not include the spinning pots rupees, even though
they're included with freestanding rupees in the N64 randomizer
as they would require dedicated overrides for the code for
the pots in question.

* Define Spirit Temple and Ganon's Castle hearts

* Add remaining checks to dungeon definitions

* Fix missing logic

* Add freestanding checks to Save Flags Editor

* Fix flags for Zora Fountain underwater rupees

* Add option to enable freestanding shuffle for either dungeons or overworld

* Add missing MQ checks and fix mac & windows compile error

* Improve description and add hint text

* Update logic for Bombchu fixes

* Add missing Spirit Temple MQ hearts

* Add missing settings entries

* Actually add Forest Temple trick to the tricks menu.

* Re-add Ice Cavern lobby rupee

* go over MQ logic

* review logic on non-MQ checks

* convert all freestandings to location based

* add option enum and fix jabu exit logic

* fix mislocated freestandings

* fix mislocted freestandings

* Fix some mislocationed checks

---------

Co-authored-by: Angel Bulfone <mbulfone@gmail.com>
2024-12-22 11:16:00 -07:00
briaguya ff24581281 Fix actor inits happening too early (#4742)
* fix dogs not running

* clean up kak gs fix

* clean up scrub leader fix
2024-12-21 08:08:48 -07:00
Pepe20129 6fb974bfeb Rando Cleanup (#4741)
* Delete empty files

* Small Cleanup

* Remove some now useless comments

* Re-add log
2024-12-21 08:08:40 -07:00
Jordan Longstaff 845e37936e Skip water level change cutscenes in Water Temple (#4726)
* Skip water level change cutscenes in Water Temple

* Fix disappearing HUD issue
2024-12-21 07:52:34 -07:00
Jordan Longstaff c5923fafcf Fix Door of Time collision when skipping cutscene (#4734) 2024-12-21 07:47:37 -07:00
Jordan Longstaff dd11751b43 Rename code_80043480.c from decomp (#4731) 2024-12-20 18:26:42 -05:00
Pepper0ni 35e0a7ce10 Remove excess magic from the MQ GTG pots (#4710)
* remove excess magic

* change rupees to hearts
2024-12-20 18:09:59 -05:00
Pepper0ni c17b55b465 Improve KZ hook (#4732)
* improve KZ hook

* Adjust KZ hooks to permit early eyeball frog in rando

* Update soh/soh/Enhancements/randomizer/hook_handlers.cpp

Co-authored-by: Archez <Archez@users.noreply.github.com>

* Update soh/soh/Enhancements/game-interactor/GameInteractor.h

Co-authored-by: Archez <Archez@users.noreply.github.com>

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-12-20 17:44:35 -05:00
Pepper0ni 1edd41e807 Fix freeing gorons cutscene leaving link in cutscene state until the goron actor is killed (#4712)
* Fix goron cutscene

* Update soh/src/overlays/actors/ovl_En_Go2/z_en_go2.c
2024-12-20 14:56:36 -05:00
Jordan Longstaff e7e5b1190a Skip playing cutscenes of Pierre spawning (#4736) 2024-12-19 16:28:23 -07:00
Pepper0ni 6daa680a61 Fix Closed forest tooltip (#4733)
* Fix Closed forest tooltip

* forgot to save
2024-12-19 16:27:55 -07:00
briaguya 885e8f7360 collision viewer "apply as decal" default on (#4727) 2024-12-19 10:10:37 -07:00
Malkierian a7d082246f Rename all instances of "Training Grounds" to "Training Ground" to match the many that are already there as well as the in-game name. (#4730) 2024-12-19 10:44:16 +01:00
Malkierian 0afffe24fe Fix Dungeon Type Spoiling (#4719)
* Make new `SpoilAreaFromCheck` function to spoil areas when getting maps or a first check in a dungeon that isn't spoiled by entrance.

* Add scummed check dungeon spoiling on load.
2024-12-18 21:42:36 -07:00
Archez fd8bd31507 Fix camera mode not following boomerang with first person rang (#4716) 2024-12-18 23:54:55 +01:00
Eric Hoey 380d4c66f8 add bottles and greg to sparkle list (#4720) 2024-12-18 23:54:13 +01:00
Malkierian 3419928f5d Fix Save Prompt Cursor on Quest/Misc Item Tracker Windows (#4694)
* Fix quest menu cursor "moving" in the background in the save game prompt.
Fix misc item tracker also being able to select R and L/Z in save prompt.
Include MigrationAction entry removal from item count fix PR.

* Fix formatting.
2024-12-18 15:03:51 -07:00
Pepper0ni 03e9331d7e Fix forest temple lift softlock (#4713) 2024-12-18 15:01:42 -07:00
Archez f7701a73c5 Fix incorrect entrance value for links house in entrance rando (#4717) 2024-12-18 13:34:06 -05:00
Malkierian 64eadad8c1 Copy Assets with "If Different" Variants, CMake bump (#4714)
* Change copy assets procedure to use "if different" variants of the copy commands.
Bump minimum cmake to 3.26 to accommodate those variants.

* Change MSVC_CMD asset copy command to VS_COPY_ASSETS_CMD, change setting it to only be on Visual Studio build chain.
2024-12-18 00:10:20 -07:00
Archez 6485f72283 ci(linux): fix mkdir not working with cached entries (#4711) 2024-12-17 19:51:07 -05:00
Archez 4bf608a051 ci(linux): install libzip without crypto, bump sdl from 2.28.5 -> 2.30.3 (#4708) 2024-12-17 16:58:42 -05:00
briaguya 5d978c11c4 bump lus/support lus changes (#4701) 2024-12-16 21:12:45 -05:00
Malkierian e1a53a77d4 Surround BeginTable() calls and table-related draw code in if(){} blocks to fix resize crash. (#4700) 2024-12-16 12:09:25 -07:00
Jordan Longstaff 2a3bdca8a2 Skip Goron Link's forced dialogue (#4688)
* Skip Goron Link's forced dialogue

* Rename VB flag
2024-12-15 22:15:31 -07:00
Malkierian add5347126 Properly check for pre-existing gInjectItemCounts before setting the new separate CVars. (#4692) 2024-12-15 15:20:51 -07:00
Jordan Longstaff 0f167d119b Skip Biggoron's waking up cutscene (#4689)
* Skip Biggoron's waking up cutscene

* Allow fast speaking and trading
2024-12-15 14:00:43 -07:00
Jordan Longstaff 1cf3319936 Skip fire arrow spawn cutscene after shooting sun (#4635)
* Skip fire arrow spawn cutscene after shooting sun

* Fix

* Reorganize VB flags in enum

* A bit of VB cleanup
2024-12-14 14:43:26 -07:00
Archez c6eb165cf1 Fix GfxPrint shadow for HD fonts and some cleanup (#4681) 2024-12-14 14:39:40 -07:00
Jordan Longstaff bb41931a55 Rename a lot of actor movement-related functions from decomp (#4680) 2024-12-14 22:38:24 +01:00
aMannus 3a8ba03ce8 CrowdControl random buttons fix (#4679)
* CC random buttons fix

* Archez's fix
2024-12-14 22:31:29 +01:00
Malkierian 4b07a6f59a Re-implement old toggles for Dpad and Right Stick Ocarina Playback. (#4660) 2024-12-14 22:31:10 +01:00
Rozelette e0f25905c2 Add pulsate boss icon enhancement (#4651) 2024-12-14 12:00:28 -07:00
Jordan Longstaff 5d8e7740ef Rename two Actor functions from decomp (#4674) 2024-12-13 15:56:42 -07:00
aMannus 1a5632e3b5 [RANDO] Shuffle Pots (#4592)
* Potsanity proof of concept

* Hide pot item cutscenes for very frequent items

* Add 1 new pot to the item pool

* V1 custom pot model

* V2 pot model

* Pushing for help. lol

* Format clean up on added hint_list entries.
Removal of WriteIngameSpoilerLog call that was unneeded.

* THREE_ACTOR_PARAMS -> TWO_ACTOR_PARAMS and hints in a loop

* Lost woods pots logic

* Realign Pot Checklist in Location_list.cpp

* Correcting some values and adding Master Quest pots.

* Remove vanilla placements

* Re-order enums + start hints per region

* Fix build

* Break up shuffle pot options to dungeon/overworld/all

* Fixes

* Prepare default pot contents, fix/add dungeons

* Fix dungeon/overworld only settings

* Updates to Parameters and RHT information

* Remove unused hints

* Add proper check tracker entry exclusion

* Tweak items to skip cutscenes for

* Vanilla Drop List

* Update magic to blue rupees

* After merge fixes

* Fix Ganondorf's Lair pots

* Fix check tracker + minor stuff

* Unlock early GBK door

* Minor fixes

* More minor stuff and start of logic entries

* Fix TWO_ACTOR_PARAMS overlap between pots

* De-dupe defines

* Add missing water trial pot

* Update to develop-rando

* VBify pots progress

* Cleanup and fixes

* Overworld logic done

* Cleanup and fix item00 queues

* Implement skipping cutscenes for common items

* Revert "Implement skipping cutscenes for common items"

This reverts commit fe44916588.

* Ganons tower pot not spawning item fix + cleanup

* Fix ganon's tower, barinade, water temple pots

* VBify ganons key door

* Lizalfos Pot addition (example)

* Separate MQ pots in randomizerTypes.h

* Fix build

* Fix linux build (?)

* DC/Jabu/Botw/ start of Forest Pots (NMQ)

* Remaining Dungeon Non MQ Pot Location Logic

* After merge fixes round 1

* Post merge fixes round 2

* Apply MQ pot logic

* Re-align some stuff

* Cleanup, more work on locationlist

* Start of handling dungeon pots in item pool

* Finish dungeon pots in item pool

* GTG MQ Pots

* Review comments round 1 & code cleanup

* Fix ganon's lair pots being behind GBK in logic

* Update soh/include/z64actor.h

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Address review comment

* Fix logic for pots in Fire Temple

* Fix GtG MQ pots, fix water temple pot logic

* Review Comments

* Logic review part 1

* Logic comments part 2

---------

Co-authored-by: Caladius <Caladius@users.noreply.github.com>
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-12-13 21:15:40 +01:00
Pepper0ni ab863653ce Do some renames for the new settings arrangment (#4668)
* Automate settings text to enum conversion

* rename fortress setting into carpenters

* More renames for the new spoiler log layout
2024-12-13 12:30:13 -07:00
Pepper0ni 278f2e6f15 Spinner skip but no chime (#4678) 2024-12-13 12:29:57 -07:00
Pepper0ni f66b234ce2 Consistently name Gift from Rauru (#4677) 2024-12-13 12:29:32 -07:00
Kenix3 c7341ec544 Bump LUS (#4670)
* Bump LUS

* bump LUS

* bump lus (again)

* bump LUS again
2024-12-13 01:05:13 -07:00
Jordan Longstaff 2e71a826b2 Skip walking away cutscene when freeing Gorons (#4639)
* Skip walking away cutscene when freeing Gorons

* Revert a change too far

* Restore Goron walking out animation
2024-12-12 08:25:07 -07:00
lemonslut 16d69e4a28 Update macOS development dependency list (#4648)
- Adds a few extras I had to install to build
- Adds link to [homebrew](https://brew.sh/)
- Adds `brew install ...` command to setup script
2024-12-09 23:27:35 -05:00
Pepper0ni 7d80d1c85d Fix boss hints and gift from sages hint. (#4634) 2024-12-09 19:24:51 -07:00
Jordan Longstaff f852d70767 Properly replicate NaviTalk kill check (#4647)
* Restrict disabled Navi workaround to Dodongo's Cavern

* Properly replicate NaviTalk kill check

* Move `*should = false` out of condition
2024-12-09 19:24:37 -07:00
Jordan Longstaff 35dcf93c51 Adult Ruto function and property names pulled in from decomp (#4654)
* Adult Ruto function and property names pulled in from decomp

* Align name changes more with decomp

* Nope, missed a couple more
2024-12-09 19:23:57 -07:00
Jordan Longstaff 6823b6990b Name alpha-distance update function from decomp (#4658) 2024-12-09 19:23:14 -07:00
Pepper0ni ad23298500 Automate settings text to enum conversion and remove OptionGroups from the process (#4636)
* Automate settings text to enum conversion

* rename fortress setting into carpenters
2024-12-09 19:18:00 -07:00
Archez 6470522a02 Fix temp flags transfering in dungeon chains and various issues with voidouts in mixed entrances (#4637) 2024-12-09 19:17:26 -07:00
Jordan Longstaff de6f5d8b65 Skip Water Temple portcullis opening cutscene (#4641) 2024-12-09 09:14:47 -07:00
Jordan Longstaff 23dc4257a7 Skip one-point cutscene of Amy's blocks falling (#4645) 2024-12-09 09:14:01 -07:00
Jordan Longstaff d0bfa6860b Skip the Mweep cutscene (#4646)
* Skip the Mweep cutscene

* Fix bug: Ruto's letter was not removed from bottle
2024-12-09 09:13:45 -07:00
Jordan Longstaff 4010229de5 Rename bomb flower fuse setting field (decomp) (#4653) 2024-12-09 09:13:28 -07:00
Jordan Longstaff 2d37098379 Rename Sleeping Waterfall state machine function (decomp) (#4655) 2024-12-09 09:13:18 -07:00
Jordan Longstaff d8d9119de9 Rename Kakariko Well water level function (decomp) (#4656) 2024-12-09 09:13:08 -07:00
briaguya 732b8c10f7 bump LUS (#4638)
* bump LUS

* bump OTRExporter
2024-12-08 11:46:31 -07:00
Archez bccd96966f Fix crash when toggling alt assets while paused (#4621) 2024-12-06 10:36:38 -05:00
Malkierian 09f297392f Fix GetItemObtainabilityFromRandomizerGet check for sticks and nuts not accounting for not shuffling stick or nut bags and also not starting with related ammo. (#4633) 2024-12-05 21:35:27 -07:00
Archez 276db580e8 Fix display list offset values and unhandled opcodes (#4618)
* Fix display list offset values and unhandled opcodes

* fix unknown opcodes on custom chest textures
2024-12-05 11:00:39 -05:00
Pepper0ni c3e4579cba Change GetSelectedOptionText to contextSelection and clean up some junk (#4613)
* Change GetSelectedOptionText to contextSelection and clean up some junk

* more cleanup

* readd a fail alert as an assert
2024-12-04 11:01:25 -07:00
Archez 9b169af3f5 Fix find newline looping to have additional break early cases (#4614) 2024-12-04 11:01:08 -07:00
Pepper0ni b442c15322 Skip Shadow Statue Cutscene (#4612)
* Skip Shadow Statue Cutscene

* cleanup
2024-12-03 12:30:14 -07:00
Pepper0ni b1d1852655 Rewrite vanilla jabu logic (#4603)
* rewrite vanilla jabu logic

* cleanup

* more cleanup
2024-12-03 09:44:36 -07:00
Garrett Cox 291561667b Update hook debugger to pull from GameInteractor ptrs rather than cloning the data every frame (#4609) 2024-12-03 09:44:18 -07:00
Caladius 82d70a2029 Add Timer Display Window (#4553)
* Add new timer window and display options

* Fix overflow spacing

* Icons for Timers

* Swap Labels for Icons.

* Additional Timers

* Navi Timer Icon

* Clean up unused Defines.

* Code clean up and double check. Ready for Review

* Update from Suggestions

* Update magic numbers, correct indentations hopefully

* One moooooore thing

* Undo z_param change

* Updates
2024-12-03 09:44:10 -07:00
Malkierian 8b60cea1f9 Split "Starting Consumables" to Sticks and Nuts. (#4583)
* Split "Starting Consumables" to Sticks and Nuts.
Setup disabling for them based on status of bag shuffles.

* Updated to split index options format.
2024-12-03 09:18:22 -07:00
Extloga f2cc278f8c Fixes for the English text in several files (#4605)
* Fixes for the English text in option_descriptions.cpp

* Fixes for the English text in static_data.cpp

* Fixes for the English text in option_descriptions.cpp

* Fixes for the English text in option_descriptions.cpp

* Fixes for the English text in settings.cpp

* Fixes for the German translation in hint_list.cpp
2024-12-03 09:18:07 -07:00
Pepper0ni e704c5592b fix text Poeverflow on Poes hint (#4598) 2024-12-03 09:11:01 -07:00
Garrett Cox bbe3bb72b6 VBify Ruto (#4602) 2024-12-02 17:56:32 -07:00
Malkierian 4edb83e2f3 Fix errors introduced by actor check reveal PR from references to GetSelectedOptionIndex. (#4607) 2024-12-02 13:46:16 -07:00
Garrett Cox fe9bf7d956 Adjust Actor_GetProjectileActor to behave more like hardware, fixing an issue with Dark Link (#4606) 2024-12-02 12:40:29 -07:00
Philip Dubé caf0dc40c7 update check tracker when actor tells what they reward (#4568)
* update check tracker when actor tells you what they reward

do not render price when 0

* feedback
2024-12-02 09:04:21 -07:00
Eric Hoey 19d1fd5545 Boomerang Reticle and First-Person Aiming (#3374)
* First-person, reticle, sway, menu, and presets

* Put sway back behind reticle, adjust aim height for age

* block vanilla + comments

* new documentation method

* second try formatting

* Correct boomerang distance

* Update for CVAR changes

* Fix alignment?

* Condition cleanup

* Change reticle range to match bow behavior

* remove magic values
2024-12-02 09:03:47 -07:00
Jordan Longstaff 9b74a09955 Zora's River waterfall always open, take two (#4459)
* Zora's River waterfall always open, take two

* Remove improper, redundant checks in hook

* Move all checks into update hook

* Add Randomizer setting for keeping Sleeping Waterfall open

* Change header exports to extern exports

* Remove "closed as child" option for rando setting

* Oops, missed a spot

* A bit more cleanup: simplify a redundant condition

* Unify hook handlers

* Oopsie, fix build error

* Add "play only once" option

* Force Sleeping Waterfall enhancement in rando mode

* Force enhancement only if waterfall is Open in rando

* Restore forced-open waterfall in rando

* Fix rando condition in hook

* Fix? rando entrance logic for OI

* Fix build errors
2024-11-30 18:59:38 -07:00
Pepper0ni ee628059d8 Fix Lab Man actor breaking and the invisible UI glitch (#4599)
* fix Lab Man actor breaking and the invisible UI glitch

* address review
2024-11-30 18:59:13 -07:00
Malkierian 573d846cd7 Add saved status setting to StartingItemGive (#4600) 2024-11-29 20:35:38 -07:00
Malkierian 55960da402 Separate option values into context and menu indexes. (#4581)
* Separate option values into context and menu indexes.

* Fix option index reference in `CleanCheckConditionString`.

* Update soh/soh/Enhancements/randomizer/3drando/location_access.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Restore `const` classification to functions returning `string&`.

* Restore `const` classification to getter functions.

* Restore a couple more `const`s; cleanup header.

* Final consts; rename `SetCVar` to `SaveCVar`.
2024-11-29 17:58:30 -07:00
Malkierian f7378a9f76 Cosmetics cleanup (#4587)
* Convert defaultColor from ImVec4 to Color_RGBA8.
Convert defaultColor's ints to floats when being applied to currentColor in the macro.

* Address previous cleanup comments.
Surround `Message` tab in an advanced check.

* Resolve warnings and cleanup whitespace/formatting.

* Make Color_RGBA8 constructing function because... platform differences...

* Function name clarification.

* Remove default color conversion, reference default colors directly in CosmeticOption initialization.
2024-11-29 11:38:40 -07:00
Pepe20129 a92c08dea1 Fix some situations where trade items spoiled (#4569)
* Fix some situations where trade items reverted

* Update z_game_over.c

* Hopefully fix mac
2024-11-27 10:33:50 -07:00
Pepper0ni 5b7b38f198 Add some +/- buttons and clean up timesavers menu (#4571)
* Add some +/- buttons and clean up timesavers menu

* Better implement Image Button Style
2024-11-26 18:29:27 -07:00
Malkierian c960433832 Setup AdvancePond to run in OnItemReceive. (#4585) 2024-11-26 18:28:50 -07:00
Malkierian 13789a1dfb Prevent void and teleport traps from being added to the shuffle pool while fishing in the pond. (#4586) 2024-11-26 18:28:24 -07:00
Pepe20129 7ccb3ac7c3 Cosmetics Changes (#4275)
* Clean CosmeticsEditor.h

* Add CosmeticsEditor_GetDefaultValue

* Add message text cosmetics

* Format cleanup

* Remove dependency on 3drando random functions

* Fix rainbow for every cosmetic

* Add "Rainbow All" & "Un-Rainbow All"

* Add HookshotChain cosmetic

* Add Nayru's cosmetics

* Add Farore's cosmetics

* Add Din's cosmetics

* Add Title card cosmetics

* Update CosmeticsEditor.cpp

* Add Copyright text cosmetic
2024-11-26 15:48:58 -07:00
Pepper0ni d0f7d30c16 Fix OnePoint cutscenes, make Skip Glitch cutscenes into Exclude Glitch Cutscenes (#4575)
* Fix OnePoint chutscenes, make skip glitch cutscenes into exclude cutscenes

* address comments
2024-11-26 12:43:20 -07:00
Malkierian 31120b7188 Add master sword to ItemIDtoRandomizerGetMap to prevent assert crash in Return_Item after custom GIE was removed for MS. (#4584) 2024-11-25 20:36:35 -07:00
briaguya 7662fa4c3c fix readme link formatting (#4576)
* fix readme link formatting

* Update README.md

* Update README.md

* Update README.md

* Update README.md
2024-11-25 11:21:45 -07:00
Archez 8926d8f784 Fix array out of bounds in entrance init (#4566) 2024-11-22 16:23:15 -07:00
Pepper0ni 5520c185bf Limit retries of the randomiser quest menu seed generation (#4564) 2024-11-22 16:22:39 -07:00
Pepper0ni 9c99a1e515 Fix the "Greg as Reward" option in logic (#4565) 2024-11-22 16:22:27 -07:00
Pepper0ni eda97653d6 Save timesplits colour to cvar and reload it on init. (#4572)
* save timesplits colour to cvar and reload it

* fix mac and match cosmetics with the color conversion

* more stupid other platform fixes
2024-11-22 10:28:10 -07:00
Pepper0ni f0e5b9c22b learning how to VB (#4563) 2024-11-19 18:46:44 -07:00
Philip Dubé 01719283b3 typo: incorrect variable assignment (#4560) 2024-11-19 16:29:15 -07:00
Pepper0ni 3e313bd063 Enhacment presets no longer reimport randomiser settings (#4561)
* Enhacment presets no longer reimport randomiser settings

* make the change only apply to the Randomiser button instead
2024-11-19 16:22:54 -07:00
Archez 53b72a2507 Update PR artifacts actions and exclude soh.otr (#4558)
* update pr artifacts actions and exclude soh.otr

* remove deprecated save-always for windows cache
2024-11-19 18:18:18 -05:00
Malkierian 3f2d8ddc01 Fix infinite freeze in rando on GS pickup. (#4555) 2024-11-19 15:40:23 -07:00
Malkierian 4850041943 Fix Gift from Sages not showing in tracker (it's a valid shuffle now!). (#4556)
Bit of tracker code cleanup.
2024-11-19 15:39:42 -07:00
Malkierian 5dd3b39a83 Fix Plando Window Crash on new installs (#4557)
* Add check for Randomizer folder existing, and creating it if not, to plando window.

* Changed seed list population to just bail if the Randomizer folder doesn't exist.
Added button disabling to prevent crashes loading or saving empty structures.
2024-11-19 15:39:30 -07:00
Pepe20129 9bed5af33b OTRGlobals cleanup (#4251)
* Remove unused headers

* Move all "ResourceMgr_" functions to a new file

* Don't transitively include SaveManager

* Move cvar prefixes to a new header

* Add missing includes

* Update OTRGlobals.cpp

* Fix build

* Address review

* Fix some of the errors

* Update gameplaystats.h

* Update z_en_in.c

* Hopefully fix the linux issues

* Fix Linux issues for real this time, I checked

* Update ResourceManagerHelpers.cpp

* Update z_obj_mure2.c

* Post-merge fixes

* Fix build (hopefully)

* Post-merge fixes

* Update z_file_nameset_PAL.c

* cleanup some unnecessary headers (#7)

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-11-19 09:44:44 -07:00
Caladius 70f3dfa8c5 Built-in Plandomizer Editor (#4532)
* Add Plandomizer Editor Window

* UI, Ice Trap Editor, Hint Editor

* Drop down for previous seeds, wip hash display.

* Clean Up, Hash Icon Editor

* Updates based on suggestions

* Replace Tint with Color

* Add Boss Soul Icon

* Corrected App Folder Directory and updated from suggesstions.

* Add Hints to Junk Pool

* Utilize RandomElement for hints

* Hint update for pep

* apply patch

* Fix Sorting issue on Linux

* Skeleton Key, Shop Items, Milk, Fishing Pole, Ocarina Buttons, Loser Rupee fixed

* Fix stretched note icons.

* Remove Triforce, add Triforce Pieces. Centered Song Notes.

* Update soh/soh/Enhancements/randomizer/Plandomizer.cpp

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>

* Update hint_list.cpp

One spelling, removed 1 hint.

* Update Plandomizer.cpp

---------

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-11-17 12:44:54 -07:00
Malkierian 53e2fe4974 Refine mixed pool options to be more dynamic. (#4545) 2024-11-13 08:49:10 -07:00
Malkierian 6230901f29 Fix duplicate use of CVar for invert shield aiming. (#4544) 2024-11-12 22:02:22 -07:00
Jordan Longstaff 1eff613aa6 Fix skipping twisted hallway cutscenes (#4536) 2024-11-12 13:09:08 -07:00
aMannus c8e460cebe Heal goron necks (#4540) 2024-11-12 12:58:41 -07:00
Garrett Cox a6fbadc04e Fix issues with vanilla item queue when skipping things, resolves #4537 (#4538) 2024-11-12 10:18:57 -06:00
Pepe20129 ffc132a01b Clean __osMalloc.c (#4351)
* Remove #ifs

* Add `NODE_IS_VALID`

* Fix current macros

* `NODE_GET_NEXT` & `NODE_GET_PREV`

* Add macros

* Use macros and general cleanup

* Fix build (hopefully)

* Address review
2024-11-11 17:46:25 -07:00
Archez f12a2bbbb7 Port over decomp updates for vis* and reimplement vismono fb (#4533)
* Port over decomp updates for vis*

* move vismono framebuffer handling to file
2024-11-09 12:51:31 -05:00
Pepper0ni 2603b97366 Rewrite MQ spirit logic (#4534)
* rewrite MQ spirit logic

* fix oversights
2024-11-09 09:40:00 -07:00
Pepe20129 c8815a26f7 Improve ganon tower logic (#4526)
* Improve ganon tower logic

* Fix build and address review

* Update locacc_ganons_castle.cpp

* Update locacc_ganons_castle.cpp

* Update locacc_ganons_castle.cpp

* Update logic.cpp

* Update randomizerTypes.h

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-11-09 09:34:05 -07:00
Jordan Longstaff 068cceff36 Update SFX symbols from decomp (#4531) 2024-11-08 20:36:57 -07:00
Archez 4eeb01905d pull in decomp updates for z_play (#4522) 2024-11-07 09:52:21 -07:00
Pepper0ni 1d9d273a57 Rewrite MQ Water Temple Logic (#4520)
* Rewrite Storage Temple Logic

* fix a boss room oversight

* Fix some random errors

* cleanups
2024-11-07 09:51:29 -07:00
Garrett Cox d07cbe8395 Adjustments to change age cheat and time travel enhancement (#4512) 2024-11-06 19:38:57 -07:00
Jordan Longstaff a919b6a5a0 Fix skipping Adult Ruto one-point cutscene (#4519)
* Fix skipping Adult Ruto one-point cutscene

* Kill Ruto's actor instead of leaving her to swim up

* Change to Story cutscene

* Change to extern function
2024-11-06 19:38:44 -07:00
Archez dabd0c25bd Move collision viewer draw to hook and fix empty nametags (#4523) 2024-11-05 21:50:59 -05:00
Malkierian 894d3c00d3 Change ENTR_BOMBCHU_SHOP_0 to ENTR_BOMBCHU_SHOP_1 in entrance.cpp to fix interior shuffle crash. (#4521) 2024-11-04 20:16:27 -07:00
Archez d8f8b6e6b9 Fix Bluewarp handling with entrance rando (#4517)
* force bluewarp skips on when entrance rando is enabled

* Fix second visits and other issues with lingering bluewarp state
2024-11-04 20:07:21 -07:00
Garrett Cox 20ac33d380 Fix #4506, Mido crash in intro cutscene with Open Forest (#4511) 2024-11-02 10:50:48 -07:00
Pepper0ni 0d17e72dca Rewrite MQ Shadow Temple logic (#4502) 2024-11-01 08:15:27 -07:00
Archez ec1f03e8a2 Pass for some warning fixes (#4501) 2024-10-31 07:42:27 -07:00
Archez 98fa5663b4 Hookify more Entrance Rando handling (#4500)
* Hookify more entrance rando handling

* fix bad enums
2024-10-31 00:27:20 -04:00
Malkierian 6e024ed15d Entrance Enum and Name Refactor (#4484)
* Rename entrance enums for clearer location by name.
Change entrance name strings to be clearer for single-entrance tracking.

* Rename grotto macros to remove "RANDO", and move them to `randomizerTypes.h` for use elsewhere.

* Add entrance enums to rando's entrance.cpp.
Rename a couple RandomizerRegions for consistency.

* Swap entrance ids to enum values in rando's entrance.cpp.
Few more renames for clarity and consistency.

* Adapt entrance tracker to utilize new names and only display original source and substituted destination.
Few more renames for consistency.

* Missed a space in the tracker output.

* Restore pre-digit names of some enums, name great fairies more consistently.
2024-10-30 19:44:34 -07:00
Jordan Longstaff 705bbea144 "Skip forced dialog" no longer skips optional Navi hints (#4450) 2024-10-30 19:14:22 -07:00
Archez c232e13fff Fix getItemEntry macros (#4499) 2024-10-30 16:15:39 -07:00
Pepper0ni 71e9e616b6 Rewrite MQ Jabu Logic (#4493)
* rewrite MQ Jabu Logic

* Add swim requirement to the rang jump trick as link hints the water first
2024-10-29 14:05:09 -07:00
Pepe20129 6bd3b1d160 Move & refactor Randomizer_Item_Give (#4492) 2024-10-29 09:24:56 -07:00
Pepper0ni b706532754 Attempt to find area problems (#4494)
* Better insulate the code against no areas and fix misc issues

* remove a stray reminder comment
2024-10-28 17:35:36 -07:00
Malkierian 108d5061d4 Small Warnings Refactor (#4477)
* Disable all warnings, even in release, on the `src` directory.
Resolve math macro duplication warnings.

* Suppress LUS warnings.

* Modify it to utilize a variable that defaults on but can be specified in command line to disable it.
Prevet total compile option overwrite for LUS.

* Remove unnecessary unset and cache parameters.

* Document warnings flag in BUILDING.md
2024-10-28 17:30:11 -07:00
Malkierian fd8e98ed12 Fix rando presets (#4491)
* Fix application of preset values to sliders.

* Add new rando CVars to preset list, and alphabetize.
2024-10-28 08:25:26 -07:00
Garrett Cox 2c08fca46c Add faster rupee accumulator (#4490) 2024-10-28 08:25:15 -07:00
Malkierian 1df91890fe Windows Build Assets Tweak (#4486)
* Change CMake process to copy assets necessary for OTR creation to VS run directory.
Remove reference to ExtractAssets target from Windows build instructions.

* Unify build instructions where appropriate across PC platforms.
Clarify commented parts of some commands.

* PR feedback.
2024-10-28 00:02:04 -07:00
Pepper0ni d6ebed59dc Fix oversight in Static Hints, add some asserts (#4488) 2024-10-27 22:24:14 -07:00
Malkierian e5f4c091f8 Add condition to disabling Generate Randomizer button if file is loaded to prevent rando context confusion. (#4487) 2024-10-27 14:40:30 -07:00
Pepper0ni 438a8bff79 Rewrite MQ GTG and Ice Cavern logic (#4483)
* rewrite GTG logic

* Rewrite MQ Ice Cavern Logic
2024-10-27 14:16:51 -07:00
Malkierian 169e39ebad Adds item names to filtered parameters. (#4485) 2024-10-27 09:02:51 -07:00
Garrett Cox 804584e79d Fix rainbow bridge sound spam 2024-10-26 00:12:27 -05:00
Garrett Cox 20ddc7a536 Redo frog VB 2024-10-25 22:40:35 -05:00
Pepper0ni 7f4bd3e98c Fix any dungeon location pool and fire boss door logic (#4480)
* fix any dungeon location pool and fire boss door logic

* Make GetDungeonLocations consistent

* add All to name
2024-10-25 17:51:50 -07:00
Pepper0ni 6ca55aadbd Rewrite MQ Ganon's castle logic (#4469)
* rewrite ganon MQ logic

* typo fix

* remove excess brackets to avoid compiler errors
2024-10-25 17:51:07 -07:00
Pepe20129 a91243ec01 Fix msvc internal compiler errors on mq logic (#4478) 2024-10-25 20:19:01 +09:00
Malkierian 89fe9c1ccb Fix Phantom Ganon fast death time saver crash. (#4476) 2024-10-24 21:55:17 -07:00
Pepper0ni 8638810b9d Fix bean buy and warp song text crashes (#4470) 2024-10-23 17:34:44 -07:00
Malkierian 2ffd62a5b1 Fix scrubs behaving as if shuffled despite not being. (#4468)
Convert shop tracking to checking for shuffled.
Change "Hide right-side shop item checks" to "Hide unshuffled shop item checks" on the check tracker.
2024-10-23 08:35:25 -07:00
Caladius 75a0979bc7 Built-in Time Splits [v2.1] (#4455)
* Adds 2 new Hooks, OnTimeStamp and OnPlayerHealthChange.

* Re-add Timesplit code

* Committing custom Assets

* Commit Asset definitions

* Adding Windows

* Fix Modal Window and others

* Time Splits v2 new Hooks etc.

* Fixing Time Displays

* Adding Big Poe split

* Update Options Tab

* List Preview and Removing Split Entries

* Allow Split Table to resize

* Fix Window Color and Adding Non Items to Split List

* Correct Song Image Skew
2024-10-22 10:17:30 -07:00
Malkierian 8c304d54b2 Fix wallet display for More Info with non-rando saves. (#4467) 2024-10-22 10:10:50 -07:00
Malkierian dee885622e Add InjectItemCounts to the migrator. (#4466) 2024-10-22 09:46:50 -07:00
Pepper0ni a005075bd2 Fix Settings Loading Issues (#4465) 2024-10-22 08:50:05 -07:00
Pepper0ni dd9253808b Rewrite forest MQ logic, add swim to lake logic (#4464)
* rewrite forest logic, add swim to lake logic

* fix small oops

* oops
2024-10-21 19:18:50 -07:00
Jordan Longstaff 3a4bd1164a Add freeze timer hook for Gold Skulltula collection (#4445)
* Add freeze timer hook for Gold Skulltula collection

* Remove unused player references

* Replace magic number text IDs

* Separate hook for freezing player on token collection

* Revert one unintended change
2024-10-21 19:18:34 -07:00
Malkierian 17d8487730 Modify all (4) instances of Flags_GetRandomizerInf() returns that were u8 to s32 to avoid value overflow. (#4463) 2024-10-21 14:55:46 -07:00
Garrett Cox 92c791b7c0 Add simple notifications system 2024-10-21 13:20:33 +00:00
Malkierian 4663bd152a VBify poe collector giving for rando. (#4458)
* VBify poe collector giving for rando.

* Forgot an include.

* Further refinement so all the action happens in the handler. Virtual full restoration of vanilla code flow.

* Restored 1000 point messages before rando item give.

* Cleanup redundant GI Should call.
2024-10-20 23:49:32 -07:00
Jordan Longstaff b2e99b8ff5 Zora's River waterfall opens instantly (#4454)
* Zora's River waterfall opens instantly

* VB cleanup

* Move it all to VB hook

* Fix build errors

* Null safety
2024-10-20 23:36:47 -07:00
Garrett Cox df6763257b Refactor network usage and adapt Sail/CC to changes 2024-10-21 01:30:32 +00:00
Garrett Cox 29d7c54250 Move CrowdControl/Sail files 2024-10-21 01:30:32 +00:00
Malkierian 6d1d57d19a Restores check color functionality. (#4451) 2024-10-20 01:03:47 -07:00
Pepper0ni 323c67b47c Change CanUse to include an assert, fix some bad uses of CanUse (#4444) 2024-10-20 01:03:09 -07:00
Pepper0ni 81db6e3996 refix loach check (#4448) 2024-10-20 01:00:54 -07:00
Jordan Longstaff c644f9f4be Restore plus/minus buttons on King Zora slider (#4449) 2024-10-20 01:00:46 -07:00
Pepper0ni ba38d985b3 Rewrite MQ fire logic and fix MQ deku logic (#4443)
* commit to merge

* rewrite fire and fix deku
2024-10-20 01:00:39 -07:00
Garrett Cox cbd35d0ef5 Tweaks to cmake globbing/source_grouping (#4439) 2024-10-18 09:35:07 -07:00
Malkierian a7cb7da9fc Change SoH Input Editor CVar to CVAR_WINDOW and remove definition for LUS's input editor CVar from the cmake. (#4438) 2024-10-17 22:06:43 -07:00
Malkierian 7e78abf01c Restore tooltip to skip text, add tooltips to slow text speed and match text speed. (#4437) 2024-10-17 22:03:13 -07:00
Archez f1841a20f3 add gfx debugger support (#4345)
Co-authored-by: Malkierian <malkierian@gmail.com>
2024-10-17 19:05:31 -07:00
Patrick12115 ed32a2820c Ageless Item Fixes (#3908)
* Fixes Mirror Shield and MS sheath

* Added Hookshot Tip&Chain and more edge cases

* Update presets.h

* Revert "Update presets.h"

This reverts commit 95d952ba23.

* More fixes

Bow showing up for slingshot gallery minigame is now fixed, as well as a rouge instance shrinking links hand when I didn't mean for it to

* CVar stuffs

* Fixes

* Fix more sheath stuff and bgs hand

* Add the P
2024-10-17 18:42:14 -07:00
Malkierian 5a23da4ce0 Make ConfigUpdaterV2 use CVarClearBlock instead of manually scanning. (#4435) 2024-10-17 18:41:38 -07:00
Malkierian dba74f8805 Disable Lens Effect On Unequip (#4432)
* Add logic to turn off lens effect when replacing it on a button with another item, but not swapping.

* Swap to real fix for dpad equips bug, c/o Rozelette.
2024-10-17 14:36:53 -07:00
Pepe20129 b5c6545d6f z_player documentation 2024-10-11 (#4407)
* Add names to start of typedefs

* Idle stuff

* 2 functions

* Player state flags

* Name functions + misc

* ActionChange => ActionHandler

* Some player unks

* More player unks

* Header misc

* Misc

* More misc

* Player Actions

* Missed comments

* Move ship specific stuff

* Fix build

* CsCmdActorAction to CsCmdActorCue

* Fix build
2024-10-17 11:55:31 -07:00
Malkierian 3c5d9faba3 Blair Config Migrator V3 (#4148)
* Config migrator to handle CVar macros/sections, as well as a few other changes since MacReady.

* One more round of cleanup.

* Move config migrators above SetupGuiElements to allow for migrated window variables to register before windows use them to determine visibility.

* One more.

* Adapt DpadEquips, NavOnL, and PauseAnyCursor CVars to accommodate Pablo moving them to enhancements.
2024-10-16 21:58:31 -07:00
Malkierian b7bbb1bb8a Make starting_inventory.cpp add the Master Sword based on RSK_STARTING_MASTER_SWORD. (#4431) 2024-10-16 21:54:55 -07:00
Malkierian 469797478e Force global rando context's Logic child to release its parent Context reference. (#4429) 2024-10-16 20:52:36 -07:00
Jordan Longstaff 52d1a98f41 Add "All" button for item count messages (#4430) 2024-10-16 20:52:23 -07:00
Jordan Longstaff c1295f33fe Unify "No forced dialog" settings in combo box (#4425)
* Unify "No forced dialog" settings in combo box

* Rename options
2024-10-16 19:45:51 -07:00
Malkierian e178df3e0c Change SkipIntro to check any entrance shuffle rather than just overworld spawns. (#4428) 2024-10-16 16:39:35 -07:00
Malkierian 262ec4817b Re-sync deku stick cheat CVar name. (#4427) 2024-10-16 15:54:55 -07:00
Jordan Longstaff b3ce27efed Add separate speed option for slower text (#4424) 2024-10-16 15:32:56 -07:00
Jordan Longstaff dcd26b2de8 Segregate count-injected item get messages by type (#4422)
* Segregate count-injected item get messages by type

* Move item count messages submenu up next to Items submenu

* Rectify presets

* Oops - deleted a comma by mistake
2024-10-16 14:18:24 -07:00
Pepper0ni 43b04a32cd rewrite MQ deku tree logic (#4418) 2024-10-16 14:16:58 -07:00
Jordan Longstaff da79e5e015 Fix fast speed skipping quick text markers (#4416) 2024-10-15 20:50:10 -07:00
Malkierian 45af1028af Fix options and sliders to prevent index out of range issues. (#4421) 2024-10-15 17:59:20 -07:00
Jordan Longstaff 960c9c4fd1 Fix heart piece injection messages to cover all counts (#4417) 2024-10-15 17:03:36 -07:00
MegaMech 90c07bb3ec Update BUILDING.md (#4415) 2024-10-15 10:05:31 -07:00
Malkierian eb7f12560b MVP to get shops hooked up to the queue. (#4412) 2024-10-15 08:31:16 -07:00
Garrett Cox eafe15ddf2 Fix bean salesman bug (#4410) 2024-10-14 19:11:33 -07:00
Pepper0ni 4dbb86e980 fix some bean salesman oversights (#4405) 2024-10-14 16:02:46 -07:00
Pepper0ni a9df9cbce4 Rewrite Bottom of the Well Logic (#4398)
* rewrite MQ botw and add some helper functions

* small fixes

* got bored, rewrote vanilla botw
2024-10-14 16:01:37 -07:00
Yomitht 86ad99f3c8 More Mweep (#4192)
* More Mweep

Adjusted the "King Zora Speed" timesaver enhancement to allow for slowing the animation down.

* [Fixed] Crashing when applying preset settings

Adjusted presets.h to expect a float instead of an integer for the "MweepSpeed" timesaver enhancement setting.

* Cleaning some things up

Deleted an unnecessary line, and switched the "King Zora Speed" option back to multiplier display instead of a percentage.

* Update SohMenuBar.cpp

Switched back to multiplier display

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
2024-10-14 16:01:18 -07:00
aMannus 3daf7a2ee5 Merge pull request #4387 from KatDevsGames/patch-5
automated QA
2024-10-14 14:36:34 +02:00
Jordan Longstaff 68fcc5921b Fix text speed enhancement with slowed down text (#4072)
* Correct behaviour of text speed enhancement

The text speed enhancement increases the size of the text crawl in the number of characters displayed in each step. This messes up certain parts of dialogue that were meant to be displayed in a certain way (like Ganondorf's "Heh heh heh..."), and in places where the text crawl is meant to be slower than normal, it just looks clunky. The text crawl speed enhancement is a wonderful feature, but smoothing out should be easily doable, and is a more correct implementation.

* Fix text speed for normal text

* Flatten if statements
2024-10-13 22:41:30 -07:00
Malkierian 65fbf2cc41 Restore Vanilla Tracking (#4394)
* Re-enabled vanilla tracking in the check tracker. Utilized Rando::Context for check status.

* Restore check tracker window custom background functionality.
2024-10-13 22:22:49 -07:00
Pepper0ni d0905f365a fix thieve hideout overworld status (#4403) 2024-10-13 17:50:57 -07:00
Patrick12115 d935028a54 [Fixes] Fix left hand when holding Hammer (#3992)
* Fixin it

* PreFIX

* Added Prefix to wrong Cvar

Oops
2024-10-13 17:33:34 -07:00
Pepe20129 914e838630 ImGuiUtils (#4222) 2024-10-13 17:29:22 -07:00
Pepe20129 1ffa23b5a9 Clean controller menu (#4223)
* Improved Ocarina Controls

* Move speed modifiers to modifier section

* Move DpadEquips, PauseAnyCursor & NaviOnL

* Add DpadHoldChange to menu

* Change DpadHoldChange checkbox to match default

* Change cvars from CVAR_SETTING to CVAR_ENHANCEMENT

* Update z_parameter.c
2024-10-13 17:28:39 -07:00
Pepper0ni e62f26d3bf add 2 missing settings to ParseJson (#4404) 2024-10-13 12:10:31 -07:00
Malkierian 05962baf45 Tracker Debug Performance, Vanilla Save Fix (#4397)
* Improve check tracker performance.

* Fix vanilla saves getting randomizer quest assignment.
Fix trying to load blank data blocks from save file.
Prevent writing randomizer block, even if empty, when save type isn't rando.
2024-10-12 23:38:07 -07:00
Pepper0ni 64ee12c11f Attempt to fix improperly set areas (#4396)
* Fix obvious issues

* Fix another stupid oversight

* remove test vars
2024-10-11 08:34:23 -07:00
Archez 6e025588a5 Fix how the gMtxClear is extracted and used by the Jabu scene DLs (#4375)
* fix how the clear mtx is extracted and used by the jabu scene DLs

* bump OTRExporter
2024-10-10 16:59:44 -07:00
Archez bd7155179e Port pause menu framebuffer handling from 2Ship (#4346)
* bring over framebuffer effects methods

* Implement framebuffer capture and drawing for pause menu

* revert hookshot and title cards to draw using original buffers

* remove old game over crash fix

* Adjust mirror mode handling for kaleido

* Avoid flashing the hud when pausing
2024-10-10 16:45:11 -07:00
Archez 7192783451 Fix interpolation for Kaleido (#4391) 2024-10-10 19:38:38 -04:00
Pepe20129 70a2141351 Mask improvements (#3431)
* Add gKeepMasks

* Add gSaveMasksToFile

* Add gKeepMasksOnDeath & gKeepBunnyHoodThroughTime

* Fix mask bleedthrough

* Update cvar names

* Change bunny hood enhancements to all mask ones

* Consolidate multiple enhancements into PersistentMasks

* Move keeping masks thru loading zones to PersistentMasks

* I forgot

* Update z_player.c

* Update z64save.h

Merge commit excluded this removal for some reason.

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-10-10 16:16:41 -07:00
Yomitht 62713bb551 Added Project Overview to README (#4235)
* Added Project Overview to README

This is a couple additional lines of text clarifying the high-level structure of the project, mostly for the benefit of anyone new joining the project.

* Added "Further Reading" section

Points out and lists the contents of the "docs" directory for ease of access to the documentation therein.
2024-10-10 16:16:29 -07:00
Pepe20129 6d71eb3867 Use path xml parser & fix empty dl references (#4217) 2024-10-10 16:11:43 -07:00
Caladius 6d8480c16a Allow for User Selected Enemies for Enemizer (#4236)
* Allow for User Selected Enemies for Enemizer

* Updated CVar Entry List

* ImGui Cvar Updates

* GetSelectedEnemies Cvar Update

* Populate List if empty and if menu selection changes for Enemy Randomizer/Enemy List

* for loop for Menu Bar cvars, added enemyNameList table to get actor names

* Update variable for macOS/Linux

* Alphabetical Order you say?
2024-10-10 16:11:35 -07:00
Malkierian a6110dbc51 Update SoH's input editor window for the gui rework, and set it as what's opened by the Controller Configuration button. (#4352) 2024-10-10 16:11:19 -07:00
Pepe20129 7891ac2d6a Get patch word automatically (#4372) 2024-10-10 16:11:10 -07:00
Pepper0ni 4ba5384810 fix rupee messages (#4392) 2024-10-10 16:10:58 -07:00
aMannus cd8d40466a Merge pull request #4389 from HarbourMasters/develop-rando
[NO SQUASH] develop-rando upstream
2024-10-10 22:47:20 +02:00
Patrick12115 21cf978255 Add back lod = 0 code (#4354) 2024-10-09 20:16:43 -04:00
Archez 5d311fac9f Convert GameInteractor_Should hook to use variadic arguments (#4383)
* Convert _Should to use variadic args

* Convert everything to use va_arg properly

* Update shop hooks to va_args

* Wrong Function

* Update hook_handlers.cpp

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-10-08 20:20:09 -07:00
Pepper0ni 9df3c41d8a Add support for multiple areas in regions and locations and remove Impa's house shuffle limits (#4385)
* Add support for multiple areas in regions and locations and remove impa's house shuffle limits

* Spelling corrections

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Malkierian <malkierian@live.com>
2024-10-08 20:20:00 -07:00
Malkierian 4ac800f716 Upgrade GitHub actions using deprecated Node version (#4371) (#4388)
* Upgrade Ccache action to v1.2.14

* Upgrade Ccache action to v1.2.14

* Upgrade GitHub checkout action to v4

* Upgrade another cache action

Co-authored-by: Jordan Longstaff <JordanLongstaff@users.noreply.github.com>
2024-10-08 15:19:49 -07:00
Pepper0ni 10921b2ade Unify Shops, Scrubs and Merchants price and hinting code (#4321)
* commiting to branch switch

* shop,scrubs and merchant code unified

* last cleanups

* Update soh/soh/Enhancements/randomizer/hook_handlers.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* attempt to fix reviews DOES NOT BUILD

* TIL include order matters

* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/3drando/shops.cpp

Note to self, Don't code tired. *proceeds to ignore note*

Co-authored-by: Angelo Bulfone <boomshroom@users.noreply.github.com>

* fix typos

* post merge

* commiting to check something

* probably cleaned up, needs a doublecheck

* fix presets

* address reviews

* fix small shopsanity count oversights

* undo rename

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
Co-authored-by: Angelo Bulfone <boomshroom@users.noreply.github.com>
Co-authored-by: Malkierian <malkierian@gmail.com>
2024-10-08 14:33:58 -07:00
Pepper0ni a9fbd8243f Mitigate playthrough sphere jank and remove sphere enforcement in logic when not needed. (#4361)
* preparatory clean ups

* structure done, but failes to generate

* fix the bugs, but triple seed gen time on the benchmark

* fix massive generation time increases

* Remove sphereing when not needed as an optimisation

* post merge fixes

* reset the current sphere when toggling an event to cover another cause of jank

* address reviews
2024-10-08 13:22:19 -07:00
Lexi Rose 961ef572a4 automated QA 2024-10-08 15:11:01 -05:00
Pepe20129 2822dfc3f3 VBify (#4255)
* Convert ocarina buttons & skip scarecrow song to VB

* Move most of boss rush & rupee/key counters to VB

* Move BossRush_HandleCompleteBoss to VB

* Convert boss timestamps to VB

* Move being able to open doors to VB

* Convert Entrance_OverrideWeatherState to VB

* Move boss souls to hook_handlers.cpp

* Update hook_handlers.cpp

* Move infinite upgrades to hook_handlers.cpp

* Move skeleton key to hook_handlers.cpp

* Move swim and child wallet to hook_handlers.cpp

* Move ganons boss key to hook_handlers.cpp

* Move triforce hunt to hook_handlers.cpp

* Move randomizer sheik spawn to hook_handlers.cpp

* Update BossRush.h

* Convert spoiling items to VB

* Move load game stuff to hook_handlers.cpp

* Move warp song handling to hook_handlers.cpp

* Convert being able to play bowling to VB

* Move shooting gallery man handling to hook_handlers.cpp

* Move spirit temple silver block removal to hook_handlers.cpp

* Fix build

* Move last beehive stuff to hook_handlers.cpp

* Fix build

* Add VB_CLOSE_PAUSE_MENU

* Add VB_BE_ABLE_TO_SAVE

* Add VB_RENDER_YES_ON_CONTINUE_PROMPT

* Add VB_SPAWN_BLUE_WARP

* Add VB_BLUE_WARP_ADULT_WARP_OUT

* Add VB_BG_BREAKWALL_BREAK

* Convert Saria stuff to VB

* Remove now unused check

* Add VB_GANON_HEAL_BEFORE_FIGHT

* Update hook_handlers.cpp

* Fix blue warp offsets

* Fixes from review

* Improve documentation

* Update BossRush.cpp

* Fix my stupidity

* Fix #4327

* Update hook_handlers.cpp

* Fix blue warps

* Use ultralib types & clean header

* Replace options amount macro with BR_OPTIONS_MAX

* Remove unused includes

* Remove accidental line doubling

* Tweaks to boss rush (#6)

* Update GameInteractor_HookTable.h

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-10-07 14:36:21 -07:00
Pepper0ni 7450cee0b2 Fix Seed generation when adult trade is off and some shield logic (#4384) 2024-10-06 17:59:01 -07:00
Christopher Leggett bcf9f392f0 Kaleido Menu for Miscellaneous Collectibles (#3852)
* Adds in-game display of certain rando collectibles.

Before, these were only available through the Item Tracker ImGui Window. With this commit, they can be accessed via holding C-Up on the Map Screen. Currently I've added Greg and Triforce Pieces (when applicable) to this menu. Boss Souls, Ocarina Buttons, and eventually Silver Rupees will be added later.

* Adds ocarina buttons to in-game display

* Initial pass on rendering the text on a black background.

* Starting to render boss soul icons

* Better alignment and rendering of Boss Soul icons.

* Adds icons prefixing the list entries.

* Switches boss souls to 32x32 icon.

* Partially working Matrix/Vtx implementation

Currently hardcoded Greg text, replacing map screen completely.

* Now rendering properly thanks to Archez!

* Better implementation of accessing the new page.

- now attached to Quest status instead of Map
- now triggered by a toggle instead of holding a button
- now has its own background (temporarily save screen but will be replaced with something custom later)

* Make KaleidoEntry's reactive to game state

Adds Greg proper and Triforce Hunt to the Misc. Collectibles Page.

* Conditionally render Triforce Hunt

* Documentation/Cleanup

* WIP Ocarina Buttons rendering

* Working ocarina buttons display

* Renders buttons as Gray instead of using Grayscale

This may seem inconsistent, but with Grayscale they technically render as different shades of gray, especially with custom cosmetics. With this they now render as the same shade of gray.

* Makes Ocarina Icon gray when no buttons have been collected.

* Adds Boss Souls.

Currently they run off the menu, need to implement scrolling.

* Implement Scrolling for the menu.

Need to figure out how to throttle the stick inputs still.

* Moves input handling to draw function.

I hate it but that's how Kaleido does it and there's some input throttling logic in there, so in order to make this feel like a kaleido menu I have to also handle input in the draw function.

* Removes custom cosmetic handling of Ocarina Buttons.

I've chosen not to respect the cosmetics for the sake of accessibility
and color contrast, but the code is still present and commented out in
case we want to reverse that decision.

* Hopefully fixes mac build errors.

* Implements update function via Hook.

* Another mac fix hopefully

* Cleans up unused code from the rectangle based attempt.

* Clean up more unused code

* Commit Boss Soul icon

* Fix typo

* Remove commented code

* Improve toggle functionality

* Re-introduce cosmetic matching for ocarina buttons

* Revert some unnecessary formatting changes

* Fix cursor/page turning issue

More improvements to come here (drawing arrows, custom text at the bottom, etc.)

* Fix some more formatting changes

* One last batch of formatting reverts
2024-10-06 17:58:45 -07:00
Pepper0ni bd142a0eed Fix duplicate fishing checks and a crash with fishing rod hint (#4288)
* actor breaking

* should be VB fishing

* attempt to VB fisherman

* commit fishing hell for review of VB viability, untested

* fix rando, vanilla still broken. close enough

* wait i forgot to remove that

* small fix
2024-10-05 13:32:06 -07:00
Extloga 63eaae8774 Additions for the German translation in hint_list.cpp (#4381)
* Additions for the German translation in hint_list.cpp

* Additions for the German translation in hint_list.cpp
2024-10-05 13:29:46 -07:00
Pepper0ni 0a3eeb8339 Rewrite DC MQ Logic (#4355)
* Doodongs Cavern

* rewrite MQ DC Logic

* forgot some cleanup

* remove an unused region

* post-merge cleanups

* change CanUse for HasITem on gorons braclet

* git ate half the rewrite

* more small error fixes

---------

Co-authored-by: aMannus <mannusmenting@gmail.com>
2024-10-05 13:29:38 -07:00
Malkierian c4d211bc3a [V3] Fishsanity Cleanup (#4380)
* Fix crash in fishsanity's flag set handler.
Code format cleanup.
Fix typedef warnings in fishsanity.h.

* Actually fix the crash now.

* Relocate RCTYPE check for broader application.
2024-10-05 09:58:41 -07:00
Pepper0ni 33c74a10b7 Fix items being placed on hint locations (#4379) 2024-10-02 17:27:43 -07:00
Pepe20129 84130b8046 Add 5, 6 & 7 item shopsanity. (#4280)
* Format shops.cpp

* Add 5, 6 & 7 item shopsanity

* Guarantee a bombchu refill

* Fish first shop item index

* Clean up NonShopItems

* Split count options

* Improve item ordering

Ensure potions, blue fire and fairy on shopsanity 6 and less.
There are no hearts in the first 28 items (the ones from n64 rando).

* Post-merge fixes
2024-10-02 16:31:11 -07:00
Pepper0ni 7110e40374 Remove UpdateHelpers, massivly speeding up Seed generation time (#4366)
* Update helpers removed

* clean up some unused vars

* remove now-misleading comment

* remove redundent timer

* address reviews

* Address commits
2024-10-02 16:02:13 -07:00
briaguya b575aaaf99 simply all loaches logic (#4325)
the previous all loaches logic required modifying every `isLoach` check
throughout the file. this had the benefit of allowing live-toggling all fish
to be loaches or not, but added a lot of complexity.

this changes the logic to just set `isLoach` on each fish instead, and updates the tooltip to note an area reload is required
2024-10-02 09:37:22 -07:00
Angelo Bulfone 89ca2149b9 Refactor Fishsanity (#4268)
* Move Fishsanity hooks out of mods.cpp

* Assign fish check flags.

* Clean up location_list for fish

* Prevent fishing from giving double items.

* Remove no-longer-used mPendingFish

* Override draw function for fishing

This allows the draw functions in the source
overlay to match the decomp.

* Override draw function for EnFish

* Overwrite grotto fish params based on respawn data

This allows the randomizer to identify them
automatically without any special logic.

The catch (pun not intended) is that grotto fish don't respawn,
and they were previously identified for such by a params value of 1,
so the logic to take care of that needed to be duplicated.
Thankfully it wasn't very much.

* Add a VB for catching actors in bottles.

* Clean up remaining code after conversion to VB

This breaks fast FastDrops for bottle pickups, though
readding it shouldn't be too hard with the VB hook.

* Remove fishsanityParams from Fishing

It was previously used to track exactly which fish would be
released after a catch, but since both candidate fish
would've been caught, they both wouldn't give checks
anyways.

* Update soh/soh/Enhancements/randomizer/hook_handlers.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Re-add FastDrops for bottle pickups.

While this does diverge from the vanilla decomp, I'm uncertain of
the order that hooks are run, so I put it back into z_player.c
just to be safe. A future commit can do a more proper implementation
using VB hooks.

* Move initialisation of fishsanity hooks into hook_handlers

* Change location constructor to take RandomizerInf instead of uint8_t

This shouldn't have an effect as-is, but other changes can add
additional randomizer flags that can end up pushing fishsanity check
flags out of the range of a uint8_t, causing the cast to overflow
and not be stored correctly. With this change, it could still overflow
when writing to the flag field of Location, but said field is unused
and the parameter is really only for setting the flag for the
SpoilerCollectionCheck.

* Render uncaught overworld fish as randomized item

* Fix windows build by zeroing unused field

* Fix scene parameter type

This resolves a build error on Mac and Windows, but Linux
instead buries it in the sea of warnings, meaning I can't
see it until it fails CI.

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-10-02 09:37:15 -07:00
Pepper0ni e36dcefe54 Fix seed generation issues caused by Location Table changes (#4378) 2024-10-02 09:36:58 -07:00
Pepe20129 0cfd535fe6 Clean up location table (#4258)
* Remove categories

* Remove SpoilerCollectionCheckGroup

* Remove unused Location constructors

* Remove LocationType

* Remove unused SpoilerCollectionCheckTypes

* Remove hints' isVanillaCompletion, it's always false

* Remove SpoilerCollectionCheck::None

Same effect as default constructor

* Fix mistake

* Update location.h

* Deduce RC Area by scene when possible

* Remove useless constructors

* Remove flag in most situations

* Format improvements

* Replace overworldLocations with a function

* Replace shopLocationLists with a function

* Replace gossipStoneLocations with a function

Also add a new RCType for static hints

* Replace scrubLocations with a function

* Replace staticHintLocations with a function

* Replace overworldFishLocations with a function

* Replace pondFishLocations with a function

* Remove RC_TRIFORCE_COMPLETED from GetOverworldLocations

* Update fill.cpp

Re-add filter for dungeonLocations for song shuffle dungeon rewards (and fix erroneous check for song locations there).
Modify songLocations filter for dungeon rewards to check for RCTYPE_BOSS_HEART_OR_OTHER_REWARD and then the two song locations added for it.

* Update fill.cpp

Fix bracketing.

* Apply Pepper0ni's patch

---------

Co-authored-by: Malkierian <malkierian@live.com>
2024-10-01 09:50:47 -07:00
Jordan Longstaff 30029ba6e9 Upgrade GitHub actions using deprecated Node version (#4371)
* Upgrade Ccache action to v1.2.14

* Upgrade Ccache action to v1.2.14

* Upgrade GitHub checkout action to v4

* Upgrade another cache action
2024-09-29 17:44:08 -04:00
Malkierian 668f0fe4c6 Rando V3 - Small UI Cleanup (#4367)
* Change tristate off graphic to none instead of X to avoid confusion.
Modify Combobox and Slider Options to clamp directly to options.size() - 1 instead of just decrementing if current value is higher than max.

* Restore RenderCross line, but commented out.
2024-09-27 22:47:35 -07:00
Pepper0ni 0f47e6394e fix small hint issues (#4358) 2024-09-26 17:35:20 -07:00
Pepper0ni 159d0872d7 remove unused functions (#4313) 2024-09-26 16:26:33 -07:00
Pepe20129 da5cf11449 Hook Debugger (#4323)
* Initial implementation

* Add call number & relax source_location requirement

* Update hookDebugger.cpp
2024-09-26 16:26:12 -07:00
Garrett Cox b3b9216b5c Show interface after item get (when skipping GI) (#4363) 2024-09-25 12:01:59 -07:00
skrawpie 7810f7505a Update settings.cpp (#4362)
100 GS Reward was missing from RSK_GANONS_BOSS_KEY causing indexing issues. Notably, Triforce Hunt was setting Ganon's Boss Key to "Vanilla" rather than "Triforce Hunt."
2024-09-24 10:57:16 -07:00
Garrett Cox 4e4c1c4f8a Handle ignoring 0x3F for navi talk skips (#4364) 2024-09-24 10:56:56 -07:00
Malkierian 0f02201108 SCL Consolidation, Area -> Region (#4356)
* Move all `SaveContext` operations to `Logic` to prepare for encapsulation.

* Rename `Area` to `Region`, `areaTable` to `regionTable`, and all local variables named variants of area to region that were of the `RandomizerRegion` or `Region` types.

* Fix mistaken renames.

* Rename PT_AREA_RESET to PT_REGION_RESET after rebasing on performance timer commit.
Change include path for the timer to absolute rather than relative.
2024-09-23 17:10:29 -07:00
Pepper0ni 0a84d15d9d Implement some basic benchmarking for seed generation (#4353)
* messy first implementation, pushing for verification

* push to test other platforms, add benchmark preset

* more other compiler fixes

* Finish implementing benchmarks

* forgot to reset the timers each run

* do it better

* move timers to thier own file

* forgot to add files
2024-09-21 17:03:48 -07:00
Pepper0ni fca8081a20 Fix crash when preset amount is too high (#4359) 2024-09-20 22:56:32 -07:00
Garrett Cox 5d8841777a Fix missing despawn branch for heart containers (#4350) 2024-09-20 15:37:34 -07:00
Garrett Cox 74c93b0182 Stop disabling dampe checkbox, as it's no longer forced to on for rando (#4349) 2024-09-19 09:17:01 -07:00
Garrett Cox 2434eb82bf Fix for LACS awarding everywhere (#4348)
* Fix for LACS awarding everywhere

* Update soh/soh/Enhancements/randomizer/hook_handlers.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-09-19 09:16:31 -07:00
Garrett Cox ee02e503fc Fix issues with faster heavy block lift (#4335) 2024-09-19 09:15:31 -07:00
Garrett Cox da6e4cac91 Remove erroneous Entrance_OverrideBlueWarp (#4340) 2024-09-17 12:30:33 -07:00
Extloga fab63877f0 Rearrangement of the currencies in randomizer.cpp (#4338) 2024-09-17 11:41:09 -07:00
Malkierian 4148d59c48 Check Tracker Re-update (#4322)
* Update check status in the check tracker to the new system. Status and Skipped are now stored in ItemLocation, though still saved separately in the trackerData section.

* Fix shop checks not showing prices when identified.

* Patch fix for check status bleed.
Some cleanup of unused code.

* Small tracker optimizations.

* Fix check hiding.

* Bit more cleanup.

* Unhide the filter and make it work again...

* Fix area totals tracking.
Fix skipped status saving.

* Merge conflict cleanup.
2024-09-17 11:32:52 -07:00
Pepe20129 9c11718341 Add 146 ice trap messages (#4281)
* Add ice trap message suggestions

* Split messages by language

* Re-run build

* Apply Pepper0ni's patch with fixes
2024-09-17 10:43:06 -07:00
Pepper0ni cd92e70b84 Refactor GetAccessibleLocations (#3871)
* saving for branch change

* V0 doesn't work

* crashing in random places halp

* push to rebase

* commit for branch change

* more branch switching

* First apparent working

* fix entrence validation

* comment cleanups

* post merge fixes

* Fix entrences not validating when spawns/owl drops are on but other entrences are not

* remove bombchusFound from the struct too

* Fix issue causing improper bombchu filtering on the playthrough

* text fixes

* submodules pls

* submodules pls pt 2
2024-09-17 10:06:30 -07:00
Malkierian 6cd387ddf3 Fix Deku Mouth for Entrance Rando and Mido Rando Functionality (#4342)
* Restore Deku Tree open as adult with dungeon shuffle.

* Add Mido spawn VB to allow for preventing Mido moving in rando when starting with Zelda's letter and closed deku or forest.

* Use RAND_GET_OPTION instead of OTRGlobals rando context, get rid of IS_RANDO in deku mouth VB handler.
2024-09-17 08:40:38 -07:00
Pepper0ni 1b51750ec0 remove a return 0 (#4347) 2024-09-17 08:26:10 -07:00
Archez e75400a646 Merge pull request #4343 from Archez/merge-develop-rando-sep14
Merge develop -> develop-rando
2024-09-15 00:16:08 -04:00
Archez 8359d2a8f0 Update entrance tracker settings window for modern menu changes 2024-09-14 23:45:10 -04:00
Archez 8bd2f38d22 Merge remote-tracking branch 'origin/develop' into merge-develop-rando-sep14 2024-09-14 23:42:02 -04:00
Archez 19dc4dc0fa Bump LUS (#4341) 2024-09-14 23:13:46 -04:00
Malkierian 7f503c33d2 Concurrency Fix (#4318)
* Removed all CVarLoad uses from code to prevent thread concurrency issues.

* Add mutext locks to save and load functions to prevent concurrent operations between those two.
2024-09-14 22:38:22 -04:00
inspectredc c507d4d9a0 Early Eyeball Frog (#4120)
* early eyeball is real :D

* make cvar

* update cvars

* fix additional cvar check bug
2024-09-12 16:01:57 -07:00
Malkierian b5037a0856 Gui window rework (#4307)
* Converted all GuiWindows to the new separate Begin/End format in current LUS except InputViewer, CheckTracker, ItemTracker and Modals.

* Setup Check, Entrance, Item trackers and Input Viewer to override `Draw()` to bypass the ImGui Begin and End, as they're not intended to go in the modern menu.

* Cleanup.
2024-09-10 15:42:57 -04:00
Extloga 1f85420625 Additions for the German translation in two files (#4304)
* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Additions for the German translation in hint_list_exclude_overworld.cpp
2024-09-02 07:32:38 -07:00
Malkierian 48663d74ac Change Recommended VS build tools from 142 to 143 (#4315)
* Changed references for VS build tools 142 to 143 to reflect current state of development.

* Remove VS 2019.
2024-08-30 11:28:09 -04:00
Pepper0ni 15395defa4 Add jabu box skip door and frog hint exceptions to cutscene skipping (#4300)
* Add jaby box skip door one point to glitchAiding and frog hint exception to NoForcedDialouge

* address review
2024-08-23 10:20:11 -04:00
Pepe20129 e07fc59e55 Add git info to title screen & gameplay stats (#4053)
* Add git info to title screen & gameplay stats

* Change the branch criteria to starting with `develop`

* Update z_title.c

* Change the branch criteria to not having a tag

* Always show both when not a release build

* Only show build version in tagged releases
2024-08-23 10:17:45 -04:00
Archez 01245ae81c Bump LUS (#4301)
* bump lus

* remove undeclared methods
2024-08-18 15:25:21 -04:00
Pepe20129 b6554a8409 Fix skeleton key (#4296) 2024-08-17 20:45:10 -07:00
Pepper0ni 07babaa17b fix link name enhancment (#4295) 2024-08-17 20:44:50 -07:00
Extloga 9d7d4bffa2 Additions for the German currencies in randomizer.cpp (#4289)
* Additions for the German currencies in randomizer.cpp

* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Fixes for the German translation in z_select.c

* Fixes for the German translation in z_select.c

* Additions for the German translation in hint_list_exclude_overworld.cpp
2024-08-17 20:25:38 -07:00
Pepper0ni 9c2e773ce4 Bombchu logic fixes, Add BetterBombchShopping enhancment and some adjacent cleanups (#3733)
* Initial Bombchu rework implementation

* Finish bombchus in logic overhaul

* address reviews

* Post resolution fixes

* fix git being dumb

* Readd Child Wallet To Bombchu Bowling Logic

* post merge fixes

* fix some oversights in bombchu shopping logic

* doesn't work, linker errors

* cleanup old reviews

* Make it build, likely broken by VB

* attempt to fix carpet man second purchse text

* commit to change branch

* mostly have carpet guy working

* badly fix carpet salesman

* fix better bombchu shopping

* fix bombchu drops

* remember you need bombchus in inventory to get drops

* Address reviews

* post-SCL clean up and redo the bombchu ammo logic to apply better to the spirit edge case

* fix oversight which could have allowed for bombchus to logical exist when they shouldn't

* Remove special bombchu playthrough checks which are causing bugs and no longer needed

* fix Slingshot logic reset

* Convert helpers I touched into CanUse and HasItem

* last cleanups
2024-08-17 16:10:11 -07:00
Extloga d3edbcd042 Additions and fixes for the German translation in three files (#4293)
* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Fixes for the German translation in z_select.c

* Fixes for the German translation in z_select.c

* Additions for the German translation in hint_list_exclude_overworld.cpp

* Additions for the German translation in hint_list_exclude_dungeon.cpp

* Additions for the German translation in hint_list_exclude_overworld.cpp
2024-08-16 09:58:12 -07:00
aMannus 6ea8823de1 Add Total Checks to Check/Item Trackers - devrando edition (#4292)
* Fix fmt in savestates

* Check Tracker Totals
2024-08-15 15:39:50 -07:00
Malkierian bfba2a180a Fix tricks menu (#4278)
* Fix tricks not getting disabled by button click.

* Fix area trees not collapsing on enabled side of tricks list.

* Fix difficulty tag button order for Linux.

* Fix Collapse All, Open All, and Disable All.
Prevent Disable All from disabling all despite areas being collapsed.
2024-08-14 22:27:32 -07:00
Archez 9ceb5579b8 Merge pull request #4294 from Archez/dev-develop-rando-merge
Merge develop -> develop-rando
2024-08-14 14:58:44 -04:00
Archez 35b4da74cb Merge remote-tracking branch 'origin/develop' into develop->develop-rando 2024-08-14 11:38:56 -04:00
Archez 86580fc79f Merge pull request #4290 from Archez/macready-golf-merge
merge Macready Golf -> develop
2024-08-13 20:18:41 -04:00
Archez 651348d2a9 Merge remote-tracking branch 'origin/develop' into macready-golf-merge 2024-08-13 01:09:49 -04:00
Archez 0bc6ca08e0 Bump MacReady Golf (#4279) 2024-08-12 23:26:30 -04:00
Archez 16aaf2f939 Tweak: Implement better extended culling options (#4285)
* implement better culling

* change draw distance to a slider

* remove testing code

* tweak
2024-08-12 19:39:44 -04:00
Extloga f4d951aab8 Additions and fixes for the German translation in several files (#4195)
* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in hint_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in z_message_OTR.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in randomizer.cpp

* Additions for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Additions for the German translation in hint_list_item.cpp

* Additions for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Additions for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in z_message_OTR.cpp

* Fixes for the German translation in z_message_OTR.cpp

* Additions for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in hint_list.cpp

* Fixes for the German translation in hint_list.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in hint_list_item.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in item_list.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in randomizer.cpp

* Fixes for the German translation in randomizer.cpp
2024-08-11 13:08:42 -07:00
Christopher Leggett 91d1e5970d Fix an issue with a stray Rando::Context shared_ptr hanging around. (#4259)
* Fix an issue with a stray Rando::Context shared_ptr hanging around.

* Fixes accidental leftover from when I found this bug on another branch

* Properly reset randoContext on every save load, not just after save creation
2024-08-10 14:07:03 -07:00
Spodi 3971e3696e Use manifest for windows DPI awareness (#3270) (#4256)
* Use manifest for windows DPI awareness (#3270)

* Update libultraship

* Update libultraship
2024-08-05 19:31:20 -04:00
Nicholas Estelami f11f97e84e Custom Skeleton Fixes for various bosses and enemies (#3436)
* Skeleton Fixes for various bosses and enemies

* cleanup

* revert breakpart changes

---------

Co-authored-by: Adam Bird <archez39@me.com>
2024-08-05 15:20:40 -04:00
Malkierian 483dbea330 Fix RSK for mixing boss entrances. (#4277) 2024-08-04 17:05:29 -07:00
Malkierian c6b05b2087 Change RSK_SHUFFLE instance in mixed pool code to RSK_MIX. (#4276) 2024-08-04 15:32:11 -07:00
Malkierian 03e3258792 It's not master sword. (#4273) 2024-08-02 08:54:25 -07:00
Pepe20129 5e6cd71031 Update item_list.cpp (#4272) 2024-08-02 07:54:33 -07:00
Malkierian aeb85c81aa Item SaveContext Logic (#4237)
* Port initial framework up to latest dev-rando. Includes about 15 items using the SCL structure for tracking.

* Most other item variables ported to SaveContext in UpdateHelpers.

* Removed individual Context retrievals in favor of single local variable in Logic to reference.

* start of some diagnostics.
caught some reverse logic with ApplyItemEffect.

* more diagnostics

* Resolve major logic issue with SetInventory flow in ApplyItemEffect.
Other small logic issues in ApplyItemEffect.

* Added a bit of logging.
Add Double Defense to item effects.

* revert hint gen bypass

* item_list *actually* divorced from logicVar pointers.
Several missed options for ApplyItemEffect, HasItem, and UpdateHelpers added in.
Changed HasItem to a switch block for more performance.
Seeds generate within 10-20 seconds in release mode. Further optimization is assumed possible.

* Some formatting

* Bit more formatting.

* Couple review changes.

* Incorporate progressive upgrades and skeleton key into SCL.
Bit of cleanup.

* Change `inLogic` to static array.

* Fix bug in `BottleCount()` preventing Jabu Jabu from ever being in logic.

* Fix bomb bag HasItem check.

* Fix Gerudo Fortress and Ganon's Castle SmallKeys checks.

* Change all logic use of `bool remove` to be `bool state` and work on the affirmative assumption.

* Forgot the `Set(x)` uses in `Logic::Reset()`.

* Fix fishing pole effect application.

* fishing pole tweak

* Add `RG_BOMB_BAG`, `RG_NUTS` and `RG_STICKS` to `HasItem()`.
Fix silver and gold gauntlet checks in `HasItem()`.
Change Nuts and Sticks helpers to use non-progressive RGs in `UpdateHelpers()`.

* Change mSaveContext to simple pointer.
Set `mSaveContext` to `&gSaveContext` when loading a save file.
Modify `Item::GetGIEntry()` to use rando context's SaveContext pointer instead of the gSaveContext macros.
Utilize `Item::GetGIEntry()` to get real RG of infinite upgrades and set rando infs accordingly, skipping upgrade level incrementing (which was causing overflow of wallets for some reason).

* Rename all remaining references of LogicVar to variants of LogicVal.

* Change final references to song LogicVars to CanUse calls, and remove them.

* Separate equip and rand inf flag maps.
Add Zelda's Letter and Weird Egg rand infs to map.
Consolidate `HasItem` rand inf  lookups using rand inf map and equips using equip flag map.
Maps are static, so can be referenced with `Context::` instead of ctx pointer.
2024-08-01 21:24:24 -07:00
Christopher Leggett cab0871fe7 Fix Zora's Sapphire crash (#4254) 2024-07-29 18:48:49 -07:00
Nick Michael 06b20a05dd Fix Lake Hylia Water Level for Vanilla with Cutscene Skips (#4257)
* Fix Lake Hylia Water Level

* Move logic to SkipBlueWarp handlers
2024-07-29 12:22:57 -04:00
Archez b81a3dd099 Another round of fixes for skip intro and grotto rando (#4253) 2024-07-25 21:09:45 -04:00
Archez e66dada09d Fix grotto handling with the skip intro timesaver (#4252) 2024-07-23 21:31:01 -04:00
Pepe20129 c68cecec71 Rando: Shuffle Hyrule Loach (Rando V3) (#3805)
* Shuffle Hyrule Loach

* Remove rando specific loach text override

* Remove duplicated enhancement from fishsanity

* Re-run Build

* Re-run Build

* Changed to be an option within fishsanity

* Rename cvar and fix check tracker

* Fix build

* Re-run build

* Re-re-run build

* Update z_fishing.c

* Fix AllHyruleLoaches

* Fix static data

* Fix hint spacing

* Restrict loach hint to "Shuffle only Hyrule Loach"

* Update settings.cpp

* Address review
2024-07-23 08:56:44 -07:00
Pepe20129 3bcd93428e Rando: Infinite upgrades (Rando V3) (#3942)
* Infinite Upgrades

* Add "Condensed Progressive"

* VB & fix build

* Update settings.cpp
2024-07-22 09:54:14 -07:00
Archez 7a00658be9 Fix disable lod breaking certain effects (#4245) 2024-07-21 15:30:18 -04:00
Malkierian 7bc2259c82 LUS bump and implement alt assets performance changes. (#4240)
* LUS bump and implement alt assets performance changes.

* LUS ref update.
2024-07-21 15:29:45 -04:00
Angelo Bulfone 081a55ab29 Fix accidental assignment expression (#4248)
A typo from https://github.com/HarbourMasters/Shipwright/commit/a5c0cede12d3a53cb0f1069a5d4a5c4febe991fa resulted in various bugs due to giving every actor the same id.
2024-07-19 23:49:26 -04:00
Pepper0ni 4df4e61eb3 Fix return of Item_Give for stricter compilers (#4244)
* fix return of Item_Give for stricter compilers

* change to just item
2024-07-18 14:42:48 -07:00
Malkierian 3d73faa9a0 Port Graphics Menu lag fix from 2ship. (#4238)
* Port Graphics Menu lag fix from 2ship.

* tweak

---------

Co-authored-by: Adam Bird <archez39@me.com>
2024-07-17 15:57:11 -04:00
Kenix3 134aba4aa0 Fixes crashes on asan related to audio. (#4049)
Found in MM
2024-07-17 14:35:13 -04:00
Pepe20129 8b6c183776 Rando: Skeleton key (#3997)
* Initial Implementation

* Add temporary model to the skeleton key
2024-07-17 09:55:05 -07:00
Pepper0ni 7595a5a65e fix selection only and make MQ dungeon settings set themselves more smartley (#4232) 2024-07-17 09:45:29 -07:00
Pepe20129 a5c0cede12 Rando: Shuffle consumable bags (#3959)
* Main implementation

* Fix sticks & nuts from shops & checks

* Change the models to normal stick & nut

Worth noting that before you have the bags, the refills are blue rupees so there will not be model collision

* Update hook_handlers.cpp
2024-07-17 09:42:56 -07:00
Pepe20129 f2958aea1c Improved rando settings (#3980)
* Initial implementation

* center icons (#5)

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-07-16 20:25:28 -07:00
Pepe20129 8eb6304999 Rando: Keyring tristate (#3960)
* Initial implementation

* Fix build

* Update UIWidgets.cpp

* Update option.cpp

* Update settings.cpp

* Update settings.cpp

* Apply Pepper0ni's patch

Co-Authored-By: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>

* Update option_descriptions.cpp

---------

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2024-07-16 20:25:06 -07:00
Angelo Bulfone 2ff795e227 Fix MQ Checks (#4234) 2024-07-16 16:39:18 -04:00
Archez 73be4e5559 Bump LUS for 2cyc color combiner fix (#4221) 2024-07-15 22:24:38 -04:00
Christopher Leggett ba82bfbba6 Fix spawn shuffle when starting age is adult/random. (#4230)
* Fix spawn shuffle when starting age is adult.

* Handle adult start without spawn shuffle

* Handle correct entrance for adult start + spawn shuffle and add comments.

* Fix grotto spawn cutscene skips.

* Fix an issue with randomized starting age.
2024-07-13 16:51:54 -04:00
Pepper0ni a0fda39a75 Force Warp Song Hints off when Warp Songs are not shuffled (#4229) 2024-07-11 10:38:52 -04:00
Pepper0ni 77770ba3b2 fix hint crash on windows (#4227) 2024-07-09 18:57:28 -04:00
Christopher Leggett 7a17fe221f Don't play the intro cutscene on child spawn even if location is shuffled (#4226)
* Don't play the intro cutscene on child spawn even if location is shuffled.

* Fix condition to not always skip cutscene when IS_RANDO is true.

* Fix typo
2024-07-07 21:22:23 -04:00
Pepe20129 8b001da317 Check tracker show logic (#3972)
* Initial Implementation

* Fix missing locations

* Update locacc_castle_town.cpp

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2024-07-05 21:13:49 -04:00
Pepper0ni f88883044e Add OoT Static Hint, Fix Sheik Crashes, Add multiple text boxes to AutoFormat (#4149)
* add OoT hint, sheik is crashing without hint due to an unrelated bug

* Fix Sheik crashes, add new textbox to autoFormat, trim OoTHint text

* save pls

* fix receive typos

* git pls

* nice conflict fix
2024-07-05 20:16:56 -04:00
Pepper0ni 1ca8d0ab73 Implement Mask Hints (#4152)
* Implement Mask Hints

* fix typo
2024-07-05 17:52:59 -04:00
Pepper0ni 5c155a625a Quick fix Chest Minigame Setting (#4189) 2024-07-05 17:50:58 -04:00
Pepper0ni db5e9cbc11 Fix Multiple Foolish hints from an area being generated. (#4190)
* Fix Multiple Foolish hints for the same location

* remove debug comment
2024-07-05 17:49:56 -04:00
Pepper0ni 510b655e5e Fix Link's Pocket Appearing in Hints. (#4191)
* Fix issues with areas not being applied to the region itself, and Link's Pocket Propogating through randomised warps

* Address reviews

* address reviews again

* fix mac issues

* git pls
2024-07-05 17:35:47 -04:00
Pepe20129 839fcffe17 Add Alternate Headers XML logger (#4207) 2024-06-15 23:47:35 -04:00
inspectredc 79a29a62ef Use correct default value (#4194) 2024-06-15 23:43:09 -04:00
GaryOderNichts f99993af85 Reduce stack usage during static initialization (#4184)
* Reduce stack usage during static initialization

* Implement `ABS` macro for `TWO_ACTOR_PARAMS`
2024-06-15 23:28:42 -04:00
Archez cd7c5ab316 Clear the framebuffer for the pause menu link texture (#4213)
* clear pause menu link framebuffer

* cache bust

* Add enums for pause menu link width/height and rename the framebuffer

* revert cache bust
2024-06-15 23:13:13 -04:00
briaguya 4441304dfd support LUS not providing an array resource type/factory (#4204)
* support LUS not providing an array resource type/factory

* bump to latest upstream
2024-06-14 13:40:39 -04:00
briaguya 736dccb00b update to latest LUS main (#4202)
Includes supporting changes from:
* https://github.com/HarbourMasters/Shipwright/pull/4197 (alt assets variable changes)
* https://github.com/HarbourMasters/Shipwright/pull/4199 (WindowBackend enum changes)
* https://github.com/HarbourMasters/Shipwright/pull/4200 (Extract gMtxClear)

---------

Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: inspectredc <inspectredc@gmail.com>
2024-06-02 15:34:53 -04:00
briaguya b8c7c71578 allow setting device visibility in controller mapping window (#4165) 2024-06-02 12:13:03 -04:00
Lywx 53efc22a23 Framebuffer clear and bump LUS (#4187) 2024-05-27 18:33:02 -04:00
briaguya ad0e17383e update nightly links in readme (#4147) 2024-05-16 14:55:04 -04:00
Garrett Cox baf7691fbd Fix weirdness with item gets from chests (#4146) 2024-05-13 12:29:34 -05:00
Pepe20129 08ad16e750 Add path XML parser (#4115)
* Add path XML parser

* Update SetPathwaysFactory.cpp
2024-05-10 00:17:50 -05:00
Ted Newman 844413b391 Add Modifier buttons to input viewer and support individual button outline modes (#3966)
* Add Modifier buttons to input viewer and support individual button outline modes

* Clearer naming

* Remove hardcoded indent values

* clean up diff

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-05-09 23:57:31 -04:00
Garrett Cox 6f7173a5c4 Split a few VB changes out into their own files (#4123) 2024-05-09 22:22:08 -05:00
Eric Hoey 65b18d61cf Fix modifiers crash when obtaining underwater item (#4110)
* NULL check

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-05-09 22:02:50 -05:00
Pepe20129 118cd044b5 Rando: Starting hearts (#3974)
* Initial implementation

* Re-run build

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-05-09 21:39:22 -05:00
Eric Hoey 63bc2aff59 Frogs Ocarina Game Difficulty Options (#3373)
* Frog actor edits, menu, presets

* Block off vanilla code + comments

* fix logic + formatting

* new documentation format

* Update for CVAR changes

* Fix alignment

* Conditions cleanup

* Update soh/soh/SohMenuBar.cpp

Oops, added

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>

---------

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
2024-05-09 20:55:53 -05:00
briaguya 23f9654940 update BUILDING.md (#4128) 2024-05-09 20:49:32 -05:00
briaguya 5530ce2e61 simplify ci (#4129) 2024-05-09 20:45:21 -05:00
Archez 3f67fed073 Fix some memory leaks with WrappedText and LoadArrayByNameAsVec3s (#4144)
* avoid memory leaks with WrappedText

* avoid memory leak with LoadArrayByNameAsVec3s
2024-05-09 20:39:13 -05:00
Garrett Cox 24e1d45e95 Merge pull request #4130 from Malkierian/dev-to-rando-5-6
develop->dev-rando 5-7
2024-05-09 20:13:34 -05:00
Malkierian 1d5a54901b Add MSI to EnEx hook handler.
Resolve other review suggestions.
2024-05-09 09:45:13 -07:00
Pepper0ni ca803099cf Fix DistributeHints (#4145)
* fix stupid crash in DistributeHints

* replace some uint8s in loops with size
2024-05-09 07:22:39 -05:00
Malkierian baf41161d3 Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-to-rando-5-6 2024-05-08 22:28:29 -07:00
Archez 47b690fb1e Bump LUS and restore guMtx in collision viewer (#4137) 2024-05-09 01:26:58 -04:00
Malkierian f550bf1381 Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-to-rando-5-6 2024-05-08 21:36:25 -07:00
Archez cbeec006ec Fix syotes scene path to use shared (#4136) 2024-05-09 00:32:29 -04:00
Malkierian 3bcf178fcc Fix LUS ref. 2024-05-08 20:24:44 -07:00
Lywx 1231b8f9fa Fixed macos/ios errors (#4138) 2024-05-08 19:30:22 -04:00
briaguya 22c9d53985 bump lus (gfx debugger fix, stormlib optimizations) (#4135) 2024-05-08 11:23:43 -04:00
Kenix3 3c87c1ec98 Lus window bump (#4131) 2024-05-08 02:25:50 -04:00
briaguya 0976198f2c get soh working with latest lus (#4132) 2024-05-08 00:13:47 -04:00
Malkierian ee1f15523c Merge branch 'develop-rando' of github.com:Malkierian/Shipwright into dev-to-rando-5-6 2024-05-07 14:37:00 -07:00
Malkierian cfd93f160d Fix check tracker performance changes.
Move Mysterious Shuffle functionality to `hook_handlers.cpp` when applicable.
2024-05-07 13:07:33 -07:00
Pepper0ni 980b1f1a6e Fix an infinite loop in hints and better comment hint distribution (#4080) 2024-05-07 12:48:00 -05:00
Pepe20129 8e520e490c Spoiler name removal (#3814)
* Initial pass

* Rename "MK" to "Market"

* Remove more spoiler names

* Update location_list.cpp

* Replace vector with array

* Update location_list.cpp

* Re-run build

* Fix spacing
2024-05-07 08:29:17 -05:00
briaguya 52fad95a2c support lus thread_pool changes (#4127) 2024-05-06 22:08:11 -04:00
Malkierian d10b68516c Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-to-rando-5-6 2024-05-06 18:37:56 -07:00
Malkierian 8d3902a256 Remove unnecessary and redundant checks and references. (#4111)
Stop passing checksByArea to functions in the same namespace.
Only get value of `HideFilteredAreas` once per frame.
Gate area and check evaluations behind checks being visible and search filter size greater than 0.
Proper function capitalization.
2024-05-06 19:27:35 -05:00
Malkierian b3d51441eb Rando Enhancement: Mysterious Shuffled Items (#3227)
* Add rando enhancement "Mysterious Shuffled Items", which obfuscates shuffled freestanding/drawn-in-world items (PoH, tokens, shop items) with a custom question mark model (thanks Hato), and uses the "mysterious item" functionality of `GetMerchantMessage` for everything that supports it, regardless of hint status on generation.

* Reverted back to rando enhancement, but added condition for Mysterious Shuffle not being on for the gem rotation fix to apply.

* First attempt at changing to fake GetItemEntry instead of directly calling the mystery draw function. Needs more work.

* Updated CVar to reflect CVar rework values.

Added `IsCheckShuffled` as preliminary function for checking *only* if a check is shuffled, not necessarily if it is just visible on the tracker. This accounts for the difference between tokensanity and "Always Show GS On Tracker", where you don't want to obfuscate the latter.

* Bit of cleanup.

* Cross-platform building edits. If anyone has a better idea of how to handle this fake GIE, I'm all ears.

* Update to CVar macros.

* Fix freestanding item gives.
Fix mysterious item model colors.

* Fix bombchu bowling mystery.

* Remove bowling bomchus check obfuscation (unused, removed in v3).
2024-05-06 19:17:08 -05:00
Lywx f3b948226b Bump lus and fixed PatchGfx (#4125)
* Bump lus and fixed PatchGfx

* Bump libultraship to main
2024-05-06 19:19:15 -04:00
Malkierian 438dede792 Change "AnubixFix" back to "AnubisFix". (#4124) 2024-05-06 17:10:06 -05:00
Eric Hoey 27dd303a57 Limit crawl speed to modifier to 4 (#4113) 2024-05-06 19:10:22 +00:00
Pepper0ni d0627dc737 fix a V2 compatibility crash (#4119)
* Attempt to fix ambiguity issues and a V2 compatibility crash

* oops

* remove explicit call as it is fixed elsewhere
2024-05-06 19:10:00 +00:00
Garrett Cox a96fe678f8 Merge pull request #4118 from Malkierian/dev-to-rando-5-5
develop -> develop-rando 5-5
2024-05-06 14:09:41 -05:00
Archez a860a7ea39 Merge pull request #4122 from Archez/merge-macready-may6
Merge macready -> develop
2024-05-06 14:51:24 -04:00
Malkierian 89f119c566 Fix ambiguity. 2024-05-06 11:13:30 -07:00
Adam Bird 439574d0d9 Merge remote-tracking branch 'origin/develop' into merge-macready-may6 2024-05-06 12:22:48 -04:00
Malkierian f354460d04 Make it build. 2024-05-05 22:43:11 -07:00
Malkierian 69eebf0984 CVar cleanup. 2024-05-05 22:27:33 -07:00
Malkierian e2b0ea5692 Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-to-rando-5-5 2024-05-05 22:05:10 -07:00
Garrett Cox 4bd0f2d2c1 Port new hook filtering patterns from 2ship (#4117) 2024-05-05 16:55:56 -05:00
Garrett Cox b4a30f708f Change GI_VB_ to VB_ (#4116) 2024-05-05 16:29:02 -05:00
Garrett Cox 04f9ec1b78 Merge pull request #3755 from garrettjoecox/develop-rando-changes
Vanilla Behavior Overhaul
2024-05-05 15:12:43 -05:00
Garrett Cox 0c69ff17c2 Fix two minor issues from merge 2024-05-05 14:46:23 -05:00
Garrett Cox 0aad8d4491 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-05-05 14:38:39 -05:00
Malkierian 6443a986d9 Final Step of CVar macro/sectionalizing (#4107)
* p

* Missed the prefix renames.

* More missed ones.

* Mostly finished cleanup.
Removed a few CVars and some related functionality.

* Bit more (prepping non-existent title card color editing).

* Resolve gCrowdControl.

* Final cleanup.

* Universal constant, not acceleration...

* Preset CVars.
2024-05-05 14:14:55 -05:00
Christopher Leggett e71839ed8f Conversion of Nabooru Quick Death to VB hook (#120)
* Nabooru quick death conversion

* Fix brackets, not sure exactly how this was working before.
2024-05-04 16:50:19 -05:00
Archez de715da184 explicitly include unordered_map header (#122) 2024-05-04 16:49:36 -05:00
briaguya b6fc54ad8b support lus dr_libs removal (#4108) 2024-05-03 12:55:38 -04:00
briaguya e02e4ead02 support lus fetching stb (#4105) 2024-05-03 11:07:07 -04:00
briaguya 725670d998 support lus strhash64 change (#4102) 2024-05-02 14:43:52 -04:00
briaguya bcf5a0c307 support lus factories no longer being registered in RegisterGlobalResourceFactories (#4099) 2024-05-02 00:14:36 -04:00
briaguya 345cef9b78 detangle zapdutils (#4096) 2024-05-01 22:47:40 -04:00
Archez fd9cd9c5eb Fix: add workaround for boost versions >=1.84.0 (#4098) 2024-05-01 16:41:17 -04:00
Malkierian 715bf39d43 Incorporate LUS CMake CVar system (#4093)
* Incorporate LUS CMake CVar system.
Customize all LUS CMake CVars to align with plans for preset system.
Swap "gOverlayFont" usage back to LUS CVar macro.

* Change CMake sets to use the cache to allow for including LUS's file for the add_compile_defines and remove the duplication on SoH's side.

* Move SoH CMake CVars to `soh-cvars.cmake` for clarity.
2024-05-01 14:48:51 -04:00
briaguya 56fe449689 fetchcontent stormlib (#4095) 2024-05-01 12:53:33 -04:00
briaguya 7da6a5b604 vb deku stick cheat (#115)
* vb deku stick cheat

* it's the 21st now

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-04-30 22:36:26 -05:00
Christopher Leggett baaa00569d Adds Quick Boss Death checkbox and implements Phantom Ganon's quick death (#119)
* Adds Quick Boss Death checkbox and implements Phantom Ganon's quick death.

* Clarifies relocation comment.
2024-04-30 22:31:08 -05:00
briaguya 8480f37f77 fetch imgui (#4094) 2024-04-30 22:49:54 -04:00
briaguya c70e6d280a spdlog from package managers (#4088) 2024-04-30 18:50:06 -04:00
briaguya 4ecb76b117 tinyxml from package manager (#4073) 2024-04-30 01:19:02 -04:00
briaguya 8b3f1f1868 bump LUS, remove switch and wii u from CI (#4087) 2024-04-29 20:26:03 -04:00
Pepper0ni d69814ed95 Real time Hint Assembly, Hint object refactor, and expansion of CustomMessage (#4078)
* Hint text refactor WIP DOES NOT BUILD

* Update to show people DOES NOT BUILD

* stuck on wierd errors

* forgot to add

* expression error does not name a type

* commit in case anyone looks

* static assertion failed: T must be an integral type or an enum.

* fail without error, complaining about unrefernced things

* fix some issues, still linker bs

* restructure some trials, conditionalAlwaysHints and hint_list stuff

* builds and does not crash, but there's text issues

* fix text issues

* commit to push, halfway through trimming down log

* finish trimming spoiler logging

* post merge clean up

* plando mode seems to work, looking into song text wierdness

* push for debugging crash on HBA sign

* fix num and anju issues

* fix the damn sign

* Fix Windows build

Renames GetMessage to GetHintMessage (a different name could be chosen, but GetMessage conflicts with a macro in winuser.h)
Changes uint to size_t, uint does not seem to exist on Windows.

* fix biggoron

* remove some manual formatting that autoformat doesn't like

* fix some altar text

* fix more altar text

* last cleanup

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2024-04-29 09:41:33 -05:00
briaguya 552bb2886f support lus renamespacing (#4075) 2024-04-28 21:36:44 -04:00
Pepe20129 92467b87b5 Add scene command XML parsers (#4054)
* Add scene command parsers

* Move logging & add logging cvar

* Use new CVAR_DEVELOPER_TOOLS macro

* Update soh/soh/resource/logging/SceneCommandLoggers.h

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-04-28 20:58:12 -04:00
Malkierian 303fe7d906 Swap all cosmetics CVars to macros. (#4065)
Lots of renames.

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-04-26 02:41:55 +00:00
Malkierian 56d8dd6d8b All MenuBar enhancement CVars done. (#4064) 2024-04-26 00:31:28 +00:00
briaguya a4fb67745a nlohmann from package managers (#4071) 2024-04-25 13:55:16 -04:00
Garrett Cox 7e7445ebcc Merge pull request #118 from briaguya-ai/chu-bowling-dont-skip
don't skip item give animation in chu bowling
2024-04-24 20:53:23 -05:00
briaguya 1fff8fd6d5 don't skip item give animation in chu bowling 2024-04-24 21:48:31 -04:00
Garrett Cox ae3b21f45b Merge pull request #117 from briaguya-ai/latest-lus-main
latest lus main
2024-04-24 20:28:38 -05:00
briaguya b2041df311 latest lus main 2024-04-24 21:21:22 -04:00
briaguya d22dbd6933 move RawJson to LUS (#4063) 2024-04-24 21:21:01 -04:00
Christopher Leggett 65c5806333 Better fix for blank hint issue. (#4070) 2024-04-24 17:09:49 -04:00
Garrett Cox 7bde0f5289 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-23 11:31:39 -05:00
Garrett Cox c67d8f4baa Add missing RHT entries 2024-04-23 11:31:34 -05:00
Christopher Leggett 99fbecd951 Fix issue with item name replacement at runtime. (#4068) 2024-04-23 11:30:30 -05:00
Garrett Cox ee6e941681 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-23 09:53:08 -05:00
Christopher Leggett 39e6269731 Fixes bugs with spoiler file parsing (#4066)
* Fix bugs with spoiler file parsing

* Hopefully fix mac build issue

* fix typo
2024-04-23 10:26:59 -04:00
Garrett Cox 854e20680a Fix forest temple entrance cs skip 2024-04-23 09:17:57 -05:00
briaguya 3070fb4746 support lus gameoverlay changes (and bump LUS) (#4067) 2024-04-22 22:57:33 -04:00
Garrett Cox 5174a48be1 Point LUS to fork temporarily for dl fix 2024-04-22 19:16:58 -05:00
Garrett Cox 7e5854756e Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-22 12:53:43 -05:00
Pepe20129 6b831f9256 Fix swim softlock (#3965)
* Update mods.cpp

* Update mods.cpp
2024-04-22 12:44:59 -05:00
Pepe20129 b65a15028b Update z_horse.c (#4014) 2024-04-22 12:44:12 -05:00
Christopher Leggett 4c75fd14a7 Fix hint generation bugs on develop-rando (#4001)
* Fix hint generation bugs on develop-rando

1. Fixed Ganon Non-hint text from loading as Saria's Magic Hint.
2. Fixed Ganon Non-hint text from not getting saved correctly.
3. Fixed gossip stone hint generation from not generating any non-always hints on No Logic.

For #3, the hint distribution and placement algorithm was bailing out too early when it wasn't able
to place a hint. For No Logic, what it was doing was failing to place WOTH hints (since No Logic seeds
don't calculate WOTH candidacy), returning the amount of hints it failed to place, and then it called
the function to redistribute the hints, but did not call the function to attempt to place the remaining hints.

Additionally, it was not accounting for the fact that we shouldn't redistribute the hints into the categories we failed to
place a hint in, so it would redistribute hints right back into those categories. I changed it so that when DistributeHints
gets called after PlaceHints fails to place the hint, it checks if the distribution settings copies attribute was set to 0.
In this case, it breaks while looping for the type distribution settings, and moves on to the next category. Also, it now repeatedly
attempts to distribute and place hints until PlaceHints returns 0 (meaning it placed all of its hints successfully).

* Fixes some further seed-bleed type issues with hint generation.
2024-04-22 13:29:05 -04:00
Garrett Cox 3c6c46d95d Fix for some chests not appearing 2024-04-21 21:09:52 -05:00
briaguya 49f891f2e5 move RawJson to LUS (#4063) 2024-04-21 21:16:59 -04:00
Garrett Cox a554c1550d Fix shadow & spirit rewards, remove remaning usage of duplicate dungeon done flags 2024-04-21 18:53:15 -05:00
Malkierian 33aef87907 CVar Macro Cleanup (#4062)
* Standardized CVar macros to have `CVAR_` at the front instead of the end.
Removed excluded and replaced sequence macros.

* Missed a few developer CVars outside of `SohMenuBar.cpp`

* 1 more.
2024-04-21 10:25:06 -05:00
Garrett Cox 5813b37415 Migrate child stealth 2024-04-21 09:38:53 -05:00
Garrett Cox 14c7f0c3e1 More time cutscene skip fixes 2024-04-21 09:14:46 -05:00
Malkierian e2622af004 Step 3 of CVar macro/sectionalizing: Dev Tools, Cheats, Audio Editor, Remote (#4030)
* Swapped Audio Editor CVars.

* Swapped Cheat CVars.

* Swapped Developer Tools CVars. Also a couple General CVars.

* Added REMOTE_CVAR.
Swapped Remote CVars.

* Missed an include.
2024-04-20 18:56:32 +00:00
Malkierian 694a876a70 Step 2 of CVar macro/sectionalizing: Trackers/Windows (#3238)
* Add all macros.

Replace all randomizer seed setting CVars with appropriate macro.

Cleaned up non-gameplay-critical things that are part of Spock Race rando presets (like RTA timing, displaying timer, displaying the glitch lineup tick, or Fast File Select).

* Wrong slash...

* Fix DEVELOPER_CVAR macro.
Add GENERAL_CVAR macro.

* Change Item Tracker CVars, including open window CVar.

* Swapped open window CVars.

* Swapped Entrance Tracker CVars.

* Swapped Check Tracker CVars.
Changed Item Tracker "HudEditMode" to "Draggable".

* Renamed `RANDOMIZER_CVAR` to `RANDO_ENHANCEMENT_CVAR`.
Swapped rando enhancement CVars.

* Mirroring last commit from part 1 in randomizer.cpp

* Another mirror from pt 1
2024-04-20 18:34:02 +00:00
Ted Newman 16bf03a9bd Add console commands for randomizing sfx and cosmetic groups (#3962)
* Add console commands for randomizing sfx and cosmetic groups

* Update naming and use constexpr

* Update soh/soh/Enhancements/debugconsole.cpp

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-04-20 12:33:59 -04:00
briaguya 2accfc3c9b ci: bump macports version (#4039) 2024-04-20 11:31:05 -04:00
Archez e6798d9861 bump lus and create fb call (#4060) 2024-04-20 11:04:11 -04:00
Archez 067782fa91 clean up cmake configure files (#4002) 2024-04-20 11:03:41 -04:00
inspectredc d08d5a54c9 Fix Pause Warp Enhancement (#4036) 2024-04-20 11:01:16 -04:00
inspectredc 4a576f45ee Fix and Clean Up Swap Age Logic (#4061)
* Split and clean up swap age logic

* reorganise conditions into one statement
2024-04-20 10:43:35 -04:00
Malkierian b045689df1 Step 1 of CVar macro/sectionalizing: Randomizer Settings (#3206)
* Add all macros.

Replace all randomizer seed setting CVars with appropriate macro.

Cleaned up non-gameplay-critical things that are part of Spock Race rando presets (like RTA timing, displaying timer, displaying the glitch lineup tick, or Fast File Select).

* Wrong slash...

* Forgot "gManualSeedEntry".

* Renamed CVars from "Mq..." to "MQ...".
2024-04-20 09:29:19 -05:00
Jamie Klassen 2aa2092c27 filter randomizer checks in tracker (#4021)
* filter randomizer checks in tracker

Co-authored-by: Michael Stergianis <michael.stergianis@gmail.com>

* Adds an option to hide empty areas

Co-authored-by: Jamie Klassen <jamie@tenkeylabs.com>
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Removes extra whitespace

Co-authored-by: Jamie Klassen <jamie@tenkeylabs.com>
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Changes gCheckTrackerHideFilteredAreas to default to true

Refactors the for loop in shouldHideArea

Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Addresses PR feedback

* https://github.com/HarbourMasters/Shipwright/pull/4021#discussion_r1538377614
* https://github.com/HarbourMasters/Shipwright/pull/4021#discussion_r1538381310

Co-authored-by: Jamie Klassen <jamie@tenkeylabs.com>
Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Updates config variable to gTrackers.CheckTracker.HideFilteredAreas

Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

* Adds check visibility guard to shouldHideArea

Refactors rcObject to check in passesTextFilter

Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>

---------

Signed-off-by: Michael Stergianis <michael.stergianis@gmail.com>
Co-authored-by: Michael Stergianis <michael.stergianis@gmail.com>
2024-04-20 10:27:13 -04:00
Garrett Cox 28a2cc925e Merge pull request #114 from briaguya-ai/vb-tower-escape-no-new-should
vb tower escape
2024-04-20 09:23:14 -05:00
briaguya 3b0548f585 vb tower escape 2024-04-19 18:05:38 -04:00
Garrett Cox ab9932d1de Merge pull request #113 from briaguya-ai/treasure-chest-game-location-access
fix: add location access for treasure chest game items and gift from sages
2024-04-19 15:31:54 -05:00
briaguya d3beac7337 fix: gift from sages location access 2024-04-19 16:29:37 -04:00
briaguya ed0ef62c0c fix: add location access for treasure chest game items
vb treasure chest game added new RCs for the treasure chest game (now there are RCs for each of the 5 keys and each of the 5 non key chests), but the location area table only had the keys, this adds the items
2024-04-19 16:15:15 -04:00
Garrett Cox 0bde9f1fca Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-19 12:29:10 -05:00
Garrett Cox 43e8eec6bd Replace some printfs with spdlogs (#4058) 2024-04-19 12:28:38 -05:00
Garrett Cox 565a62a518 Merge pull request #4059 from Malkierian/dev-to-dev-rando-4-19
Dev to dev rando 4 19
2024-04-19 12:27:50 -05:00
Malkierian f4fc3662b6 dev -> dev-rando 2024-04-19 09:51:00 -07:00
briaguya 3e32d05173 macready -> dev 2024-04-19 11:27:05 -04:00
briaguya 2216b68111 fix: add include missed in merge conflict resolution 2024-04-19 11:06:52 -04:00
briaguya 9696f74b5c Merge branch 'develop-macready' into macready-to-dev 2024-04-19 09:57:29 -04:00
briaguya 32bf8cc53c fix wii u ci (#4056) 2024-04-19 09:42:41 -04:00
Malkierian 02f7310c16 Add keyring to check for placing Gerudo Fortess Keys in Any Dungeon or Overworld. (#4055) 2024-04-19 09:42:26 -04:00
inspectredc bfe13906e9 Make equip swap work on pause any cursor (#4052) 2024-04-19 09:42:12 -04:00
Amaro Martínez 32288be744 Save in-game language setting (#4026) 2024-04-19 09:41:55 -04:00
Malkierian 19be6e9b99 Trackers MQ Cleanup (#4009)
* Clean up grayed out items in file select.
Tie personal notes saving to `OnExitGame()` to account for save scum resets.
Hide text input box (but not window) for personal notes when a save isn't loaded to prevent saving over a save's notes while in file select.

* Allow check tracker window to be visible and show the "Waiting for file load..." text in file select (ease of positioning).

* Fix key label text placement.

* Persist `areasSpoiled`, change trigger to `OnSceneTransition`.
Add `IsAreaSpoiled` for tie-in to Item Tracker.
Add `SetAreaSpoiled` to unify bitmagic.

* Add proper spoiling evaluation based on specific entrance IDs, or first check collection.
Add light yellow color for vanilla dungeon abbreviations to match the purple for MQ.

* Initialize `areasSpoiled` to 0, so 0 gets saved on file create.

* All new conditional statements around `GameInteractor::IsSaveLoaded()` were inverted. Fixed that.

* Change some c-style casts to `static_cast`.

* Few more cleanups, plus clarifying comment.
2024-04-19 09:41:46 -04:00
Archez 0b8cc71d0d fix actor init flow with object loading (#3987) 2024-04-19 09:41:04 -04:00
Garrett Cox 6c384c3cb6 Finish glitch aiding cutscenes toggle 2024-04-18 21:52:38 -05:00
Garrett Cox abdbe25c8a Migrate purple poe faster fight 2024-04-18 21:36:10 -05:00
Garrett Cox 1683617210 Migrate rainbow bridge 2024-04-18 21:13:40 -05:00
Garrett Cox edf6d9334a Migrate ganon trials 2024-04-18 20:42:25 -05:00
briaguya 54b1505137 vb gerudo (#111)
* vb gerudo

* clean up
2024-04-17 20:17:00 -05:00
briaguya f6a583446b vb bombchu bowling (#110)
* vb bombchu bowling

* don't need it

* it's drawing the right thing but it's tiny

* scale

* no need to should, don't rescale every draw

* slightly safer
2024-04-17 19:49:29 -05:00
briaguya 84db4c8ab8 vb beehives (#109)
* vb beehives

* format
2024-04-16 20:02:16 -05:00
briaguya 60d74f720a vb richard (#108)
* Lost Dog + Custom Hook Handler

* vb richard

* fix the merge

---------

Co-authored-by: Taw <Tawling@users.noreply.github.com>
2024-04-16 19:28:20 -05:00
briaguya 63afaa3cc9 vb ocarina memory (#107)
* Ocarina Memory Game

* vb memory game

---------

Co-authored-by: Taw <Tawling@users.noreply.github.com>
2024-04-16 19:18:26 -05:00
inspectredc ced34ab68a [Fix] Disable Lod Applies To Everything (Macready) (#4034)
* make lod cvar affect everything

* add to more functions

* re-add to player

* only add to necessary funcs
2024-04-15 12:00:04 -04:00
briaguya f3273e7627 vb treasure chest game (#103) 2024-04-09 23:31:45 -05:00
briaguya bbbd2520b1 vb lh sun (#106)
* underwater working pre func_80B858B4 replacement

* underwater item update handled by hookhandlers

* vb lh sun

* remove unused should
2024-04-09 22:57:07 -05:00
briaguya fe231147d5 vb underwater item (#104)
* underwater working pre func_80B858B4 replacement

* underwater item update handled by hookhandlers

* remove commented out code

* remove unused should
2024-04-09 22:46:11 -05:00
Garrett Cox 36a462d667 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-08 11:03:50 -05:00
Garrett Cox 67ee5f8d0e Merge pull request #4045 from HarbourMasters/develop
develop -> develop-rando
2024-04-08 16:02:22 +00:00
briaguya 9c9fc49d32 vb horseback archery (#102)
* vb horseback archery

* Update soh/soh/Enhancements/randomizer/hook_handlers.cpp

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-04-08 10:59:48 -05:00
briaguya 6d77bbd4a9 vb skull rewards (#101) 2024-04-08 10:55:16 -05:00
inspectredc e163d5bc3d Fix switch puzzle locking issues (#4027) 2024-04-07 17:28:20 -04:00
briaguya 897d3efbd0 rip out unused types (#4041) 2024-04-07 17:02:57 -04:00
briaguya 168323ebc9 bump LUS (#4042) 2024-04-07 14:27:50 -04:00
Archez fd7dfd8b6f Support for new ucode loading patterns (#4038) 2024-04-04 12:26:14 -04:00
briaguya 307e106038 vb talon's chickens (#99) 2024-04-04 10:55:07 -05:00
briaguya 1e9cba1d61 vb diving game (#100) 2024-04-04 10:30:45 -05:00
briaguya 249490909f pull docs: talon function names (#98) 2024-04-04 10:26:48 -05:00
Archez 86c6013888 Remove macports upgrading (#4035) 2024-04-04 11:23:18 -04:00
Garrett Cox 325035e473 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-04-04 08:15:34 -05:00
Garrett Cox 01bcc4bb59 Merge pull request #4033 from HarbourMasters/develop
develop -> develop-rando
2024-04-04 13:13:58 +00:00
briaguya fb29c827ad Update BUILDING.md (#4029) 2024-04-03 22:17:32 -04:00
briaguya 0f43d5de2d bump lus (gfx refactor) (#4031) 2024-04-03 22:16:17 -04:00
briaguya 2339a729ee vb deku theater (#96) 2024-04-03 21:10:18 -05:00
briaguya d6c512904b vb target in woods (#95)
* do some target in woods VB stuff

* skip deku scrub hopping out animation

* replace a couple IS_RANDOs

* cleanup
2024-04-03 20:11:13 -05:00
briaguya 0334c4e354 pull in docs (#97)
* rename `func_8002DF54` to `Player_SetCsActionWithHaltedActors`
* rename `func_8002F434` to `Actor_OfferGetItem`
2024-04-03 20:07:42 -05:00
Christopher Leggett c162af818d Fix keysanity Any Dungeon setting. (#4020)
Due to a typo a few months ago, it was accidentally being ignored and
treated as Anywhere. Own Dungeon may have also been doing weird things,
but I'm not entirely sure.
2024-03-20 18:24:58 -04:00
Garrett Cox 8b3cfdb84f Merge pull request #3986 from Archez/merge-macready-805
Merge MacReady 8.0.5 -> Develop
2024-03-06 04:12:02 +00:00
briaguya ef690e2ceb support LUS::Archive::LoadFileRaw no longer being exposed (#3999) 2024-03-05 23:09:05 -05:00
briaguya 9fb2f26f1b tts: use RawJson resource + add SpeechLogger (#3998)
* moved `tts.cpp` away from using `LoadFileRaw` by creating a new `RawJson` resource type
* added `SpeechLogger`
2024-03-05 22:21:15 -05:00
briaguya 402a4db593 Bump LUS (#3996) 2024-03-04 23:56:26 -05:00
briaguya 375349e4f7 Support font as resource LUS changes (#3993) 2024-03-04 23:36:23 -05:00
briaguya ebde648c59 .o2r support (#3955) 2024-03-02 20:51:32 -05:00
Adam Bird 7bd2a7c3a6 Merge remote-tracking branch 'origin/develop' into merge-macready-805 2024-02-28 23:49:06 -05:00
Garrett Cox 612da023f0 Bump version to MacReady Foxtrot 8.0.5 (#3982) 2024-02-28 22:46:55 -05:00
Malkierian 368a9015ac Add Unix timestamp to renamed corrupted file to prevent trying to copy over existing file. (#3984) 2024-02-28 22:46:32 -05:00
Malkierian ed9cb1dfd2 Fix CVar evaluation for scummed checks being hidden. (#3985) 2024-02-28 22:45:16 -05:00
Archez fb6ea42560 prevent remember save location in dungeons/boss rooms (#3983) 2024-02-28 22:33:51 -05:00
Malkierian b26f2b21da [UX Improvement] Catch save loading errors and notify user (#3979)
* Add `SohModalWindow` and `SohModal`. Runs as window, always "visible", but not drawing if no popups are registered.

Adds error catching for save file corruption (malformed json) that renames the file in question to prevent future loading issues and uses `SohModalWindow` to inform the user of the error.

* Apply suggestions from code review

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-28 21:12:23 -06:00
Archez 358dd47da7 remove zapd extraction from mac launch script (#3981) 2024-02-28 21:03:08 -06:00
Malkierian ea1ffdd041 Adds messageboxes to no_ui handling so they don't show if you have it on. (#3977) 2024-02-28 20:04:44 -06:00
Garrett Cox 416ed84bc6 Migrate great fairy checks 2024-02-24 09:17:48 -06:00
Garrett Cox 09c967249f More 1PC skips 2024-02-23 14:06:27 -06:00
Garrett Cox 13a113c362 Various adjustments to goron related vanilla behavior hooks 2024-02-23 12:43:27 -06:00
Garrett Cox b293cac51c Enable timesaver enhancements by default on rando 2024-02-21 15:26:11 -06:00
Garrett Cox 2203f902a3 Merge branch 'develop-rando' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-changes 2024-02-21 14:43:37 -06:00
Garrett Cox 854fb67797 Merge pull request #3964 from Archez/rando-dev-merge-feb
Merge develop -> develop-rando
2024-02-21 20:05:32 +00:00
Garrett Cox 7bebe7a573 Migrate okarina_tag changes 2024-02-21 14:01:49 -06:00
Adam Bird b5c601f43e Merge remote-tracking branch 'origin/develop' into rando-dev-merge-feb 2024-02-21 02:01:25 -05:00
briaguya bcbe4cb1c3 we crash if we try to SPDLOG in the destructors (#3951)
* we crash if we try to SPDLOG in the destructors

* rip em out

* newline

* add to destroy

* Revert "rip em out"

This reverts commit 738a9b80f3.

* Revert "we crash if we try to SPDLOG in the destructors"

This reverts commit 327d305e00.
2024-02-21 00:21:26 -05:00
Archez cd25f1d3c1 Fix performance of dlist viewer (#3961) 2024-02-21 00:20:25 -05:00
Garrett Cox 37e89c0c7c Migrate song of storms check 2024-02-20 21:49:07 -06:00
Garrett Cox 72581f7482 Re-add some UI I accidentally removed 2024-02-20 21:04:16 -06:00
Garrett Cox 0dda3a6c29 More boss intro skips 2024-02-20 21:00:10 -06:00
Ted Newman 00b3581151 Skull Kid (#86)
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-20 20:15:10 -06:00
Garrett Cox d28257088b Merge pull request #85 from Tawling/vbo-man-on-roof
GI VB for Man On Roof
2024-02-21 02:12:53 +00:00
Garrett Cox 4c56583215 Merge pull request #90 from briaguya-ai/fix-the-torch
fix the torch
2024-02-21 02:11:07 +00:00
Adam Bird 8b178f9386 RandoV3 fixes for mix/decouple boss entrances 2024-02-20 16:52:42 -05:00
Adam Bird 37b960ab0e Merge commit '13fce8258d92e80ea09900f83d338ccba2e7b1f9' into rando-dev-merge-feb 2024-02-20 16:51:05 -05:00
Adam Bird 1d61ba0b86 Merge commit '3187564f5b4120e159f5e506b4a3db88716b56aa' into rando-dev-merge-feb 2024-02-20 10:57:39 -05:00
Archez cd5d2589f7 Merge pull request #3958 from HarbourMasters/develop-macready
macready -> develop
2024-02-20 10:32:28 -05:00
Archez ef9fc0a9ec fix endianess issue with camera setting data (#3950) 2024-02-20 08:38:10 -06:00
Archez 19af4481c0 fix object unload using wrong index (#3949) 2024-02-20 08:31:24 -06:00
briaguya 30ff3e9585 fix the torch 2024-02-16 02:03:22 -05:00
Archez d0b09743b9 Fix missing ImGui::EndDisabled (#3946) 2024-02-15 23:25:16 -05:00
Patrick12115 c484ea227b [Difficulty Options] Leever Spawn Rate (#3460)
* Spawn Rate

* Update z_en_reeba.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* gEnhancements

* Merging issues

* Added preset entry and changed timer value math

* Update soh/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c

* this should do it

* Update soh/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c

* move out of loop

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 22:12:09 -06:00
Patrick12115 4599212546 [Fixes] Fix Raised Floor Switches (#3851)
* Lower by 1

* gEnhancements.

* Update z_obj_switch.c

Co-authored-by: Archez <Archez@users.noreply.github.com>

* Moved to Hook

* Properly this time

* Added to presets

* Added a Return;

* Use Hex

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 22:02:58 -06:00
Garrett Cox a8d3724a53 Add missing cvars mostly that patrick forgot because he likes ranch dressing but also some that I missed oops (#3944) 2024-02-15 21:28:06 -06:00
Garrett Cox 10b6f8cf80 Merge pull request #3945 from HarbourMasters/develop-macready
macready -> develop
2024-02-15 21:21:18 -06:00
briaguya e0d502b696 resource refactory (#3926)
* animation

* playeranimation

* stop putting things in the LUS namespace from SoH

* get all the factories out of the namespace

* LUS::

* start on scene command stuff

* i think that's the rest of scene

* reduce copypasta

* collision header

* skeleton

* skeletonlimb

* fix

* path

* cutscene

* text

* audio sample

* sound font

* audiosequence

* background

* Revert "stop putting things in the LUS namespace from SoH"

This reverts commit 0ead6056e6.

* namespace shanans

* wrap all factories in namespace soh

* it's trying to link now

* lus

* scene command override etc

* fix audio loading

* slightly less logspam

* get past the cutscene problem

* in game!

* exporter cleanup

* more exporter cleanup

* clang formatted lus

* msvc

* itny lus change

* variant

* formatty

* fix of some sort i guess?

* use latest lus main

* fix name to enum/factory mapping

* otrexporter
2024-02-15 21:06:52 -06:00
Miles Acquaviva 7f4fc8dc4a Abstracted repeated code into functions (#3116)
* Abstracted repeated code into functions

* Apply suggestions from code review

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-02-15 21:03:19 -06:00
Patrick12115 db57581d6f [Cosmetics] Add Vanilla GS DL for Cosmetics Editor (#3937)
* Add Vanilla DL

* Fixed egregious spacing error
2024-02-15 20:51:23 -06:00
Pepe20129 8525f71c57 Colored Compasses (#3883)
* Colored Compasses

* Rename cvar & add explicit rando check
2024-02-15 20:50:17 -06:00
Pepper0ni a7726653e5 Add Big Skulltula logic to adult kokiri forest and fix a small bug in forest temple logic (#3938)
* Add Big Skulltula logic to adult kokiri forest and fix a small bug in forest temple logic

* fix spelling
2024-02-15 20:49:45 -06:00
Pepe20129 7319e4db57 More player documentation from decomp (#3819)
* FallImpactInfo & AnimSfx stuff

* IA function naming & Player_UseItem

* ActionChange

* Speed modes

* Fix build

* Misc cleanup

* Name Player_Action funcs

* PlayerAgeProperties

* Most of the Player struct

* Update z_player.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 20:44:46 -06:00
Malkierian 30a063b75d [Tweak] Move Personal Notes to Save File (#3909)
* Moves personal notes to the save file under a new itemTracker save section.

* Update soh/soh/Enhancements/randomizer/randomizer_item_tracker.cpp

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-02-15 20:44:40 -06:00
DeusVexus 4797c9ad35 Adds the Keese and Guay don't target you cheat (#3267)
* Adds the Keese and Guay don't target you cheat
that makes keese and guay ignore you as if
you are wearing the skull mask

* changed instances of CVar_GetS32 to CVarGetInteger
added the cvar to presets.h

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 20:29:09 -06:00
inspectredc 457a75e9f8 More Sword Toggle Options (#3889)
* Sword Unequipping Toggle

* better macro

* less ugly format

* cvar prefix

* Update soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c

* Update soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-15 20:15:44 -06:00
briaguya 1bc15d5bf3 document dependencies per distro (#3933)
* start on arch

* noconfirm

* git

* noconfirm

* just skip cache

* cmake

* ninja

* gcc

* lsb

* sdl2

* png

* sdl net

* boost

* imagemagick and add opensuse

* non interactive

* git

* cmake

* add a bunch

* things

* more

* try to matrix

* soh otr i guess

* needs

* trying to figure out how matrix include works

* make the matrix?

* matrix debug

* install?

* echo?

* yuck

* cannot locate package false

* parens for good measure

* lsb

* libsdl2

* suse

* i forgot opensuse uses gcc-c++ instead of g++ for the package name

* png

* sdl

* more

* suse packages....

* fedora cmake

* 2?

* png

* handle old sdl2 net

* apt

* not sure if this is a problem for both clang and gcc on opensuse or just clang

* devel

* cmake min version

* def don't want this here but it's here for now

* does this do anything

* mantic because cmake version

* libopengl?

* fedora ninja

* fedora g++

* lsb

* fedora sdl

* libpng

* do a build

* clang fix

* give early returns values

* ImageMagick

* Update BUILDING.md

* something

* plain boost instead of devel?

* not packing so we don't need this part

* base?

* don't have it can't need it

* just use boost download on opensuse i guess

* move workflow

* bring back the file

* lus main?

* detach
2024-02-15 20:13:49 -06:00
Garrett Cox e05f558ef3 Fix issue with bombchus always showing as major (#3303) 2024-02-15 20:12:19 -06:00
Garrett Cox a84227cbbb Support hook unregistration (#3538) 2024-02-15 20:08:31 -06:00
Pepper0ni cf6101f4da Logic bug: child cannot climb forest temple to the straight hallway either (#3934) 2024-02-15 20:03:58 -06:00
Ted Newman bdfcf39e56 Add a link to ship.equipment to the CRC error message box during extraction (#3939)
* Add a link to ship.equipment to the CRC error message box during extraction

* Improve message and add to ShowCrcErrorBox

* Change 'known good roms' to 'known compatible roms'
2024-02-15 19:55:01 -06:00
Archez 3d3b8bfc5b Allow IsSaveLoaded to consider debug saves (#3929) 2024-02-15 19:54:35 -06:00
Malkierian 0cb4cd158a Adds reset function to z_en_si (GS Token) to set getItemId to vanilla after resetting SoH. (#3925) 2024-02-15 19:53:18 -06:00
Ted Newman bbac8f8da4 [Fixes] Fix for Zora hint dialogue condition with an inverted flag check (#3920)
* [Fixes] Fix for Zora hint dialogue condition with an inverted flag check

* Base dialogue off of ruto's letter flag

* simplify condition
2024-02-15 19:52:46 -06:00
briaguya 43fed2d77e ci: pin switch docker image to known working version (#3917) 2024-02-15 19:51:31 -06:00
Malkierian 11a0a00633 Add CVarClear to appropriate sections of randomizer Locations and Tricks tabs to get around issue with saving blank CVar strings. (#3916) 2024-02-15 19:50:31 -06:00
mckinlee 2c5cb58ef6 Rename func_80853148 to Player_StartTalking (#3915)
-In PR #3498 I renamed this function for clarity and decided to make a
quick seperate PR for this change.
2024-02-15 19:49:56 -06:00
Tina H. (sheepytina) 7ccc816772 Cosmetics Editor fixes for icons in z_message_PAL.c (#3914)
* Fix resetting button icon colours in message boxes.

* Fix type/math error for custom color in textbox icon pulsing.

* Fix type error for custom color in ocarina icon pulsing.

* Make custom env colour math more closely match vanilla equivalents.

* Make comments presentable.
2024-02-15 19:49:13 -06:00
Tina H. (sheepytina) eeb6c7faaa Fix Cosmetics Editor getting stuck on weapon trails (#3913)
* Partially fix cosmetics editor getting stuck on sword trails.

* No reason for "reset" to be static.

* bombchu
2024-02-15 19:47:13 -06:00
Ted Newman e68b281b18 [Enhancement] Preserve minimap toggle state between areas (#3906)
* Add enhancement to preserve minimap toggle state between areas

* add map toggle enhancement to presets
2024-02-15 19:39:24 -06:00
inspectredc 107a365b71 Add safety measure to Scene_CommandObjectList to prevent crash (#3904)
* dont let k overflow

* Update soh/soh/z_scene_otr.cpp

Co-authored-by: Archez <Archez@users.noreply.github.com>

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-02-15 19:38:54 -06:00
Josh Bodner a7b8c1dbca Fix neck slider (#3902) 2024-02-15 19:38:28 -06:00
Garrett Cox f7e746e295 Tweaks to coloridoscope (#3901) 2024-02-15 19:37:55 -06:00
Ted Newman db958ab3f4 New input viewer (#3890)
* Move input viewer into SoH

* Remove unnecessary comments

* Update button outline mode to match default viewer

* Fix ambiguous call

* CVar name changes and minor fixes

* Two more cvars

* Separate C-buttons into individual toggles

* Account for text height regardless of scale

* A few extra comments

* Use new LoadTextureFromRawImage to load layer textures
2024-02-15 19:37:19 -06:00
Pepe20129 7cdd33a01d Better ammo rendering (#3844)
* Better ammo rendering

* Update soh/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c

Co-authored-by: Archez <Archez@users.noreply.github.com>

* Update z_kaleido_scope_PAL.c

* Rename gBetterAmmoRendering to gEnhancements.BetterAmmoRendering

---------

Co-authored-by: Archez <Archez@users.noreply.github.com>
2024-02-15 19:32:17 -06:00
Patrick12115 c1365b3263 [Time Savers] Shops and Games always open (#3789)
* Shops and Games always open

* Added comment  for scene reload requirement

* Prefix

* Spacing

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* I'm bad at merging

* Refined by Archez

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-02-15 19:27:26 -06:00
Giantblargg 458970816f Fix Check Tracker Vanilla/MQ Dungeon Spoilers (#3723)
* Fix Dungeon Spoilers

* Update soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp

* Update soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-15 19:26:27 -06:00
Christopher Leggett 3514954ad1 Adds Message Viewer Window to Developer Tools (#3486)
* Adds a MessageViewer window to Developer Tools.

* Properly destroys message viewer window.

* Adds missing ImGui::End()

* Fixes an oopsie crashing non-windows builds after first run.

* Adds C ABI for displaying a custom message

* Fixes a crash and an issue with messages with SFX.

* Remove some osSyncPrintf's that aren't very useful for this case.
2024-02-15 19:23:12 -06:00
Pepper0ni 0932e1e504 Make the final Magic Bean cost 99 rupees in randomiser when it is not shuffled (#3392)
* Make rando final eban cost 99 and clean up Text IDs

* Remove Text ID changes

* Add french translation, All credit to Purple hato

Co-authored-by: Purple Hato <linkvssangoku.jr@gmail.com>

---------

Co-authored-by: Purple Hato <linkvssangoku.jr@gmail.com>
2024-02-15 19:20:12 -06:00
inspectredc 46aea3aa7c Player State Docs (#3280)
* state flags 1

* state flags 2

* state flags 3

* fill array
2024-02-15 19:17:28 -06:00
Spodi 460ec1bb03 Use manifest for windows DPI awareness (#3270) 2024-02-15 19:17:03 -06:00
Archez 13fce8258d [Rando] Add Mix and Decouple support to Boss Entrances (#3261)
* initial support for mixing boss entrances in the mixed pool

* support decouple for boss entrances

* missed decouple change

* add blue warp exits to boss rooms in location access

* add entrance get helper methods

* fix assumed targets not using root in entrance name

* add dedicated blue warp entrances and handle blue warp changes during generation

* change bluewarp handling in game to use unique blue warp entrances

* handle blue warps in entrance tracker

* fix overriding all jabu and water temple rooms

* fix grotto returns when exiting boss rooms/dungeons

* fix blue warp logic by tracking original connected region key

* use entrance enums

* remove unneeded entrance values

* fix decouple generation crash

* fix jabu mq backwards logic
2024-02-15 19:14:24 -06:00
mckinlee 3187564f5b Pause Warp Enhancement (#3223)
* Pause Warp Enhancement

This commit introduces the PauseWarp mod, a feature that allows players to warp to different locations in the game directly from the pause menu.

- Add PauseWarpState structure to manage flags and cooldowns for the pause warp feature.
- Implement IsStateValid function for state validation.
- Implement ResetStateFlags function to reset all state flags to default values.
- Add InitiateWarp function to handle the initiation of warp sequences.
- Implement HandleWarpConfirmation function to confirm and execute warp actions.
- Implement HandleCooldowns function to manage various cooldown timers.
- Add PauseWarp_Main function as the main logic, called every frame to handle pause warp functionality.
- Map warp song messages to in-game text messages.

* Warp Song Check

-Now if you do not have a warp song you won't be able to select the empty slot and still teleport.

* Added Audio Fanfares and Changed stateFlag1 to PLAYER_STATE1_IN_CUTSCENE

-When selecting a warp song the audio for the applicable warp song will now play for a extra vanilla feel.
-Changed the stateFlag1 because previously it just disabled input allowing enemies to harm you. Now that won't happen because the game is put into a cutscene state.

* Feedback Update

-A new hook was created 'OnPauseMenu' so now PauseWarp_Main is only called when the pause menu is open
-Moved pauswarp.c to the Enhancements folder
-Removed from graph.c

PR Change:
Changing to the main branch instead of sulu

* Feedback Update #2

-Introduced new function 'PauseWarp_Idle' now that 'PauseWarp_Main' is no longer called every frame
-Added C wrapper to access 'GameInteractor::IsSaveLoaded' and scrapped the 'IsStateValid' function
-Added 'PauseWarp_Idle' to the the 'RegisterPauseWarp' function
-Refactored the code some

* Linux Compile Issue

-Added a missing header that was causing a compile issue for linux
-Hopefully, it won't crash

* Minor Bug Fix

-Now link won't get soft locked when warping to the same location twice

* Update libultraship

* Revert "Update libultraship"

This reverts commit 746fc23479.

* Bug Fix
-Added more checks to ensure vanilla behavior when a Ocarina is not in the players inventory.

* WIP

* Done unless I'm missing headers

* now we done

* clean up, these arn't needed anymore

* Rename OnPauseMenu to OnKaleidoUpdate
2024-02-15 19:13:54 -06:00
Archez c1eb0a8970 Bump latest LUS and Fix ship menu bar icon (#3935)
* fix ship menu bar icon

* update cmake in wiiu/switch

* different cmake install

* wrong arch
2024-02-13 19:55:33 -06:00
Taw ceb5b740b5 fix include 2024-02-12 14:26:10 -08:00
Taw 4e5b92fdf3 Man On Roof 2024-02-12 08:26:36 -08:00
Garrett Cox e433cce799 Merge pull request #83 from Tawling/vbo-shooting-gallery
GameInteractor hooks for adult and child shooting gallery
2024-02-12 01:14:35 -06:00
Taw bea3c6dae0 GameInteractor hooks for adult and child shooting gallery 2024-02-09 14:17:17 -08:00
briaguya 8a14fea94c support LUS archivemanager refactor (#3912) 2024-02-08 20:28:02 -05:00
Garrett Cox 596ea5ebbb Vanilla Behavior Overhaul
Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2024-02-02 15:39:01 -06:00
Garrett Cox fe9dcf1fc3 Merge pull request #3900 from garrettjoecox/develop-rando-merge
Develop -> Develop-rando
2024-02-02 10:45:56 -06:00
Garrett Cox 04c106d8f7 Merge branch 'develop' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-merge 2024-02-02 10:20:54 -06:00
Ted Newman be8dcfda05 Fix Internal Resolution format to use %.1f instead of %d (#3899) 2024-02-02 07:38:24 -06:00
Garrett Cox 83da5ee677 Moar caching (#3896) 2024-02-02 00:22:44 -06:00
aMannus 7cd2019ef6 Fix starting skulltulas (#3876) 2024-02-01 23:56:35 -06:00
Garrett Cox 8cac9b4264 Merge pull request #3897 from briaguya-ai/macready-to-dev-2-2
macready -> dev (2024/2/2)
2024-02-01 23:45:44 -06:00
briaguya a9d57a95ec Merge branch 'develop-macready' into macready-to-dev-2-2 2024-02-02 00:19:13 -05:00
briaguya 41c2933619 sccache for windows builds (#3385)
* cache vcpkg on windows ci

* try sccache as variant

* missed a spot

* see if we're checking here

* does this do it?

* trying to make minimal changes and have this work

* hopefully these z7s do something

* we were almost at the max already bump to double

* Apply suggestions from code review

* sc

* latest from soh-macready branch of otrexporter
2024-02-01 23:11:31 -06:00
briaguya aff9f40933 gc controllers via sdl on linux (#3869)
* try gc via sdl

basing this idea on this comment https://github.com/Ryujinx/Ryujinx/issues/2425#issuecomment-1269658650

* libusb?

* fix

* use latest lus main

* don't bump lus yet
2024-02-01 22:55:53 -06:00
Patrick12115 f88343839e Item Tracker Text Size Slider (#3856)
* Adds Slider and Functionality

* prefix

* Changed values

* HELLO

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 22:47:55 -06:00
Pepe20129 961b2626ad Merge controller menus (#3860)
* Merge controller menus

* Re-run Build

* Update SohInputEditorWindow.h

* Update soh/soh/Enhancements/controls/SohInputEditorWindow.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* pin switch devkit docker image

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-01 22:10:46 -06:00
Patrick12115 775d3e68b7 [Graphics] Show Equipment Regardless of Age (#3830)
* Hookshot, Hammer, & Boomerang

* Added the remainder of equipment and DL Patching for hands

* Removed Mirror Shield Patch

Messed with the front texture of shield

* Child Hylian Shield Cheat

Adds a cheat that allows Child Link to hold Hylian Shield as adult. Added to this since it uses the same way to render the shield

* Debugging

* Adds Scaling to Child Link with Adult Equipment

* Fix Merge Conflict Blunders

* More cleanup

* Added Scaling checkbox and some clean up

* Added an || ITEM_NONE

* More cleanup and simplification

* Accidently added spacer

* Replace B_BTN_ITEM

* Spacing

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Added most sheath functionality

* Updated tooltips

* removed child hylian shield and tweaked bow/slingshot

Made child hylian shield cheat into a separate branch and hooked into existing bow/slingshot enhancement for drawing those

* Prefixes

* ()

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 21:11:49 -06:00
Tina H. (sheepytina) a6457599f9 Clarify descriptions of Graphics Settings (#3881)
* Rewrite tooltips: Internal Resolution, Anti-Aliasing.

+ Tweak others.

* MSAA slider will display 1x as Off.

* Rename setting and tweak tooltips: FPS (to Framerate)

+ Code style formatting.

* Add tooltip: Texture Filtering. + Small tooltip changes.

+ Tidy up comments/newlines.

* Add internal resolution advisory for Apple users.

(Because this setting being missing keeps getting reported as a bug.)

* Small text tweaks.

* Code review suggestion

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>

* Missed one of the buttons + correct spelling of "frame rate"

---------

Co-authored-by: inspectredc <78732756+inspectredc@users.noreply.github.com>
2024-02-01 20:52:53 -06:00
skyyoshi86 351a511dc7 Cosmetics Editor entry for Ivan the Fairy (#3718)
* First commit

* Reverted MODDING.md

Reverted a correction to MODDING.md (case-sensitive broken link?) as this is not a change related to this PR

* Delete CMakeSettings.json

Deleted CMakeSettings.json as this is not a change related to this PR.

* checks for cosmetic changes ONCE for both body and sparles

Please review carefully. I made these changes blindly as I figure out why I can't compile it in my machine anymore. Sorry!

* correctly updates OUTER color when it's changed in Cosmetics Editor

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/soh/Enhancements/cosmetics/CosmeticsEditor.cpp

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/src/overlays/actors/ovl_En_Partner/z_en_partner.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-01 20:44:16 -06:00
Garrett Cox ddf0392100 Add gShowDoorLocksOnBothSides (#3787)
* Add gShowDoorLocksOnBothSides

* Update soh/src/overlays/actors/ovl_En_Door/z_en_door.c

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-01 20:43:45 -06:00
Patrick12115 c49908caa6 Item Tracker Hookshot/Longshot Identifiers (#3848)
* H & L

Adds an H and L for Hookshot and Longshot to be able to tell more clearly which one you have.

* Added Toggle and Refined

Adds a toggle if players don't want it on. Also scales the letter to stay constant with the icons, both size and position. Also now hides the letter if you don't have a hookshot yet.

* Clean up some of the comments

* prefix
2024-02-01 20:30:48 -06:00
Chris 81eb6de42e Audio Editor UI Improvements and Scene Init Randomization (#3388)
* Audio Editor UI Improvements and Scene Init Randomization

* Update soh/soh/Enhancements/audio/AudioEditor.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

* Update soh/soh/Enhancements/audio/AudioEditor.cpp

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2024-02-01 20:20:35 -06:00
Eric Hoey f7bd626162 change default value + scale offset by icon size appropriately (#3861) 2024-02-01 20:15:25 -06:00
Josh Bodner f8b0e586bb Fix +/- buttons on float sliders not working at certain values (#3865) 2024-02-01 20:14:17 -06:00
Patrick12115 ed85a1b0e2 [Time Saver] Reset Navi Timer (#3818)
* Reset Navi Timer

* Force Rebuild

* Prefix
2024-02-01 20:12:28 -06:00
Chris 270d0b836e Randomize cosmetics on new scene (#3342)
* Randomize cosmetics on new scene

* Code review feedback

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 20:10:49 -06:00
aMannus e4948d9ce4 Triforce Hunt GI Model Blender source files (#3478)
* Triforce Hunt GI model source files

* Move assets to different path
2024-02-01 20:01:38 -06:00
louist103 4bdb5098b0 Colors 1 (#3463) 2024-02-01 20:01:18 -06:00
Rozelette bb1078e99c Account for removed object dependency in Deku Scrub Leader (#3878)
* Account for removed object dependency in Deku Scrub Leader

* Update soh/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 19:58:22 -06:00
inspectredc 2529dc59bd Increase Door Cull range (#3888)
* cullzone

* better cvar name

* Update soh/src/code/z_actor.c

* Update soh/src/code/z_actor.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 19:58:08 -06:00
Caladius 695ab6c6ee Hurt Container Mode (#3336)
* Each Heart Container or full Heart Piece reduces Links hearts by 1

* Based on Briaguya's suggested Code but modified slightly as some parts were missing.

* Static Bool

* The episode without Captain Hook's Hook

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 19:57:12 -06:00
Eric Hoey be948339b9 Lost Woods Ocarina Game Difficulty Options (#3371)
* Menu options, note speed, unlimited playback time

* Instant win

* Add custom ocarina game cvar to all options and presets

* Extra spaces

* Add starting note count, ending note count by round, more presets

* Block out vanilla code + comments

* finish blocking out vanilla code

* new documentation formatting

* add starting notes to randomizer preset
2024-02-01 19:52:10 -06:00
Eric Hoey 7ff46ba1a7 Increase Crawl Speed (#3366)
* Increase animation speeds, crawl speed, add magic numbers for camera timer, add to menu and presets

* Remove extra space, reformat comments

* Initialilze CVar at 0, Initialize default timer, set default case for timer, change all CVarGets to 1, reorg logic

* Fix remaining CVars + unify logic

* block out vanilla code + comments

* new documentation formatting

* Simplify camera swing fix

* Remove redundant multiplication

* Update soh/src/code/z_onepointdemo.c

reduce code duplication

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2024-02-01 19:38:54 -06:00
Eric Hoey 4d5adbc80f Fisherman asks for fishing rod when leaving (#3347)
* CVar, presets, custom message, fishing actor

* Add placeholder translations for French/German

* Fix for MS Shuffle change

* Rename function to match

* Missing comma in presets

* Change description, CVar name, add'l function name, edit custom message

* Actual whitespace fix

* re-order custom message

* Fix message formatting

* Add enhancement comments

* yeet if (play) {} from enhancement

* new documentation format
2024-02-01 19:36:57 -06:00
Eric Hoey d9310e4543 Swim Speed Modifiers (#3308)
* Add CVars for swimming, apply to swim speed calc

* Prevent modifer from working underwater

* Re-enable swim speed mod when underwater, use new (orig) function for y-velocity while diving

* Add to presets list

* Fix spacing

* block out vanilla + comments

* re-org vanilla code block in a sane way

* new documentation format

* rename Surface function + comment for usage

* handle merge conflicts, but like an adult this time
2024-02-01 19:32:50 -06:00
Malkierian 61cf2bd323 No Magic Numbers for Preset Location Exclusions (#3801)
* Adds `FormatLocations` and `PRESET_ENTRY_TYPE_CPP_STRING` to allow for feeding `RandomizerCheck` values directly in presets instead of a string with magic numbers.

* Switch to concatenation with `std::to_string`.

* Forgot to remove <format> include XD
2024-02-01 19:29:24 -06:00
Malkierian 16ee20c2a8 Renames Freecam to Free Look. (#3771)
Adds helper info for invert, distance, and transition speed options.
2024-02-01 19:26:36 -06:00
Archez 7ef6a434f9 fix timestamp truncation (#3874) 2024-02-01 19:25:57 -06:00
Malkierian e3825ec263 Unify defaults for reward count sliders with Greg As Reward so they need to register changes. (#3875) 2024-02-01 19:23:06 -06:00
Pepper0ni cb82e77e40 fix bombchu logic bugs (#3720) 2024-02-01 19:15:13 -06:00
Archez a19056cd3d Merge pull request #3894 from Archez/mergeDevelopMacreadyJan31
Merge develop-macready -> develop
2024-02-01 10:56:45 -05:00
Adam Bird 5db4ce0b53 Merge remote-tracking branch 'origin/develop-macready' into mergeDevelopMacreadyJan31 2024-01-31 18:12:06 -05:00
Ted Newman 3e91d5565a Fix disabled icon for Easy Input Buffering checkbox when Easy Frame Advancing is enabled (#3859) 2024-01-15 19:46:36 -05:00
Archez 63cf3610e5 Fix: Move Ruto earring fix to graphic patch and fix Ganon fight rubble DL reference (#3810)
* move ruto earing fix to real patch

* use stringpath for ganon rubble
2024-01-15 10:31:33 -06:00
inspectredc dd5d8088f6 Revert actor uncullZone related checks back to match decomp (#3828) 2024-01-15 10:31:06 -06:00
Archez 1da1b1a2bb Tweak: Improve pause menu dungeon map performance (#3773)
* add map palettes per pulse to leverage shader caching

* use unregister blended with kaleido maps

* use Gfx_TextureCacheDelete for KD lava

* bump lus

* add miss tex clears for KD
2024-01-15 09:39:54 -06:00
Pepe20129 db2ccd95b7 Add Collision Header XML parser (#3396)
* Add Collision Header XML parser

* Update CollisionHeaderFactory.cpp

* Remove "Num" attributes

* Fix crashes

Prevent crash when the camera setting is negative
Change some IntAttributes to UnsignedAttributes
2024-01-15 09:33:21 -06:00
inspectredc db02870a05 Restore Original Scene Command Object List Behaviour (MacReady) (#3827)
* Restore Original Scene_CommandObjectList Behaviour

* remove some vrom stuff

* add some comments
2024-01-15 09:30:20 -06:00
Tina H. (sheepytina) ecdf74161b Add a tooltip to "Restore old Gold Skulltula cutscene" enhancement. (#3849) 2024-01-15 09:28:59 -06:00
Malkierian 861bd09848 Adds a log statement to show the SoH version at startup, in case crashes don't produce a stack trace from which to glean that information. (#3786) 2024-01-15 09:26:19 -06:00
Archez 8426cc93e5 Fix: Tektite texture not loading for death animation (#3808)
* fix tektite death texture loading

* add string header
2024-01-15 09:25:57 -06:00
Patrick12115 31623a93ab Remove OpenMenu Bar Check (#3817)
Having it set to just -6 makes the Glitch Tick stay in the same spot in game. when the F1 menu bar is open. At least on Windows
2024-01-15 09:24:57 -06:00
Amaro Martínez bfe2f58feb Custom message loading (#3713)
* Add custom text message loading

* Use "override" folder for text mods

* Replace only existing messages

* Use std::find_if to check for existing messages
2024-01-15 09:24:08 -06:00
Josh Bodner 01529126ba Imgui polish (#3481)
* Rearrange menus for better layout on smaller screens.

* Automatically calculate +/- increments for float sliders

* Add needed header

* Use stringstream instead of format since apparently most platforms don't actually support all of c++20 yet boooooo

* Add header that only Mac complained about for some reason

* Theoretical performance improvement

* Actual performance improvement
2024-01-15 09:22:56 -06:00
Pepe20129 22b9284240 Rando: Shuffle Swim (Rando V3) (#3795)
* Shuffle Swim

* Fix build
2024-01-15 09:20:57 -06:00
Pepe20129 ab3e9a7e54 Rando: Shuffle Child's Wallet (Rando V3) (#3794)
* Shuffle Child's Wallet

* Add support for "More info in file select"

* Fix build

* Fix build

* Update randomizer.cpp

* Update locacc_hyrule_field.cpp
2024-01-14 14:55:03 -05:00
Pepe20129 080038c39e Rando: Shuffle Beehives (Rando V3) (#3763)
* Shuffle Beehives

* Address review

* Fix build
2024-01-14 12:16:32 -06:00
Jordan Gilbreath 4cbf3a5621 Fishsanity - Rando v3 (#3738)
* Update z_fishing documentation from decomp

* undo sCameraAt/Eye rename

* forgot to include these defines Heehee

* adding enums, settings

* adding more stuff back in

* more work

* we're literally typing words into computer

* include unordered map

maybe this fixes mac build idk

* wahoo

* hmm

* add make sure disabled flag gets popped

* poggers in the chat?

* doing some refactoring

* fixing build

* documentation, moving fishsanity instance to rando

* move FS back to context, fixing build, mod progress

since FS is needed during rando generation & provides perpetual info abt. fishsanity in the seed, seems to make more sense if it lives on the context

* moving some stuff around

* it's starting to get real in here

* ELIMINATE FISHSANITYMETA

* IT WROKS

* Update trackers, fix pond fish flagging

* ZD fish shuffle initial checkpoint

* ZD fish "working"

aside from the crashing

* wrapping up

* fix for partial pond shuffle

* remove misc. unrelated debugconsole modification

* updating GI model

* get build working

* add a todo for this

* removeoopsie

* Rework hints a bit

* update hint loc

* Use visual indicator instead of despawning caught fish

---------

Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2024-01-14 11:02:23 -06:00
Pepper0ni eb5f7688f8 Add more static hints (#3543)
* WIP biggoron and big poes hint

* commit v0 of biggoron and big poes hints

* adjust for settings update

* Add more hints

* Finish extra Basic Static Hints

* remove vestigial code

* Forgot to remove this

* try to fix windows build

* fix build post conflcit res

* remove StaticHintData as redundent

* last cleanup
2024-01-10 09:44:11 -06:00
Christopher Leggett a196dd6b7e Streamline hint generation (#3401)
* reimplement 3drando's hashtag color replacement system.

Also generates merchant text at seed gen time instead of runtime.
By merchants, I mean Bean Salesman, Medigoron, Granny, and Wasteland
Bombchu guy. Scrubs and shops are still dynamic at runtime.

* Improved auto-formatting and fixed altar text.

* Gets hint text for spoiler direct from context.

* Removal of now unused code.

* Change warp song hint generation/retrieval

Generates full warp location text instead of just location names and stores all six in the custom message tables for later retrieval as opposed to dynamically swapping in the location names every time the text is rendered.

* Change Frog Ocarina Game Hint generation/retrieval

Similar to previous changes, removes the on-the-fly generation aspect of it and just generates the full hint text once during seed generation.

* Update soh/soh/Enhancements/randomizer/3drando/text.hpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Fix submodules appearing as changed files.

* Fix WOTH/Foolish colors to match develop-macready.

* Fixes backwards colors for area and item in some hints.

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-01-08 14:41:33 -05:00
Amaro Martínez 21796367a0 Use temporary mirror for Boost download URL (#3822) 2024-01-08 12:39:49 -06:00
Eric Hoey a0258f0fca Add Invert Y-Axis and Apply Right-Stick Aiming to Z-Weapon Aiming (#3304)
* Add right-stick aiming to third-person aim

* Add Z-aiming CVar and inversion to Z-aiming

* Create calculation for rel.right_stick and apply it in Z-aiming

* Move option to First-Person section to match shield

* Fix max/min aiming heights

* Expand min/max + comment

* block out vanilla + comments

* block vanilla code better

* Remove extra space

* new documentation formatting

* rewrite ==0 and !=0
2024-01-08 12:21:18 -06:00
Malkierian 467ee7ad12 Logic class (#3812)
* Convert `Rando::Logic` to a class.

* Readd `LogicReset` as `Logic::Reset` for resetting logic mid-generation-cycle to allow seed generation to actually work.

* Change `IsChild` and `IsAdult` to `CanBe` variants.

* Make it buildable.

* First LogicVar class.

* Revert CanBe changes to Is (adult & child) as I'm no longer sure that it's a good one.

* Update soh/soh/OTRGlobals.cpp

Use existing gRandoContext reference.

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Conflict resolution cleanup (plus removing SaveContext references).

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2024-01-08 08:39:15 -06:00
Christopher Leggett b96df0b642 Fixes parsing of spoiler files in plando mode. (#3823)
It was specifically failing on Hints because of changes to the spoiler output that were not reflected in the parsing code.
2024-01-08 08:37:24 -06:00
Christopher Leggett 63413e8159 Explicitly clears the entire ItemLocations array. (#3820) 2024-01-08 08:37:10 -06:00
Christopher Leggett 1669393277 Fixes a regression in creating settings string. (#3813) 2024-01-06 12:52:03 -06:00
Pepper0ni 80e6e899a8 Fix other hints not getting reset (#3811) 2024-01-06 11:08:06 -05:00
Christopher Leggett 8b8f11d72e Consolidation of Trick Settings data (#3798)
* Adds TrickOption subclass and fills in extra info.

Fills in the extra info from randomizer_tricks.cpp that other Options don't have (hence the subclass for Tricks specifically).

* Uses new definitions of tricks in ImGui menu.

* Removes randomizer_tricks.cpp/h

* Adds new tricks.cpp/h to hold some static data and functions.

* Refactors Tricks namespace into a class with only static memebers and functions.

* Fixes bug with Trick Tag system.
2024-01-06 11:07:19 -05:00
inspectredc 321c258d69 Fix Fire Temple Boss Door Logic (#3774)
* Fix Fire Temple Boss Door Logic

* Update soh/soh/Enhancements/randomizer/3drando/location_access/locacc_fire_temple.cpp

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>

---------

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
2024-01-05 20:55:09 -05:00
Malkierian 02938cfba2 Fix Starting Triforce Piece Count (#3797)
* Move zeroing of triforcePiecesCollected to the beginning of `Randomizer_InitSaveFile()` to fix starting TFP count issues.
2024-01-05 20:53:18 -05:00
Garrett Cox 37b2fc0745 Make noclip only effect player (#3788) 2024-01-05 20:51:48 -05:00
Amaro Martínez 6cb3a830bd Restore previous Boost download URL (#3809)
This reverts commit 96abadd904.
2024-01-05 18:41:09 -05:00
Pepper0ni 4d2ca29940 Quickfix skip trials setting (#3800)
* quickfix skip trials setting

* Change to set trial count to 0 when skipping
2024-01-05 15:19:23 -05:00
briaguya 9064897736 fix compatibility nightly.link in README.md (#3768) 2024-01-04 20:24:08 -05:00
Pepper0ni 7e2a13e7d8 Quickfix giants knife counting as a kokiri sword (#3802) 2024-01-04 15:49:10 -05:00
Garrett Cox 7e1f72e17d Merge pull request #3785 from Malkierian/dev-merge
develop -> develop-rando 20240102
2024-01-03 06:09:47 +00:00
Malkierian d2ec346d0e Merge branch 'develop' of github.com:Malkierian/Shipwright into dev-merge 2024-01-02 17:28:23 -07:00
Christopher Leggett 96353c0b3b Fixes Pre-Clearing of Ganon's Trials. (#3783) 2024-01-02 17:19:56 -05:00
Pepper0ni 46abda83d2 probably fix glaring hint issues (#3752) 2024-01-02 16:23:33 -05:00
Pepe20129 1699eea009 Remove special IAs (#3453)
* Remove special IAs

* Add clarifying comment
2024-01-02 00:29:47 -05:00
Jordan Gilbreath 944a4c2e46 Fix settings persistence across sessions (#3779)
Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2024-01-01 19:20:34 -06:00
Garrett Cox 03d907b843 Merge pull request #3778 from HarbourMasters/develop-macready
macready -> develop
2024-01-01 16:23:58 +00:00
Amaro Martínez 96abadd904 Update Boost download URL (#3776) 2023-12-31 16:06:47 -05:00
Malkierian fa8a0e2a76 [Rando] Fix Check Tracker Area Totals (#3758)
* Fix the calculation of `areaChecksGotten` to account for flags functionality setting invisible checks.
Change `areaChecksTotal` to dynamic calculation based on tracker visibility, now that all checks are being added to `checksByArea`.
Both are updated in realtime when either "Show all GS locations" or "Hide right side shop items" are toggled.
Reformat all remaining unencapsulated if statements.

* Changed helper variable change and call to `RecalculateAreaTotals()` to when the options are toggled instead of checking every frame.
Removed redundant if...else.
Clarified areaChecksGotten increment/decrement functionality based on current status and incoming status change.

* Removed unused code.
2023-12-31 13:58:31 -05:00
Christopher Leggett c9907ed5fc Allows rendering custom models as Ice Traps in GetItem Animations. (#3760) 2023-12-30 12:10:50 -05:00
Christopher Leggett dbb1e60734 Fixes some Spoiler Parsing Bugs (#3759)
* Fixes bug causing dropped spoiler not to be parsed.

* Fixes bugs with parsing enabled tricks

* Fixes bugs with parsing excluded locations.

* Fixes bugs parsing the Bombchu Drops setting
2023-12-30 12:10:31 -05:00
Christopher Leggett 8cb06d2d5d Fixes some "seed bleed" instances (#3766)
* Should fix seed bleed between multiple saves and loaded spoilers by resetting the Rando::Context before loading a save.

* Only reset for rando saves.
2023-12-30 12:09:46 -05:00
Christopher Leggett 75f9775ad8 Merge pull request #3769 from HarbourMasters/develop
develop->develop-rando 20231229
2023-12-29 18:25:16 -05:00
shinra-electric b7342a7847 [macOS] Add Architecture Priority to Info.plist (#3727)
* Add Architecture Priority to  Info.plist

This allows the app bundle to be launched natively on Arm without the need for Rosetta.

* Remove arch shenanigans in soh-macos.sh.in

Shouldn't be necessary now...

* Add back launching the binary in soh-macos.sh.in

Accidentally removed launching the binary from the script.
2023-12-29 18:02:22 -05:00
Jérémy Lugand a08943edc8 Fix typos in scenes_fra.json (#3732)
* Update scenes_fra.json
2023-12-29 18:00:06 -05:00
Sarge-117 bedb0a1768 Add LLR entrance from silo to the better debug warp screen (#3424)
* Add silo exit

* Back Tower
2023-12-29 17:57:31 -05:00
Pepe20129 807b00a058 Fix crashing when creating a new file (#3764) 2023-12-29 13:36:56 -05:00
Garrett Cox 6c88d33b19 Merge pull request #3756 from HarbourMasters/develop
develop -> develop-rando
2023-12-28 20:12:39 +00:00
Pepe20129 c860f7a73a Rando: Shuffle Ocarina Buttons (Rando V3) (#3735)
* Shuffle Ocarina Buttons

* Address review

* Add trick names

* Temporarily remove the ocarina button ice trap models

* Update soh/soh/Enhancements/randomizer/3drando/location_access/locacc_death_mountain.cpp

Fix lost closing brackets from merge resolution.

---------

Co-authored-by: Christopher Leggett <chris@leggett.dev>
2023-12-28 14:19:23 -05:00
Garrett Cox 2495f45124 Merge pull request #3751 from garrettjoecox/develop-rando-develop
develop->develop-rando
2023-12-28 17:19:39 +00:00
Patrick12115 81ec2805ee scaling (#3393) 2023-12-28 12:04:30 -05:00
Patrick12115 b80452b2b8 Multiplier (#3395) 2023-12-28 12:04:20 -05:00
Garrett Cox f6a6b880c9 Only emit changed flags (#3489) 2023-12-28 08:23:03 -06:00
PurpleHato 1fff15753a ADD: Enhancement-->Graphics-->Colour Temple of Time's Medallions (#3514)
* First dirty testing process

* Forgot a 2 for the second Dlist patching of Shadow

* TWEAK: GI integration

* DEL: Unucessary includes + whitespace

* TWEAK: No stones refactor for now, sorry I'm kinda lazy right now, don't hate me, please! T_T

* Stone removal part 2, sometime I forget to save the changes :derp:

* Tiny last tweaks, hopefully

* Add to rando preset

* Tweak: typo

* TWEAK: Trigger on toggling on/off

* TWEAK: adressed reviews 💯

* Please mate, excuse my British typing
2023-12-27 23:46:00 -05:00
pirate486743186 3f61fbc5f6 use SHIP_BIN_DIR instead of HERE (#3469) 2023-12-27 13:37:11 -05:00
Pepe20129 dc4347253d Item cycling improvements (#3456)
* Simplify item cycling

* Simplify selection variables

* Fix adult bunny hood and gray appropriate items

* Don't go into cycling mode when there's no items to cycle to

* Restore updating c buttons

This was previously done with `Inventory_ReplaceItem` but that led to problems when another slot had the same item as the one that's being cycled.

* Address review
2023-12-27 12:55:09 -05:00
mattman107 9b74dc2892 Update linux/appimage script to use symlinked rom files (#3483)
* Update soh.sh.in

Added support for symlinked rom files in linux/appimage script.

* Update scripts/linux/appimage/soh.sh.in

Updated to be less confusing as per Archez

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>

---------

Co-authored-by: Adam Bird <Archez@users.noreply.github.com>
2023-12-27 12:51:36 -05:00
Garrett Cox a6bb6cf0a3 Hardcore mode v1 (#3540) 2023-12-27 12:50:56 -05:00
Pepe20129 e8096a2d94 Better actor viewer (#3544)
* Update actorViewer.cpp

* Add more actors

* Add a search function

* Update actorViewer.cpp

* Add advanced mode for params
2023-12-26 19:09:04 -05:00
Garrett Cox 70e1017923 Add frame advance option to developer tools (#3435) 2023-12-26 19:08:37 -05:00
Adam Bird 6a7bcc4a5e add more commands to dl viewer (#3504) 2023-12-26 17:13:48 -05:00
briaguya 99194a75f1 docs: update func_800FADF8 to Audio_ResetActiveSequences (#3471) 2023-12-26 13:30:49 -05:00
Garrett Cox 1979d78788 Merge branch 'develop' of garrettjoecox.github.com:HarbourMasters/Shipwright into develop-rando-develop 2023-12-26 10:33:48 -06:00
Pepper0ni e731380e28 Fix various randomiser setting bugs (#3742)
* Fix various randomiser setting bugs

* Fix shuffle entrences metasetting getting locked on per savefile after an entrance rando seed is generated once
2023-12-26 08:58:19 -06:00
Christopher Leggett f74ba3c1da develop-rando: File Select Fixes (#3734)
* Fixes pressing B on name entry after randomizer quest.

* Reverts to auto parsing previous spoiler file.

Also includes an option to press L to automatically gen a fresh seed. It still does regenerate the old spoiler to regen the hints in the user's current language, but it will now automatically do this instead of requiring dragging and dropping the spoiler every time.

* Fixes bug causing rando settings to come from CVars instead of a spoiler file when a spoiler is dropped/imported on boot.

* Pressing Generate Randomizer in ImGui doesn't use loaded spoilerfile.

* Adds tooltip to Generate Randomizer ImGui Button.
2023-12-26 08:57:59 -06:00
briaguya 776c3a51ee stick sensitivity (#3725) 2023-12-23 18:48:06 -05:00
briaguya 0a59ce6d99 upgrade to docking imgui 1.90.0 (#3402)
https://github.com/ocornut/imgui/commit/ce0d0ac8298ce164b5d862577e8b087d92f6e90e
2023-12-23 18:12:52 -05:00
Tina H. (sheepytina) e0930809d4 Advanced controls for aspect ratio, resolution, and integer scaling. (#3130)
* Advanced Resolution Settings

first working version with most features implemented

* Update advancedResolutionEditor.cpp

Added auto-resizing logic for Pixel Perfect Mode.
Minor fixes.

* Tweaks and tidying up.

Disable integer scale slider if automatic sizing is overriding it.
Don't offer these UI options on Apple.
Removed unused code.
Updated LUS.

* Update libultraship

* Filenames and style fixes

Filenames and folders now more closely match rest of project.
Tidied newlines/comments.
(SohMenuBar.cpp) Label of button changed to fit menu.
(ResolutionEditor.cpp) Default window size improved.

* Update libultraship

(However, I still need to make the GUI controls acknowledge the new constraints.)

* Update libultraship

(and changed the name of some cvars)

* Added constraints to the inputs. Added a fps drop warning.

* Tweaks based on feedback

* Update libultraship

* Enabled on Apple - For currently ongoing Retina DPI troubleshooting.

(Also removed the duplicated N64 Mode toggle.)

* Update libultraship

* Update LUS, update CVar names, small tweaks

And one significant fix: Enhancement checkboxes in ResolutionEditor now default to off.

* Add Additional Settings and the accursed horizontal resolution field.

There's still a few bugs with it that I haven't squashed, but I need to stop for now and just commit what I've got.

(This is honestly causing more problems than it solves, but i'm tired of getting questions about it.)

* Resolved many of the lingering bugs with the previous commit

* Horizontal Resolution field now properly acknowledges resolution bounds.

* Don't show "Horiz. pixel count" field if not enforcing aspect ratio.

Additionally:
* Don't change settings if selecting "Custom" from preset dropdowns.
* Added a missing horizontal pixel count clamp check.
* Tidied up redundant behaviour.

* Additional comments, and a checkbox to disable aspect correction on consoles.

* Change how frame rate threshold is calculated.

* More minor UI tweaks.

* Added missing CVarSave() calls where needed.

Added a short update countdown for the numerical CVars. This is intended to prevent CVarSave() from being called too often.

* Added a helpful button to cover a potential support issue.

* "Fit Automatically" has been moved to LUS and is now smarter.

This will require another PR in LUS to be opened by me.

* Swap to new branch for libultraship

* Even more clever integer scaling behavior.

"IntegerScale" is itself now a CVar group.

* Tidy up comments.

* Fix a typo that prevented `IsDroppingFrames()` from working

(Maybe more than a mere typo, but a typo was involved.)

* Remove unused and unnecessary variables.

* Group "Integer Scaling" under its own collapsing header

* Changed label for the Enabled advanced settings checkbox.

* Update libultraship + Formatting pass on ResolutionEditor.cpp

* Add `(Select "Off" to disable.)` help text for the aspect ratio setting and hide UI elements accordingly.

Only show the fields if user chooses Custom.
Padding has been shifted accordingly too.

Also fixed a long standing error with the Y field disappearing when modifying X.

* Well I suppose that's no-longer necessary.

* Update libultraship with commits from main branch (up to e5df3a9)

* Tweak comments.

* Save current ImGui Combo items as a console variable

to improve user experience.

* Change language of NeverExceedBounds checkbox description

to be more affirmative, so it makes more sense.

Add tooltip for NeverExceedBounds checkbox.
Tweak some comments related to additional settings.

* Add list of colours to use with TextColored elements.

* Move some UI elements around.

Add an extra MSAA slider to the editor window.

* Integer Scaling header is DefaultOpen if player has Pixel Perfect Mode active upon window creation.

+ Amend tooltips.

* Fix a minor oversight with default configuration.

Fixes an issue where default aspect ratio settings on a fresh SoH configuration weren't matching the defaults assigned in libultraship.
The default values are now 16:9, matching LUS.
Additionally, the combo box now defaults specifically to the 16:9 preset instead of "Custom".

(Fixing the defaults in LUS to be 4:3 isn't worth a LUS bump, so this slight workaround will do for the sake of this PR.)

* Make resolution slider `disabled` condition a variable, for readability.

* Small tweak to combo item saving

* Use `SCREEN_HEIGHT` and `SCREEN_WIDTH` for constraints

* Simplify "Show a horizontal resolution field" logic

by using pixel dimensions as the aspect ratio directly, since now this view hides the aspect ratio setting from the user anyway.

* Correct aspect ratio visualiser to be un-inverted

+ actually display it as a ratio.

* Remove update flags from combo boxes + remove update countdown

+ remove non-functioning 'IsBoolArrayTrue' function.

(The countdown was an okay idea but I didn't implement it correctly. It's better to just keep it simple.)

* Code review suggestion: disable UI elements conditionally

 (+ tweaks to code style)

* Invisible tweaks to the Integer Scaling-related Additional Settings

This looks like a lot but it's mostly just re-arranging a cluttered area of the code for clarity.
Actual changes to functionality are:
* Help text now "disabled" along with the checkbox.
* The NeverExceedBounds checkbox will now reset the unused ExceedBoundsBy cvar if it's been changed.

* Assorted small tweaks to comments and variable declarations.

* Code review suggestion: tweak "Window exceeded" warning condition

* Missed a thingy.
2023-12-23 16:19:41 -05:00
Christopher Leggett 7f961abd8d Fixes missing options and some incorrect disabling logic (#3545) 2023-12-20 16:51:48 -05:00
Garrett Cox 2cb3a3664e Implement gMoveWhileFirstPerson 2023-12-20 20:26:07 +00:00
Garrett Cox 66c41a8012 Clean up func_8084ABD8 2023-12-20 20:26:07 +00:00
Adam Bird 1d7ad52222 fix remote control define when flag not set in windows (#3534) 2023-12-19 00:55:32 -05:00
Christopher Leggett bb4fb22188 Fixes error noise when seed generation fails (#3527) 2023-12-18 17:31:29 -05:00
Christopher Leggett 4978c3b34f Fix some bugs with settings (#3525)
* Fixes off by one errors for a few settings.

* Removes disable of shuffle options when starting with corresponding items.

* Junks checks when shuffle is off and start with is on.
2023-12-18 17:31:17 -05:00
briaguya 9b947615bc Merge pull request #3539 from Archez/merge-echo-develop
Merge (8.0.4) develop-macready -> develop
2023-12-17 21:56:11 -08:00
Adam Bird 03da69d7b7 Merge tag '8.0.4' into HEAD
MacReady Echo
2023-12-18 00:34:59 -05:00
Garrett Cox 60faf3f750 Bump version to MacReady Echo 8.0.4 (#3537) 2023-12-17 22:47:39 -06:00
Garrett Cox ef910a02f7 Remove use of static variable in en_box (#3536) 2023-12-17 21:47:02 -06:00
inspectredc f607afc754 Add player state dead check to Player_UseTunicBoots (#3530)
* Add player state dead check to Player_UseTunicBoots

* Update soh/src/overlays/actors/ovl_player_actor/z_player.c

---------

Co-authored-by: Garrett Cox <garrettjcox@gmail.com>
2023-12-17 21:46:35 -06:00
inspectredc 865bcc57a7 Fix Logical Error With Darunias Door Entrance (#3529) 2023-12-17 21:20:09 -06:00
Garrett Cox b5caf33a9b Initialize GameInteractor before SaveManager so it can correctly set up a hook (#3535) 2023-12-17 21:19:30 -06:00
Jordan Gilbreath 36e030e339 Reorder pop for #3532 (#3533)
* add make sure disabled flag gets popped

* reordering : ]

* what?

---------

Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2023-12-17 21:13:35 -06:00
Jordan Gilbreath d99cd52eea add make sure disabled flag gets popped (#3532)
Co-authored-by: jordanpg <jordanpg@users.noreply.github.com>
2023-12-17 18:02:47 -06:00
Adam Bird f655ab592d Re-implement Pause menu Dungeon map texture effects (#3496)
* first pass implement dungeon maps

* wrap up map dungeon implementation

* add comments and enums, rename vars

* bump lus
2023-12-17 15:42:34 -05:00
Garrett Cox 86044a1c50 Remote GI Work (#3073)
Co-authored-by: David Chavez <david@dcvz.io>
2023-12-17 13:41:33 -06:00
briaguya e6fc34e4c2 bump lus to latest 1.x (#3528) 2023-12-17 13:36:38 -05:00
Adam Bird d370ca93fd [Tweak] Improve KD lava effect performance and stability (#3501)
* improve kd lava performance and stability

* enum typo

* account for rock tex size
2023-12-17 13:23:07 -05:00
Adam Bird a6b4e0b7fd Fix entrance tracker crash (#3502) 2023-12-17 11:06:01 -05:00
Garrett Cox fcf2141266 Fix JSON parsing every frame on file select (#3513)
* Fix JSON parsing every frame on file select

* string (#73)

---------

Co-authored-by: briaguya <70942617+briaguya-ai@users.noreply.github.com>
2023-12-16 21:40:09 -05:00
Adam Bird e2f1cebfb5 fix condition causing enemies to always be small (#3512) 2023-12-16 20:56:36 -05:00
Adam Bird 907b770676 more swordless fixes when time traveling (#3510) 2023-12-16 20:56:14 -05:00
Adam Bird ea49196bae retain gameplay stats window size (#3508) 2023-12-16 20:52:36 -05:00
Adam Bird f65b711376 fix led crash when set to health (#3507) 2023-12-16 20:52:07 -05:00
Adam Bird 269e9faa46 change adult shooting gallery reward and add message (#3506) 2023-12-16 20:51:44 -05:00
Malkierian 35301556d9 Added "Always show gold skulltula" to check tracker options. Toggleable without restart. (#3505)
Made "Hide right-side shop checks" toggleable without restart.
2023-12-16 20:51:25 -05:00
Adam Bird fb0f7169d7 fix jabu mq minimap mark points (#3494) 2023-12-16 20:50:32 -05:00
Malkierian 9740ccc59b Fix Gravedigging Tour rando check. (#3524) 2023-12-14 17:12:43 -05:00
Christopher Leggett 3e0fc5efa5 Merge pull request #3509 from leggettc18/merge-develop
develop->develop-rando
2023-12-14 13:39:34 -05:00
Christopher Leggett 674645ef14 Fixes some miscellaneous issues for Switch builds. 2023-12-12 18:51:26 -05:00
Christopher Leggett c7c29034eb Fixes crash from attempted nullptr access. 2023-12-11 12:19:57 -05:00
Christopher Leggett bc49998e55 Reimplements ImGui Disable of options with Vanilla logic selected. 2023-12-10 21:25:59 -05:00
Christopher Leggett 2ef978c792 Fixes some build errors resulting from merge. 2023-12-10 14:00:31 -05:00
Christopher Leggett d58968d196 Merge branch 'develop' into merge-develop
# Conflicts:
#	soh/soh/Enhancements/custom-message/CustomMessageTypes.h
#	soh/soh/Enhancements/debugger/debugSaveEditor.h
#	soh/soh/Enhancements/item-tables/ItemTableTypes.h
#	soh/soh/Enhancements/mods.cpp
#	soh/soh/Enhancements/randomizer/3drando/entrance.cpp
#	soh/soh/Enhancements/randomizer/3drando/item_location.cpp
#	soh/soh/Enhancements/randomizer/3drando/keys.hpp
#	soh/soh/Enhancements/randomizer/3drando/location_access/locacc_castle_town.cpp
#	soh/soh/Enhancements/randomizer/3drando/location_access/locacc_ganons_castle.cpp
#	soh/soh/Enhancements/randomizer/3drando/location_access/locacc_gerudo_training_grounds.cpp
#	soh/soh/Enhancements/randomizer/3drando/location_access/locacc_ice_cavern.cpp
#	soh/soh/Enhancements/randomizer/3drando/menu.cpp
#	soh/soh/Enhancements/randomizer/3drando/playthrough.cpp
#	soh/soh/Enhancements/randomizer/3drando/settings.cpp
#	soh/soh/Enhancements/randomizer/3drando/settings.hpp
#	soh/soh/Enhancements/randomizer/randomizer.cpp
#	soh/soh/Enhancements/randomizer/randomizerTypes.h
#	soh/soh/Enhancements/randomizer/randomizer_check_objects.cpp
#	soh/soh/Enhancements/randomizer/randomizer_check_tracker.cpp
#	soh/soh/Enhancements/randomizer/randomizer_entrance.c
#	soh/soh/OTRGlobals.cpp
#	soh/src/code/z_sram.c
#	soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c
2023-12-10 12:49:15 -05:00
Christopher Leggett dad4ae0095 Rando settings streamline and auto render (#3391)
* Removes cvarSettings map.

Options now link with CVar names directly. So instead of passing the
cvarSettings map, the Option class can check a corresponding CVar
if a cvarName was provided during construction. Of note, it does not
automatically sync the Option selected index with the CVar value, as
we would not want this to happen in all cases, for example when dragging
a spoiler file, we don't want to overwrite all the CVars with the Options
from the spoiler file. Currently all Options are set to the value of the CVar
they are linked to right before generating a new seed, unless a spoiler file
has been dropped in which case those settings are used instead.

* Early version of ImGui Render function

Currently only the slider variant. Will allow for auto rendering of options
in ImGui, with tooltips and automatic display of the values in each Option's
options array while keeping the CVars at the selected index, preventing
Off By One Errors.

* Implementation of Checkbox and Combobox rendering.

Currently only in use for a couple of items, future commit will implement for all
options.

* Auto-render entire first tab of Randomizer Settings

* Switch remaining tabs to auto-render

* Implements disabling options

* Cleanup/Documentation

* Auto-render entire table columns

* Implement OptionGroup rendering for "Sections"

* Automates the rendering of tables in the Settings window.

With the exception of the Locations and Tricks tabs, those are special
and will need a lot more work.

* Adds ability for option groups to have descriptions,

These descriptions will automatically display as tooltips in ImGui,
if the widget container type accounts for it.

* Fix as many IDE warnings as possible in option.h/cpp

Trying out CLion Nova, and it highlighted some things I decided to fix, some from CLion itself and some from CLang-Tidy. Oddly, it didn't like a conversion from size_t to int whether I left it implicit or added a static_cast, so I guess that warning is staying.

* Fixes some simple bugs

* fix another small oopsie

* Fixes parsing some of the option changes

Specifically we went from storing the actual value in the CVar to storing an index, meaning sliders that started with 1 now have the index offset by 1. This is currently only Big Poe Count, Triforce Hunt total/required, and starting hearts. Everything else either already started at 0, or in the case of LACS/Bridge counts, we were starting the sliders at 1 but they would have always worked at 0 according to the 3drando logic.

* Fix bug with status of skip child stealth

* Renames the Settings::Setting function to GetOption

* Add `Settings` pointer as a member of `RandomizerSettingsWindow`.

* Replaces ctx->GetOption with direct access to mOptions

This is equivalent, the access through ctx in this case was completely unnecessary and a muscle-memory mistake on my part.

* Implements a few IDE/Linter suggestions
2023-12-10 11:20:47 -05:00
Pepper0ni 4925abdd67 Fill in textId List (#3499) 2023-12-09 21:55:59 -05:00
Christopher Leggett 65d893bc85 Fix a seed gen bug surrounding new area enum (#3497)
* Fix a seed gen bug surrounding new area enum

* Sets areas after shuffling entrances.
2023-12-08 13:07:27 -05:00
Pepper0ni c5790d9284 Move Barren handling to before hint generation, Add RandomizerArea enum and other cleanups (#3339)
* Initial wothCandidates change, pushed early foreseeing conflicts

* Implement better barren handling, waiting on #3205

* pls save next time VS code

* Finish implementation of barren and randomizer area refactor

* Apply function changes to develop merge

* Fix double default decleration issue

* change some var types for uniformity

* Fix post merge differences to the point of building and generating randos

* Address reviews

* address more reviews
2023-12-07 18:11:44 -05:00
Christopher Leggett 1cc3201c19 Develop rando tidy up (#3425)
* Fixes some IDE warnings/linter-suggestions in context.*

Most of these come from CLion Nova. Some of these may be controversial, such as the if-init-statement related ones. Most of them should not be controversial though, like replacing C-style casts with static casts.

* Fixes IDE warnings/Linter suggestions in option.*

* Fixes some IDE warnings/linter suggestions.

Left a few about "Template Arguments can be deduced", and a "Redundant static_cast" for the sake of clarity.

* Fixes some IDE warnings/linter suggestions in item.*

* Fixes some IDE warnings/linter suggestions in location.*

* Fixes some IDE warnings/linter suggestions in item_location.*

* Fixes some IDE warnings/linter suggestions in item_override.*

* Fixes some IDE warnings/linter suggestions in dungeon.*

* Fixes some IDE warnings/linter suggestions in trial.*

* Use std::ranges::generate rather than manually looping.

* Fixes a typo

* Changes a TODO comment with more info.

Previously this TODO statement was a question of whether or not we ever want to not output a spoiler log. Eventually we may want different amounts or types of data to be output when generating a seed according to certain settings. For instance, maybe we want a human-readable spoiler log, that has item locations and hint content without the formatting info. Maybe we want a "Plandomizer File", which is that but the hint strings include formatting info so that the formatting/colors can be changed, and eventually we may want to let cosmetic info be specified in there as well. Or maybe we just want a Race/Patch file that just has the seed and settings, for Race files we could also specify non-rando settings that should be locked to certain values. Or maybe want one of each. All of that is stuff that should at least start being handled at the location of this TODO statement.

* Fixes a scope issue Windows didn't catch

* Removes std::ranges::generate as apparently AppleClang can't do it.

* Removes std::ranges::any_of as apparently AppleClang can't do it.

* Re-adds what I thought was an unused include.

* An attempt to fix the macos construct_at error
2023-12-05 19:03:36 -05:00
Garrett Cox 2d22a3ebcc Add vanilla logic option (#2191) 2023-12-04 11:29:48 -06:00
Garrett Cox a8c18882f0 Merge pull request #3487 from HarbourMasters/develop-macready
develop-macready -> develop
2023-12-04 14:31:58 +00:00
aMannus 6297df98e9 Fix GBK check for vanilla (#3473) 2023-12-04 08:22:35 -06:00
Garrett Cox 365afe7833 Add tableId to getItemEntry (#3064) 2023-12-04 07:52:39 -06:00
Adam Bird fbc397a131 Tweak skeleton limbs to use OTR path strings for loading DList and improve Alt toggling (#3479)
* set otr string paths for DList on skeleton limbs

* delay toggling alt assets cvar to end of frame
2023-12-04 07:33:14 -06:00
Garrett Cox 1fea642f33 Fix OnItemReceive hook for items in the extendedVanillaGetItem table (#3063) 2023-12-04 07:26:55 -06:00
aMannus 19cede44c3 Merge pull request #3468 from briaguya-ai/delta-to-dev
MacReady Delta -> develop
2023-11-30 00:07:38 +01:00
briaguya b39e6ec5af bump to latest lus main 2023-11-29 02:27:19 -05:00
briaguya 351f896cfa Merge branch 'develop' into delta-to-dev 2023-11-29 02:16:54 -05:00
briaguya 818addfdda delta bump (#3465) 2023-11-29 01:32:15 -05:00
Malkierian f14c390364 [Vanilla Fix] Slow Down Darunia's Dance (#3438)
* Fix Darunia's dancing animation speed (static for now; needs toggle later).

* Moved previous code to toggleable fix in enhancements. Tweaked speed factors, partially successful.
2023-11-29 00:38:48 -05:00
Adam Bird dd5e72a023 limit entrance discovered saving to end of operation (#3459) 2023-11-29 00:29:25 -05:00
rozlette d523b104d8 Change declaration of Morpha tentacle verts to combine them all and avoid overlaps that result in dropped verts 2023-11-28 21:09:34 -08:00
Garrett Cox fdcd9a7508 Race Integrity QoL (#3445)
* Add gDisableChangingSettings

* Add support for dropping a config file to overwrite CVars
2023-11-28 23:42:37 -05:00
Malkierian c4f34624ba Flag tracker (#3447)
* Hook into flagset hooks for processing check tracking. Has some manual workarounds (some breaks still need to be found).
Remove areaChecks and looping functionality as redundant.

* Additional vanilla handling.

* Fix tracker not showing MQ checks in MQ non-rando.
Fix tracker marking non-MQ variants of dungeon checks (e.g. map chest, etc) when collecting in MQ.

* Set all areas to spoiled if not rando.

* Revert attempt to spoil in randomizer based on MQ dungeon count as I don't know how that works at the moment.

* Restore and update spoiling based on MQ dungeon settings (none, selection, or count of 12).
Fix Anju As Adult check.

* Remove Anchor-specific code :baguette:

* Use `ClearAreaTotals()` in `Teardown()` instead of the duplicate code there.

* Update to `ClearAreaChecksAndTotals()` with `vec.clear()` added.

* Fix type spoiling again. Now spoils on 0 MQ dungeons, not rando, if the option is enabled in check tracker settings, selection, or set number of 12.
Fix vanilla checks being marked collected in MQ dungeons.

* Fix 100 GS check.

* ACTUALLY fix 100 GS: change flag type to `RandomizerInf()` in `item_location.cpp`, add RC to RandoInf for it to the table. Also don't send GI for flag if father, falsely triggers ZR frogs minigame.

* Fix gravedigging tour tracking.

* Fix membership card check tracking.
Change scene and flag values to any existing enums.
Clarifying formatting for the checking loop vOrMQ conditions.

* Fix Gravedigging Tour tracking.
Simplify Always Win Gravedigging Tour and Fix Gravedigging Tour Glitch applications.
Modified all necessary paths to use vanilla GDT PoH collection flag instead of randomizer variant.

* Fix Kak Potion Shop being "seen" when entering as child.
2023-11-28 21:25:48 -05:00
Adam Bird 33fe8776bb Fix bugs dont despawn cheat to work with soil patches (#3457) 2023-11-29 02:02:45 +01:00
briaguya 02256fac66 bump LUS to 1.4.0 (#3461) 2023-11-29 01:37:54 +01:00
briaguya 621afc99f0 sort patch otrs (#3430) 2023-11-29 01:34:00 +01:00
inspectredc 9d215b6dce Separate Arrows Equip Dupe Fix (#3450)
* add gseparatearrow check for equip dupe fix

* update gseparatearrows tooltip
2023-11-28 22:13:00 +01:00
aMannus 420bdab328 Random Enemy Sizes fixes (#3452) 2023-11-28 14:30:36 -05:00
Adam Bird 717074ff86 Fix: Missing TextIDs for MQ PAL and change lava size (#3449)
* Fix text offset for MQ pal and add text ID asserts

* correct lava texture size
2023-11-28 20:11:03 +01:00
Malkierian 3ab16b70c2 Changed all checks for !gPlayState to !GameInteractor::IsSaveLoaded() in mods.cpp for all the cheats, and added the same full check to others that really didn't need to be running outside of a game (like infinite rupees, magic, health, etc), and clear any triggering CVars. (#3441)
Changed `RegisterSwitchAge()` to clear the CVar instead of setting it to 0.
2023-11-27 23:00:25 +01:00
Pepe20129 5b81964ea5 Bring over some player documentation from decomp (#3380)
* Document static variables

* Document enums and structs

* Document some functions

* Document more functions

* actionParam to itemAction and fix build

* Document some local variables and a define

* General cleanup

* Use PlayerMeleeWeaponAnimation enum when appropiate

* Document some function parameters and local variables

* Document some of player struct
2023-11-26 11:54:54 -05:00
Malkierian 3cf9d655a7 Disable Fix Vine Fall when Climb Everything is enabled (#3439)
* Disable Fix Vine Fall when Climb Everything is enabled.

* Remove option disabling.
2023-11-26 11:34:54 -05:00
Garrett Cox d0d1d9c487 Merge pull request #3312 from quellen-sol/develop
Add Geo rupee name (Hollow Knight)
2023-11-24 12:27:49 -06:00
Garrett Cox 360b6b88be Merge pull request #3310 from Pepper0ni/NoSwimAnim
Port Faster Swim animations, full credit to kimimaru4000
2023-11-24 12:27:32 -06:00
Garrett Cox 1e4784af8f Merge pull request #3302 from inspectredc/toggle-strength
Toggle Strength Option
2023-11-24 12:26:34 -06:00
Garrett Cox bdc6fad0a9 Merge pull request #3208 from garrettjoecox/valueViewer
MVP ValueViewer
2023-11-24 12:25:39 -06:00
inspectredc 95f27ace2e Fix kokiri sword unequipping when using switch age cheat/enhancements (#3415)
* test fix for ks unequip

* remove unnecessary brackets
2023-11-24 09:40:42 -05:00
Salt d50ad4779d Fix #3417 Symlinks to Directories in Mods Dir Aren't Traversed (#3418) 2023-11-24 09:40:30 -05:00
Adam Bird f2df029efa fix: skybox crash for mask shop (#3427) 2023-11-24 09:38:45 -05:00
Garrett Cox bdb201201e Fix audio cutoff issues (#3428) 2023-11-24 09:38:13 -05:00
Adam Bird f4e4545180 Re-implement King Dodongo's Lava texture effects (#3434)
* fix alt backgrounds not always loading

* include gfx lookup with the original unload

* Add hook for alt toggle

* handle cpu modified texture for kd lava

* malloc array instead of illegal initialize
2023-11-23 09:07:30 -05:00
Garrett Cox c3ae829370 Add enhancement for removing explosive limit (#3242) 2023-11-20 13:25:22 -05:00
briaguya 76e90c0928 Controllers (#3378)
* lay some groundwork

* use custom window (which is currently identical to the LUS window)

* start making it shippy

* start moving stuff out of gamecontroleditor

* clean up shouldrumble

* include the other way

* wii u

* latest lus main

* notch snap angle buttons

* buttons on all the sliders

* just use a hidden id

* handle debug for port 2 and rename tabs so everything fits

* button line buttons look better

* padding fixed

* clang format

* bump to latest LUS main

* big buttons

* just default the analog stick options to open for now

* fix wii u build

* bonus: make it all scale-aware

* clang format

* fix horizontal scrolling

* fix all +/- buttons

* keyboard set defaults

* axis threshold helper text

* bonus: test rumble button

* clang format

* fix otrexporter submodule

* bump to latest lus main
2023-11-20 08:02:15 -05:00
Garrett Cox 3b5497cee3 Merge pull request #3408 from leggettc18/develop-rando-bugfix
Fixes a potential crash with saves made on older commit.
2023-11-19 20:13:18 -06:00
Garrett Cox 21caecab84 Merge pull request #3300 from stratomaster64/soulcalibur
Rando: Boss Soul Shuffle
2023-11-19 20:09:54 -06:00
aMannus 34556e40d6 Clean up Triforce Hunt U16's and GBK (#3355)
* Clean up Triforce Hunt U16's and GBK

* Apply suggestions from code review
2023-11-19 14:45:09 -05:00
inspectredc 80ef399c52 Entrance Docs (#3332)
* transition variables renamed

* transition circle

* transition wipe

* sand storm

* remaining sceneloadflag rename

* transition trigger macros

* transition mode enum

* transition type enum

* tc set params

* creg debug transitions

* introduce entrance table + return entrance indices + entrance info macros

* randomizer entrance pass through

* cleanup some missing scene enums

* randomizer entrance tracker pass through

* randomizer grotto pass through

* gSaveContext.entranceIndex

* misc lists

* z_select pass through

* respawn entrance index

* nextEntranceIndex

* add missing include
2023-11-19 14:29:56 -05:00
briaguya 8dbf738128 macready (charlie) -> dev 2023-11-19 05:52:26 -08:00
inspectredc 2b1327c41a Transition docs (#3322)
* transition variables renamed

* transition circle

* transition wipe

* sand storm

* remaining sceneloadflag rename

* transition trigger macros

* transition mode enum

* transition type enum

* tc set params

* creg debug transitions
2023-11-19 02:38:07 -05:00
briaguya a8e387b949 cache vcpkg on windows ci (#3384) 2023-11-18 21:11:44 -05:00
Ralphie Morell ae715bdc15 put boss souls back on the menu 2023-11-17 16:35:37 -05:00
Ralphie Morell aa00765997 Merge remote-tracking branch 'upstream/develop-rando' into soulcalibur 2023-11-16 22:51:16 -05:00
Christopher Leggett 4f9ce252e7 Fixes a potential crash with saves made on older commit.
I had an Off By One Bug in a previous commit, and saves made on that commit ended up crashing on boot due to attempting to access a negative index of an array. Added a bounds check to prevent attempting to load that data.
2023-11-16 15:48:32 -05:00
briaguya 0ddb0711ad Version bump to MacReady Charlie (#3406) 2023-11-15 23:22:09 -05:00
briaguya 3234256b03 bump lus (#3405) 2023-11-15 22:45:09 -05:00
inspectredc d8a7a6c764 Use Correct Player Boot Enums in CC (#3403) 2023-11-15 20:38:21 -05:00
Garrett Cox 2075213544 Merge pull request #3399 from HarbourMasters/develop-macready
macready -> dev
2023-11-14 22:24:48 -06:00
PurpleHato dd6271ecae ADD: No HUD Heart animation (#3348)
* ADD: No HUD Heart Animation

I've seen this requested multiple times for modding purposes for the case of using "lifebars" instead of hearts

* TWEAK: Move it under the the mods

* REM: Whitespace

* REM: Whitespace2

* Tweak: Cvar Oppsie
2023-11-13 18:13:46 -05:00
Christopher Leggett 2698d453bb More gap-bridging (#3323)
* Initial StaticData and RandoItem class definitions

* Initial implementation of RandoItem class.

* Rerranges RandoItem Constructor parameters

The parameters were rearranged for easy copy-paste from the GET_ITEM macro calls later on.

* Switches static data from map to static array.

Array is all that is needed, since the item list will be contiguous and indexed by the RandomizerGet Enum values.

* Defines part of the randomizer item list.

* Adds more item class instances to item_list.cpp

Up through bottles, many more items still to go.

* Adds song items

* Adds Maps and Compasses to the item_list

* Added Key Items to item_list

* Added Key Rings to item_list

* Added Dungeon Rewards to item_list

* Adds generic items and refills to item_list

* Adds shop items, triforce, and hints

Also added constructors that put the GET_ITEM_NONE data in for these items, since there is no corresponding GetItemEntry for them.

* Adds in the stages of progressive items

These are present for GetItemEntry purposes, and aren't really meant to be used in seed generation (unless we find a need for it later on.)

* Remove GetItemEntry data from progressive items

* Moves/adds function definitions to item/item_list

* Refactors GetItemEntry data

It's now a pointer to memory instantiated on the heap in the constructor. These are shared pointers so the memory is freed if any of the item instances get deconstructed (which they shouldn't but just in case.)

* Adds item class member for if item is progressive

* Removes unneeded stuff from initializer list macro

* Replaces relevant `uint32_t`s w/ `RandomizerGet`s

Also replaces calls to the ItemTable method with StaticData::RetrieveItem

* Switches our runtime code to use the new itemList.

* Changes just enough hint gen code to compile

* Initial Definition of Location Class

* Initial Implementation of Location

* Fixes some names and definitions.

* Extracts ActorID and SceneID enums to separate files.

This allows importing them without causing weird conflicts in cpp files when importing the z64scene.h and z64actor.h files directly. Now you can just import z64scene_enum.h and z64actor_enum.h instead. The two old files also import these new files so that existing setups still work as expected.

* Replaces the forward definitions with the new imports.

* Adds missing data for RandomizerCheckObjects.

* Definition and first entry of locationTable

* Added Mido's House Locations

* Added locations up through lost woods.

* Adds in Hyrule Field locations.

* Adds Lake Hylia locations

* Adds location name comments

* Adds Gerudo Valley Locations

* Adds Gerudo Fortress locations.

* Adds the Wasteland and Collosus locations

* Adds Market locations

* Adds Hyrule Castle locations.

* Adds Kakariko and Graveyard locations.

* Adds Death Mountain checks.

* Adds Goron City locations

* Adds Death Mountain Crater locations

* Adds Zora's River locations

* Added Zora's Domain Locations.

* Added Zora's Fountain locations

* Adds Lon Lon Ranch locations.

* Adds Deku Tree locations

* Adds Dodongo's Cavern Locations.

* Adds Jabu Jabu's Belly Locations

* Adds Forest Temple Locations

* Adds Fire Temple Locations

* Adds Water Temple Locations

* Added Spirit Temple Locations

* Some of shadow temple locations.

* Adds remaining Shadow Temple locations

* Fixes a leftover merge conflict

* Adds Bottom of the Well locations.

* Adds Ice Cavern locations

* Adds GTG locations.

* Adds Ganon's Castle and Tower locations

* Adds dungeon Gold Skulltula locations.

* Adds Overworld Gold Skulltula locations

* Adds dungeon reward locations

* Adds Heart Container Locations

* Adds Cutscene and Song locations

* Adds Cow locations

* Adds Shop locations.

* Adds hint locations

* Adds function for retrieving the Location data.

* Initial definition of ItemLocation structure for tracking runtime data

* First push on converting code to use new location definitions

* Changes hints to use the new tables

* Further conversion of hints to new definitions.

* Adds new Hint and Location IDs to area tables

* Moves areaTable to use new RandomizerRegion keys

* Removal of 3drando/item_location files.

* Uses new RandomizerRegion keys in entrance.cpp

* Final push for removal of massive keys.hpp enum

* Uses new SceneID Enum Values

* Remove RandomizerCheckObject structs in favor of new location list.

* Fix a few stragglers to successfully build

* Rename of RandoItem to just Item, but in the Rando namespace

* Adds static hints (Light Arrows, Altar text, etc) to the new Hint table.

* More hint related fixes/edits

* small fix for #include path

* Fix various miscellaneous issues related to seed gen and spoiler parsing.

* Handle progressive items correctly.

* Fixes some hint generation logic

* Fix a few GetItemEntry niche bugs.

* Adds missing shop GI Entries

* Formatting fixes

* small formatting fix

* Namespace StaticData under Rando

* Added a note about a potential use-after-free.

I confirmed the actual pointer in question isn't currently being used, but I added the note as a reminder to fix it later and/or as a warning to anyone who changes how the return value is used.

* Fixes missing location table entries

* Fixes LUS submodule and removes now-unused code

* Resolves weird duplicate definition issue

* Fix missing include

It was missed because not being included wasn't an issue on Windows.

* Fixes error present on Linux builds

* Fixes some issues with excluding locations

* Updates the Resolve Exclusion conflicts function

not sure if actually used, will look into that more later

* Removes some duplicate RGs

* More fixes of duplicate RG values.

* Fix a few duplication issues in the check tracker.

* Fix progressive bombchus.

* Minor typo fix, shouldn't really be affecting anything though

* Should fix some of the remaining check tracker issues.

* oops wrong boolean operator

* Fix skulltulas in the check tracker.

* oops, missing comma

* re-formatting of HintStone locations

* Fixes issue when picking up second Progressive Bullet Bag

* Hide bombchu bowling bombchus

* Fixes missed skullScene in location_list

* Reformats shop items

* Re-formats cow checks

* reformat song locations

* reformat "cutscene" checks

* reformat heart container locaitons

* reformat Boss/Dungeon reward checks

* Hide Triforce Completed if not playing Triforce Hunt

* Fixes incorrect chest param

* reformat GS Tokens locations and cuts down on duplicate data

* reformat Ganons Castle checks

* reformat GTG check locations

* Prevents Gift from Raoru from appearing in the check tracker

* more reformatting (botw, ice cavern, shadow temple)

* Should fix a couple more check tracker checks

* reformat spirit temple checks

* reformat water and fire temple checks

* fix RC_ZR_GS_ABOVE_BRIDGE flag typo

* reformat Forest Temple checks

* Fix RC_LW_TRADE_ODD_POTION in check tracker

* reformat child dungeon locations

* reformat overworld locations

* reformat item entries

* New Item Override system

* use new ItemOverrides and use ItemLocations table for getting items

* Saves/Loads directly from/to new ItemLocation table with overrides for traps

* Removes gSaveContext.itemLocations

* Don't load spoiler file on boot automatically.

Currently this means the old spoiler will have to be manually dropped or a new one generated in order to make a new rando file. Next I want to make it so that:
1. The Randomizer Quest button on the file select menu is always unlocked, even if a spoiler is not loaded.
2. If it's selected and a spoiler is not loaded, a menu will appear that asks if you want to generate a new seed or re-generate the previous one (if a spoiler file is present).
3. On choosing to generate a new one, you may also get an in-game menu to quickly apply a preset before generating (not sure if I'm going that far just yet).
4. After that, a seed is generated and you are taken back to the file select screen with the new file present.
5. If a seed is generated via the menu ahead of time, the CVar for loading the spoiler file will be set, but the spoiler file will not be parsed. All the data needed to actually play the randomizer at that point is
already in memory and in the save file (or at least I'll make it so that it is if it isn't already).
6. If a spoiler file is dropped over the window, the spoiler file is loaded, but it will only be parsed to get the seed and the settings, then the playthrough will be generated from scratch with that data. Thus allowing
for hints to be in the user's language of choice no matter what language the spoiler file was generated in.
7. Additionally, there will be a plandomizer mode that, if enabled, causes dragging and dropping a spoiler file to read the entire spoiler file instead of just the seed, and making a new file will use the data from there
instead of generating a new seed. This in particular may be expanded to have a "plando file" that contains more info than a spoiler file would normally have, such as cosmetic data and a more fleshed out
custom message syntax for various types of custom hints and whatnot. But that will be probably much later.

* Auto-gen rando seed when making a new rando file.

Also adds new logic for displaying the seed hash icons. Now, it is displayed in the following situations:
1. On the confirmation page when loading a rando save, the hash icons for *that save* are displayed.
2. On the name select screen after generating a seed, the hash icons for the seed that was just generated will be shown.
3. If you have dragged a spoiler log onto the window, the hash icons for that seed will be displayed while randomizer is selected on the quest select screen.
Currently the spoiler is just ignored, as the logic for pulling the settings from the spoiler file and regenerating the same seed has not been coded yet.

* Fix a few typos/bugs

* Partial conversion to new Settings/Option class

* Further conversion to new settings/options classes

* New settings struct (not fully working, need to wire it up to SaveManager)

* Move save files to new settings struct. Also fixes MQ options to match 3drando

* Fixes some spoilerfile related issues

* Cleans up now unused arrays

* Fixes some unhandled entries in parse settings switch case

* Reimplements parsing of settings on file drop to re-generate seeds

* Move merchantPrices into ItemLocation tables.

* Move hints to new struct

* Fixes a few seed gen bugs surrounding hints

* Fix treasure chest game.

* Relocate Entrance Shuffle code into ctx

* Move entrances to new context at runtime

* Remove now unused code from SaveContext and randomizer.cpp/.h

* Fix non-windows builds?

* Moves Dungeon Quests to new context

* Move trials into new context

* Whoops, forgot to construct the Trials in the context.

* Fixes accidental nullptr reference

* Fixes bug with saving MQ dungeons

* Implements plando mode and removes now unused code.

Largely untested, expect some bugfixes.

* prevent a multiple definition bug

* another attempt to fix the gSeedTextures multiple def error

* Fixes some minor hint issues from conflict resolution

* Some additional glue needed for merge

* Fixes another couple of miscellaneous issues/inconsistencies.

* A few french corrections

* Makes CVar gRandomizeWarpSongText match the checkbox default value.
2023-11-13 13:25:37 -05:00
Ralphie Morell e90dc91767 gee bill how come you had TWO master swords? 2023-11-05 13:52:19 -05:00
Ralphie Morell 05ba7874ae does this work? 2023-11-05 13:42:31 -05:00
Ralphie Morell 5de2e731c8 move boss soul assets 2023-11-05 13:33:28 -05:00
Ralphie Morell 4ff7e54426 clean out old OTRExporter 2023-11-05 13:24:07 -05:00
Ralphie Morell f7b8e8ed65 Merge remote-tracking branch 'upstream/develop-rando' into soulcalibur 2023-11-05 13:18:43 -05:00
Ralphie Morell 8ad79a7855 horseshit 2023-11-05 12:50:41 -05:00
Garrett Cox 20bb36c164 Merge pull request #3352 from Archez/mergeDevelopIntoRando4
Merge develop into develop-rando
2023-11-05 07:43:24 -06:00
Adam Bird 129f410aba Merge remote-tracking branch 'origin/develop' into 'origin/develop-rando' 2023-11-04 00:13:14 -04:00
Pepper0ni 051314e8b1 Refactor Hint Creation and add support for hint Copies and fixed number of hints. (#3205)
* Initial implementation of no-duplicates of special hints

* stupid fixes

* Impa's song will no longer be hinted when you skip child zelda

* fix building

* Fix Loading spoiler logs causing corrupt hints, remove disabled warp song shuffle text from spoiler logs

* Remove Sheik and Saria hints from the spoiler log when are not enabled

* Prevent Magic hinted by Saria and Light Arrows hinted by Sheik from being hinted elsewhere unless they are locked by that item.

* Prevent the Final Frogs gossip stone hint from spawning when the special final frogs hint is enabled.

* Fix building after rebasing in deduplication

* redelete keys.hpp

* Remove Sheik and Saria hints from the spoiler log when are not enabled

* Prevent the Final Frogs gossip stone hint from spawning when the special final frogs hint is enabled.

* First part of copies implementation

* Refactor hint system (broken)

* fix building

* fix obvious errors

* fix fixed hints doubling after failing to place a hint

* Fix bugs with hint distrabution

* Split PlaceRandomHint and fix hint bugs

* Merge special hint functions, move special hint text to the HintTable, expand LightArrow hint category into OtherHint category.

* Fix remaining hint distribution errors

* Forgot to stage dampe diary update

* Restore building after conflict resolution

* fix SetAllInRegionAsHinted
2023-11-02 11:42:33 -05:00
Ralphie Morell 4006c10bda don't kill ganon if no ganon boss soul setting;
save editor support
2023-11-01 22:15:03 -04:00
Ralphie Morell 58aab05e41 cleanup hook 2023-10-31 23:54:05 -04:00
Ralphie Morell b34471030c refine boss soul model (thanks sitton76!) 2023-10-31 20:31:27 -04:00
Ralphie Morell e1706e2aa1 test model v1 2023-10-30 21:50:00 -04:00
Ralphie Morell 0a5722d3ef Fix map/compass hints not showing V/MQ status 2023-10-30 17:44:21 -04:00
Ralphie Morell 279af81ead Implement custom draw for souls;
change souls from tokens to blue fire
2023-10-30 01:13:26 -04:00
Ralphie Morell 9b49d73814 playtest feedback; cleanup 2023-10-29 21:48:57 -04:00
Ralphie Morell be37cabaa9 pls build on mac 2023-10-28 01:20:13 -04:00
Ralphie Morell 2e50fbb0d2 Rework boss soul helper 2023-10-27 00:48:36 -04:00
inspectredc 2cbbaba9cc draw a button 2023-10-26 18:41:45 +01:00
Pepper0ni 15ebcd30fb Remove disabled special hints and warp song hints from the spoiler log (#3110)
* Initial implementation of no-duplicates of special hints

* stupid fixes

* fix always hints being suppressed by special hints

* Impa's song will no longer be hinted when you skip child zelda

* fix building

* Remove disabled special hints from the spoiler log

* Fix Loading spoiler logs causing corrupt hints, remove disabled warp song shuffle text from spoiler logs

* Fix not detecting text size correctly and badly named greg hint

* Remove disabled special hints from the spoiler log

* Fix Loading spoiler logs causing corrupt hints, remove disabled warp song shuffle text from spoiler logs

* Remove Sheik and Saria hints from the spoiler log when are not enabled

* Prevent Magic hinted by Saria and Light Arrows hinted by Sheik from being hinted elsewhere unless they are locked by that item.

* Prevent the Final Frogs gossip stone hint from spawning when the special final frogs hint is enabled.

* Fix building after rebasing in deduplication

* redelete keys.hpp
2023-10-22 10:11:36 -05:00
Christopher Leggett 2a52493d1f 100GS Tracker Fix (#3314)
* Fix 100 GS check in check tracker

* Add missing rcToRandomizerInf entry for 100 GS tokens
2023-10-21 00:43:25 +00:00
quellen-sol f56e839480 Add Geo rupee name (Hollow Knight) 2023-10-20 15:40:28 -07:00
Christopher Leggett 4d7fb88e2e Fix 100 GS check in check tracker (#3311) 2023-10-20 19:37:59 +00:00
Pepper0ni b294188782 Faster Swim animations, full credit to kimimaru4000
Co-authored-by: kimimaru4000 <kimimaru@posteo.net>
2023-10-20 12:35:05 +01:00
Ralphie Morell 9d8eab4511 add souls back to item list 2023-10-20 00:16:21 -04:00
Ralphie Morell f41bbeab06 actually get it running 2023-10-19 23:14:51 -04:00
Ralphie Morell 4d31463044 merge pt 2 2023-10-19 21:21:00 -04:00
Ralphie Morell ce94c047b5 Merge remote-tracking branch 'upstream/develop-rando' into soulcalibur 2023-10-19 21:20:43 -04:00
Christopher Leggett 92028aa8d8 Rando Definition Deduplication (#3284)
* Initial StaticData and RandoItem class definitions

* Initial implementation of RandoItem class.

* Rerranges RandoItem Constructor parameters

The parameters were rearranged for easy copy-paste from the GET_ITEM macro calls later on.

* Switches static data from map to static array.

Array is all that is needed, since the item list will be contiguous and indexed by the RandomizerGet Enum values.

* Defines part of the randomizer item list.

* Adds more item class instances to item_list.cpp

Up through bottles, many more items still to go.

* Adds song items

* Adds Maps and Compasses to the item_list

* Added Key Items to item_list

* Added Key Rings to item_list

* Added Dungeon Rewards to item_list

* Adds generic items and refills to item_list

* Adds shop items, triforce, and hints

Also added constructors that put the GET_ITEM_NONE data in for these items, since there is no corresponding GetItemEntry for them.

* Adds in the stages of progressive items

These are present for GetItemEntry purposes, and aren't really meant to be used in seed generation (unless we find a need for it later on.)

* Remove GetItemEntry data from progressive items

* Moves/adds function definitions to item/item_list

* Refactors GetItemEntry data

It's now a pointer to memory instantiated on the heap in the constructor. These are shared pointers so the memory is freed if any of the item instances get deconstructed (which they shouldn't but just in case.)

* Adds item class member for if item is progressive

* Removes unneeded stuff from initializer list macro

* Replaces relevant `uint32_t`s w/ `RandomizerGet`s

Also replaces calls to the ItemTable method with StaticData::RetrieveItem

* Switches our runtime code to use the new itemList.

* Changes just enough hint gen code to compile

* Initial Definition of Location Class

* Initial Implementation of Location

* Fixes some names and definitions.

* Extracts ActorID and SceneID enums to separate files.

This allows importing them without causing weird conflicts in cpp files when importing the z64scene.h and z64actor.h files directly. Now you can just import z64scene_enum.h and z64actor_enum.h instead. The two old files also import these new files so that existing setups still work as expected.

* Replaces the forward definitions with the new imports.

* Adds missing data for RandomizerCheckObjects.

* Definition and first entry of locationTable

* Added Mido's House Locations

* Added locations up through lost woods.

* Adds in Hyrule Field locations.

* Adds Lake Hylia locations

* Adds location name comments

* Adds Gerudo Valley Locations

* Adds Gerudo Fortress locations.

* Adds the Wasteland and Collosus locations

* Adds Market locations

* Adds Hyrule Castle locations.

* Adds Kakariko and Graveyard locations.

* Adds Death Mountain checks.

* Adds Goron City locations

* Adds Death Mountain Crater locations

* Adds Zora's River locations

* Added Zora's Domain Locations.

* Added Zora's Fountain locations

* Adds Lon Lon Ranch locations.

* Adds Deku Tree locations

* Adds Dodongo's Cavern Locations.

* Adds Jabu Jabu's Belly Locations

* Adds Forest Temple Locations

* Adds Fire Temple Locations

* Adds Water Temple Locations

* Added Spirit Temple Locations

* Some of shadow temple locations.

* Adds remaining Shadow Temple locations

* Fixes a leftover merge conflict

* Adds Bottom of the Well locations.

* Adds Ice Cavern locations

* Adds GTG locations.

* Adds Ganon's Castle and Tower locations

* Adds dungeon Gold Skulltula locations.

* Adds Overworld Gold Skulltula locations

* Adds dungeon reward locations

* Adds Heart Container Locations

* Adds Cutscene and Song locations

* Adds Cow locations

* Adds Shop locations.

* Adds hint locations

* Adds function for retrieving the Location data.

* Initial definition of ItemLocation structure for tracking runtime data

* First push on converting code to use new location definitions

* Changes hints to use the new tables

* Further conversion of hints to new definitions.

* Adds new Hint and Location IDs to area tables

* Moves areaTable to use new RandomizerRegion keys

* Removal of 3drando/item_location files.

* Uses new RandomizerRegion keys in entrance.cpp

* Final push for removal of massive keys.hpp enum

* Uses new SceneID Enum Values

* Remove RandomizerCheckObject structs in favor of new location list.

* Fix a few stragglers to successfully build

* Rename of RandoItem to just Item, but in the Rando namespace

* Adds static hints (Light Arrows, Altar text, etc) to the new Hint table.

* More hint related fixes/edits

* small fix for #include path

* Fix various miscellaneous issues related to seed gen and spoiler parsing.

* Handle progressive items correctly.

* Fixes some hint generation logic

* Fix a few GetItemEntry niche bugs.

* Adds missing shop GI Entries

* Formatting fixes

* small formatting fix

* Namespace StaticData under Rando

* Added a note about a potential use-after-free.

I confirmed the actual pointer in question isn't currently being used, but I added the note as a reminder to fix it later and/or as a warning to anyone who changes how the return value is used.

* Fixes missing location table entries

* Fixes LUS submodule and removes now-unused code

* Resolves weird duplicate definition issue

* Fix missing include

It was missed because not being included wasn't an issue on Windows.

* Fixes error present on Linux builds

* Fixes some issues with excluding locations

* Updates the Resolve Exclusion conflicts function

not sure if actually used, will look into that more later

* Removes some duplicate RGs

* More fixes of duplicate RG values.

* Fix a few duplication issues in the check tracker.

* Fix progressive bombchus.

* Minor typo fix, shouldn't really be affecting anything though

* Should fix some of the remaining check tracker issues.

* oops wrong boolean operator

* Fix skulltulas in the check tracker.

* oops, missing comma

* re-formatting of HintStone locations

* Fixes issue when picking up second Progressive Bullet Bag

* Hide bombchu bowling bombchus

* Fixes missed skullScene in location_list

* Reformats shop items

* Re-formats cow checks

* reformat song locations

* reformat "cutscene" checks

* reformat heart container locaitons

* reformat Boss/Dungeon reward checks

* Hide Triforce Completed if not playing Triforce Hunt

* Fixes incorrect chest param

* reformat GS Tokens locations and cuts down on duplicate data

* reformat Ganons Castle checks

* reformat GTG check locations

* Prevents Gift from Raoru from appearing in the check tracker

* more reformatting (botw, ice cavern, shadow temple)

* Should fix a couple more check tracker checks

* reformat spirit temple checks

* reformat water and fire temple checks

* fix RC_ZR_GS_ABOVE_BRIDGE flag typo

* reformat Forest Temple checks

* Fix RC_LW_TRADE_ODD_POTION in check tracker

* reformat child dungeon locations

* reformat overworld locations

* reformat item entries
2023-10-19 18:48:25 -05:00
Ralphie Morell e005985559 Added tracker support 2023-10-19 17:17:45 -04:00
Ralphie Morell 0751c59530 also remove phantom ganon's horses if he's not there 2023-10-19 00:23:05 -04:00
Ralphie Morell db4a30a7ff don't commit at fucking 2am 2023-10-18 23:58:14 -04:00
Ralphie Morell 51e965cf7e Cleaned up soul helpers; added check for ganon soul 2023-10-18 20:58:09 -04:00
inspectredc 38d70dd12f update tooltip to mention glitch use 2023-10-18 23:04:55 +01:00
inspectredc 1b2a31e34b Add success sound for toggle and equipping delay 2023-10-18 22:11:04 +01:00
inspectredc 9950c02fb2 Strength name un-greyed out and apply zoom regardless of strength disabled 2023-10-18 21:39:04 +01:00
inspectredc c22d1e724d No longer grey out bracelet as adult when toggle option is on and strength enabled 2023-10-18 21:29:00 +01:00
inspectredc 03ea465251 Toggle Strength 2023-10-18 21:21:50 +01:00
Ralphie Morell 582771ab48 insert witty commit message here 2023-10-18 01:30:49 -04:00
Garrett Cox f30e76e7b1 MVP ValueViewer 2023-10-17 08:54:52 -05:00
Garrett Cox 8357c2aa1b Merge pull request #3294 from HarbourMasters/develop
develop -> develop-rando (10/16/23) 2: Electric Boogaloo
2023-10-16 09:22:39 -05:00
6569 changed files with 460891 additions and 104650 deletions
+1 -1
View File
@@ -1 +1 @@
libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev ninja-build
libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev nlohmann-json3-dev libtinyxml2-dev libspdlog-dev ninja-build libogg-dev libopus-dev opus-tools libopusfile-dev libvorbis-dev libespeak-ng-dev
+21
View File
@@ -0,0 +1,21 @@
name: clang-format
on: [pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
clang-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Install clang-format
run: |
sudo apt-get update
sudo apt-get install -y clang-format-14
- name: Run clang-format
run: |
./run-clang-format.sh
git diff --exit-code
+209 -194
View File
@@ -6,309 +6,324 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
generate-soh-otr:
runs-on: ${{ (vars.LINUX_RUNNER && fromJSON(vars.LINUX_RUNNER)) || 'ubuntu-latest' }}
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Git Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: ccache
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ runner.os }}-soh-otr-ccache
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-otr-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-otr-ccache-${{ github.ref }}
${{ runner.os }}-otr-ccache
- name: Install dependencies
if: ${{ !vars.LINUX_RUNNER }}
run: |
sudo apt-get update
sudo apt-get install -y $(cat .github/workflows/apt-deps.txt)
sudo apt-get install -y $(cat .github/workflows/apt-deps.txt) libzip-dev zipcmp zipmerge ziptool
- name: Restore Cached deps folder
uses: actions/cache/restore@v4
with:
key: ${{ runner.os }}-deps-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-deps-${{ github.ref }}-
${{ runner.os }}-deps-
path: deps
- name: Create deps folder
run: mkdir -p deps
- name: Install latest SDL
if: ${{ !vars.LINUX_RUNNER }}
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz
tar -xzf SDL2-2.26.1.tar.gz
cd SDL2-2.26.1
./configure
if [ ! -d "deps/SDL2-2.30.3" ]; then
wget https://github.com/libsdl-org/SDL/releases/download/release-2.30.3/SDL2-2.30.3.tar.gz
tar -xzf SDL2-2.30.3.tar.gz -C deps
fi
cd deps/SDL2-2.30.3
./configure --enable-hidapi-libusb
make -j 10
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Install latest SDL_net
if: ${{ !vars.LINUX_RUNNER }}
- name: Install latest tinyxml2
run: |
sudo apt-get remove libtinyxml2-dev
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz
tar -xzf SDL2_net-2.2.0.tar.gz
cd SDL2_net-2.2.0
./configure
make -j 10
if [ ! -d "deps/tinyxml2-10.0.0" ]; then
wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz
tar -xzf 10.0.0.tar.gz -C deps
fi
cd deps/tinyxml2-10.0.0
mkdir -p build
cd build
cmake ..
make
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Generate soh.otr
- name: Generate soh.o2r
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release
cmake --build build-cmake --config Release --target GenerateSohOtr
- uses: actions/upload-artifact@v3
cmake --build build-cmake --config Release --target GenerateSohOtr -j3
- name: Upload soh.o2r
uses: actions/upload-artifact@v4
with:
name: soh.otr
path: soh.otr
retention-days: 1
name: soh.o2r
path: soh.o2r
retention-days: 3
build-macos:
needs: generate-soh-otr
runs-on: ${{ (vars.MAC_RUNNER && fromJSON(vars.MAC_RUNNER)) || 'macos-12' }}
runs-on: macos-14
steps:
- uses: actions/checkout@v3
- name: Git Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: ccache
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ runner.os }}-ccache
- name: Install gtar wrapper
if: ${{ !vars.MAC_RUNNER }}
run: |
sudo mv /usr/local/bin/gtar /usr/local/bin/gtar.orig
sudo cp .github/workflows//gtar /usr/local/bin/gtar
sudo chmod +x /usr/local/bin/gtar
- name: Cache MacPorts
id: cache-macports
if: ${{ !vars.MAC_RUNNER }}
uses: actions/cache@v2
with:
path: /opt/local/
key: ${{ runner.os }}-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}
create-symlink: true
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-14-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-macports-
- name: Install MacPorts (if necessary)
if: ${{ !vars.MAC_RUNNER }}
${{ runner.os }}-14-ccache-${{ github.ref }}
${{ runner.os }}-14-ccache
# Needed to apply sudo for macports cache restore
- name: Install gtar wrapper
run: |
if [ -d /opt/local/ ]; then
sudo mv /opt/homebrew/bin/gtar /opt/homebrew/bin/gtar.orig
sudo cp .github/workflows/gtar /opt/homebrew/bin/gtar
sudo chmod +x /opt/homebrew/bin/gtar
- name: Restore Cached MacPorts
id: restore-cache-macports
uses: actions/cache/restore@v4
with:
key: ${{ runner.os }}-14-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-14-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}-
${{ runner.os }}-14-macports-
path: /opt/local/
# Updated PATH applies to the next step and onwards
- name: Install MacPorts (if necessary)
run: |
if command -v /opt/local/bin/port 2>&1 >/dev/null; then
echo "MacPorts already installed"
else
wget https://github.com/macports/macports-base/releases/download/v2.7.2/MacPorts-2.7.2-12-Monterey.pkg
sudo installer -pkg ./MacPorts-2.7.2-12-Monterey.pkg -target /
echo "Installing MacPorts"
wget https://github.com/macports/macports-base/releases/download/v2.11.5/MacPorts-2.11.5-14-Sonoma.pkg
sudo installer -pkg ./MacPorts-2.11.5-14-Sonoma.pkg -target /
fi
echo "/opt/local/bin:/opt/local/sbin" >> $GITHUB_PATH
echo "/opt/local/bin:/opt/local/sbin" >> "$GITHUB_PATH"
- name: Install dependencies
if: ${{ !vars.MAC_RUNNER }}
run: |
brew uninstall --ignore-dependencies libpng
sudo port install $(cat .github/workflows/macports-deps.txt)
brew install ninja
- name: Download soh.otr
uses: actions/download-artifact@v3
- name: Download soh.o2r
uses: actions/download-artifact@v4
with:
name: soh.otr
name: soh.o2r
path: build-cmake/soh
- name: Build SoH
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
export PATH="/usr/lib/ccache:/opt/homebrew/opt/ccache/libexec:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release --parallel 10
mv soh.otr build-cmake/soh
(cd build-cmake && cpack)
mv _packages/*.dmg SoH.dmg
mv README.md readme.txt
- name: Upload build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: soh-mac
path: |
SoH.dmg
readme.txt
- name: Save Cache MacPorts
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v4
with:
key: ${{ steps.restore-cache-macports.outputs.cache-primary-key }}
path: /opt/local/
build-linux:
needs: generate-soh-otr
strategy:
fail-fast: true
matrix:
include:
- os: ubuntu-20.04
gcc: 10
archive-suffix: compatibility
- os: ubuntu-22.04
gcc: 12
archive-suffix: performance
runs-on: ${{ (matrix.os == 'ubuntu-20.04' && ((vars.LINUX_COMPATIBILITY_RUNNER && fromJSON(vars.LINUX_COMPATIBILITY_RUNNER)) || matrix.os)) || (matrix.os == 'ubuntu-22.04' && ((vars.LINUX_PERFORMANCE_RUNNER && fromJSON(vars.LINUX_PERFORMANCE_RUNNER)) || matrix.os)) }}
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Git Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Install dependencies
if: ${{ (matrix.os == 'ubuntu-20.04' && !vars.LINUX_COMPATIBILITY_RUNNER) || (matrix.os == 'ubuntu-22.04' && !vars.LINUX_PERFORMANCE_RUNNER) }}
run: |
sudo apt-get update
sudo apt-get install -y $(cat .github/workflows/apt-deps.txt)
- name: ccache
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ matrix.os }}-ccache
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-ccache-${{ github.ref }}
${{ runner.os }}-ccache
- name: Restore Cached deps folder
id: restore-cache-deps
uses: actions/cache/restore@v4
with:
key: ${{ runner.os }}-deps-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-deps-${{ github.ref }}-
${{ runner.os }}-deps-
path: deps
- name: Create deps folder
run: mkdir -p deps
- name: Install latest SDL
if: ${{ (matrix.os == 'ubuntu-20.04' && !vars.LINUX_COMPATIBILITY_RUNNER) || (matrix.os == 'ubuntu-22.04' && !vars.LINUX_PERFORMANCE_RUNNER) }}
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz
tar -xzf SDL2-2.26.1.tar.gz
cd SDL2-2.26.1
./configure
if [ ! -d "deps/SDL2-2.30.3" ]; then
wget https://github.com/libsdl-org/SDL/releases/download/release-2.30.3/SDL2-2.30.3.tar.gz
tar -xzf SDL2-2.30.3.tar.gz -C deps
fi
cd deps/SDL2-2.30.3
./configure --enable-hidapi-libusb
make -j 10
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Install latest SDL_net
if: ${{ (matrix.os == 'ubuntu-20.04' && !vars.LINUX_COMPATIBILITY_RUNNER) || (matrix.os == 'ubuntu-22.04' && !vars.LINUX_PERFORMANCE_RUNNER) }}
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz
tar -xzf SDL2_net-2.2.0.tar.gz
cd SDL2_net-2.2.0
if [ ! -d "deps/SDL2_net-2.2.0" ]; then
wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz
tar -xzf SDL2_net-2.2.0.tar.gz -C deps
fi
cd deps/SDL2_net-2.2.0
./configure
make -j 10
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Download soh.otr
uses: actions/download-artifact@v3
- name: Install latest tinyxml2
run: |
sudo apt-get remove libtinyxml2-dev
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/tinyxml2-10.0.0" ]; then
wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz
tar -xzf 10.0.0.tar.gz -C deps
fi
cd deps/tinyxml2-10.0.0
mkdir -p build
cd build
cmake ..
make
sudo make install
- name: Install libzip without crypto
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/libzip-1.10.1" ]; then
wget https://github.com/nih-at/libzip/releases/download/v1.10.1/libzip-1.10.1.tar.gz
tar -xzf libzip-1.10.1.tar.gz -C deps
fi
cd deps/libzip-1.10.1
mkdir -p build
cd build
cmake .. -DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF
make
sudo make install
sudo cp -av /usr/local/lib/libzip* /lib/x86_64-linux-gnu/
- name: Download soh.o2r
uses: actions/download-artifact@v4
with:
name: soh.otr
name: soh.o2r
path: build-cmake/soh
- name: Build SoH
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release -j3
(cd build-cmake && cpack -G External)
mv README.md readme.txt
mv build-cmake/*.appimage soh.appimage
env:
CC: gcc-${{ matrix.gcc }}
CXX: g++-${{ matrix.gcc }}
CC: gcc-12
CXX: g++-12
- name: Upload build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: soh-linux-${{ matrix.archive-suffix }}
name: soh-linux
path: |
soh.appimage
readme.txt
build-switch:
needs: generate-soh-otr
runs-on: ${{ (vars.LINUX_RUNNER && fromJSON(vars.LINUX_RUNNER)) || 'ubuntu-latest' }}
container:
image: devkitpro/devkita64:latest
steps:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y ninja-build
- name: Fix dubious ownership error
if: ${{ vars.LINUX_RUNNER }}
run: git config --global --add safe.directory '*'
- uses: actions/checkout@v3
- name: Save Cache deps folder
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v4
with:
submodules: true
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ runner.os }}-switch-ccache
- name: Build SoH
run: |
cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
cmake --build build-switch --target soh_nro -j3
key: ${{ steps.restore-cache-deps.outputs.cache-primary-key }}
path: deps
mv build-switch/soh/*.nro soh.nro
mv README.md readme.txt
- name: Download soh.otr
uses: actions/download-artifact@v3
with:
name: soh.otr
- name: Upload build
uses: actions/upload-artifact@v3
with:
name: soh-switch
path: |
soh.nro
soh.otr
readme.txt
build-wiiu:
needs: generate-soh-otr
runs-on: ${{ (vars.LINUX_RUNNER && fromJSON(vars.LINUX_RUNNER)) || 'ubuntu-latest' }}
container:
image: devkitpro/devkitppc:20230110
steps:
- name: Install dependencies
if: ${{ !vars.LINUX_RUNNER }}
run: |
sudo apt-get update
sudo apt-get install -y ninja-build
- uses: actions/checkout@v3
with:
submodules: true
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ runner.os }}-wiiu-ccache
- name: Build SoH
run: |
cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache
cmake --build build-wiiu --target soh_wuhb --config Release -j3
mv build-wiiu/soh/*.rpx soh.rpx
mv build-wiiu/soh/*.wuhb soh.wuhb
mv README.md readme.txt
env:
DEVKITPRO: /opt/devkitpro
DEVKITPPC: /opt/devkitpro/devkitPPC
- name: Download soh.otr
uses: actions/download-artifact@v3
with:
name: soh.otr
- name: Upload build
uses: actions/upload-artifact@v3
with:
name: soh-wiiu
path: |
soh.rpx
soh.wuhb
soh.otr
readme.txt
build-windows:
needs: generate-soh-otr
runs-on: ${{ (vars.WINDOWS_RUNNER && fromJSON(vars.WINDOWS_RUNNER)) || 'windows-latest' }}
runs-on: windows-latest
steps:
- name: Install dependencies
if: ${{ !vars.WINDOWS_RUNNER }}
run: |
choco install ninja
choco install ninja -y
Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force -ErrorAction SilentlyContinue
- uses: actions/checkout@v3
- name: Git Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: ccache
uses: dcvz/ccache-action@27b9f33213c0079872f064f6b6ba0233dfa16ba2
- name: Configure sccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ${{ runner.os }}-ccache
- uses: ilammy/msvc-dev-cmd@v1
variant: sccache
max-size: "2G"
evict-old-files: job
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-ccache-${{ github.ref }}
${{ runner.os }}-ccache
- name: Restore Cached VCPKG folder
id: restore-cache-vcpkg
uses: actions/cache/restore@v4
with:
key: ${{ runner.os }}-vcpkg-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-vcpkg-${{ github.ref }}-
${{ runner.os }}-vcpkg-
path: vcpkg
- name: Configure Developer Command Prompt
uses: ilammy/msvc-dev-cmd@v1
- name: Download soh.o2r
uses: actions/download-artifact@v4
with:
name: soh.o2r
path: build-windows/soh
- name: Build SoH
env:
VCPKG_ROOT: D:/a/vcpkg
env:
VCPKG_ROOT: ${{github.workspace}}/vcpkg
run: |
set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH"
cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DBUILD_REMOTE_CONTROL=1
cmake --build build-windows --config Release --parallel 10
mkdir soh-windows
mv ./x64/Release/soh.exe ./soh-windows/soh.exe
mkdir soh-windows/debug
mkdir soh-windows/mods
New-Item soh-windows/mods/custom_otr_files_go_here.txt -type file
mv ./x64/Release/soh.pdb ./soh-windows/debug/soh.pdb
mv ./README.md ./soh-windows/readme.txt
mv ./build-windows/gamecontrollerdb.txt ./soh-windows/gamecontrollerdb.txt
mv ./x64/Release/assets ./soh-windows
- name: Download soh.otr
uses: actions/download-artifact@v3
with:
name: soh.otr
path: soh-windows
(cd build-windows && cpack)
cd ..
mv _packages/*.zip _packages/soh-windows.zip
- name: Unzip package
run: Expand-Archive -Path _packages/soh-windows.zip -DestinationPath soh-windows
- name: Upload build
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: soh-windows
path: soh-windows
- name: Save Cache VCPKG folder
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v4
with:
key: ${{ steps.restore-cache-vcpkg.outputs.cache-primary-key }}
path: vcpkg
+1 -1
View File
@@ -1,2 +1,2 @@
#!/bin/sh
exec sudo /usr/local/bin/gtar.orig "$@"
exec sudo /opt/homebrew/bin/gtar.orig "$@"
+1 -1
View File
@@ -1 +1 @@
libsdl2 +universal libpng +universal glew +universal
libsdl2 +universal libsdl2_net +universal libpng +universal glew +universal libzip +universal nlohmann-json +universal tinyxml2 +universal libogg +universal libopus +universal opusfile +universal libvorbis +universal
+7 -6
View File
@@ -12,7 +12,7 @@ jobs:
if: ${{ github.event.workflow_run.event == 'pull_request' }}
steps:
- id: 'pr-number'
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
result-encoding: string
script: |
@@ -20,8 +20,9 @@ jobs:
const pullHeadSHA = '${{github.event.workflow_run.head_sha}}';
const pullUserId = ${{github.event.sender.id}};
const prNumber = await (async () => {
const pulls = await github.rest.pulls.list({owner, repo});
for await (const {data} of github.paginate.iterator(pulls)) {
for await (const { data } of github.paginate.iterator(
github.rest.pulls.list, { owner, repo }
)) {
for (const pull of data) {
if (pull.head.sha === pullHeadSHA && pull.user.id === pullUserId) {
return pull.number;
@@ -36,7 +37,7 @@ jobs:
return prNumber;
- id: 'artifacts-text'
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
result-encoding: string
script: |
@@ -47,13 +48,13 @@ jobs:
});
return allArtifacts.data.artifacts.reduce((acc, item) => {
if (item.name === "assets") return acc;
if (item.name === "soh.o2r") return acc;
acc += `
- [${item.name}.zip](https://nightly.link/${context.repo.owner}/${context.repo.repo}/actions/artifacts/${item.id}.zip)`;
return acc;
}, '### Build Artifacts');
- id: 'add-to-pr'
uses: garrettjoecox/pr-section@3.1.0
uses: garrettjoecox/pr-section@4.0.0
with:
repo-token: '${{ secrets.GITHUB_TOKEN }}'
pr-number: ${{ steps.pr-number.outputs.result }}
@@ -0,0 +1,72 @@
name: test-builds-on-distros
on:
workflow_dispatch: # by request
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
strategy:
matrix:
image: ["archlinux:base", "opensuse/tumbleweed:latest", "ubuntu:mantic", "debian:bookworm", "fedora:39"]
cc: ["gcc", "clang"]
include:
- cxx: g++
cc: gcc
- cxx: clang++
cc: clang
runs-on: ${{ (vars.LINUX_RUNNER && fromJSON(vars.LINUX_RUNNER)) || 'ubuntu-latest' }}
container:
image: ${{ matrix.image }}
steps:
- name: Install dependencies (pacman)
if: ${{ matrix.image == 'archlinux:base' }}
run: |
echo arch
echo pacman -S ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
pacman -Syu --noconfirm
pacman -S --noconfirm ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
- name: Install dependencies (dnf)
if: ${{ matrix.image == 'fedora:39' }}
run: |
echo fedora
echo dnf install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} wget git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools tinyxml2-devel spdlog-devel
dnf -y upgrade
dnf -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} wget git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools tinyxml2-devel spdlog-devel
- name: Install dependencies (apt)
if: ${{ matrix.image == 'ubuntu:mantic' || matrix.image == 'debian:bookworm' }}
run: |
echo debian based
echo apt-get install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'g++') || '' }} git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libopengl-dev
apt-get update
apt-get -y full-upgrade
apt-get -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'g++') || '' }} git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libopengl-dev
- name: Install dependencies (zypper)
if: ${{ matrix.image == 'opensuse/tumbleweed:latest' }}
run: |
echo openSUSE
echo zypper in ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} ${{ matrix.cc == 'clang' && 'libstdc++-devel' || '' }} git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
zypper --non-interactive dup
zypper --non-interactive in ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} ${{ matrix.cc == 'clang' && 'libstdc++-devel' || '' }} git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
- name: Install latest nlohmann
if: ${{ matrix.image == 'fedora:39' }}
run: |
wget https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz
tar -xzvf v3.11.3.tar.gz
cd json-3.11.3
mkdir build
cd build
cmake ..
make
sudo make install
- uses: actions/checkout@v4
with:
submodules: true
- name: Build SoH
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release -j3
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
+11 -3
View File
@@ -4,7 +4,9 @@ __pycache__/
.DS_Store
# Text editor remnants
.vscode/
.vscode/*
!.vscode/tasks.json
.vs/
.idea/
cmake-build-**
@@ -41,6 +43,7 @@ tools/asmsplitter/c/*
ctx.c
tools/*dSYM/
graphs/
.netcoredbg_hist
# Assets
*.png
@@ -399,7 +402,6 @@ ASALocalRun/
lib/libgfxd/libgfxd.a
ExporterTest/ExporterTest.a
ZAPDUtils/ZAPDUtils.a
.vscode/
build/
external/
ZAPDUtils/build/
@@ -410,6 +412,7 @@ ReleaseObj/*
.tags
tags
*.otr
*.o2r
*.sav
shipofharkinian.ini
shipofharkinian.json
@@ -448,5 +451,10 @@ _packages
*/extract_assets_cmake*
/build*
soh/build.c
soh/src/boot/build.c
soh/properties.h
# Tools
/clang-format
/clang-format.exe
*.o2r
+61
View File
@@ -0,0 +1,61 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Setup CMake Project",
"type": "shell",
"command": "cmake",
"args": [
"-S",
".",
"-B",
"build/x64",
"-G",
"Visual Studio 17 2022",
"-T",
"v143",
"-A",
"x64"
],
"group": "build",
"problemMatcher": []
},
{
"label": "Generate SOH OTR",
"type": "shell",
"command": "cmake",
"args": [
"--build",
"./build/x64",
"--target",
"GenerateSohOtr"
],
"group": "build",
"problemMatcher": []
},
{
"label": "Build Project",
"type": "shell",
"command": "cmake",
"args": [
"--build",
"./build/x64"
],
"group": {
"kind": "build",
"isDefault": true
},
"dependsOn": ["Generate SOH OTR"],
"problemMatcher": []
},
{
"label": "Build All",
"dependsOrder": "sequence",
"dependsOn": [
"Setup CMake Project",
"Generate SOH OTR",
"Build Project"
]
}
]
}
+5 -1
View File
@@ -8,5 +8,9 @@ if(MSVC)
set_target_properties("${PROPS_TARGET}" PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
set_config_specific_property("DEFAULT_CXX_EXCEPTION_HANDLING" "/EHsc")
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
if (CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache|sccache")
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Z7")
else()
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
endif()
endif()
+61
View File
@@ -0,0 +1,61 @@
# - Find ogg
# Find the native ogg includes and libraries
#
# OGG_INCLUDE_DIRS - where to find ogg.h, etc.
# OGG_LIBRARIES - List of libraries when using ogg.
# OGG_FOUND - True if ogg found.
if (OGG_INCLUDE_DIR)
# Already in cache, be silent
set(OGG_FIND_QUIETLY TRUE)
endif ()
find_package (PkgConfig QUIET)
pkg_check_modules (PC_OGG QUIET ogg>=1.3.0)
set (OGG_VERSION ${PC_OGG_VERSION})
find_path (OGG_INCLUDE_DIR ogg/ogg.h
HINTS
${PC_OGG_INCLUDEDIR}
${PC_OGG_INCLUDE_DIRS}
${OGG_ROOT}
)
# MSVC built ogg may be named ogg_static.
# The provided project files name the library with the lib prefix.
find_library (OGG_LIBRARY
NAMES
ogg
ogg_static
libogg
libogg_static
HINTS
${PC_OGG_LIBDIR}
${PC_OGG_LIBRARY_DIRS}
${OGG_ROOT}
)
# Handle the QUIETLY and REQUIRED arguments and set OGG_FOUND
# to TRUE if all listed variables are TRUE.
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (Ogg
REQUIRED_VARS
OGG_LIBRARY
OGG_INCLUDE_DIR
VERSION_VAR
OGG_VERSION
)
if (OGG_FOUND)
set (OGG_LIBRARIES ${OGG_LIBRARY})
set (OGG_INCLUDE_DIRS ${OGG_INCLUDE_DIR})
if(NOT TARGET Ogg::ogg)
add_library(Ogg::ogg UNKNOWN IMPORTED)
set_target_properties(Ogg::ogg PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OGG_INCLUDE_DIRS}"
IMPORTED_LOCATION "${OGG_LIBRARIES}"
)
endif ()
endif ()
mark_as_advanced (OGG_INCLUDE_DIR OGG_LIBRARY)
+44
View File
@@ -0,0 +1,44 @@
# - FindOpus.cmake
# Find the native opus includes and libraries
#
# OPUS_INCLUDE_DIRS - where to find opus/opus.h, etc.
# OPUS_LIBRARIES - List of libraries when using libopus(file).
# OPUS_FOUND - True if libopus found.
if(OPUS_INCLUDE_DIR AND OPUS_LIBRARY AND OPUSFILE_LIBRARY)
# Already in cache, be silent
set(OPUS_FIND_QUIETLY TRUE)
endif(OPUS_INCLUDE_DIR AND OPUS_LIBRARY AND OPUSFILE_LIBRARY)
find_path(OPUS_INCLUDE_DIR
NAMES opusfile.h
PATH_SUFFIXES opus
)
# MSVC built opus may be named opus_static
# The provided project files name the library with the lib prefix.
find_library(OPUS_LIBRARY
NAMES opus opus_static libopus libopus_static
)
#find_library(OPUSFILE_LIBRARY
# NAMES opusfile opusfile_static libopusfile libopusfile_static
#)
# Handle the QUIETLY and REQUIRED arguments and set OPUS_FOUND
# to TRUE if all listed variables are TRUE.
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Opus DEFAULT_MSG
OPUS_LIBRARY OPUS_INCLUDE_DIR
)
if(OPUS_FOUND)
set(OPUS_LIBRARIES ${OPUS_LIBRARY})
set(OPUS_INCLUDE_DIRS ${OPUS_INCLUDE_DIR})
if(NOT TARGET Opus::opus)
add_library(Opus::opus UNKNOWN IMPORTED)
set_target_properties(Opus::opus PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OPUS_INCLUDE_DIRS}"
IMPORTED_LOCATION "${OPUS_LIBRARIES}"
)
endif()
endif(OPUS_FOUND)
+63
View File
@@ -0,0 +1,63 @@
# FindOpusFile.cmake
# Locate the libopusfile library and its dependencies (libopus and libogg).
# Defines the following variables on success:
# OPUSFILE_FOUND - Indicates if opusfile was found
# OPUSFILE_INCLUDE_DIR - Directory containing opusfile.h
# OPUSFILE_LIBRARY - Path to the opusfile library
# OPUSFILE_LIBRARIES - Full list of libraries to link (opusfile, opus, ogg)
# Use pkg-config to find opusfile if available
find_package(PkgConf)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_OPUSFILE QUIET opusfile)
endif()
# Search for the OpusFile header
find_path(OPUSFILE_INCLUDE_DIR
NAMES opusfile.h
HINTS ${PC_OPUSFILE_INCLUDE_DIRS}
PATHS /usr/include/opus /usr/local/include/opus /opt/local/include/opus /opt/homebrew/include/opus
DOC "Directory where opusfile.h is located"
)
# Search for the OpusFile library
find_library(OPUSFILE_LIBRARY
NAMES opusfile
HINTS ${PC_OPUSFILE_LIBRARY_DIRS}
DOC "Path to the libopusfile library"
)
# Search for the Opus library (dependency of OpusFile)
find_library(OPUS_LIBRARY
NAMES opus
DOC "Path to the libopus library (dependency of libopusfile)"
)
# Search for the Ogg library (dependency of OpusFile)
find_library(OGG_LIBRARY
NAMES ogg
DOC "Path to the libogg library (dependency of libopusfile)"
)
# Check if all required components are found
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpusFile
REQUIRED_VARS OPUSFILE_LIBRARY OPUSFILE_INCLUDE_DIR OPUS_LIBRARY OGG_LIBRARY
VERSION_VAR OPUSFILE_VERSION
)
# Define an imported target if everything is found
if (OPUSFILE_FOUND)
add_library(Opusfile::Opusfile INTERFACE IMPORTED)
set_target_properties(Opusfile::Opusfile PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OPUSFILE_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES "${OPUSFILE_LIBRARY};${OPUS_LIBRARY};${OGG_LIBRARY}"
)
# Optionally expose the include and libraries separately
set(OPUSFILE_LIBRARIES ${OPUSFILE_LIBRARY} ${OPUS_LIBRARY} ${OGG_LIBRARY})
set(OPUSFILE_INCLUDE_DIRS ${OPUSFILE_INCLUDE_DIR})
else()
set(OPUSFILE_FOUND FALSE)
endif()
+210
View File
@@ -0,0 +1,210 @@
#[=======================================================================[.rst:
FindVorbis
----------
Finds the native vorbis, vorbisenc amd vorbisfile includes and libraries.
Imported Targets
^^^^^^^^^^^^^^^^
This module provides the following imported targets, if found:
``Vorbis::vorbis``
The Vorbis library
``Vorbis::vorbisenc``
The VorbisEnc library
``Vorbis::vorbisfile``
The VorbisFile library
Result Variables
^^^^^^^^^^^^^^^^
This will define the following variables:
``Vorbis_Vorbis_INCLUDE_DIRS``
List of include directories when using vorbis.
``Vorbis_Enc_INCLUDE_DIRS``
List of include directories when using vorbisenc.
``Vorbis_File_INCLUDE_DIRS``
List of include directories when using vorbisfile.
``Vorbis_Vorbis_LIBRARIES``
List of libraries when using vorbis.
``Vorbis_Enc_LIBRARIES``
List of libraries when using vorbisenc.
``Vorbis_File_LIBRARIES``
List of libraries when using vorbisfile.
``Vorbis_FOUND``
True if vorbis and requested components found.
``Vorbis_Vorbis_FOUND``
True if vorbis found.
``Vorbis_Enc_FOUND``
True if vorbisenc found.
``Vorbis_Enc_FOUND``
True if vorbisfile found.
Cache variables
^^^^^^^^^^^^^^^
The following cache variables may also be set:
``Vorbis_Vorbis_INCLUDE_DIR``
The directory containing ``vorbis/vorbis.h``.
``Vorbis_Enc_INCLUDE_DIR``
The directory containing ``vorbis/vorbisenc.h``.
``Vorbis_File_INCLUDE_DIR``
The directory containing ``vorbis/vorbisenc.h``.
``Vorbis_Vorbis_LIBRARY``
The path to the vorbis library.
``Vorbis_Enc_LIBRARY``
The path to the vorbisenc library.
``Vorbis_File_LIBRARY``
The path to the vorbisfile library.
Hints
^^^^^
A user may set ``Vorbis_ROOT`` to a vorbis installation root to tell this module where to look.
#]=======================================================================]
if (Vorbis_Vorbis_INCLUDE_DIR)
# Already in cache, be silent
set (Vorbis_FIND_QUIETLY TRUE)
endif ()
set (Vorbis_Vorbis_FIND_QUIETLY TRUE)
set (Vorbis_Enc_FIND_QUIETLY TRUE)
set (Vorbis_File_FIND_QUIETLY TRUE)
find_package (Ogg QUIET)
find_package (PkgConfig QUIET)
pkg_check_modules (PC_Vorbis_Vorbis QUIET vorbis)
pkg_check_modules (PC_Vorbis_Enc QUIET vorbisenc)
pkg_check_modules (PC_Vorbis_File QUIET vorbisfile)
set (Vorbis_VERSION ${PC_Vorbis_Vorbis_VERSION})
find_path (Vorbis_Vorbis_INCLUDE_DIR vorbis/codec.h
HINTS
${PC_Vorbis_Vorbis_INCLUDEDIR}
${PC_Vorbis_Vorbis_INCLUDE_DIRS}
${Vorbis_ROOT}
)
find_path (Vorbis_Enc_INCLUDE_DIR vorbis/vorbisenc.h
HINTS
${PC_Vorbis_Enc_INCLUDEDIR}
${PC_Vorbis_Enc_INCLUDE_DIRS}
${Vorbis_ROOT}
)
find_path (Vorbis_File_INCLUDE_DIR vorbis/vorbisfile.h
HINTS
${PC_Vorbis_File_INCLUDEDIR}
${PC_Vorbis_File_INCLUDE_DIRS}
${Vorbis_ROOT}
)
find_library (Vorbis_Vorbis_LIBRARY
NAMES
vorbis
vorbis_static
libvorbis
libvorbis_static
HINTS
${PC_Vorbis_Vorbis_LIBDIR}
${PC_Vorbis_Vorbis_LIBRARY_DIRS}
${Vorbis_ROOT}
)
find_library (Vorbis_Enc_LIBRARY
NAMES
vorbisenc
vorbisenc_static
libvorbisenc
libvorbisenc_static
HINTS
${PC_Vorbis_Enc_LIBDIR}
${PC_Vorbis_Enc_LIBRARY_DIRS}
${Vorbis_ROOT}
)
find_library (Vorbis_File_LIBRARY
NAMES
vorbisfile
vorbisfile_static
libvorbisfile
libvorbisfile_static
HINTS
${PC_Vorbis_File_LIBDIR}
${PC_Vorbis_File_LIBRARY_DIRS}
${Vorbis_ROOT}
)
include (FindPackageHandleStandardArgs)
if (Vorbis_Vorbis_LIBRARY AND Vorbis_Vorbis_INCLUDE_DIR AND Ogg_FOUND)
set (Vorbis_Vorbis_FOUND TRUE)
endif ()
if (Vorbis_Enc_LIBRARY AND Vorbis_Enc_INCLUDE_DIR AND Vorbis_Vorbis_FOUND)
set (Vorbis_Enc_FOUND TRUE)
endif ()
if (Vorbis_Vorbis_FOUND AND Vorbis_File_LIBRARY AND Vorbis_File_INCLUDE_DIR)
set (Vorbis_File_FOUND TRUE)
endif ()
find_package_handle_standard_args (Vorbis
REQUIRED_VARS
Vorbis_Vorbis_LIBRARY
Vorbis_Vorbis_INCLUDE_DIR
Ogg_FOUND
HANDLE_COMPONENTS
VERSION_VAR Vorbis_VERSION)
if (Vorbis_Vorbis_FOUND)
set (Vorbis_Vorbis_INCLUDE_DIRS ${VORBIS_INCLUDE_DIR})
set (Vorbis_Vorbis_LIBRARIES ${VORBIS_LIBRARY} ${OGG_LIBRARIES})
if (NOT TARGET Vorbis::vorbis)
add_library (Vorbis::vorbis UNKNOWN IMPORTED)
set_target_properties (Vorbis::vorbis PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_Vorbis_INCLUDE_DIR}"
IMPORTED_LOCATION "${Vorbis_Vorbis_LIBRARY}"
INTERFACE_LINK_LIBRARIES Ogg::ogg
)
endif ()
if (Vorbis_Enc_FOUND)
set (Vorbis_Enc_INCLUDE_DIRS ${Vorbis_Enc_INCLUDE_DIR})
set (Vorbis_Enc_LIBRARIES ${Vorbis_Enc_LIBRARY} ${Vorbis_Enc_LIBRARIES})
if (NOT TARGET Vorbis::vorbisenc)
add_library (Vorbis::vorbisenc UNKNOWN IMPORTED)
set_target_properties (Vorbis::vorbisenc PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_Enc_INCLUDE_DIR}"
IMPORTED_LOCATION "${Vorbis_Enc_LIBRARY}"
INTERFACE_LINK_LIBRARIES Vorbis::vorbis
)
endif ()
endif ()
if (Vorbis_File_FOUND)
set (Vorbis_File_INCLUDE_DIRS ${Vorbis_File_INCLUDE_DIR})
set (Vorbis_File_LIBRARIES ${Vorbis_File_LIBRARY} ${Vorbis_File_LIBRARIES})
if (NOT TARGET Vorbis::vorbisfile)
add_library (Vorbis::vorbisfile UNKNOWN IMPORTED)
set_target_properties (Vorbis::vorbisfile PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${Vorbis_File_INCLUDE_DIR}"
IMPORTED_LOCATION "${Vorbis_File_LIBRARY}"
INTERFACE_LINK_LIBRARIES Vorbis::vorbis
)
endif ()
endif ()
endif ()
mark_as_advanced (Vorbis_Vorbis_INCLUDE_DIR Vorbis_Vorbis_LIBRARY)
mark_as_advanced (Vorbis_Enc_INCLUDE_DIR Vorbis_Enc_LIBRARY)
mark_as_advanced (Vorbis_File_INCLUDE_DIR Vorbis_File_LIBRARY)
+3 -4
View File
@@ -1,9 +1,9 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY 0)
set(CPACK_COMPONENTS_ALL "ship" "extractor" "appimage")
set(CPACK_COMPONENTS_ALL "ship")
if (NOT CPACK_GENERATOR STREQUAL "External")
list(REMOVE_ITEM CPACK_COMPONENTS_ALL "appimage")
if (CPACK_GENERATOR STREQUAL "External")
list(APPEND CPACK_COMPONENTS_ALL "extractor" "appimage")
endif()
if (CPACK_GENERATOR MATCHES "DEB|RPM")
@@ -24,6 +24,5 @@ if (CPACK_GENERATOR MATCHES "Bundle")
set(CPACK_BUNDLE_NAME "soh")
set(CPACK_BUNDLE_PLIST "macosx/Info.plist")
set(CPACK_BUNDLE_ICON "macosx/soh.icns")
set(CPACK_BUNDLE_STARTUP_COMMAND "macosx/soh-macos.sh")
set(CPACK_BUNDLE_APPLE_CERT_APP "-")
endif()
+1 -1
View File
@@ -60,7 +60,7 @@ if (NOT LINUXDEPLOY_EXECUTABLE)
message(STATUS "Downloading linuxdeploy")
set(LINUXDEPLOY_EXECUTABLE ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy/linuxdeploy)
file(DOWNLOAD
https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20240109-1/linuxdeploy-x86_64.AppImage
${LINUXDEPLOY_EXECUTABLE}
INACTIVITY_TIMEOUT 10
LOG ${CPACK_PACKAGE_DIRECTORY}/linuxdeploy/download.log
+20
View File
@@ -0,0 +1,20 @@
set(SPDLOG_LEVEL_TRACE 0)
set(SPDLOG_LEVEL_DEBUG 1)
set(SPDLOG_LEVEL_INFO 2)
set(SPDLOG_LEVEL_WARN 3)
set(SPDLOG_LEVEL_ERROR 4)
set(SPDLOG_LEVEL_CRITICAL 5)
set(SPDLOG_LEVEL_OFF 6)
set(LOG_LEVELS "SPDLOG_LEVEL_TRACE;SPDLOG_LEVEL_DEBUG;SPDLOG_LEVEL_INFO;SPDLOG_LEVEL_WARN;SPDLOG_LEVEL_ERROR;SPDLOG_LEVEL_CRITICAL;SPDLOG_LEVEL_OFF")
set(LOG_LEVEL SPDLOG_LEVEL_TRACE CACHE STRING "The spdlog level that prints will be logged out. Overridden to SPDLOG_LEVEL_ERROR on Release builds.")
set_property(CACHE LOG_LEVEL PROPERTY STRINGS ${LOG_LEVELS})
if(NOT LOG_LEVEL IN_LIST LOG_LEVELS)
message(FATAL_ERROR "LOG_LEVEL must be one of ${LOG_LEVELS}")
endif()
set(SPDLOG_ACTIVE_LEVEL ${${LOG_LEVEL}})
set(LOG_LEVEL_GAME_PRINTS ${SPDLOG_LEVEL_OFF})
add_compile_definitions(
LOG_LEVEL_GAME_PRINTS=${LOG_LEVEL_GAME_PRINTS}
SPDLOG_ACTIVE_LEVEL=${SPDLOG_ACTIVE_LEVEL}
)
+20
View File
@@ -0,0 +1,20 @@
set(CVAR_VSYNC_ENABLED "${CVAR_PREFIX_SETTING}.VsyncEnabled" CACHE STRING "")
set(CVAR_Z_FIGHTING_MODE "${CVAR_PREFIX_SETTING}.ZFightingMode" CACHE STRING "")
set(CVAR_INTERNAL_RESOLUTION "${CVAR_PREFIX_SETTING}.InternalResolution" CACHE STRING "")
set(CVAR_MSAA_VALUE "${CVAR_PREFIX_SETTING}.MSAAValue" CACHE STRING "")
set(CVAR_SDL_WINDOWED_FULLSCREEN "${CVAR_PREFIX_SETTING}.SdlWindowedFullscreen" CACHE STRING "")
set(CVAR_TEXTURE_FILTER "${CVAR_PREFIX_SETTING}.TextureFilter" CACHE STRING "")
set(CVAR_IMGUI_CONTROLLER_NAV "${CVAR_PREFIX_SETTING}.ControlNav" CACHE STRING "")
set(CVAR_CONSOLE_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.Console" CACHE STRING "")
set(CVAR_CONTROLLER_DISCONNECTED_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.ControllerDisconnected" CACHE STRING "")
set(CVAR_CONTROLLER_REORDERING_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.ControllerReordering" CACHE STRING "")
set(CVAR_GFX_DEBUGGER_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.GfxDebugger" CACHE STRING "")
set(CVAR_STATS_WINDOW_OPEN "${CVAR_PREFIX_WINDOW}.Stats" CACHE STRING "")
set(CVAR_ENABLE_MULTI_VIEWPORTS "${CVAR_PREFIX_SETTING}.EnableMultiViewports" CACHE STRING "")
set(CVAR_LOW_RES_MODE "${CVAR_PREFIX_SETTING}.LowResMode" CACHE STRING "")
set(CVAR_SIMULATED_INPUT_LAG "${CVAR_PREFIX_SETTING}.SimulatedInputLag" CACHE STRING "")
set(CVAR_GAME_OVERLAY_FONT "${CVAR_PREFIX_SETTING}.OverlayFont" CACHE STRING "")
set(CVAR_MENU_BAR_OPEN "${CVAR_PREFIX_SETTING}.OpenMenuBar" CACHE STRING "")
set(CVAR_PREFIX_CONTROLLERS "${CVAR_PREFIX_SETTING}.Controllers" CACHE STRING "")
set(CVAR_PREFIX_ADVANCED_RESOLUTION "${CVAR_PREFIX_SETTING}.AdvancedResolution" CACHE STRING "")
include("libultraship/cmake/cvars.cmake")
+30
View File
@@ -0,0 +1,30 @@
set(CVAR_PREFIX_RANDOMIZER_ENHANCEMENT "gRandoEnhancements")
set(CVAR_PREFIX_RANDOMIZER_SETTING "gRandoSettings")
set(CVAR_PREFIX_COSMETIC "gCosmetics")
set(CVAR_PREFIX_AUDIO "gAudioEditor")
set(CVAR_PREFIX_CHEAT "gCheats")
set(CVAR_PREFIX_ENHANCEMENT "gEnhancements")
set(CVAR_PREFIX_SETTING "gSettings")
set(CVAR_PREFIX_WINDOW "gOpenWindows")
set(CVAR_PREFIX_TRACKER "gTrackers")
set(CVAR_PREFIX_DEVELOPER_TOOLS "gDeveloperTools")
set(CVAR_PREFIX_GENERAL "gGeneral")
set(CVAR_PREFIX_REMOTE "gRemote")
set(CVAR_PREFIX_GAMEPLAY_STATS "gGameplayStats")
set(CVAR_PREFIX_TIME_DISPLAY "gTimeDisplay")
add_compile_definitions(
CVAR_PREFIX_RANDOMIZER_ENHANCEMENT="${CVAR_PREFIX_RANDOMIZER_ENHANCEMENT}"
CVAR_PREFIX_RANDOMIZER_SETTING="${CVAR_PREFIX_RANDOMIZER_SETTING}"
CVAR_PREFIX_COSMETIC="${CVAR_PREFIX_COSMETIC}"
CVAR_PREFIX_AUDIO="${CVAR_PREFIX_AUDIO}"
CVAR_PREFIX_CHEAT="${CVAR_PREFIX_CHEAT}"
CVAR_PREFIX_ENHANCEMENT="${CVAR_PREFIX_ENHANCEMENT}"
CVAR_PREFIX_SETTING="${CVAR_PREFIX_SETTING}"
CVAR_PREFIX_WINDOW="${CVAR_PREFIX_WINDOW}"
CVAR_PREFIX_TRACKER="${CVAR_PREFIX_TRACKER}"
CVAR_PREFIX_DEVELOPER_TOOLS="${CVAR_PREFIX_DEVELOPER_TOOLS}"
CVAR_PREFIX_GENERAL="${CVAR_PREFIX_GENERAL}"
CVAR_PREFIX_REMOTE="${CVAR_PREFIX_REMOTE}"
CVAR_PREFIX_GAMEPLAY_STATS="${CVAR_PREFIX_GAMEPLAY_STATS}"
CVAR_PREFIX_TIME_DISPLAY="${CVAR_PREFIX_TIME_DISPLAY}"
)
+140 -66
View File
@@ -1,32 +1,93 @@
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
cmake_minimum_required(VERSION 3.26.0 FATAL_ERROR)
set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)
set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
set(CMAKE_C_STANDARD 23 CACHE STRING "The C standard to use")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
project(Ship VERSION 8.0.1 LANGUAGES C CXX)
set(PROJECT_BUILD_NAME "MacReady Bravo" CACHE STRING "")
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "")
project(Ship VERSION 9.1.1 LANGUAGES C CXX)
include(CMake/soh-cvars.cmake)
include(CMake/lus-cvars.cmake)
include(CMake/logging.cmake)
option(SUPPRESS_WARNINGS "Suppress warnings in LUS and src (decomp)" ON)
if(SUPPRESS_WARNINGS)
MESSAGE("Suppressing warnings in LUS and src")
if(MSVC)
set(WARNING_OVERRIDE /w)
else()
set(WARNING_OVERRIDE -w)
endif()
else()
MESSAGE("Skipping warning suppression")
endif()
set(NATO_PHONETIC_ALPHABET
"Alfa" "Bravo" "Charlie" "Delta" "Echo" "Foxtrot" "Golf" "Hotel"
"India" "Juliett" "Kilo" "Lima" "Mike" "November" "Oscar" "Papa"
"Quebec" "Romeo" "Sierra" "Tango" "Uniform" "Victor" "Whiskey"
"Xray" "Yankee" "Zulu"
)
# Get the patch version number from the project version
math(EXPR PATCH_INDEX "${PROJECT_VERSION_PATCH}")
# Use the patch number to select the correct word
list(GET NATO_PHONETIC_ALPHABET ${PATCH_INDEX} PROJECT_PATCH_WORD)
set(PROJECT_BUILD_NAME "Copper ${PROJECT_PATCH_WORD}" CACHE STRING "" FORCE)
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "" FORCE)
execute_process(
COMMAND git branch --show-current
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(CMAKE_PROJECT_GIT_BRANCH "${GIT_BRANCH}" CACHE STRING "Git branch" FORCE)
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get only the first 7 characters of the hash
string(SUBSTRING "${GIT_COMMIT_HASH}" 0 7 SHORT_COMMIT_HASH)
set(CMAKE_PROJECT_GIT_COMMIT_HASH "${SHORT_COMMIT_HASH}" CACHE STRING "Git commit hash" FORCE)
execute_process(
COMMAND git describe --tags --abbrev=0 --exact-match HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT GIT_COMMIT_TAG)
set(GIT_COMMIT_TAG "" CACHE STRING "Git commit tag" FORCE)
endif()
set(CMAKE_PROJECT_GIT_COMMIT_TAG "${GIT_COMMIT_TAG}" CACHE STRING "Git commit tag" FORCE)
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/utf-8>)
if (CMAKE_SYSTEM_NAME MATCHES "Windows|Linux")
if(NOT DEFINED BUILD_CROWD_CONTROL)
set(BUILD_CROWD_CONTROL ON)
endif()
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
include(CMake/automate-vcpkg.cmake)
include(CMake/automate-vcpkg.cmake)
set(VCPKG_TRIPLET x64-windows-static)
set(VCPKG_TARGET_TRIPLET x64-windows-static)
set(VCPKG_TRIPLET x64-windows-static)
set(VCPKG_TARGET_TRIPLET x64-windows-static)
vcpkg_bootstrap()
vcpkg_install_packages(zlib bzip2 libpng sdl2 sdl2-net glew glfw3)
vcpkg_bootstrap()
vcpkg_install_packages(zlib bzip2 libzip libpng sdl2 sdl2-net glew glfw3 nlohmann-json tinyxml2 spdlog libogg libvorbis opus opusfile)
if (CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache|sccache")
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
endif()
endif()
################################################################################
@@ -84,10 +145,31 @@ include(CMake/GlobalSettingsInclude.cmake OPTIONAL)
################################################################################
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
################################################################################
# Set LUS vars
################################################################################
# Enable the Gfx debugger in LUS to use libgfxd from ZAPDTR
set(GFX_DEBUG_DISASSEMBLER ON)
# Tell LUS we're using F3DEX_GBI_2 (in a way that doesn't break libgfxd)
set(GBI_UCODE F3DEX_GBI_2)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
# Enable MPQ and OTR support
set(INCLUDE_MPQ_SUPPORT ON)
################################################################################
# Set CONTROLLERBUTTONS_T
################################################################################
add_compile_definitions(CONTROLLERBUTTONS_T=uint32_t)
################################################################################
# Sub-projects
################################################################################
add_subdirectory(libultraship ${CMAKE_BINARY_DIR}/libultraship)
target_compile_options(libultraship PRIVATE "${WARNING_OVERRIDE}")
target_compile_definitions(libultraship PUBLIC INCLUDE_MPQ_SUPPORT)
add_subdirectory(ZAPDTR/ZAPD ${CMAKE_BINARY_DIR}/ZAPD)
add_subdirectory(OTRExporter)
add_subdirectory(soh)
@@ -97,24 +179,15 @@ set_property(TARGET soh PROPERTY APPIMAGE_DESKTOP_FILE "${CMAKE_SOURCE_DIR}/scri
set_property(TARGET soh PROPERTY APPIMAGE_ICON_FILE "${CMAKE_BINARY_DIR}/sohIcon.png")
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
install(PROGRAMS "${CMAKE_BINARY_DIR}/linux/soh.sh" DESTINATION . COMPONENT appimage)
install(FILES "${CMAKE_SOURCE_DIR}/soh.otr" DESTINATION . COMPONENT ship)
install(FILES "${CMAKE_BINARY_DIR}/soh/soh.o2r" DESTINATION . COMPONENT ship)
install(TARGETS ZAPD DESTINATION ./assets/extractor COMPONENT extractor)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/extractor COMPONENT extractor)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/extractor/xmls COMPONENT extractor)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/filelists/" DESTINATION ./assets/extractor/filelists COMPONENT extractor)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT extractor)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT extractor)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT extractor)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets COMPONENT extractor)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/xml COMPONENT extractor)
endif()
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/extractor COMPONENT ship)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/extractor/xmls COMPONENT ship)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/filelists/" DESTINATION ./assets/extractor/filelists COMPONENT ship)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT ship)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT ship)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols COMPONENT ship)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/ COMPONENT ship)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/xml COMPONENT ship)
endif()
find_package(Python3 COMPONENTS Interpreter)
@@ -122,34 +195,42 @@ find_package(Python3 COMPONENTS Interpreter)
# Target to generate OTRs
add_custom_target(
ExtractAssets
# CMake versions prior to 3.17 do not have the rm command, use remove instead for older versions
COMMAND ${CMAKE_COMMAND} -E $<IF:$<VERSION_LESS:${CMAKE_VERSION},3.17>,remove,rm> -f oot.otr oot-mq.otr soh.otr
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --non-interactive --xml-root ../soh/assets/xml --custom-otr-file soh.otr "--custom-assets-path" ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom --port-ver "${CMAKE_PROJECT_VERSION}"
COMMAND ${CMAKE_COMMAND} -E rm -f oot.o2r oot-mq.o2r soh.o2r
# copy LUS default shaders into assets/custom
COMMAND ${CMAKE_COMMAND} -E rm -r -f ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/fast/shaders/ ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --non-interactive --xml-root assets/xml --custom-otr-file soh.o2r "--custom-assets-path" ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom --port-ver "${CMAKE_PROJECT_VERSION}"
COMMAND ${CMAKE_COMMAND} -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DTARGET_DIR="$<TARGET_FILE_DIR:ZAPD>" -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DBINARY_DIR=${CMAKE_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/copy-existing-otrs.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/soh
COMMENT "Running asset extraction..."
DEPENDS ZAPD
BYPRODUCTS oot.otr ${CMAKE_SOURCE_DIR}/oot.otr oot-mq.otr ${CMAKE_SOURCE_DIR}/oot-mq.otr ${CMAKE_SOURCE_DIR}/soh.otr
BYPRODUCTS oot.o2r ${CMAKE_SOURCE_DIR}/oot.o2r oot-mq.o2r ${CMAKE_SOURCE_DIR}/oot-mq.o2r ${CMAKE_SOURCE_DIR}/soh.o2r
)
# Target to generate headers
add_custom_target(
ExtractAssetHeaders
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --non-interactive --xml-root ../soh/assets/xml --gen-headers
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --non-interactive --xml-root assets/xml --gen-headers
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/soh
COMMENT "Generating asset headers..."
DEPENDS ZAPD
)
# Target to generate only soh.otr
# Target to generate only soh.o2r
add_custom_target(
GenerateSohOtr
# CMake versions prior to 3.17 do not have the rm command, use remove instead for older versions
COMMAND ${CMAKE_COMMAND} -E $<IF:$<VERSION_LESS:${CMAKE_VERSION},3.17>,remove,rm> -f soh.otr
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --norom --custom-otr-file soh.otr "--custom-assets-path" ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom --port-ver "${CMAKE_PROJECT_VERSION}"
COMMAND ${CMAKE_COMMAND} -E rm -f soh.o2r
# copy LUS default shaders into assets/custom
COMMAND ${CMAKE_COMMAND} -E rm -r -f ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/libultraship/src/fast/shaders/ ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom/shaders/
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter/extract_assets.py -z "$<TARGET_FILE:ZAPD>" --norom --custom-otr-file soh.o2r "--custom-assets-path" ${CMAKE_CURRENT_SOURCE_DIR}/soh/assets/custom --port-ver "${CMAKE_PROJECT_VERSION}"
COMMAND ${CMAKE_COMMAND} -DSYSTEM_NAME=${CMAKE_SYSTEM_NAME} -DTARGET_DIR="$<TARGET_FILE_DIR:ZAPD>" -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DBINARY_DIR=${CMAKE_BINARY_DIR} -DONLYSOHOTR=On -P ${CMAKE_CURRENT_SOURCE_DIR}/copy-existing-otrs.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/OTRExporter
COMMENT "Generating soh.otr..."
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/soh
COMMENT "Generating soh.o2r..."
DEPENDS ZAPD
)
@@ -157,7 +238,7 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux")
find_package(ImageMagick COMPONENTS convert)
if (ImageMagick_FOUND)
execute_process (
COMMAND ${ImageMagick_convert_EXECUTABLE} soh/macosx/sohIcon.png -resize 512x512 ${CMAKE_BINARY_DIR}/sohIcon.png
COMMAND ${ImageMagick_convert_EXECUTABLE} ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png -resize 512x512 ${CMAKE_BINARY_DIR}/sohIcon.png
OUTPUT_VARIABLE outVar
)
endif()
@@ -166,42 +247,35 @@ endif()
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
add_custom_target(CreateOSXIcons
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/macosx/soh.iconset
COMMAND sips -z 16 16 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16.png
COMMAND sips -z 32 32 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16@2x.png
COMMAND sips -z 32 32 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32.png
COMMAND sips -z 64 64 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32@2x.png
COMMAND sips -z 128 128 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128.png
COMMAND sips -z 256 256 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128@2x.png
COMMAND sips -z 256 256 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256.png
COMMAND sips -z 512 512 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256@2x.png
COMMAND sips -z 512 512 soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512.png
COMMAND cp soh/macosx/sohIcon.png ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512@2x.png
COMMAND sips -z 16 16 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16.png
COMMAND sips -z 32 32 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_16x16@2x.png
COMMAND sips -z 32 32 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32.png
COMMAND sips -z 64 64 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_32x32@2x.png
COMMAND sips -z 128 128 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128.png
COMMAND sips -z 256 256 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_128x128@2x.png
COMMAND sips -z 256 256 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256.png
COMMAND sips -z 512 512 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_256x256@2x.png
COMMAND sips -z 512 512 ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png --out ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512.png
COMMAND cp ${CMAKE_SOURCE_DIR}/soh/macosx/sohIcon.png ${CMAKE_BINARY_DIR}/macosx/soh.iconset/icon_512x512@2x.png
COMMAND iconutil -c icns -o ${CMAKE_BINARY_DIR}/macosx/soh.icns ${CMAKE_BINARY_DIR}/macosx/soh.iconset
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Creating OSX icons ..."
)
add_dependencies(soh CreateOSXIcons)
install(TARGETS ZAPD DESTINATION ${CMAKE_BINARY_DIR}/assets/extractor)
install(TARGETS ZAPD DESTINATION ${CMAKE_BINARY_DIR}/assets)
set(PROGRAM_PERMISSIONS_EXECUTE OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/extractor)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/extractor/xmls)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/filelists/" DESTINATION ./assets/extractor/filelists)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols)
install(FILES "${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt" DESTINATION ./assets/extractor/symbols)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/extractor/" DESTINATION ./assets/)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/soh/assets/xml/" DESTINATION ./assets/xml)
install(DIRECTORY ${CMAKE_BINARY_DIR}/assets
DESTINATION .
PATTERN ZAPD.out
PERMISSIONS ${PROGRAM_PERMISSIONS_EXECUTE}
)
# Rename the installed soh binary to drop the macos suffix
INSTALL(CODE "FILE(RENAME \${CMAKE_INSTALL_PREFIX}/../MacOS/soh-macos \${CMAKE_INSTALL_PREFIX}/../MacOS/soh)")
install(CODE "
include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/soh-macos\" \"\" \"${dirs}\")
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/../MacOS/soh\" \"\" \"${dirs}\")
")
endif()
+19 -7
View File
@@ -9,7 +9,7 @@ Official Website: https://www.shipofharkinian.com/
Official Discord: https://discord.com/invite/shipofharkinian
If you're having any trouble after reading through this `README`, feel free ask for help in the Support text channels. Please keep in mind that we do not condone piracy.
If you're having any trouble after reading through this `README`, feel free to ask for help in the Support text channels. Please keep in mind that we do not condone piracy.
# Quick Start
@@ -61,7 +61,8 @@ Congratulations, you are now sailing with the Ship of Harkinian! Have fun!
### Other shortcuts
| Keys | Action |
| - | - |
| F1 | Toggle menubar |
| ESC | Toggle menu |
| F2 | Toggle capture mouse input |
| F5 | Save state |
| F6 | Change state |
| F7 | Load state |
@@ -70,12 +71,17 @@ Congratulations, you are now sailing with the Ship of Harkinian! Have fun!
| Tab | Toggle Alternate assets |
| Ctrl+R | Reset |
# Project Overview
Ship of Harkinian (SOH) is built atop a custom library dubbed libultraship (LUS). Back in the N64 days, there was an SDK distributed to developers named libultra; LUS is designed to mimic the functionality of libultra on modern hardware. In addition, we are dependant on the source code provided by the OOT decompilation project.
In order for the game to function, you will require a **legally acquired** ROM for Ocarina of Time. Click [here](https://ship.equipment/) to check the compatibility of your specific rom. Any copyrighted assets are extracted from the ROM and reformatted as a .otr archive file which the code uses.
### Graphics Backends
Currently, there are three rendering APIs supported: DirectX11 (Windows), OpenGL (all platforms), and Metal (MacOS). You can change which API to use in the `Settings` menu of the menubar, which requires a restart. If you're having an issue with crashing, you can change the API in the `shipofharkinian.json` file by finding the line `gfxbackend:""` and changing the value to `sdl` for OpenGL. DirectX 11 is the default on Windows.
# Custom Assets
Custom assets are packed in `.otr` files. To use custom assets, place them in the `mods` folder.
Custom assets are packed in `.otr` archive files. To use custom assets, place them in the `mods` folder.
If you're interested in creating and/or packing your own custom asset `.otr` files, check out the following tools:
* [**retro - OTR generator**](https://github.com/HarbourMasters64/retro)
@@ -91,10 +97,16 @@ If you want to playtest a continuous integration build, you can find them at the
* [Windows](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-windows.zip)
* [macOS](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-mac.zip)
* [Linux (performance)](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux-performance.zip) _(requires `glibc 2.35` or newer, but will be more performant than the compatibility build.)_
* [Linux (compatibility)](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux-compatiblity.zip) _(compatible with most Linux distributions, but may not be as performant as the performance build.)_
* [Switch](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-switch.zip)
* [Wii U](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-wiiu.zip)
* [Linux](https://nightly.link/HarbourMasters/Shipwright/workflows/generate-builds/develop/soh-linux.zip)
### Further Reading
More detailed documentation can be found in the 'docs' directory, including the aforementioned [building instructions](docs/BUILDING.md).
* [Credits](docs/CREDITS.md)
* [Custom Music](docs/CUSTOM_MUSIC.md)
* [Controller Mapping](docs/GAME_CONTROLLER_DB.md)
* [Modding](docs/MODDING.md)
* [Versioning](docs/VERSIONING.md)
<a href="https://github.com/Kenix3/libultraship/">
<picture>
+1 -1
Submodule ZAPDTR updated: eff2903611...684f21a475
+20 -20
View File
@@ -1,37 +1,37 @@
message(STATUS "Copying otr files...")
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/OTRExporter/oot.otr)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.otr ${SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.otr ${BINARY_DIR}/soh/)
message(STATUS "Copied oot.otr")
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/soh/oot.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.o2r ${SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.o2r ${BINARY_DIR}/soh/)
message(STATUS "Copied oot.o2r")
endif()
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/OTRExporter/oot-mq.otr)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.otr ${SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.otr ${BINARY_DIR}/soh/)
message(STATUS "Copied oot-mq.otr")
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/soh/oot-mq.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.o2r ${SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.o2r ${BINARY_DIR}/soh/)
message(STATUS "Copied oot-mq.o2r")
endif()
if(EXISTS ${SOURCE_DIR}/OTRExporter/soh.otr)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.otr ${SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.otr ${BINARY_DIR}/soh/)
message(STATUS "Copied soh.otr")
if(EXISTS ${SOURCE_DIR}/soh/soh.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.o2r ${SOURCE_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.o2r ${BINARY_DIR}/soh/)
message(STATUS "Copied soh.o2r")
endif()
# Additionally for Windows, copy the otrs to the target dir, side by side with soh.exe
if(SYSTEM_NAME MATCHES "Windows")
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/OTRExporter/oot.otr)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.otr ${TARGET_DIR})
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/soh/oot.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot.o2r ${TARGET_DIR})
endif()
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/OTRExporter/oot-mq.otr)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.otr ${TARGET_DIR})
if(NOT ONLYSOHOTR AND EXISTS ${SOURCE_DIR}/soh/oot-mq.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy oot-mq.o2r ${TARGET_DIR})
endif()
if(EXISTS ${SOURCE_DIR}/OTRExporter/soh.otr)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.otr ${TARGET_DIR})
if(EXISTS ${SOURCE_DIR}/soh/soh.o2r)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy soh.o2r ${TARGET_DIR})
endif()
endif()
if(NOT ONLYSOHOTR AND (NOT EXISTS ${SOURCE_DIR}/oot.otr AND NOT EXISTS ${SOURCE_DIR}/oot-mq.otr))
if(NOT ONLYSOHOTR AND (NOT EXISTS ${SOURCE_DIR}/oot.o2r AND NOT EXISTS ${SOURCE_DIR}/oot-mq.o2r))
message(FATAL_ERROR "Failed to copy. No OTR files found.")
endif()
if(NOT EXISTS ${SOURCE_DIR}/soh.otr)
if(NOT EXISTS ${SOURCE_DIR}/soh.o2r)
message(FATAL_ERROR "Failed to copy. No soh OTR found.")
endif()
+192 -74
View File
@@ -3,10 +3,10 @@
## Windows
Requires:
* At least 8GB of RAM (machines with 4GB have seen complier failures)
* At least 8GB of RAM (machines with 4GB have seen compiler failures)
* Visual Studio 2022 Community Edition with the C++ feature set
* One of the Windows SDKs that comes with Visual Studio, for example the current Windows 10 version 10.0.19041.0
* The `MSVC v142 - VS 2019 C++ build tools` component of Visual Studio
* The `MSVC v143 - VS 2022 C++ build tools` component of Visual Studio
* Python 3 (can be installed manually or as part of Visual Studio)
* Git (can be installed manually or as part of Visual Studio)
* Cmake (can be installed via chocolatey or manually)
@@ -14,18 +14,15 @@ Requires:
During installation, check the "Desktop development with C++" feature set:
![image](https://user-images.githubusercontent.com/30329717/183511274-d11aceea-7900-46ec-acb6-3f2cc110021a.png)
Doing so should also check one of the Windows SDKs by default. Then, in the installation details in the right-hand column, make sure you also check the v142 toolset.
Doing so should also check one of the Windows SDKs by default. Then, in the installation details in the right-hand column, make sure you also check the v143 toolset. This is often done by default.
You can also find the v142 toolset by searching through the individual components tab:
![image](https://user-images.githubusercontent.com/30329717/183521169-ead6a73b-a1bf-4e99-aab8-441746d8f08e.png)
While you're there, you can also install Python 3 and Git if needed.
It is recommended that you install Python and Git standalone, the install process in VS Installer has given some issues in the past.
1. Clone the Ship of Harkinian repository
_Note: Be sure to either clone with the ``--recursive`` flag or do ``git submodule init`` after cloning to pull in the libultraship submodule!_
_Note: Be sure to either clone with the ``--recursive`` flag or do ``git submodule update --init`` after cloning to pull in the libultraship submodule!_
2. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
2. After setup and initial build, use the built-in OTR extraction to make your oot.otr/oot-mq.otr files.
_Note: Instructions assume using powershell_
```powershell
@@ -33,24 +30,18 @@ _Note: Instructions assume using powershell_
cd Shipwright
# Setup cmake project
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v142 -A x64 # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
# or for VS2019
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 16 2019" -T v142 -A x64
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target ExtractAssets # --config Release (if you're packaging)
# Compile project
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 # --config Release (if you're packaging)
# Add `-DCMAKE_BUILD_TYPE:STRING=Release` if you're packaging
# Add `-DSUPPRESS_WARNINGS=0` to prevent suppression of warnings from LUS and decomp (src) files. set to 1 to re-enable suppression
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64
# Now you can run the executable in .\build\x64
# If you need to clean the project you can run
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target clean
# If you need to regenerate the asset headers to check them into source
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target ExtractAssetHeaders
# If you need a newer soh.otr only
# Generate soh.otr
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target GenerateSohOtr
# Compile project
# Add `--config Release` if you're packaging
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64
# Now you can run the executable in .\build\x64 or run in Visual Studio
```
### Developing SoH
@@ -60,16 +51,14 @@ With the cmake build system you have two options for working on the project:
To develop using Visual Studio you only need to use cmake to generate the solution file:
```powershell
# Generates Ship.sln at `build/x64` for Visual Studio 2022
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v142 -A x64
# or for Visual Studio 2019
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 16 2019" -T v142 -A x64
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64
```
#### Visual Studio Code or another editor
To develop using Visual Studio Code or another editor you only need to open the repository in it.
To build you'll need to follow the instructions from the building section.
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
_Note: If you're using Visual Studio Code, the [CMake Tools plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
_Experimental: You can also use another build system entirely rather than MSVC like [Ninja](https://ninja-build.org/) for possibly better performance._
@@ -83,42 +72,150 @@ cd "build/x64"
& 'C:\Program Files\CMake\bin\cpack.exe' -G ZIP
```
### Additional CMake Targets
#### Clean
```powershell
# If you need to clean the project you can run
C:\Program Files\CMake\bin\cmake.exe --build build-cmake --target clean
```
#### Regenerate Asset Headers
```powershell
# If you need to regenerate the asset headers to check them into source
C:\Program Files\CMake\bin\cmake.exe --build build-cmake --target ExtractAssetHeaders
```
## Linux
Requires `gcc >= 10, x11, curl, python3, sdl2 >= 2.0.22, libpng, glew >= 2.2, ninja, cmake, lld, pulseaudio-libs`
### Install dependencies
#### Debian/Ubuntu
```sh
# using gcc
apt-get install gcc g++ git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libopengl-dev
**Important: For maximum performance make sure you have ninja build tools installed!**
# or using clang
apt-get install clang git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libopengl-dev
```
#### Arch
```sh
# using gcc
pacman -S gcc git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
# or using clang
pacman -S clang git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
```
#### Fedora
```sh
# using gcc
dnf install gcc gcc-c++ git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools nlohmann-json-devel tinyxml2-devel spdlog-devel
# or using clang
dnf install clang git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools nlohmann-json-devel tinyxml2-devel spdlog-devel
```
#### openSUSE
```sh
# using gcc
zypper in gcc gcc-c++ git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
# or using clang
zypper in clang libstdc++-devel git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
```
#### Nix
You can use a `flake.nix` file to instantly setup a development environment using [Nix](https://nixos.org/). Write this `flake.nix` file in the root directory:
```nix
{
description = "Shipwright development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
# Build tools
clang
git
cmake
ninja
lsb-release
pkg-config
# SDL2 libraries
SDL2
SDL2.dev
SDL2_net
# Other libraries
libpng
libzip
nlohmann_json
tinyxml-2
spdlog
libGL
libGL.dev
bzip2
# X11 libraries
xorg.libX11
# Audio libraries
libogg
libogg.dev
libvorbis
libvorbis.dev
libopus
libopus.dev
opusfile
opusfile.dev
];
shellHook = ''
echo "Shipwright development environment loaded"
echo "Available tools: clang, git, cmake, ninja"
'';
};
});
}
```
Now type `nix develop` and you will be dropped into a shell with all dependencies, ensuring that all build commands work.
### Build
_Note: If you're using Visual Studio Code, the [CMake Tools plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
```bash
# Clone the repo
# Clone the repo and enter the directory
git clone https://github.com/HarbourMasters/Shipwright.git
cd Shipwright
# Clone the submodule libultraship
# Clone the submodules
git submodule update --init
# Copy the baserom to the OTRExporter folder
cp <path to your ROM> OTRExporter
# Generate Ninja project
cmake -H. -Bbuild-cmake -GNinja # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging) -DPython3_EXECUTABLE=$(which python3) (if you are using non-standard Python installations such as PyEnv)
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
cmake --build build-cmake --target ExtractAssets
# Add `-DCMAKE_BUILD_TYPE:STRING=Release` if you're packaging
# Add `-DSUPPRESS_WARNINGS=0` to prevent suppression of warnings from LUS and decomp (src) files. set to 1 to re-enable suppression
# Add `-DPython3_EXECUTABLE=$(which python3)` if you are using non-standard Python installations such as PyEnv
cmake -H. -Bbuild-cmake -GNinja
# Generate soh.otr
cmake --build build-cmake --target GenerateSohOtr
# Compile the project
cmake --build build-cmake # --config Release (if you're packaging)
# Add `--config Release` if you're packaging
cmake --build build-cmake
# Now you can run the executable in ./build-cmake/soh/soh.elf
# To develop the project open the repository in VSCode (or your preferred editor)
# If you need to clean the project you can run
cmake --build build-cmake --target clean
# If you need to regenerate the asset headers to check them into source
cmake --build build-cmake --target ExtractAssetHeaders
# If you need a newer soh.otr only
cmake --build build-cmake --target GenerateSohOtr
```
### Generating a distributable
### Generate a distributable
After compiling the project you can generate a distributable by running of the following:
```bash
# Go to build folder
@@ -129,43 +226,51 @@ cpack -G ZIP
cpack -G External (creates appimage)
```
### Additional CMake Targets
#### Clean
```bash
# If you need to clean the project you can run
cmake --build build-cmake --target clean
```
#### Regenerate Asset Headers
```bash
# If you need to regenerate the asset headers to check them into source
cmake --build build-cmake --target ExtractAssetHeaders
```
## macOS
Requires Xcode (or xcode-tools) && `sdl2, libpng, glew, ninja, cmake` (can be installed via homebrew, macports, etc)
Requires Xcode (or xcode-tools) && `sdl2, libpng, glew, ninja, cmake, tinyxml2, nlohmann-json, libzip` (can be installed via [homebrew](https://brew.sh/), macports, etc)
**Important: For maximum performance make sure you have ninja build tools installed!**
_Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
_Note: If you're using Visual Studio Code, the [CMake Tools plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
```bash
# Clone the repo
git clone https://github.com/HarbourMasters/Shipwright.git
cd ShipWright
# Clone the submodule libultraship
git submodule update --init
# Copy the baserom to the OTRExporter folder
cp <path to your ROM> OTRExporter
# Generate Ninja project
cmake -H. -Bbuild-cmake -GNinja # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
# Extract assets & generate OTR (run this anytime you need to regenerate OTR)
cmake --build build-cmake --target ExtractAssets
# Compile the project
cmake --build build-cmake # --config Release (if you're packaging)
# Copy oot.otr into the Application Support directory
cp build-cmake/soh/oot.otr ~/Library/Application\ Support/com.shipofharkinian.soh/
# Install development dependencies (assuming homebrew)
brew install sdl2 libpng glew ninja cmake tinyxml2 nlohmann-json libzip
# Generate Ninja project
# Add `-DCMAKE_BUILD_TYPE:STRING=Release` if you're packaging
# Add `-DSUPPRESS_WARNINGS=0` to prevent suppression of warnings from LUS and decomp (src) files. set to 1 to re-enable suppression
cmake -H. -Bbuild-cmake -GNinja
# Generate soh.otr
cmake --build build-cmake --target GenerateSohOtr
# Compile the project
# Add `--config Release` if you're packaging
cmake --build build-cmake
# Now you can run the executable file:
./build-cmake/soh/soh-macos
# To develop the project open the repository in VSCode (or your preferred editor)
# If you need to clean the project you can run
cmake --build build-cmake --target clean
# If you need to regenerate the asset headers to check them into source
cmake --build build-cmake --target ExtractAssetHeaders
# If you need a newer soh.otr only
cmake --build build-cmake --target GenerateSohOtr
```
### Generating a distributable
@@ -177,9 +282,22 @@ cd build-cmake
cpack
```
### Additional CMake Targets
#### Clean
```bash
# If you need to clean the project you can run
cmake --build build-cmake --target clean
```
#### Regenerate Asset Headers
```bash
# If you need to regenerate the asset headers to check them into source
cmake --build build-cmake --target ExtractAssetHeaders
```
## Switch
1. Requires that your build machine is setup with the tools necessary for your platform above
2. Requires that you have the switch build tools installed
2. Requires that you have the switch build tools installed
3. Clone the Ship of Harkinian repository
4. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
@@ -200,7 +318,7 @@ cmake --build build-switch --target soh_nro
## Wii U
1. Requires that your build machine is setup with the tools necessary for your platform above
2. Requires that you have the Wii U build tools installed
2. Requires that you have the Wii U build tools installed
3. Clone the Ship of Harkinian repository
4. Place one or more [compatible](#compatible-roms) roms in the `OTRExporter` directory with namings of your choice
@@ -213,7 +331,7 @@ cmake --build build-cmake --target ExtractAssets
# Setup cmake project for building for Wii U
cmake -H. -Bbuild-wiiu -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/WiiU.cmake # -DCMAKE_BUILD_TYPE:STRING=Release (if you're packaging)
# Build project and generate rpx
cmake --build build-wiiu --target soh # --target soh_wuhb (for building .wuhb)
cmake --build build-wiiu --target soh # --target soh_wuhb (for building .wuhb)
# Now you can run the executable in ./build-wiiu/soh/soh.rpx or the Wii U Homebrew Bundle in ./build-wiiu/soh/soh.wuhb
# To develop the project open the repository in VSCode (or your preferred editor)
+30 -23
View File
@@ -1,31 +1,38 @@
# SDL GameControllerDB
The Ship of Harkinian utilizes a text file with SDL controller mappings for extended controller hardware support.
This file is pulled from https://github.com/gabomdq/SDL_GameControllerDB during the build process as [a part of CMakeLists.txt](https://github.com/HarbourMasters/Shipwright/blob/bb643661f62865dfc757c185d0daaebb32f2d53d/soh/CMakeLists.txt#L760).
This file is pulled from https://github.com/mdqinc/SDL_GameControllerDB during the build process as [a part of CMakeLists.txt](https://github.com/HarbourMasters/Shipwright/blob/bb643661f62865dfc757c185d0daaebb32f2d53d/soh/CMakeLists.txt#L760).
## Released versions
| Release | sha | diff |
| - | - | - |
| Zhora Alfa 4.0.0 | [967daa8](https://github.com/gabomdq/SDL_GameControllerDB/tree/967daa8f89c48b01ed0f9c6a86ac849930442fc6) | |
| Zhora Bravo 4.0.1 | [ccac7cd](https://github.com/gabomdq/SDL_GameControllerDB/tree/ccac7cd97f445955d4437e21c5f82123d9b4349b) | [+1](https://github.com/gabomdq/SDL_GameControllerDB/compare/967daa8...ccac7cd) |
| Zhora Charlie 4.0.2 | [ff26eb0](https://github.com/gabomdq/SDL_GameControllerDB/tree/ff26eb04d0fe18356985d968119429d6012e7d75) | [+8/-3](https://github.com/gabomdq/SDL_GameControllerDB/compare/ccac7cd...ff26eb0) |
| Zhora Delta 4.0.3 | [ad02da5](https://github.com/gabomdq/SDL_GameControllerDB/tree/ad02da5a95ca8005f2c1facc11a5a52f8522f0ee) | [+4/-5](https://github.com/gabomdq/SDL_GameControllerDB/compare/ff26eb0...ad02da5) |
| Zohra Echo 4.0.4 | [c203690](https://github.com/gabomdq/SDL_GameControllerDB/tree/c203690b1e13980699802918d362cd9dadf89bd0) | [+8/-4](https://github.com/gabomdq/SDL_GameControllerDB/compare/ad02da5...c203690) |
| Zhora Foxtrot 4.0.5 | [9db8101](https://github.com/gabomdq/SDL_GameControllerDB/tree/9db8101a5780d1b0721bf6de385e6ffe0d07dfc7) | [+6](https://github.com/gabomdq/SDL_GameControllerDB/compare/c203690...9db8101) |
| Flynn Alfa 5.0.0 | [163cc5d](https://github.com/gabomdq/SDL_GameControllerDB/tree/163cc5d45e9fc2f1bb2b95ea7eee4bbc9a57955c) | [+29/-8](https://github.com/gabomdq/SDL_GameControllerDB/compare/9db8101...163cc5d) |
| Flynn Bravo 5.0.1 | [7efce7d](https://github.com/gabomdq/SDL_GameControllerDB/tree/7efce7d3f309ec1fa409b1af09153f9eb77fbedf) | [-1](https://github.com/gabomdq/SDL_GameControllerDB/compare/163cc5d...7efce7d) |
| Flynn Charlie 5.0.2 | [e607703](https://github.com/gabomdq/SDL_GameControllerDB/tree/e607703392145343e8aca42be052121c0b7bd1c9) | [+40/-17](https://github.com/gabomdq/SDL_GameControllerDB/compare/7efce7d...e607703) |
| Bradley Alfa 5.1.0 | [2ba9676](https://github.com/gabomdq/SDL_GameControllerDB/tree/2ba96761af795c15e916cc97790b51e09dc0cd54) | [+1/-1](https://github.com/gabomdq/SDL_GameControllerDB/compare/e607703...2ba9676) |
| Bradley Charlie 5.1.2 | [4f5d1d4](https://github.com/gabomdq/SDL_GameControllerDB/tree/4f5d1d497985b75f4a83a5de46f596dc4d7f002e) | [+5/-1](https://github.com/gabomdq/SDL_GameControllerDB/compare/2ba9676...4f5d1d4) |
| Bradley Delta 5.1.3 | [9b73049](https://github.com/gabomdq/SDL_GameControllerDB/tree/9b73049ee62a2cc862d6ad94c2c777f2e8363a48) | [+4/-1](https://github.com/gabomdq/SDL_GameControllerDB/compare/4f5d1d4...9b73049) |
| Bradley Echo 5.1.4 | [6d3801f](https://github.com/gabomdq/SDL_GameControllerDB/tree/6d3801fcfe74b1989de96403b7b560eba72a175c) | [+56/-21](https://github.com/gabomdq/SDL_GameControllerDB/compare/9b73049...6d3801f) |
| Gibbs Alfa 6.0.0 | [0562b00](https://github.com/gabomdq/SDL_GameControllerDB/tree/0562b00eaf5c0308c49d329b79263d2dae1c3a85) | [+8/-2](https://github.com/gabomdq/SDL_GameControllerDB/compare/6d3801f...0562b00) |
| Khan Alfa 6.1.0 | [436c7e3](https://github.com/gabomdq/SDL_GameControllerDB/tree/436c7e3d54a57189ea0ab44d05f36b7cc7ea496c) | [+31/-16](https://github.com/gabomdq/SDL_GameControllerDB/compare/0562b00...436c7e3) |
| Khan Bravo 6.1.1 | [01cca2e](https://github.com/gabomdq/SDL_GameControllerDB/tree/01cca2e77f9bf9f1432be04f876f287eb78297fe) | [+23/-6](https://github.com/gabomdq/SDL_GameControllerDB/compare/436c7e3...01cca2e) |
| Khan Charlie 6.1.2 | [6852946](https://github.com/gabomdq/SDL_GameControllerDB/tree/6852946487534c69b7d228fd4eb8c87cf6966475) | [+25/-15](https://github.com/gabomdq/SDL_GameControllerDB/compare/01cca2e...6852946) |
| Spock Alfa 7.0.0 | [38bda81](https://github.com/gabomdq/SDL_GameControllerDB/tree/38bda816dc786f18493876f7bc30bc12dfd2636a) | [+15/-1](https://github.com/gabomdq/SDL_GameControllerDB/compare/6852946...38bda81) |
| Spock Bravo 7.0.1 | [228d980](https://github.com/gabomdq/SDL_GameControllerDB/tree/228d980d3d791e9df3b096472f6b97459f8709fe) | [+7/-3](https://github.com/gabomdq/SDL_GameControllerDB/compare/38bda81...228d980) |
| Spock Charlie 7.0.2 | [c5b4df0](https://github.com/gabomdq/SDL_GameControllerDB/tree/c5b4df0e1061175cb11e3ebbf8045178339864a5) | [+3](https://github.com/gabomdq/SDL_GameControllerDB/compare/228d980...c5b4df0) |
| Sulu Alfa 7.1.0 | [a2cf171](https://github.com/gabomdq/SDL_GameControllerDB/tree/a2cf1711b4ebc646a3814705d2fb6aac5707bcae) | [+4/-1](https://github.com/gabomdq/SDL_GameControllerDB/compare/c5b4df0...a2cf171) |
| Sulu Bravo 7.1.1 | [cc9f777](https://github.com/gabomdq/SDL_GameControllerDB/tree/cc9f777721f0cb30058d9eef52a295130b734a4a) | [+29/-9](https://github.com/gabomdq/SDL_GameControllerDB/compare/a2cf171...cc9f777) |
| Zhora Alfa 4.0.0 | [967daa8](https://github.com/mdqinc/SDL_GameControllerDB/tree/967daa8f89c48b01ed0f9c6a86ac849930442fc6) | |
| Zhora Bravo 4.0.1 | [ccac7cd](https://github.com/mdqinc/SDL_GameControllerDB/tree/ccac7cd97f445955d4437e21c5f82123d9b4349b) | [+1](https://github.com/mdqinc/SDL_GameControllerDB/compare/967daa8...ccac7cd) |
| Zhora Charlie 4.0.2 | [ff26eb0](https://github.com/mdqinc/SDL_GameControllerDB/tree/ff26eb04d0fe18356985d968119429d6012e7d75) | [+8/-3](https://github.com/mdqinc/SDL_GameControllerDB/compare/ccac7cd...ff26eb0) |
| Zhora Delta 4.0.3 | [ad02da5](https://github.com/mdqinc/SDL_GameControllerDB/tree/ad02da5a95ca8005f2c1facc11a5a52f8522f0ee) | [+4/-5](https://github.com/mdqinc/SDL_GameControllerDB/compare/ff26eb0...ad02da5) |
| Zohra Echo 4.0.4 | [c203690](https://github.com/mdqinc/SDL_GameControllerDB/tree/c203690b1e13980699802918d362cd9dadf89bd0) | [+8/-4](https://github.com/mdqinc/SDL_GameControllerDB/compare/ad02da5...c203690) |
| Zhora Foxtrot 4.0.5 | [9db8101](https://github.com/mdqinc/SDL_GameControllerDB/tree/9db8101a5780d1b0721bf6de385e6ffe0d07dfc7) | [+6](https://github.com/mdqinc/SDL_GameControllerDB/compare/c203690...9db8101) |
| Flynn Alfa 5.0.0 | [163cc5d](https://github.com/mdqinc/SDL_GameControllerDB/tree/163cc5d45e9fc2f1bb2b95ea7eee4bbc9a57955c) | [+29/-8](https://github.com/mdqinc/SDL_GameControllerDB/compare/9db8101...163cc5d) |
| Flynn Bravo 5.0.1 | [7efce7d](https://github.com/mdqinc/SDL_GameControllerDB/tree/7efce7d3f309ec1fa409b1af09153f9eb77fbedf) | [-1](https://github.com/mdqinc/SDL_GameControllerDB/compare/163cc5d...7efce7d) |
| Flynn Charlie 5.0.2 | [e607703](https://github.com/mdqinc/SDL_GameControllerDB/tree/e607703392145343e8aca42be052121c0b7bd1c9) | [+40/-17](https://github.com/mdqinc/SDL_GameControllerDB/compare/7efce7d...e607703) |
| Bradley Alfa 5.1.0 | [2ba9676](https://github.com/mdqinc/SDL_GameControllerDB/tree/2ba96761af795c15e916cc97790b51e09dc0cd54) | [+1/-1](https://github.com/mdqinc/SDL_GameControllerDB/compare/e607703...2ba9676) |
| Bradley Charlie 5.1.2 | [4f5d1d4](https://github.com/mdqinc/SDL_GameControllerDB/tree/4f5d1d497985b75f4a83a5de46f596dc4d7f002e) | [+5/-1](https://github.com/mdqinc/SDL_GameControllerDB/compare/2ba9676...4f5d1d4) |
| Bradley Delta 5.1.3 | [9b73049](https://github.com/mdqinc/SDL_GameControllerDB/tree/9b73049ee62a2cc862d6ad94c2c777f2e8363a48) | [+4/-1](https://github.com/mdqinc/SDL_GameControllerDB/compare/4f5d1d4...9b73049) |
| Bradley Echo 5.1.4 | [6d3801f](https://github.com/mdqinc/SDL_GameControllerDB/tree/6d3801fcfe74b1989de96403b7b560eba72a175c) | [+56/-21](https://github.com/mdqinc/SDL_GameControllerDB/compare/9b73049...6d3801f) |
| Gibbs Alfa 6.0.0 | [0562b00](https://github.com/mdqinc/SDL_GameControllerDB/tree/0562b00eaf5c0308c49d329b79263d2dae1c3a85) | [+8/-2](https://github.com/mdqinc/SDL_GameControllerDB/compare/6d3801f...0562b00) |
| Khan Alfa 6.1.0 | [436c7e3](https://github.com/mdqinc/SDL_GameControllerDB/tree/436c7e3d54a57189ea0ab44d05f36b7cc7ea496c) | [+31/-16](https://github.com/mdqinc/SDL_GameControllerDB/compare/0562b00...436c7e3) |
| Khan Bravo 6.1.1 | [01cca2e](https://github.com/mdqinc/SDL_GameControllerDB/tree/01cca2e77f9bf9f1432be04f876f287eb78297fe) | [+23/-6](https://github.com/mdqinc/SDL_GameControllerDB/compare/436c7e3...01cca2e) |
| Khan Charlie 6.1.2 | [6852946](https://github.com/mdqinc/SDL_GameControllerDB/tree/6852946487534c69b7d228fd4eb8c87cf6966475) | [+25/-15](https://github.com/mdqinc/SDL_GameControllerDB/compare/01cca2e...6852946) |
| Spock Alfa 7.0.0 | [38bda81](https://github.com/mdqinc/SDL_GameControllerDB/tree/38bda816dc786f18493876f7bc30bc12dfd2636a) | [+15/-1](https://github.com/mdqinc/SDL_GameControllerDB/compare/6852946...38bda81) |
| Spock Bravo 7.0.1 | [228d980](https://github.com/mdqinc/SDL_GameControllerDB/tree/228d980d3d791e9df3b096472f6b97459f8709fe) | [+7/-3](https://github.com/mdqinc/SDL_GameControllerDB/compare/38bda81...228d980) |
| Spock Charlie 7.0.2 | [c5b4df0](https://github.com/mdqinc/SDL_GameControllerDB/tree/c5b4df0e1061175cb11e3ebbf8045178339864a5) | [+3](https://github.com/mdqinc/SDL_GameControllerDB/compare/228d980...c5b4df0) |
| Sulu Alfa 7.1.0 | [a2cf171](https://github.com/mdqinc/SDL_GameControllerDB/tree/a2cf1711b4ebc646a3814705d2fb6aac5707bcae) | [+4/-1](https://github.com/mdqinc/SDL_GameControllerDB/compare/c5b4df0...a2cf171) |
| Sulu Bravo 7.1.1 | [cc9f777](https://github.com/mdqinc/SDL_GameControllerDB/tree/cc9f777721f0cb30058d9eef52a295130b734a4a) | [+29/-9](https://github.com/mdqinc/SDL_GameControllerDB/compare/a2cf171...cc9f777) |
| MacReady Alfa 8.0.0 | [c56329f](https://github.com/mdqinc/SDL_GameControllerDB/tree/c56329f4df93fc7a780bdbeae47a9c91447b629c) | [+67/-23](https://github.com/mdqinc/SDL_GameControllerDB/compare/cc9f777...c56329f) |
| MacReady Bravo 8.0.1 | [721b575](https://github.com/mdqinc/SDL_GameControllerDB/tree/721b575d3053b21d6d30419bf74afb5b1d0fa7a4) | [+5/-5](https://github.com/mdqinc/SDL_GameControllerDB/compare/c56329f...721b575) |
| MacReady Charlie 8.0.2 | [721b575](https://github.com/mdqinc/SDL_GameControllerDB/tree/721b575d3053b21d6d30419bf74afb5b1d0fa7a4) | [+0/-0](https://github.com/mdqinc/SDL_GameControllerDB/compare/721b575...721b575) |
| MacReady Delta 8.0.3 | [d4ab609](https://github.com/mdqinc/SDL_GameControllerDB/tree/d4ab609121ee6e687bc3d3a7e80244b3b26d1164) | [+5/-3](https://github.com/mdqinc/SDL_GameControllerDB/compare/721b575...d4ab609) |
| MacReady Echo 8.0.4 | [6555d47](https://github.com/mdqinc/SDL_GameControllerDB/tree/6555d47ecb5d9eebac0e3d8cd19a545e9d946c40) | [+2/-0](https://github.com/mdqinc/SDL_GameControllerDB/compare/d4ab609...6555d47) |
| MacReady Foxtrot 8.0.5 | [037d6a1](https://github.com/mdqinc/SDL_GameControllerDB/tree/037d6a1533ed94fbc6a8c71e6f1f9aff1e46208a) | [+47/-14](https://github.com/mdqinc/SDL_GameControllerDB/compare/6555d47...037d6a1) |
| MacReady Golf 8.0.6 | [075c154](https://github.com/mdqinc/SDL_GameControllerDB/tree/075c1549075ef89a397fd7e0663d21e53a2485fd) | [+340/-301](https://github.com/mdqinc/SDL_GameControllerDB/compare/037d6a1...075c154) |
+30 -14
View File
@@ -41,15 +41,28 @@ You can name your branch whatever you want, but it's recommended to name it some
The limit is your imagination. You can add new features, fix bugs, add new mods, or even change the way the game works. We will demonstrate this by creating a mod that changes the speed of the day/night cycle.
Let's being by finding where the time is updated. Thankfully in the save editor we have a slider already hooked up to the time of day so we can check there for reference. The save editor file is at `soh/soh/Enhancements/debugger/debugSaveEditor.cpp`, if we do a quick search within that file for time we will find the following at line 400:
Let's begin by finding where the time is updated. Thankfully in the save editor we have a slider already hooked up to the time of day so we can check there for reference. The save editor file is at `soh/soh/Enhancements/debugger/debugSaveEditor.cpp`, if we do a quick search within that file for time we will find the following at around line 217:
```cpp
const uint16_t dayTimeMin = 0;
const uint16_t dayTimeMax = 0xFFFF;
ImGui::SliderScalar("Time", ImGuiDataType_U16, &gSaveContext.dayTime, &dayTimeMin, &dayTimeMax);
SliderInt("Time", (int32_t*)&gSaveContext.dayTime, intSliderOptionsBase.Min(0).Max(0xFFFF).Tooltip("Time of day"));
if (Button("Dawn", buttonOptionsBase)) {
gSaveContext.dayTime = 0x4000;
}
ImGui::SameLine();
if (Button("Noon", buttonOptionsBase)) {
gSaveContext.dayTime = 0x8000;
}
ImGui::SameLine();
if (Button("Sunset", buttonOptionsBase)) {
gSaveContext.dayTime = 0xC001;
}
ImGui::SameLine();
if (Button("Midnight", buttonOptionsBase)) {
gSaveContext.dayTime = 0;
}
```
So this tells us that `gSaveContext.dayTime` is what we're looking for. Let's now do a global search for this to see if we can find where it is updated. We find the following in `soh/src/code/z_kankyo.c` line 925:
So this tells us that `gSaveContext.dayTime` is what we're looking for. Let's now do a global search for this to see if we can find where it is updated. We find the following in `soh/src/code/z_kankyo.c` around line 925:
```cpp
if (IS_DAY || gTimeIncrement >= 0x190) {
@@ -59,7 +72,7 @@ if (IS_DAY || gTimeIncrement >= 0x190) {
}
```
We can make a quick change to this code to verify this is indeed what we are looking for, lets multiply the the gTimeIncrement by 10:
We can make a quick change to this code to verify this is indeed what we are looking for, lets multiply the gTimeIncrement by 10:
```diff
if (IS_DAY || gTimeIncrement >= 0x190) {
@@ -71,16 +84,19 @@ if (IS_DAY || gTimeIncrement >= 0x190) {
}
```
Rebuild the game and launch it, then load a save file. You should see that the time of day is now moving much faster. Terrific! While we could wrap this up and call it a day, we could make this user configurable by making a few more changes. I think a slider would be good for this, there's a slider in the cheat menu that we can use as a reference. Let's find it in `soh/soh/SohMenuBar.cpp` around line 1120:
Rebuild the game and launch it, then load a save file. You should see that the time of day is now moving much faster. Terrific! While we could wrap this up and call it a day, we could make this user configurable by making a few more changes. I think a slider would be good for this, there's a slider in the cheat menu that we can use as a reference. Let's find it in `soh/soh/SohGui/SohMenuEnhancements.cpp` around line 1565:
```cpp
UIWidgets::EnhancementSliderFloat("Hookshot Reach Multiplier: %.1fx", "##gCheatHookshotReachMultiplier", "gCheatHookshotReachMultiplier", 1.0f, 5.0f, "", 1.0f, false);
AddWidget(path, "Hookshot Reach Multiplier: %.2fx", WIDGET_CVAR_SLIDER_FLOAT)
.CVar(CVAR_CHEAT("HookshotReachMultiplier"))
.Options(FloatSliderOptions().Format("%.2f").Min(1.0f).Max(5.0f));
```
The float values being passed in here are `minimum`, `maximum`, and `default` respectively. We'll make our minimum 0.2 to allow it to move slower, and our maximum 5.0 to allow it to move up to 5x faster. We'll also set the default to 1.0 so that it doesn't change the behavior by default. Copy this line and paste it below, then make the relevant changes:
This adds a `Widget` which sets a CVar, which then sets the options of the slider. We'll make our minimum 0.2 to allow it to move slower, and our maximum 5.0 to allow it to move up to 5x faster. We'll also set the default to 1.0 so that it doesn't change the behavior by default. Copy this line and paste it below, then make the relevant changes:
```cpp
UIWidgets::EnhancementSliderFloat("Time Multiplier: %.1fx", "##gCheatTimeMultiplier", "gCheatTimeMultiplier", 0.2f, 5.0f, "", 1.0f, false);
AddWidget(path, "Time Multiplier: %.2fx", WIDGET_CVAR_SLIDER_FLOAT)
.CVar(CVAR_CHEAT("TimeOfDayMultiplier"))
.Options(FloatSliderOptions().Format("%.2f").Min(0.2f).Max(5.0f).DefaultValue(1.0f));
```
Now we need to replace our hard coded values with the new variable. We can do this by replacing the `10` with a cvar call
@@ -88,10 +104,10 @@ Now we need to replace our hard coded values with the new variable. We can do th
```diff
if (IS_DAY || gTimeIncrement >= 0x190) {
- gSaveContext.dayTime += gTimeIncrement * 10;
+ gSaveContext.dayTime += gTimeIncrement * CVarGetFloat("gCheatTimeMultiplier", 1.0f);
+ gSaveContext.dayTime += gTimeIncrement * CVarGetFloat(CVAR_CHEAT("TimeOfDayMultiplier"),1.0f);
} else {
- gSaveContext.dayTime += gTimeIncrement * 2 * 10;
+ gSaveContext.dayTime += gTimeIncrement * 2 * CVarGetFloat("gCheatTimeMultiplier", 1.0f);
+ gSaveContext.dayTime += gTimeIncrement * 2 * CVarGetFloat(CVAR_CHEAT("TimeOfDayMultiplier"),1.0f);
}
```
@@ -188,4 +204,4 @@ Assuming all went well, you can now push your changes to your fork with the foll
```bash
git push origin <YOUR BRANCH NAME>
```
```
+44
View File
@@ -30,5 +30,49 @@
{
"name": "PAL MQ (Debug)",
"sha1": "cfecfdc58d650e71a200c81f033de4e6d617a9f6"
},
{
"name": "NTSC 1.0 (US)",
"sha1": "ad69c91157f6705e8ab06c79fe08aad47bb57ba7"
},
{
"name": "NTSC 1.1 (US)",
"sha1": "d3ecb253776cd847a5aa63d859d8c89a2f37b364"
},
{
"name": "NTSC 1.2 (US)",
"sha1": "41b3bdc48d98c48529219919015a1af22f5057c2"
},
{
"name": "NTSC 1.0 (JP)",
"sha1": "c892bbda3993e66bd0d56a10ecd30b1ee612210f"
},
{
"name": "NTSC 1.1 (JP)",
"sha1": "dbfc81f655187dc6fefd93fa6798face770d579d"
},
{
"name": "NTSC 1.2 (JP)",
"sha1": "fa5f5942b27480d60243c2d52c0e93e26b9e6b86"
},
{
"name": "NTSC GC (US)",
"sha1": "b82710ba2bd3b4c6ee8aa1a7e9acf787dfc72e9b"
},
{
"name": "NTSC MQ (US)",
"sha1": "8b5d13aac69bfbf989861cfdc50b1d840945fc1d"
},
{
"name": "NTSC GC (JP)",
"sha1": "0769c84615422d60f16925cd859593cdfa597f84"
},
{
"name": "NTSC GC (JP) (Collector's Edition)",
"sha1": "2ce2d1a9f0534c9cd9fa04ea5317b80da21e5e73"
},
{
"name": "NTSC MQ (JP)",
"sha1": "dd14e143c4275861fe93ea79d0c02e36ae8c6c2f"
}
]
+49
View File
@@ -0,0 +1,49 @@
Using Namespace System
$url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.6/LLVM-14.0.6-win64.exe"
$llvmInstallerPath = ".\LLVM-14.0.6-win64.exe"
$clangFormatFilePath = ".\clang-format.exe"
$requiredVersion = "clang-format version 14.0.6"
$currentVersion = ""
function Test-7ZipInstalled {
$sevenZipPath = "C:\Program Files\7-Zip\7z.exe"
return Test-Path $sevenZipPath -PathType Leaf
}
if (Test-Path $clangFormatFilePath) {
$currentVersion = & $clangFormatFilePath --version
if (-not ($currentVersion -eq $requiredVersion)) {
# Delete the existing file if the version is incorrect
Remove-Item $clangFormatFilePath -Force
}
}
if (-not (Test-Path $clangFormatFilePath) -or ($currentVersion -ne $requiredVersion)) {
if (-not (Test-7ZipInstalled)) {
Write-Host "7-Zip is not installed. Please install 7-Zip and run the script again."
exit
}
$wc = New-Object net.webclient
$wc.Downloadfile($url, $PSScriptRoot + $llvmInstallerPath)
$sevenZipPath = "C:\Program Files\7-Zip\7z.exe"
$specificFileInArchive = "bin\clang-format.exe"
& "$sevenZipPath" e $llvmInstallerPath $specificFileInArchive
Remove-Item $llvmInstallerPath -Force
}
$basePath = (Resolve-Path .).Path
$files = Get-ChildItem -Path $basePath\soh -Recurse -File `
| Where-Object { ($_.Extension -eq '.c' -or $_.Extension -eq '.cpp' -or `
(($_.Extension -eq '.h' -or $_.Extension -eq '.hpp') -and `
(-not ($_.FullName -like "*\soh\src\*" -or $_.FullName -like "*\soh\include\*")))) -and `
(-not ($_.FullName -like "*\soh\assets\*" -or $_.FullName -like "*\soh\build\*")) }
for ($i = 0; $i -lt $files.Length; $i++) {
$file = $files[$i]
$relativePath = $file.FullName.Substring($basePath.Length + 1)
Write-Host "Formatting [$($i+1)/$($files.Length)] $relativePath"
.\clang-format.exe -i $file.FullName
}
+29
View File
@@ -0,0 +1,29 @@
# this line does quite a bit, so let's break it down
#
# find soh
# use "find" to look in the "soh" directory
# this ensures we don't try to format stuff in the submodules
#
# -type f
# only look for files
#
# -name "*.c" -o -name "*.cpp"
# find all .c and .cpp files
#
# ( -name "*.h" -o -name "*.hpp" ) ! -path "soh/src/**.h" ! -path "soh/include/**.h"
# find all .h and .hpp files that aren't in soh/src or soh/include
# this is because zret decomp only runs clang-format on c files
# https://github.com/zeldaret/mm/blob/b7e5468ca16315a7e322055eff3d97fe980bbc25/format.py#L182
#
# ! -path "soh/assets/*"
# asset headers are autogenerated, don't fight them
#
# -print0
# separate paths with NUL bytes, avoiding issues with spaces in paths
#
# | xargs -0 clang-format-14 -i -verbose
# use xargs to take each path we've found
# and pass it as an argument to clang-format
# verbose to print files being formatted and X out of Y status
find soh -type f \( -name "*.c" -o -name "*.cpp" -o \( \( -name "*.h" -o -name "*.hpp" \) ! -path "soh/src/*" ! -path "soh/include/*" \) \) ! -path "soh/assets/*" -print0 | xargs -0 clang-format-14 -i --verbose
+1 -1
View File
@@ -1,7 +1,7 @@
[Desktop Entry]
Version=1.0
Name=SOH
Exec=soh.sh
Exec=soh.elf
Terminal=false
Icon=sohIcon
Type=Application
-203
View File
@@ -1,203 +0,0 @@
#!/bin/bash
HERE="$(dirname "$(readlink -f "${0}")")"/../..
export PATH="$HERE"/bin:"$HERE"/usr/bin:"$PATH"
export LD_LIBRARY_PATH="$HERE"/usr/lib:"$LD_LIBRARY_PATH"
export ZENITY=$(command -v zenity)
if [ -z ${SHIP_HOME+x} ]; then
export SHIP_HOME=$PWD
fi
if [ -z ${SHIP_BIN_DIR+x} ]; then
export SHIP_BIN_DIR="$HERE/usr/bin"
fi
if [[ ! -e "$SHIP_HOME"/mods ]]; then
mkdir -p "$SHIP_HOME"/mods
touch "$SHIP_HOME"/mods/custom_otr_files_go_here.txt
fi
while [[ (! -e "$SHIP_HOME"/oot.otr) || (! -e "$SHIP_HOME"/oot-mq.otr) ]]; do
for romfile in "$SHIP_HOME"/*.*64
do
if [[ -e $romfile ]]; then
export ASSETDIR="$(mktemp -d /tmp/assets-XXXXX)"
ln -s "$HERE"/usr/bin/{assets,soh.elf,ZAPD} "$ASSETDIR"
export OLDPWD="$PWD"
mkdir -p "$ASSETDIR"/tmp
ln -s "$romfile" "$ASSETDIR"/tmp/rom.z64
cd "$ASSETDIR"
ROMHASH=$(sha1sum -b "$ASSETDIR"/tmp/rom.z64 | awk '{ print $1 }')
# Remap v64 and n64 hashes to their z64 hash equivalent
# ZAPD will handle converting the data into z64 format
case "$ROMHASH" in
a9059b56e761c9034fbe02fe4c24985aaa835dac) # v64
ROMHASH=cee6bc3c2a634b41728f2af8da54d9bf8cc14099
;;
24708102dc504d3f375a37f4ae4e149c167dc515) # n64
ROMHASH=cee6bc3c2a634b41728f2af8da54d9bf8cc14099
;;
580dd0bd1b6d2c51cc20a764eece84dba558964c) # v64
ROMHASH=0227d7c0074f2d0ac935631990da8ec5914597b4
;;
d6342c59007e57c1194661ec6880b2f078403f4e) # n64
ROMHASH=0227d7c0074f2d0ac935631990da8ec5914597b4
;;
d0bdc2eb320668b4ba6893b9aefe4040a73123ff) # v64
ROMHASH=328a1f1beba30ce5e178f031662019eb32c5f3b5
;;
4946ab250f6ac9b32d76b21f309ebb8ebc8103d2) # n64
ROMHASH=328a1f1beba30ce5e178f031662019eb32c5f3b5
;;
663c34f1b2c05a09e5beffe4d0dcd440f7d49dc7) # v64
ROMHASH=cfbb98d392e4a9d39da8285d10cbef3974c2f012
;;
24c73d378b0620a380ce5ef9f2b186c6c157a68b) # n64
ROMHASH=cfbb98d392e4a9d39da8285d10cbef3974c2f012
;;
8ebf2e29313f44f2d49e5b4191971d09919e8e48) # v64
ROMHASH=f46239439f59a2a594ef83cf68ef65043b1bffe2
;;
4264bf7b875737b8fae77d52322a5099d051fc11) # n64
ROMHASH=f46239439f59a2a594ef83cf68ef65043b1bffe2
;;
973bc6fe56010a8d646166a1182a81b4f13b8cf9) # v64
ROMHASH=50bebedad9e0f10746a52b07239e47fa6c284d03
;;
d327752c46edc70ff3668b9514083dbbee08927c) # v64
ROMHASH=50bebedad9e0f10746a52b07239e47fa6c284d03
;;
ecdeb1747560834e079c22243febea7f6f26ba3b) # v64
ROMHASH=079b855b943d6ad8bd1eb026c0ed169ecbdac7da
;;
f19f8662ec7abee29484a272a6fda53e39efe0f1) # n64
ROMHASH=079b855b943d6ad8bd1eb026c0ed169ecbdac7da
;;
ab519ce04a33818ce2c39b3c514a751d807a494a) # v64
ROMHASH=cfecfdc58d650e71a200c81f033de4e6d617a9f6
;;
c19a34f7646305e1755249fca2071e178bd7cd00) # n64
ROMHASH=cfecfdc58d650e71a200c81f033de4e6d617a9f6
;;
25e8ae79ea0839ca5c984473f7460d8040c36f9c) # v64
ROMHASH=517bd9714c73cb96c21e7c2ef640d7b55186102f
;;
166c02770d67fcc3954c443eb400a6a3573d3fc0) # n64
ROMHASH=517bd9714c73cb96c21e7c2ef640d7b55186102f
;;
esac
case "$ROMHASH" in
cee6bc3c2a634b41728f2af8da54d9bf8cc14099)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_D
OTRNAME="oot.otr"
fi
;;
0227d7c0074f2d0ac935631990da8ec5914597b4)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_PAL_F
OTRNAME="oot.otr"
else
continue
fi
;;
328a1f1beba30ce5e178f031662019eb32c5f3b5)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_PAL_10
OTRNAME="oot.otr"
else
continue
fi
;;
cfbb98d392e4a9d39da8285d10cbef3974c2f012)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_PAL_11
OTRNAME="oot.otr"
else
continue
fi
;;
f46239439f59a2a594ef83cf68ef65043b1bffe2)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_PAL_F
OTRNAME="oot-mq.otr"
else
continue
fi
;;
50bebedad9e0f10746a52b07239e47fa6c284d03)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_D
OTRNAME="oot-mq.otr"
else
continue
fi
;;
079b855b943d6ad8bd1eb026c0ed169ecbdac7da)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_D
OTRNAME="oot-mq.otr"
else
continue
fi
;;
cfecfdc58d650e71a200c81f033de4e6d617a9f6)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_D
OTRNAME="oot-mq.otr"
else
continue
fi
;;
517bd9714c73cb96c21e7c2ef640d7b55186102f)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_D
OTRNAME="oot-mq.otr"
else
continue
fi
;;
*)
echo -e "\n$romfile - $ROMHASH rom hash does not match\n"
continue;;
esac
if [[ ! -e "$SHIP_HOME"/"$OTRNAME" ]]; then
if [ -n "$ZENITY" ]; then
(echo "# 25%"; echo "25"; sleep 2; echo "# 50%"; echo "50"; sleep 3; echo "# 75%"; echo "75"; sleep 2; echo "# 100%"; echo "100"; sleep 3) |
zenity --progress --title="OTR Generating..." --timeout=10 --percentage=0 --icon-name=soh --window-icon=soh.png --height=80 --width=400 &
else
echo "Processing..."
fi
assets/extractor/ZAPD.out ed -eh -i assets/extractor/xmls/"${ROM}" -b tmp/rom.z64 -fl assets/extractor/filelists -o placeholder -osf placeholder -gsf 1 -rconf assets/extractor/Config_"${ROM}".xml -se OTR --otrfile "${OTRNAME}" --portVer "@CMAKE_PROJECT_VERSION@" > /dev/null 2>&1
cp "$ASSETDIR"/"$OTRNAME" "$SHIP_HOME"
fi
else
if [[ (! -e "$SHIP_HOME"/oot.otr) && (! -e "$SHIP_HOME"/oot-mq.otr) ]]; then
if [ -n "$ZENITY" ]; then
zenity --error --timeout=5 --text="Place ROM in $SHIP_HOME" --title="Missing ROM file" --width=500 --width=200
else
echo -e "\nPlace ROM in this folder\n"
fi
exit
fi
fi
done
if [[ (! -e "$SHIP_HOME"/oot.otr) && (! -e "$SHIP_HOME"/oot-mq.otr) ]]; then
if [ -n "$ZENITY" ]; then
zenity --error --timeout=10 --text="No valid ROMs were provided, No OTR was generated." --title="Incorrect ROM file" --width=500 --width=200
else
echo "No valid roms provided, no OTR was generated."
fi
rm -r "$ASSETDIR"
exit
else
(cd "$SHIP_BIN_DIR"; ./soh.elf)
exit
fi
rm -r "$ASSETDIR"
done
(cd "$SHIP_BIN_DIR"; ./soh.elf)
exit
-1
View File
@@ -7,7 +7,6 @@ __pycache__/
.vscode/
.vs/
.idea/
CMakeLists.txt
cmake-build-debug
venv/
+5 -1
View File
@@ -8,5 +8,9 @@ if(MSVC)
set_target_properties("${PROPS_TARGET}" PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
set_config_specific_property("DEFAULT_CXX_EXCEPTION_HANDLING" "/EHsc")
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
if (CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache|sccache")
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Z7")
else()
set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
endif()
endif()
+122 -165
View File
@@ -1,9 +1,10 @@
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)
cmake_minimum_required(VERSION 3.26.0 FATAL_ERROR)
set(CMAKE_SYSTEM_VERSION 10.0 CACHE STRING "" FORCE)
project(soh LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
set(CMAKE_C_STANDARD 23 CACHE STRING "The C standard to use")
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
enable_language(OBJCXX)
@@ -92,10 +93,6 @@ if (NOT TARGET libultraship)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../libultraship ${CMAKE_BINARY_DIR}/libultraship)
endif()
if (NOT TARGET ZAPDUtils)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../ZAPDTR/ZAPDUtils ${CMAKE_BINARY_DIR}/ZAPDUtils)
endif()
if (NOT TARGET ZAPDLib)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../ZAPDTR/ZAPD ${CMAKE_BINARY_DIR}/ZAPD)
endif()
@@ -105,8 +102,8 @@ set(PROJECT_NAME soh)
################################################################################
# Sources
################################################################################
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/src/boot/build.c.in ${CMAKE_BINARY_DIR}/build.c @ONLY)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/src/boot/properties.h.in ${CMAKE_CURRENT_SOURCE_DIR}/properties.h @ONLY)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/src/boot/build.c.in ${CMAKE_CURRENT_SOURCE_DIR}/src/boot/build.c @ONLY)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/properties.h.in ${CMAKE_CURRENT_SOURCE_DIR}/properties.h @ONLY)
set(Header_Files "resource.h")
source_group("headers" FILES ${Header_Files})
@@ -124,108 +121,75 @@ source_group("include" FILES ${Header_Files__include})
# }}}
# soh (root)
file(GLOB soh__ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "soh/*.c" "soh/*.cpp" "soh/*.h")
source_group("soh" FILES ${soh__})
file(GLOB_RECURSE soh__ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "soh/*.c" "soh/*.cpp" "soh/*.h" "soh/*.hpp")
# Add specific files that don't match the pattern
list(APPEND soh__ ${CMAKE_CURRENT_SOURCE_DIR}/soh/Enhancements/savestates_extern.inc)
list(APPEND soh__ ${CMAKE_CURRENT_SOURCE_DIR}/soh/Enhancements/speechsynthesizer/DarwinSpeechSynthesizer.mm)
# Create source groups that match the real file directory paths
foreach(source IN LISTS soh__)
get_filename_component(source_path "${source}" PATH)
string(REPLACE "/" "\\" source_path_adjusted "${source_path}")
source_group("${source_path_adjusted}" FILES "${source}")
endforeach()
# Fix UTF-8 issues for MSVC
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set_source_files_properties(soh/OTRGlobals.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
set_source_files_properties(soh/Enhancements/tts/tts.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
set_source_files_properties(soh/Enhancements/custom-message/CustomMessageManager.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
set_source_files_properties(soh/Enhancements/custom-message/CustomMessageManager.h PROPERTIES COMPILE_FLAGS "/utf-8")
endif()
# soh/config {{{
file(GLOB_RECURSE soh__config RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
"soh/config/*.h"
"soh/config/*.cpp"
)
# }}}
# soh/enhancements {{{
file(GLOB_RECURSE soh__Enhancements RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
"soh/Enhancements/*.c"
"soh/Enhancements/*.cpp"
"soh/Enhancements/*.h"
"soh/Enhancements/*.hpp"
"soh/Enhancements/*_extern.inc"
"soh/Enhancements/*.mm"
)
list(REMOVE_ITEM soh__Enhancements "soh/Enhancements/gamecommand.h")
list(FILTER soh__Enhancements EXCLUDE REGEX "soh/Enhancements/gfx.*")
# handle crowd control removals
list(REMOVE_ITEM soh__Enhancements "soh/Enhancements/crowd-control/soh.cs")
list(REMOVE_ITEM soh__Enhancements "soh/Enhancements/crowd-control/soh.ccpak")
if (!BUILD_CROWD_CONTROL)
list(FILTER soh__Enhancements EXCLUDE REGEX "soh/Enhancements/crowd-control/*")
# handle Network removals
if (!BUILD_REMOTE_CONTROL)
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/crowd-control/")
endif()
# handle speechsynthesizer removals
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
list(FILTER soh__Enhancements EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/Darwin*")
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/Darwin")
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
list(FILTER soh__Enhancements EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/SAPI*")
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/SAPI")
else()
list(FILTER soh__Enhancements EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/(Darwin|SAPI).*")
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/(Darwin|SAPI)")
endif()
source_group("soh\\Enhancements" REGULAR_EXPRESSION "soh/Enhancements/*")
source_group("soh\\Enhancements\\audio" REGULAR_EXPRESSION "soh/Enhancements/audio/*")
source_group("soh\\Enhancements\\controls" REGULAR_EXPRESSION "soh/Enhancements/controls/*")
source_group("soh\\Enhancements\\cosmetics" REGULAR_EXPRESSION "soh/Enhancements/cosmetics/*")
source_group("soh\\Enhancements\\crowd-control" REGULAR_EXPRESSION "soh/Enhancements/crowd-control/*")
source_group("soh\\Enhancements\\custom-message" REGULAR_EXPRESSION "soh/Enhancements/custom-message/*")
source_group("soh\\Enhancements\\debugger" REGULAR_EXPRESSION "soh/Enhancements/debugger/*")
source_group("soh\\Enhancements\\game-interactor" REGULAR_EXPRESSION "soh/Enhancements/game-interactor/*")
source_group("soh\\Enhancements\\item-tables" REGULAR_EXPRESSION "soh/Enhancements/item-tables/*")
source_group("soh\\Enhancements\\randomizer" REGULAR_EXPRESSION "soh/Enhancements/randomizer/*")
source_group("soh\\Enhancements\\randomizer\\3drando" REGULAR_EXPRESSION "soh/Enhancements/randomizer/3drando/*")
source_group("soh\\Enhancements\\randomizer\\3drando\\hint_list" REGULAR_EXPRESSION "soh/Enhancements/randomizer/3drando/hint_list/*")
source_group("soh\\Enhancements\\randomizer\\3drando\\location_access" REGULAR_EXPRESSION "soh/Enhancements/randomizer/3drando/location_access/*")
source_group("soh\\Enhancements\\speechsynthesizer" REGULAR_EXPRESSION "soh/Enhancements/speechsynthesizer/*")
source_group("soh\\Enhancements\\tts" REGULAR_EXPRESSION "soh/Enhancements/tts/*")
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set_source_files_properties(soh/Enhancements/tts/tts.cpp PROPERTIES COMPILE_FLAGS "/utf-8")
find_library(ESPEAK espeak-ng)
if (NOT ESPEAK)
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/ESpeak")
endif()
# }}}
# soh/Extractor {{{
list(FILTER ship__ EXCLUDE REGEX "soh/Extractor/*")
if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS")
# soh/Extractor {{{
file(GLOB_RECURSE soh__Extractor RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
"soh/Extractor/*.c"
"soh/Extractor/*.cpp"
"soh/Extractor/*.h"
"soh/Extractor/*.hpp"
)
# }}}
else()
file(GLOB_RECURSE soh__Extractor RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
"soh/Extractor/*.h"
"soh/Extractor/*.hpp"
)
# }}}
endif()
# soh/resource {{{
file(GLOB_RECURSE soh__Resource RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "soh/resource/*.cpp" "soh/resource/*.h")
source_group("soh\\resource\\type" REGULAR_EXPRESSION "soh/resource/type/*")
source_group("soh\\resource\\type\\scenecommand" REGULAR_EXPRESSION "soh/resource/type/scenecommand/*")
source_group("soh\\resource\\importer" REGULAR_EXPRESSION "soh/resource/importer/*")
source_group("soh\\resource\\importer\\scenecommand" REGULAR_EXPRESSION "soh/resource/importer/scenecommand/*")
# }}}
# src (decomp) {{{
file(GLOB_RECURSE src__ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "src/*.c" "src/*.h")
set_source_files_properties(${src__} PROPERTIES COMPILE_OPTIONS "${WARNING_OVERRIDE}")
list(APPEND src__ ${CMAKE_BINARY_DIR}/build.c)
list(APPEND src__ ${CMAKE_CURRENT_SOURCE_DIR}/properties.h)
list(APPEND src__ ${CMAKE_CURRENT_SOURCE_DIR}/Resource.rc)
list(FILTER src__ EXCLUDE REGEX "src/dmadata/*")
list(FILTER src__ EXCLUDE REGEX "src/elf_message/*")
list(FILTER src__ EXCLUDE REGEX "src/libultra/io/*")
list(FILTER src__ EXCLUDE REGEX "src/libultra/libc/*")
list(FILTER src__ EXCLUDE REGEX "src/libultra/os/*")
list(FILTER src__ EXCLUDE REGEX "src/libultra/rmon/*")
list(FILTER src__ EXCLUDE REGEX "src/dmadata/")
list(FILTER src__ EXCLUDE REGEX "src/elf_message/")
list(FILTER src__ EXCLUDE REGEX "src/libultra/io/")
list(FILTER src__ EXCLUDE REGEX "src/libultra/libc/")
list(FILTER src__ EXCLUDE REGEX "src/libultra/os/")
list(FILTER src__ EXCLUDE REGEX "src/libultra/rmon/")
list(APPEND src__ "src/libultra/libc/sprintf.c")
list(REMOVE_ITEM src__ "src/libultra/gu/cosf.c")
list(REMOVE_ITEM src__ "src/libultra/gu/lookat.c")
@@ -238,7 +202,6 @@ list(REMOVE_ITEM src__ "src/libultra/gu/sqrtf.c")
list(REMOVE_ITEM src__ "src/libultra/gu/us2dex.c")
source_group("src" REGULAR_EXPRESSION "src/*")
source_group("src\\build" FILES ${CMAKE_BINARY_DIR}/build.c ${CMAKE_CURRENT_SOURCE_DIR}/properties.h ${CMAKE_CURRENT_SOURCE_DIR}/Resource.rc)
source_group("src\\boot" REGULAR_EXPRESSION "src/boot/*")
source_group("src\\buffers" REGULAR_EXPRESSION "src/buffers/*")
source_group("src\\code" REGULAR_EXPRESSION "src/code/*")
@@ -253,10 +216,7 @@ set(ALL_FILES
${Header_Files}
${Header_Files__include}
${soh__}
${soh__config}
${soh__Enhancements}
${soh__Extractor}
${soh__Resource}
${src__}
)
@@ -323,77 +283,48 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
endif()
################################################################################
# Find/download Boost
# Find/download Dr Libs (For custom audio)
################################################################################
include(FetchContent)
FetchContent_Declare(
Boost
URL https://boostorg.jfrog.io/artifactory/main/release/1.81.0/source/boost_1_81_0.tar.gz
URL_HASH SHA256=205666dea9f6a7cfed87c7a6dfbeb52a2c1b9de55712c9c1a87735d7181452b6
SOURCE_SUBDIR "null" # Set to a nonexistent directory so boost is not built (we don't need to build it)
DOWNLOAD_EXTRACT_TIMESTAMP false # supress timestamp warning, not needed since the url wont change
dr_libs
GIT_REPOSITORY https://github.com/mackron/dr_libs.git
GIT_TAG da35f9d6c7374a95353fd1df1d394d44ab66cf01
)
FetchContent_MakeAvailable(dr_libs)
set(Boost_NO_BOOST_CMAKE false)
set(BOOST_INCLUDEDIR ${FETCHCONTENT_BASE_DIR}/boost-src) # Location where FetchContent stores the source
message("Searching for Boost installation")
find_package(Boost)
if (NOT ${Boost_FOUND})
message("Boost not found. Downloading now...")
FetchContent_MakeAvailable(Boost)
message("Boost downloaded to " ${FETCHCONTENT_BASE_DIR}/boost-src)
set(BOOST-INCLUDE ${FETCHCONTENT_BASE_DIR}/boost-src)
else()
message("Boost found in " ${Boost_INCLUDE_DIRS})
set(BOOST-INCLUDE ${Boost_INCLUDE_DIRS})
endif()
################################################################################
# Compile definitions
################################################################################
find_package(SDL2)
set(SDL2-INCLUDE ${SDL2_INCLUDE_DIRS})
if (BUILD_CROWD_CONTROL)
if (BUILD_REMOTE_CONTROL)
find_package(SDL2_net)
set(SDL2-NET-INCLUDE ${SDL_NET_INCLUDE_DIRS})
if(NOT SDL2_net_FOUND)
message(STATUS "SDL2_net not found (it's possible the version installed is too old). Disabling BUILD_REMOTE_CONTROL.")
set(BUILD_REMOTE_CONTROL 0)
else()
set(SDL2-NET-INCLUDE ${SDL_NET_INCLUDE_DIRS})
endif()
endif()
if (ESPEAK)
add_compile_definitions(ESPEAK=1)
endif()
################################################################################
# Compile definitions
################################################################################
target_include_directories(${PROJECT_NAME} PRIVATE assets
${CMAKE_CURRENT_SOURCE_DIR}/include/
${CMAKE_CURRENT_SOURCE_DIR}/src/
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/include
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/log
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/debug
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/menu
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/utils
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/utils/binarytools
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/config
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/resource
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/resource/type
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/resource/factory
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/audio
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/window
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/window/gui
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/config
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/public
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/public/libultra
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/public/bridge
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/extern
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/extern/tinyxml2
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/libultraship/Lib/
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/libultraship/Lib/libjpeg/include/
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/libultraship/Lib/spdlog/include/
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/graphic/Fast3D/U64/PR
${CMAKE_CURRENT_SOURCE_DIR}/../libultraship/src/graphic
${CMAKE_CURRENT_SOURCE_DIR}/../ZAPDTR/ZAPDUtils
${CMAKE_CURRENT_SOURCE_DIR}/../ZAPDTR/ZAPD/resource/type
${SDL2-INCLUDE}
${SDL2-NET-INCLUDE}
${BOOST-INCLUDE}
${CMAKE_CURRENT_SOURCE_DIR}/assets/
${dr_libs_SOURCE_DIR}
.
)
@@ -408,13 +339,14 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
"$<$<CONFIG:Release>:"
"NDEBUG"
">"
"$<$<BOOL:${BUILD_CROWD_CONTROL}>:ENABLE_CROWD_CONTROL>"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:ENABLE_REMOTE_CONTROL>"
"INCLUDE_GAME_PRINTF;"
"ENABLE_CROWD_CONTROL;"
"F3DEX_GBI_2"
"UNICODE;"
"_UNICODE"
STORMLIB_NO_AUTO_LINK
"_CRT_SECURE_NO_WARNINGS;"
NOMINMAX
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
target_compile_definitions(${PROJECT_NAME} PRIVATE
@@ -428,10 +360,12 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
"NDEBUG;"
">"
"INCLUDE_GAME_PRINTF;"
"F3DEX_GBI_2"
"WIN32;"
"UNICODE;"
"_UNICODE"
STORMLIB_NO_AUTO_LINK
NOMINMAX
)
endif()
elseif (CMAKE_SYSTEM_NAME STREQUAL "CafeOS")
@@ -442,6 +376,7 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL "CafeOS")
"$<$<CONFIG:Release>:"
"NDEBUG"
">"
"F3DEX_GBI_2"
"SPDLOG_ACTIVE_LEVEL=3;"
"SPDLOG_NO_THREAD_ID;"
"SPDLOG_NO_TLS;"
@@ -455,7 +390,8 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
"$<$<CONFIG:Release>:"
"NDEBUG"
">"
"$<$<BOOL:${BUILD_CROWD_CONTROL}>:ENABLE_CROWD_CONTROL>"
"F3DEX_GBI_2"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:ENABLE_REMOTE_CONTROL>"
"SPDLOG_ACTIVE_LEVEL=0;"
"_CONSOLE;"
"_CRT_SECURE_NO_WARNINGS;"
@@ -479,6 +415,7 @@ if(MSVC)
/Gy;
/W3
>
/bigobj;
/sdl-;
/permissive-;
/MP;
@@ -541,6 +478,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall -Wextra -Wno-error
-Wformat-security
-Wno-return-type
-Wno-unused-parameter
-Wno-unused-function
@@ -552,6 +490,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
$<$<COMPILE_LANGUAGE:C>:
-Werror-implicit-function-declaration
-Wno-incompatible-pointer-types
-Wno-int-conversion
>
$<$<COMPILE_LANGUAGE:CXX>:-fpermissive>
$<$<COMPILE_LANGUAGE:CXX>:
@@ -567,6 +506,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
elseif (CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall -Wextra -Wno-error
-Wformat-security
-Wno-return-type
-Wno-unused-parameter
-Wno-unused-function
@@ -617,6 +557,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall -Wextra -Wno-error
-Wformat-security
-Wno-unused-parameter
-Wno-unused-function
-Wno-unused-variable
@@ -626,7 +567,9 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
-Wno-missing-braces
$<$<COMPILE_LANGUAGE:C>:
-Werror-implicit-function-declaration
-Wno-implicit-int
-Wno-incompatible-pointer-types
-Wno-int-conversion
>
$<$<COMPILE_LANGUAGE:CXX>:-fpermissive>
$<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-enum-enum-conversion>
@@ -636,6 +579,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
target_link_options(${PROJECT_NAME} PRIVATE
-pthread
#-fsanitize=address
-Wl,-export-dynamic
)
endif()
@@ -643,34 +587,29 @@ endif()
################################################################################
# Pre build events
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
add_custom_command_if(
TARGET ${PROJECT_NAME}
PRE_BUILD
COMMANDS
COMMAND $<CONFIG:Debug> copy /b $<SHELL_PATH:${CMAKE_BINARY_DIR}/>build.c +,,
)
if (CMAKE_GENERATOR MATCHES "Visual Studio")
add_custom_command(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/extractor ${CMAKE_BINARY_DIR}/soh/assets
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/xml ${CMAKE_BINARY_DIR}/soh/assets/xml
)
endif()
if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS")
add_custom_command(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMENT "Copying asset xmls..."
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/soh/assets/extractor $<TARGET_FILE_DIR:soh>/assets/extractor
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/soh/assets/xml $<TARGET_FILE_DIR:soh>/assets/extractor/xmls
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/filelists $<TARGET_FILE_DIR:soh>/assets/extractor/filelists
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/extractor $<TARGET_FILE_DIR:soh>/assets
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/xml $<TARGET_FILE_DIR:soh>/assets/xml
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:soh>/assets/symbols
# COMMAND ${VS_COPY_ASSETS_CMD}
)
endif()
################################################################################
# Dependencies
################################################################################
add_dependencies(${PROJECT_NAME}
ZAPDUtils
libultraship
)
if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS")
@@ -681,25 +620,38 @@ endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
find_package(glfw3 REQUIRED)
find_package(Ogg CONFIG REQUIRED)
link_libraries(Ogg::ogg)
find_package(Vorbis CONFIG REQUIRED)
link_libraries(Vorbis::vorbisfile)
find_package(Opus CONFIG REQUIRED)
link_libraries(Opus::opus)
find_package(OpusFile CONFIG REQUIRED)
link_libraries(OpusFile::opusfile CONFIG REQUIRED)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;"
"ZAPDUtils;"
"ZAPDLib;"
"glu32;"
"SDL2::SDL2;"
"SDL2::SDL2main;"
"$<$<BOOL:${BUILD_CROWD_CONTROL}>:SDL2_net::SDL2_net-static>"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:SDL2_net::SDL2_net-static>"
"glfw;"
"winmm;"
"imm32;"
"version;"
"setupapi"
"Ogg::ogg"
"Opus::opus"
"Vorbis::vorbis"
"Vorbis::vorbisenc"
"Vorbis::vorbisfile"
"OpusFile::opusfile"
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;"
"ZAPDUtils;"
"ZAPDLib;"
"glu32;"
"SDL2::SDL2;"
@@ -717,7 +669,6 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
find_package(Threads REQUIRED)
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;"
"ZAPDUtils;"
SDL2::SDL2
-lglad
Threads::Threads
@@ -737,38 +688,44 @@ else()
find_package(SDL2)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
find_package(Threads REQUIRED)
find_package(Ogg REQUIRED)
find_package(Vorbis REQUIRED)
find_package(Opus REQUIRED)
find_package(OpusFile REQUIRED)
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;"
"ZAPDUtils;"
"ZAPDLib;"
SDL2::SDL2
"$<$<BOOL:${BUILD_CROWD_CONTROL}>:SDL2_net::SDL2_net>"
"Ogg::ogg"
"Vorbis::vorbis"
"Vorbis::vorbisenc"
"Vorbis::vorbisfile"
"Opus::opus"
"Opusfile::Opusfile"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:SDL2_net::SDL2_net>"
${CMAKE_DL_LIBS}
Threads::Threads
)
endif()
if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS")
if(NOT CMAKE_SYSTEM_NAME MATCHES "Darwin|NintendoSwitch|CafeOS")
INSTALL(TARGETS soh DESTINATION . COMPONENT ship)
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
INSTALL(FILES $<TARGET_PDB_FILE:soh> DESTINATION ./debug COMPONENT ship)
INSTALL(FILES ${CMAKE_BINARY_DIR}/soh/soh.otr DESTINATION . COMPONENT ship)
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/linux/appimage/soh.sh.in ${CMAKE_BINARY_DIR}/linux/soh.sh @ONLY)
INSTALL(FILES ${CMAKE_BINARY_DIR}/soh/soh.o2r DESTINATION . COMPONENT ship)
endif()
find_program(CURL NAMES curl DOC "Path to the curl program. Used to download files.")
execute_process(COMMAND ${CURL} -sSfL https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt -o ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt OUTPUT_VARIABLE RESULT)
execute_process(COMMAND ${CURL} -sSfL https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt -o ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt OUTPUT_VARIABLE RESULT)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/macosx/Info.plist.in ${CMAKE_BINARY_DIR}/macosx/Info.plist @ONLY)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/macosx/soh-macos.sh.in ${CMAKE_BINARY_DIR}/macosx/soh-macos.sh @ONLY)
INSTALL(TARGETS soh DESTINATION ../MacOS COMPONENT ship)
INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION ../MacOS COMPONENT ship)
INSTALL(FILES ${CMAKE_BINARY_DIR}/soh/soh.otr DESTINATION ../Resources COMPONENT ship)
INSTALL(FILES ${CMAKE_BINARY_DIR}/soh/soh.o2r DESTINATION ../Resources COMPONENT ship)
elseif(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "NintendoSwitch|CafeOS")
INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION . COMPONENT ship)
endif()
+1 -1
View File
@@ -1,6 +1,6 @@
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#include <ship/resource/Resource.h>
#include "properties.h"
#define APSTUDIO_READONLY_SYMBOLS
+6
View File
@@ -28,4 +28,10 @@
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware> <!-- legacy -->
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness> <!-- falls back to pm if pmv2 is not available -->
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
+2 -1
View File
@@ -4,4 +4,5 @@
*.cfg
*.vtx.inc
*.dlist.inc
*.txt
!*.png
custom/shaders
@@ -25,5 +25,5 @@
"quest_sel_vanilla": "Quest - Original",
"quest_sel_mq": "Quest - Master Quest",
"quest_sel_randomizer": "Quest - Randomizer",
"quest_sel_boss_rush": "Quest - Bosse Rush"
}
"quest_sel_boss_rush": "Quest - Boss Rush"
}
@@ -2,6 +2,7 @@
"health": "Health - $0 Hearts",
"magic": "Magic - $0",
"rupees": "Rupees - $0",
"keys": "Keys - $0",
"floor": "Floor $0",
"basement": "Basement $0",
"item_menu": "Select Item",
@@ -2,6 +2,7 @@
"health": "Vie - $0 Coeurs",
"magic": "Magie - $0",
"rupees": "Rubis - $0",
"keys": "Clés - $0",
"floor": "Étage $0",
"basement": "Sous-sol $0",
"item_menu": "Inventaire",
@@ -2,6 +2,7 @@
"health": "Energie - $0 Herzen",
"magic": "Magie - $0",
"rupees": "Rubine - $0",
"keys": "Schlüssel - $0",
"floor": "Etage $0",
"basement": "Keller $0",
"item_menu": "Gegenstände",
@@ -46,7 +47,7 @@
"28": "Blaues Feuer",
"29": "Käfer",
"30": "Nachtschwärmer",
"31": "Milch (1/2)",
"31": "Milch (Halbe Füllung)",
"32": "Irrlicht",
"33": "Seltsames Ei",
"34": "Huhn",
@@ -66,7 +67,7 @@
"48": "Schimmelpilz",
"49": "Modertrank",
"50": "Säge",
"51": "Goronen-Schwert (zerbrochen)",
"51": "Zerbr. Goronen-Schwert",
"52": "Rezept",
"53": "Glotzfrosch",
"54": "Augentropfen",
@@ -77,7 +78,7 @@
"59": "Kokiri-Schwert",
"60": "Master-Schwert",
"61": "Langschwert",
"62": "Deku-schild",
"62": "Deku-Schild",
"63": "Hylia-Schild",
"64": "Spiegel-Schild",
"65": "Kokiri-Rüstung",
@@ -98,13 +99,13 @@
"80": "Goronen-Armband",
"81": "Krafthandschuh",
"82": "Titanhandschuh",
"83": "Silberschuppe",
"84": "Goldschuppe",
"85": "Langschwert (gebrochen)",
"83": "Silberne Schuppe",
"84": "Goldene Schuppe",
"85": "Zerbr. Langschwert",
"86": "Große Börse",
"87": "Riesenbörse",
"88": "Deku-Kerne",
"89": "Angel",
"89": "Angelrute",
"90": "Menuett des Waldes",
"91": "Bolero des Feuers",
"92": "Serenade des Wassers",
@@ -116,7 +117,7 @@
"98": "Salias Lied",
"99": "Hymne der Sonne",
"100": "Hymne der Zeit",
"101": "Song of Storms",
"101": "Hymne des Sturms",
"102": "Amulett des Waldes",
"103": "Amulett des Feuers",
"104": "Amulett des Wassers",
@@ -124,7 +125,7 @@
"106": "Amulett des Schattens",
"107": "Amulett des Lichts",
"108": "Kokiri-Smaragd",
"109": "Goronen-Opal",
"109": "Goronen-Rubin",
"110": "Zora-Saphir",
"111": "Stein des Wissens",
"112": "Gerudo-Paß",
@@ -135,8 +136,8 @@
"117": "Kompaß",
"118": "Labyrinth-Karte",
"119": "Kleiner Schlüssel",
"120": "MAGIE KLEIN",
"121": "MAGIE GROß",
"120": "Kleine Magieflasche",
"121": "Große Magieflasche",
"122": "Biggoron-Schwert",
"123": "UNGÜLTIG 1",
"124": "UNGÜLTIG 2",
@@ -153,24 +154,24 @@
"135": "50 Rubine",
"136": "200 Rubine",
"137": "UNGÜLTIG 8",
"138": "STÄBE 5",
"139": "STÄBE 10",
"140": "NÜSSE 5",
"141": "NÜSSE 10",
"138": "DEKU-STÄBE 5",
"139": "DEKU-STÄBE 10",
"140": "DEKU-NÜSSE 5",
"141": "DEKU-NÜSSE 10",
"142": "BOMBEN 5",
"143": "BOMBEN 10",
"144": "BOMBEN 20",
"145": "BOMBEN 30",
"146": "PFEILE KLEIN",
"147": "PFEILE MITTEL",
"148": "PFEILE GROß",
"149": "KERNE 30",
"146": "PFEILE 5",
"147": "PFEILE 10",
"148": "PFEILE 30",
"149": "DEKU-KERNE 30",
"150": "KRABBELMINEN 5",
"151": "KRABBELMINEN 20",
"152": "STAB UPGRADE 20",
"153": "STAB UPGRADE 30",
"154": "NUß UPGRADE 30",
"155": "NUß UPGRADE 40",
"152": "DEKU-STAB-KAPAZITÄT 20",
"153": "DEKU-STAB-KAPAZITÄT 30",
"154": "DEKU-NUẞ-KAPAZITÄT 30",
"155": "DEKU-NUẞ-KAPAZITÄT 40",
"255": "",
"256": "Gespensterwüste",
"257": "Gerudo-Festung",
@@ -1,5 +1,5 @@
{
"0": "Abre Mojo",
"0": "Arbre Mojo",
"1": "Caverne Dodongo",
"2": "Ventre de Jabu-Jabu",
"3": "Temple de la Forêt",
@@ -58,9 +58,9 @@
"56": "Laboratoire du Lac",
"57": "", // Tente du Marathonien (No title card)
"58": "Cabane du fossoyeur",
"59": "Fountaine Royale des Fées",
"60": "Fountaine des Fées",
"61": "Fountaine Royale des Fées",
"59": "Fontaine Royale des Fées",
"60": "Fontaine des Fées",
"61": "Fontaine Royale des Fées",
"62": "", // Grottes (No title card)
"63": "", // Tombe 1 (No title card)
"64": "", // Tombe 2 (No title card)
@@ -109,4 +109,4 @@
"107": "",
"108": "", // Debug: SRD Room (No title card)
"109": "" // Debug: Treasure Chest Warp (No title card)
}
}
@@ -9,7 +9,7 @@
"7": "Schattentempel",
"8": "Grund des Brunnens",
"9": "Eishöhle",
"10": "", // Treppe zu Ganondorfs Verließ (Keine Title-Card)
"10": "", // Treppe zu Ganondorfs Verlies (Keine Title-Card)
"11": "Gerudo-Arena",
"12": "Diebesversteck",
"13": "Ganons Schloß",
@@ -22,7 +22,7 @@
"20": "Reitendes Unheil - Phantom-Ganon",
"21": "Subterraner Lavadrachoid - Volvagia",
"22": "Aquamöbes Wassertentakel - Morpha",
"23": "Höllische Hexenarmada - Killa Ohmaz",
"23": "Höllische Hexenarmada - Twinrova",
"24": "Bestialische Schattenmonstrosität - Bongo Bongo",
"25": "Großmeister des Bösen - Ganondorf",
"26": "",
@@ -109,4 +109,4 @@
"107": "",
"108": "", // Debug: SRD Raum (Keine Title-Card)
"109": "" // Debug: Schatzkisten Teleport (Keine Title-Card)
}
}
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,19 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potrim"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_0"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potface"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_1"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbase"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_2"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbottom"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_3"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potvoid"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_4"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,69 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="8" V01="9" V02="7"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="14" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="5" V02="4"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="12" V02="13"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="3" V02="2"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="8" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="48" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="8" V02="9"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="14" V01="13" V02="12"/>
<Triangle1 V00="14" V01="15" V02="13"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="12" V01="13" V02="11"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,31 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="3" V01="4" V02="1"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="8" V02="9"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="8" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="15" V02="13"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_1" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="9"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="12" V02="13"/>
<Triangle1 V00="14" V01="13" V02="12"/>
<Triangle1 V00="14" V01="12" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_1" VertexBufferIndex="0" VertexOffset="32" Count="6"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="0" V02="3"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,18 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="8" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="14" V02="15"/>
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_2" VertexBufferIndex="0" VertexOffset="16" Count="8"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,9 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_3" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,9 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_dangeon_keep/gRandoPotDL_vtx_4" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,82 @@
<Vertex Version="0">
<Vtx X="-35" Y="133" Z="-20" S="546" T="573" R="159" G="61" B="200" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="305" T="573" R="159" G="61" B="56" A="255"/>
<Vtx X="-35" Y="146" Z="20" S="305" T="654" R="196" G="149" B="34" A="255"/>
<Vtx X="-35" Y="146" Z="-20" S="546" T="654" R="196" G="149" B="222" A="255"/>
<Vtx X="-43" Y="146" Z="25" S="278" T="699" R="169" G="178" B="50" A="255"/>
<Vtx X="-43" Y="146" Z="-25" S="572" T="699" R="169" G="178" B="206" A="255"/>
<Vtx X="-43" Y="160" Z="25" S="278" T="778" R="169" G="78" B="50" A="255"/>
<Vtx X="-43" Y="160" Z="-25" S="572" T="778" R="169" G="78" B="206" A="255"/>
<Vtx X="-29" Y="160" Z="17" S="325" T="858" R="60" G="107" B="222" A="255"/>
<Vtx X="-29" Y="160" Z="-17" S="526" T="858" R="60" G="107" B="34" A="255"/>
<Vtx X="-29" Y="134" Z="17" S="325" T="1008" R="87" G="78" B="206" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="526" T="1008" R="87" G="78" B="50" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="10" T="1008" R="159" G="61" B="56" A="255"/>
<Vtx X="0" Y="133" Z="41" S="252" T="1008" R="0" G="61" B="112" A="255"/>
<Vtx X="0" Y="146" Z="41" S="252" T="927" R="0" G="149" B="69" A="255"/>
<Vtx X="-35" Y="146" Z="20" S="10" T="927" R="196" G="149" B="34" A="255"/>
<Vtx X="-35" Y="146" Z="20" S="10" T="927" R="196" G="149" B="34" A="255"/>
<Vtx X="0" Y="146" Z="41" S="252" T="927" R="0" G="149" B="69" A="255"/>
<Vtx X="0" Y="146" Z="49" S="278" T="882" R="0" G="178" B="101" A="255"/>
<Vtx X="-43" Y="146" Z="25" S="-16" T="882" R="169" G="178" B="50" A="255"/>
<Vtx X="0" Y="160" Z="49" S="278" T="803" R="0" G="78" B="101" A="255"/>
<Vtx X="-43" Y="160" Z="25" S="-16" T="803" R="169" G="78" B="50" A="255"/>
<Vtx X="0" Y="160" Z="34" S="232" T="723" R="0" G="107" B="187" A="255"/>
<Vtx X="-29" Y="160" Z="17" S="30" T="723" R="60" G="107" B="222" A="255"/>
<Vtx X="0" Y="134" Z="34" S="232" T="573" R="0" G="78" B="155" A="255"/>
<Vtx X="-29" Y="134" Z="17" S="30" T="573" R="87" G="78" B="206" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="573" T="740" R="0" G="61" B="144" A="255"/>
<Vtx X="-35" Y="133" Z="-20" S="573" T="982" R="159" G="61" B="200" A="255"/>
<Vtx X="-35" Y="146" Z="-20" S="654" T="982" R="196" G="149" B="222" A="255"/>
<Vtx X="0" Y="146" Z="-41" S="654" T="740" R="0" G="149" B="187" A="255"/>
<Vtx X="-43" Y="146" Z="-25" S="699" T="1008" R="169" G="178" B="206" A="255"/>
<Vtx X="0" Y="146" Z="-49" S="699" T="714" R="0" G="178" B="155" A="255"/>
<Vtx X="0" Y="146" Z="-49" S="699" T="714" R="0" G="178" B="155" A="255"/>
<Vtx X="-43" Y="146" Z="-25" S="699" T="1008" R="169" G="178" B="206" A="255"/>
<Vtx X="-43" Y="160" Z="-25" S="778" T="1008" R="169" G="78" B="206" A="255"/>
<Vtx X="0" Y="160" Z="-49" S="778" T="714" R="0" G="78" B="155" A="255"/>
<Vtx X="-29" Y="160" Z="-17" S="858" T="962" R="60" G="107" B="34" A="255"/>
<Vtx X="0" Y="160" Z="-34" S="858" T="760" R="0" G="107" B="69" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="1008" T="962" R="87" G="78" B="50" A="255"/>
<Vtx X="0" Y="134" Z="-34" S="1008" T="760" R="0" G="78" B="101" A="255"/>
<Vtx X="35" Y="133" Z="20" S="687" T="137" R="97" G="61" B="56" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="446" T="137" R="97" G="61" B="200" A="255"/>
<Vtx X="35" Y="146" Z="-20" S="446" T="218" R="60" G="149" B="222" A="255"/>
<Vtx X="35" Y="146" Z="20" S="687" T="218" R="60" G="149" B="34" A="255"/>
<Vtx X="43" Y="146" Z="-25" S="420" T="263" R="87" G="178" B="206" A="255"/>
<Vtx X="43" Y="146" Z="25" S="714" T="263" R="87" G="178" B="50" A="255"/>
<Vtx X="43" Y="160" Z="-25" S="420" T="342" R="87" G="78" B="206" A="255"/>
<Vtx X="43" Y="160" Z="25" S="714" T="342" R="87" G="78" B="50" A="255"/>
<Vtx X="29" Y="160" Z="-17" S="466" T="422" R="196" G="107" B="34" A="255"/>
<Vtx X="43" Y="160" Z="25" S="714" T="342" R="87" G="78" B="50" A="255"/>
<Vtx X="43" Y="160" Z="-25" S="420" T="342" R="87" G="78" B="206" A="255"/>
<Vtx X="29" Y="160" Z="17" S="667" T="422" R="196" G="107" B="222" A="255"/>
<Vtx X="29" Y="134" Z="-17" S="466" T="572" R="169" G="78" B="50" A="255"/>
<Vtx X="29" Y="134" Z="17" S="667" T="572" R="169" G="78" B="206" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="-16" T="305" R="97" G="61" B="200" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="-16" T="546" R="0" G="61" B="144" A="255"/>
<Vtx X="0" Y="146" Z="-41" S="65" T="546" R="0" G="149" B="187" A="255"/>
<Vtx X="35" Y="146" Z="-20" S="65" T="305" R="60" G="149" B="222" A="255"/>
<Vtx X="0" Y="146" Z="-49" S="110" T="572" R="0" G="178" B="155" A="255"/>
<Vtx X="43" Y="146" Z="-25" S="110" T="278" R="87" G="178" B="206" A="255"/>
<Vtx X="0" Y="160" Z="-49" S="189" T="572" R="0" G="78" B="155" A="255"/>
<Vtx X="43" Y="160" Z="-25" S="189" T="278" R="87" G="78" B="206" A="255"/>
<Vtx X="0" Y="160" Z="-34" S="269" T="526" R="0" G="107" B="69" A="255"/>
<Vtx X="29" Y="160" Z="-17" S="269" T="325" R="196" G="107" B="34" A="255"/>
<Vtx X="29" Y="160" Z="-17" S="269" T="325" R="196" G="107" B="34" A="255"/>
<Vtx X="0" Y="160" Z="-34" S="269" T="526" R="0" G="107" B="69" A="255"/>
<Vtx X="0" Y="134" Z="-34" S="419" T="526" R="0" G="78" B="101" A="255"/>
<Vtx X="29" Y="134" Z="-17" S="419" T="325" R="169" G="78" B="50" A="255"/>
<Vtx X="0" Y="133" Z="41" S="419" T="252" R="0" G="61" B="112" A="255"/>
<Vtx X="35" Y="133" Z="20" S="419" T="10" R="97" G="61" B="56" A="255"/>
<Vtx X="35" Y="146" Z="20" S="338" T="10" R="60" G="149" B="34" A="255"/>
<Vtx X="0" Y="146" Z="41" S="338" T="252" R="0" G="149" B="69" A="255"/>
<Vtx X="43" Y="146" Z="25" S="293" T="-16" R="87" G="178" B="50" A="255"/>
<Vtx X="0" Y="146" Z="49" S="293" T="278" R="0" G="178" B="101" A="255"/>
<Vtx X="43" Y="160" Z="25" S="214" T="-16" R="87" G="78" B="50" A="255"/>
<Vtx X="0" Y="160" Z="49" S="214" T="278" R="0" G="78" B="101" A="255"/>
<Vtx X="29" Y="160" Z="17" S="134" T="30" R="196" G="107" B="222" A="255"/>
<Vtx X="0" Y="160" Z="34" S="134" T="232" R="0" G="107" B="187" A="255"/>
<Vtx X="29" Y="134" Z="17" S="-16" T="30" R="169" G="78" B="206" A="255"/>
<Vtx X="0" Y="134" Z="34" S="-16" T="232" R="0" G="78" B="155" A="255"/>
</Vertex>
@@ -0,0 +1,40 @@
<Vertex Version="0">
<Vtx X="0" Y="43" Z="-82" S="1008" T="1008" R="0" G="220" B="134" A="255"/>
<Vtx X="71" Y="97" Z="-41" S="-16" T="368" R="102" G="47" B="197" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="-16" T="1008" R="106" G="220" B="195" A="255"/>
<Vtx X="0" Y="97" Z="-82" S="1008" T="368" R="0" G="47" B="138" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="-16" T="-16" R="97" G="61" B="200" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="1008" T="-16" R="0" G="61" B="144" A="255"/>
<Vtx X="0" Y="133" Z="41" S="1008" T="-16" R="0" G="61" B="112" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="-16" T="-16" R="159" G="61" B="56" A="255"/>
<Vtx X="-71" Y="97" Z="41" S="-16" T="368" R="154" G="47" B="59" A="255"/>
<Vtx X="0" Y="97" Z="82" S="1008" T="368" R="0" G="47" B="118" A="255"/>
<Vtx X="0" Y="43" Z="82" S="1008" T="1008" R="0" G="220" B="122" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="-16" T="1008" R="150" G="220" B="61" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="1008" T="1008" R="106" G="220" B="195" A="255"/>
<Vtx X="71" Y="97" Z="41" S="-16" T="368" R="102" G="47" B="59" A="255"/>
<Vtx X="71" Y="43" Z="41" S="-16" T="1008" R="106" G="220" B="61" A="255"/>
<Vtx X="71" Y="97" Z="-41" S="1008" T="368" R="102" G="47" B="197" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="1008" T="-16" R="97" G="61" B="200" A="255"/>
<Vtx X="71" Y="97" Z="41" S="-16" T="368" R="102" G="47" B="59" A="255"/>
<Vtx X="71" Y="97" Z="-41" S="1008" T="368" R="102" G="47" B="197" A="255"/>
<Vtx X="35" Y="133" Z="20" S="-16" T="-16" R="97" G="61" B="56" A="255"/>
<Vtx X="35" Y="133" Z="20" S="1008" T="-16" R="97" G="61" B="56" A="255"/>
<Vtx X="0" Y="133" Z="41" S="-16" T="-16" R="0" G="61" B="112" A="255"/>
<Vtx X="0" Y="97" Z="82" S="-16" T="368" R="0" G="47" B="118" A="255"/>
<Vtx X="71" Y="97" Z="41" S="1008" T="368" R="102" G="47" B="59" A="255"/>
<Vtx X="71" Y="43" Z="41" S="1008" T="1008" R="106" G="220" B="61" A="255"/>
<Vtx X="0" Y="43" Z="82" S="-16" T="1008" R="0" G="220" B="122" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="1008" T="-16" R="159" G="61" B="56" A="255"/>
<Vtx X="-35" Y="133" Z="-20" S="-16" T="-16" R="159" G="61" B="200" A="255"/>
<Vtx X="-71" Y="97" Z="-41" S="-16" T="368" R="154" G="47" B="197" A="255"/>
<Vtx X="-71" Y="97" Z="41" S="1008" T="368" R="154" G="47" B="59" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="1008" T="1008" R="150" G="220" B="61" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="-16" T="1008" R="150" G="220" B="195" A="255"/>
<Vtx X="-71" Y="97" Z="-41" S="1008" T="368" R="154" G="47" B="197" A="255"/>
<Vtx X="-35" Y="133" Z="-20" S="1008" T="-16" R="159" G="61" B="200" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="-16" T="-16" R="0" G="61" B="144" A="255"/>
<Vtx X="0" Y="97" Z="-82" S="-16" T="368" R="0" G="47" B="138" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="1008" T="1008" R="150" G="220" B="195" A="255"/>
<Vtx X="0" Y="43" Z="-82" S="-16" T="1008" R="0" G="220" B="134" A="255"/>
</Vertex>
@@ -0,0 +1,26 @@
<Vertex Version="0">
<Vtx X="0" Y="0" Z="-51" S="240" T="240" R="0" G="150" B="185" A="255"/>
<Vtx X="0" Y="43" Z="-82" S="240" T="-16" R="0" G="220" B="134" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="-16" T="-16" R="106" G="220" B="195" A="255"/>
<Vtx X="44" Y="0" Z="-25" S="-16" T="240" R="61" G="150" B="221" A="255"/>
<Vtx X="44" Y="0" Z="-25" S="240" T="240" R="61" G="150" B="221" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="240" T="-16" R="106" G="220" B="195" A="255"/>
<Vtx X="71" Y="43" Z="41" S="-16" T="-16" R="106" G="220" B="61" A="255"/>
<Vtx X="44" Y="0" Z="25" S="-16" T="240" R="61" G="150" B="35" A="255"/>
<Vtx X="44" Y="0" Z="25" S="240" T="240" R="61" G="150" B="35" A="255"/>
<Vtx X="71" Y="43" Z="41" S="240" T="-16" R="106" G="220" B="61" A="255"/>
<Vtx X="0" Y="43" Z="82" S="-16" T="-16" R="0" G="220" B="122" A="255"/>
<Vtx X="0" Y="0" Z="51" S="-16" T="240" R="0" G="150" B="71" A="255"/>
<Vtx X="0" Y="0" Z="51" S="240" T="240" R="0" G="150" B="71" A="255"/>
<Vtx X="0" Y="43" Z="82" S="240" T="-16" R="0" G="220" B="122" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="-16" T="-16" R="150" G="220" B="61" A="255"/>
<Vtx X="-44" Y="0" Z="25" S="-16" T="240" R="195" G="150" B="35" A="255"/>
<Vtx X="-44" Y="0" Z="25" S="240" T="240" R="195" G="150" B="35" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="240" T="-16" R="150" G="220" B="61" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="-16" T="-16" R="150" G="220" B="195" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="-16" T="240" R="195" G="150" B="221" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="240" T="240" R="195" G="150" B="221" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="240" T="-16" R="150" G="220" B="195" A="255"/>
<Vtx X="0" Y="43" Z="-82" S="-16" T="-16" R="0" G="220" B="134" A="255"/>
<Vtx X="0" Y="0" Z="-51" S="-16" T="240" R="0" G="150" B="185" A="255"/>
</Vertex>
@@ -0,0 +1,10 @@
<Vertex Version="0">
<Vtx X="0" Y="0" Z="-51" S="357" T="900" R="0" G="150" B="185" A="255"/>
<Vtx X="44" Y="0" Z="-25" S="357" T="685" R="61" G="150" B="221" A="255"/>
<Vtx X="44" Y="0" Z="25" S="171" T="577" R="61" G="150" B="35" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="171" T="1008" R="195" G="150" B="221" A="255"/>
<Vtx X="0" Y="0" Z="51" S="-16" T="685" R="0" G="150" B="71" A="255"/>
<Vtx X="-44" Y="0" Z="25" S="-16" T="900" R="195" G="150" B="35" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="171" T="1008" R="195" G="150" B="221" A="255"/>
<Vtx X="44" Y="0" Z="25" S="171" T="577" R="61" G="150" B="35" A="255"/>
</Vertex>
@@ -0,0 +1,10 @@
<Vertex Version="0">
<Vtx X="29" Y="134" Z="-17" S="428" T="240" R="169" G="78" B="50" A="255"/>
<Vtx X="0" Y="134" Z="-34" S="428" T="752" R="0" G="78" B="101" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="871" T="1008" R="87" G="78" B="50" A="255"/>
<Vtx X="29" Y="134" Z="17" S="871" T="-16" R="169" G="78" B="206" A="255"/>
<Vtx X="-29" Y="134" Z="17" S="-16" T="240" R="87" G="78" B="206" A="255"/>
<Vtx X="0" Y="134" Z="34" S="-16" T="752" R="0" G="78" B="155" A="255"/>
<Vtx X="29" Y="134" Z="17" S="427" T="1008" R="169" G="78" B="206" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="427" T="-16" R="87" G="78" B="50" A="255"/>
</Vertex>
@@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/gameplay_dangeon_keep/PotBaseNoise_8" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="63" Dxt="1024"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="2" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="28" Lrt="28"/>
<SetPrimColor M="0" L="0" R="255" G="255" B="255" A="255"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,12 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetPrimColor M="0" L="0" R="69" G="38" B="33" A="255"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,21 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/gameplay_dangeon_keep/PotFace_32" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="5" ShiftS="0" MaskT="5" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="124" Lrt="124"/>
<SetPrimColor M="0" L="0" R="255" G="255" B="255" A="255"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,12 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetPrimColor M="0" L="0" R="218" G="179" B="131" A="255"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,12 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_PRIMITIVE" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<SetPrimColor M="0" L="0" R="0" G="0" B="0" A="255"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,14 @@
<DisplayList Version="0">
<ClearGeometryMode G_LIGHTING="1" />
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_cull" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<SetGeometryMode G_LIGHTING="1" />
<CullDisplayList Start="0" End="7"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushBossKeyDL_f3dlite_shrubbery"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_tri_0"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushBossKeyDL_f3dlite_leaf"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_tri_1"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushBossKeyDL_f3dlite_flower_bosskey"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_tri_2"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,8 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="14"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="0" V01="5" V02="6" Flag0="0" V10="7" V11="8" V12="9" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="11" Flag0="0" V10="7" V11="12" V12="13" Flag1="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,134 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="1" Flag0="0" V10="5" V11="4" V12="3" Flag1="0"/>
<Triangles2 V00="3" V01="6" V02="5" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="5" V11="8" V12="4" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="10" V12="9" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="10" Flag0="0" V10="14" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="12" V01="15" V02="14" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="14" V11="16" V12="13" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="18" V12="17" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="18" Flag0="0" V10="22" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="20" V01="23" V02="22" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="22" V11="24" V12="21" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="26" V12="25" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="26" Flag0="0" V10="30" V11="29" V12="28" Flag1="0"/>
<Triangles2 V00="28" V01="31" V02="30" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="20" V02="17" Flag0="0" V10="17" V11="20" V12="16" Flag1="0"/>
<Triangles2 V00="21" V01="22" V02="23" Flag0="0" V10="24" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="26" V11="25" V12="24" Flag1="0"/>
<Triangles2 V00="24" V01="27" V02="26" Flag0="0" V10="19" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="19" V01="28" V02="26" Flag0="0" V10="26" V11="28" V12="25" Flag1="0"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="64" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="3" V02="0" Flag0="0" V10="0" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="4" V02="5" Flag0="0" V10="6" V11="7" V12="4" Flag1="0"/>
<Triangles2 V00="4" V01="7" V02="3" Flag0="0" V10="8" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="9" V02="8" Flag0="0" V10="11" V11="12" V12="9" Flag1="0"/>
<Triangles2 V00="13" V01="12" V02="11" Flag0="0" V10="11" V11="14" V12="13" Flag1="0"/>
<Triangles2 V00="6" V01="13" V02="14" Flag0="0" V10="6" V11="15" V12="13" Flag1="0"/>
<Triangles2 V00="13" V01="15" V02="12" Flag0="0" V10="16" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="17" V02="16" Flag0="0" V10="19" V11="20" V12="17" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="19" Flag0="0" V10="19" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="6" V01="21" V02="22" Flag0="0" V10="6" V11="23" V12="21" Flag1="0"/>
<Triangles2 V00="21" V01="23" V02="20" Flag0="0" V10="24" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="25" V02="24" Flag0="0" V10="27" V11="28" V12="25" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="27" Flag0="0" V10="27" V11="30" V12="29" Flag1="0"/>
<Triangle1 V00="31" V01="29" V02="30"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="96" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="0" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="0" V01="19" V02="17" Flag0="0" V10="17" V11="19" V12="16" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="23" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="23" V01="24" V02="21" Flag0="0" V10="25" V11="24" V12="23" Flag1="0"/>
<Triangles2 V00="23" V01="26" V02="25" Flag0="0" V10="0" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="0" V01="27" V02="25" Flag0="0" V10="25" V11="27" V12="24" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="31" V11="29" V12="28" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="128" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="0" V01="4" V02="3" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="6" V02="3" Flag0="0" V10="3" V11="6" V12="1" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="9" Flag0="0" V10="10" V11="7" V12="9" Flag1="0"/>
<Triangles2 V00="10" V01="9" V02="11" Flag0="0" V10="12" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="12" Flag0="0" V10="10" V11="12" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="19" V11="16" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="21" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="22" Flag0="0" V10="14" V11="21" V12="22" Flag1="0"/>
<Triangles2 V00="14" V01="23" V02="21" Flag0="0" V10="19" V11="21" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="27" V11="24" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="29" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="14" V11="29" V12="30" Flag1="0"/>
<Triangles2 V00="14" V01="31" V02="29" Flag0="0" V10="27" V11="29" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="160" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="24" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="20" V11="22" V12="25" Flag1="0"/>
<Triangles2 V00="26" V01="27" V02="28" Flag0="0" V10="29" V11="26" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="31" V11="29" V12="30" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="192" Count="30"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="0" Flag0="0" V10="5" V11="0" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="7" V02="8" Flag0="0" V10="9" V11="6" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="11" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="10" V02="12" Flag0="0" V10="3" V11="11" V12="12" Flag1="0"/>
<Triangles2 V00="3" V01="13" V02="11" Flag0="0" V10="9" V11="11" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="16" Flag0="0" V10="17" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="16" V02="18" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="3" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="3" V01="21" V02="19" Flag0="0" V10="17" V11="19" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="23" V02="24" Flag0="0" V10="25" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="24" V02="26" Flag0="0" V10="27" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="3" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="3" V01="29" V02="27" Flag0="0" V10="25" V11="27" V12="29" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="222" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="20" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="25" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="27" V02="29" Flag0="0" V10="30" V11="28" V12="29" Flag1="0"/>
<Triangles2 V00="30" V01="29" V02="31" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_1" VertexBufferIndex="0" VertexOffset="254" Count="12"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="2" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="4" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="6" V02="8" Flag0="0" V10="9" V11="7" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="7" V11="9" V12="11" Flag1="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,134 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="1" Flag0="0" V10="5" V11="4" V12="3" Flag1="0"/>
<Triangles2 V00="3" V01="6" V02="5" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="5" V11="8" V12="4" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="10" V12="9" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="10" Flag0="0" V10="14" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="12" V01="15" V02="14" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="14" V11="16" V12="13" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="18" V12="17" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="18" Flag0="0" V10="22" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="20" V01="23" V02="22" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="22" V11="24" V12="21" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="26" V12="25" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="26" Flag0="0" V10="30" V11="29" V12="28" Flag1="0"/>
<Triangles2 V00="28" V01="31" V02="30" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="20" V02="17" Flag0="0" V10="17" V11="20" V12="16" Flag1="0"/>
<Triangles2 V00="21" V01="22" V02="23" Flag0="0" V10="24" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="26" V11="25" V12="24" Flag1="0"/>
<Triangles2 V00="24" V01="27" V02="26" Flag0="0" V10="19" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="19" V01="28" V02="26" Flag0="0" V10="26" V11="28" V12="25" Flag1="0"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="64" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="3" V02="0" Flag0="0" V10="0" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="4" V02="5" Flag0="0" V10="6" V11="7" V12="4" Flag1="0"/>
<Triangles2 V00="4" V01="7" V02="3" Flag0="0" V10="8" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="9" V02="8" Flag0="0" V10="11" V11="12" V12="9" Flag1="0"/>
<Triangles2 V00="13" V01="12" V02="11" Flag0="0" V10="11" V11="14" V12="13" Flag1="0"/>
<Triangles2 V00="6" V01="13" V02="14" Flag0="0" V10="6" V11="15" V12="13" Flag1="0"/>
<Triangles2 V00="13" V01="15" V02="12" Flag0="0" V10="16" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="17" V02="16" Flag0="0" V10="19" V11="20" V12="17" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="19" Flag0="0" V10="19" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="6" V01="21" V02="22" Flag0="0" V10="6" V11="23" V12="21" Flag1="0"/>
<Triangles2 V00="21" V01="23" V02="20" Flag0="0" V10="24" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="25" V02="24" Flag0="0" V10="27" V11="28" V12="25" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="27" Flag0="0" V10="27" V11="30" V12="29" Flag1="0"/>
<Triangle1 V00="31" V01="29" V02="30"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="96" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="0" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="0" V01="19" V02="17" Flag0="0" V10="17" V11="19" V12="16" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="23" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="23" V01="24" V02="21" Flag0="0" V10="25" V11="24" V12="23" Flag1="0"/>
<Triangles2 V00="23" V01="26" V02="25" Flag0="0" V10="0" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="0" V01="27" V02="25" Flag0="0" V10="25" V11="27" V12="24" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="31" V11="29" V12="28" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="128" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="0" V01="4" V02="3" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="6" V02="3" Flag0="0" V10="3" V11="6" V12="1" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="9" Flag0="0" V10="10" V11="7" V12="9" Flag1="0"/>
<Triangles2 V00="10" V01="9" V02="11" Flag0="0" V10="12" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="12" Flag0="0" V10="10" V11="12" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="19" V11="16" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="21" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="22" Flag0="0" V10="14" V11="21" V12="22" Flag1="0"/>
<Triangles2 V00="14" V01="23" V02="21" Flag0="0" V10="19" V11="21" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="27" V11="24" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="29" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="14" V11="29" V12="30" Flag1="0"/>
<Triangles2 V00="14" V01="31" V02="29" Flag0="0" V10="27" V11="29" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="160" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="24" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="20" V11="22" V12="25" Flag1="0"/>
<Triangles2 V00="26" V01="27" V02="28" Flag0="0" V10="29" V11="26" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="31" V11="29" V12="30" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="192" Count="30"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="0" Flag0="0" V10="5" V11="0" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="7" V02="8" Flag0="0" V10="9" V11="6" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="11" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="10" V02="12" Flag0="0" V10="3" V11="11" V12="12" Flag1="0"/>
<Triangles2 V00="3" V01="13" V02="11" Flag0="0" V10="9" V11="11" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="16" Flag0="0" V10="17" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="16" V02="18" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="3" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="3" V01="21" V02="19" Flag0="0" V10="17" V11="19" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="23" V02="24" Flag0="0" V10="25" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="24" V02="26" Flag0="0" V10="27" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="3" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="3" V01="29" V02="27" Flag0="0" V10="25" V11="27" V12="29" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="222" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="20" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="25" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="27" V02="29" Flag0="0" V10="30" V11="28" V12="29" Flag1="0"/>
<Triangles2 V00="30" V01="29" V02="31" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushBossKeyDL_vtx_2" VertexBufferIndex="0" VertexOffset="254" Count="12"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="2" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="4" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="6" V02="8" Flag0="0" V10="9" V11="7" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="7" V11="9" V12="11" Flag1="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,16 @@
<Vertex Version="0">
<Vtx X="0" Y="98" Z="0" S="558" T="-664" R="0" G="0" B="129" A="255"/>
<Vtx X="54" Y="0" Z="93" S="-281" T="1008" R="110" G="0" B="192" A="255"/>
<Vtx X="-54" Y="0" Z="-93" S="1398" T="1008" R="110" G="0" B="192" A="255"/>
<Vtx X="-107" Y="0" Z="0" S="-281" T="1008" R="0" G="0" B="127" A="255"/>
<Vtx X="107" Y="0" Z="0" S="1398" T="1008" R="0" G="0" B="127" A="255"/>
<Vtx X="54" Y="0" Z="-93" S="-281" T="1008" R="146" G="0" B="192" A="255"/>
<Vtx X="-54" Y="0" Z="93" S="1398" T="1008" R="146" G="0" B="192" A="255"/>
<Vtx X="0" Y="98" Z="0" S="558" T="-664" R="0" G="0" B="127" A="255"/>
<Vtx X="-54" Y="0" Z="-93" S="1398" T="1008" R="146" G="0" B="64" A="255"/>
<Vtx X="54" Y="0" Z="93" S="-281" T="1008" R="146" G="0" B="64" A="255"/>
<Vtx X="107" Y="0" Z="0" S="1398" T="1008" R="0" G="0" B="129" A="255"/>
<Vtx X="-107" Y="0" Z="0" S="-281" T="1008" R="0" G="0" B="129" A="255"/>
<Vtx X="-54" Y="0" Z="93" S="1398" T="1008" R="110" G="0" B="64" A="255"/>
<Vtx X="54" Y="0" Z="-93" S="-281" T="1008" R="110" G="0" B="64" A="255"/>
</Vertex>
@@ -0,0 +1,268 @@
<Vertex Version="0">
<Vtx X="-25" Y="44" Z="36" S="304" T="432" R="77" G="174" B="197" A="255"/>
<Vtx X="-22" Y="48" Z="36" S="432" T="304" R="77" G="174" B="197" A="255"/>
<Vtx X="-20" Y="43" Z="38" S="496" T="496" R="35" G="211" B="143" A="255"/>
<Vtx X="-28" Y="43" Z="29" S="112" T="304" R="90" G="179" B="211" A="255"/>
<Vtx X="-21" Y="50" Z="29" S="304" T="112" R="73" G="161" B="213" A="255"/>
<Vtx X="-27" Y="49" Z="25" S="112" T="112" R="87" G="167" B="230" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="-16" T="176" R="77" G="160" B="224" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="81" G="171" B="209" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="176" T="-16" R="93" G="177" B="221" A="255"/>
<Vtx X="-24" Y="63" Z="4" S="304" T="432" R="78" G="163" B="220" A="255"/>
<Vtx X="-28" Y="61" Z="2" S="432" T="304" R="78" G="163" B="220" A="255"/>
<Vtx X="-23" Y="62" Z="-1" S="496" T="496" R="45" G="142" B="31" A="255"/>
<Vtx X="-22" Y="59" Z="10" S="112" T="304" R="72" G="167" B="201" A="255"/>
<Vtx X="-30" Y="55" Z="5" S="304" T="112" R="90" G="178" B="213" A="255"/>
<Vtx X="-28" Y="55" Z="13" S="112" T="112" R="84" G="186" B="191" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="-16" T="176" R="90" G="184" B="203" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="176" T="-16" R="76" G="176" B="194" A="255"/>
<Vtx X="-42" Y="37" Z="22" S="304" T="432" R="89" G="181" B="205" A="255"/>
<Vtx X="-39" Y="37" Z="27" S="432" T="304" R="89" G="181" B="205" A="255"/>
<Vtx X="-40" Y="32" Z="25" S="496" T="496" R="110" G="255" B="193" A="255"/>
<Vtx X="-38" Y="40" Z="17" S="112" T="304" R="85" G="169" B="221" A="255"/>
<Vtx X="-33" Y="40" Z="26" S="304" T="112" R="73" G="169" B="199" A="255"/>
<Vtx X="-33" Y="46" Z="21" S="112" T="112" R="67" G="156" B="216" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="-16" T="176" R="66" G="161" B="204" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="176" T="-16" R="77" G="160" B="224" A="255"/>
<Vtx X="-14" Y="61" Z="25" S="304" T="432" R="70" G="163" B="206" A="255"/>
<Vtx X="-15" Y="63" Z="20" S="432" T="304" R="70" G="163" B="206" A="255"/>
<Vtx X="-9" Y="62" Z="22" S="496" T="496" R="252" G="142" B="201" A="255"/>
<Vtx X="-18" Y="55" Z="25" S="112" T="304" R="82" G="178" B="199" A="255"/>
<Vtx X="-19" Y="59" Z="16" S="304" T="112" R="84" G="167" B="221" A="255"/>
<Vtx X="-24" Y="55" Z="20" S="112" T="112" R="98" G="186" B="214" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="-16" T="176" R="93" G="177" B="221" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="81" G="171" B="209" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="176" T="-16" R="90" G="184" B="203" A="255"/>
<Vtx X="-24" Y="55" Z="20" S="112" T="112" R="98" G="186" B="214" A="255"/>
<Vtx X="-19" Y="59" Z="16" S="304" T="112" R="84" G="167" B="221" A="255"/>
<Vtx X="-41" Y="48" Z="3" S="304" T="432" R="90" G="174" B="219" A="255"/>
<Vtx X="-43" Y="44" Z="6" S="432" T="304" R="90" G="174" B="219" A="255"/>
<Vtx X="-42" Y="43" Z="0" S="496" T="496" R="116" G="211" B="26" A="255"/>
<Vtx X="-34" Y="50" Z="6" S="112" T="304" R="74" G="162" B="214" A="255"/>
<Vtx X="-38" Y="43" Z="11" S="304" T="112" R="84" G="179" B="200" A="255"/>
<Vtx X="-34" Y="49" Z="14" S="112" T="112" R="65" G="167" B="192" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="-16" T="176" R="76" G="176" B="194" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="176" T="-16" R="66" G="161" B="204" A="255"/>
<Vtx X="-18" Y="44" Z="-40" S="304" T="432" R="13" G="174" B="96" A="255"/>
<Vtx X="-20" Y="48" Z="-37" S="432" T="304" R="13" G="174" B="96" A="255"/>
<Vtx X="-23" Y="43" Z="-37" S="496" T="496" R="81" G="211" B="87" A="255"/>
<Vtx X="-11" Y="43" Z="-39" S="112" T="304" R="250" G="179" B="101" A="255"/>
<Vtx X="-14" Y="50" Z="-33" S="304" T="112" R="1" G="161" B="85" A="255"/>
<Vtx X="-8" Y="49" Z="-36" S="112" T="112" R="235" G="167" B="88" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="-16" T="176" R="245" G="160" B="82" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="176" T="-16" R="239" G="177" B="98" A="255"/>
<Vtx X="8" Y="63" Z="-23" S="304" T="432" R="248" G="163" B="86" A="255"/>
<Vtx X="12" Y="61" Z="-25" S="432" T="304" R="248" G="163" B="86" A="255"/>
<Vtx X="12" Y="62" Z="-19" S="496" T="496" R="206" G="142" B="24" A="255"/>
<Vtx X="2" Y="59" Z="-24" S="112" T="304" R="11" G="167" B="90" A="255"/>
<Vtx X="10" Y="55" Z="-28" S="304" T="112" R="248" G="178" B="100" A="255"/>
<Vtx X="3" Y="55" Z="-31" S="112" T="112" R="14" G="187" B="105" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="-16" T="176" R="1" G="184" B="104" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="176" T="-16" R="16" G="176" B="97" A="255"/>
<Vtx X="2" Y="37" Z="-47" S="304" T="432" R="0" G="181" B="102" A="255"/>
<Vtx X="-4" Y="37" Z="-47" S="432" T="304" R="0" G="181" B="102" A="255"/>
<Vtx X="-1" Y="32" Z="-47" S="496" T="496" R="0" G="255" B="127" A="255"/>
<Vtx X="4" Y="40" Z="-42" S="112" T="304" R="244" G="169" B="91" A="255"/>
<Vtx X="-4" Y="37" Z="-47" S="432" T="304" R="0" G="181" B="102" A="255"/>
<Vtx X="2" Y="37" Z="-47" S="304" T="432" R="0" G="181" B="102" A="255"/>
<Vtx X="-6" Y="40" Z="-42" S="304" T="112" R="12" G="169" B="92" A="255"/>
<Vtx X="-1" Y="46" Z="-39" S="112" T="112" R="1" G="156" B="78" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="-16" T="176" R="12" G="161" B="84" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="176" T="-16" R="245" G="160" B="82" A="255"/>
<Vtx X="-15" Y="61" Z="-25" S="304" T="432" R="8" G="163" B="86" A="255"/>
<Vtx X="-10" Y="63" Z="-23" S="432" T="304" R="8" G="163" B="86" A="255"/>
<Vtx X="-15" Y="62" Z="-19" S="496" T="496" R="50" G="142" B="24" A="255"/>
<Vtx X="-12" Y="55" Z="-28" S="112" T="304" R="8" G="178" B="100" A="255"/>
<Vtx X="-4" Y="59" Z="-24" S="304" T="112" R="245" G="167" B="90" A="255"/>
<Vtx X="-5" Y="55" Z="-31" S="112" T="112" R="243" G="186" B="105" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="-16" T="176" R="239" G="177" B="98" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="176" T="-16" R="1" G="184" B="104" A="255"/>
<Vtx X="18" Y="48" Z="-37" S="304" T="432" R="243" G="174" B="96" A="255"/>
<Vtx X="16" Y="44" Z="-40" S="432" T="304" R="243" G="174" B="96" A="255"/>
<Vtx X="21" Y="43" Z="-37" S="496" T="496" R="175" G="211" B="87" A="255"/>
<Vtx X="12" Y="50" Z="-33" S="112" T="304" R="255" G="162" B="85" A="255"/>
<Vtx X="9" Y="43" Z="-39" S="304" T="112" R="6" G="179" B="101" A="255"/>
<Vtx X="5" Y="49" Z="-36" S="112" T="112" R="23" G="167" B="88" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="-16" T="176" R="16" G="176" B="97" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="176" T="-16" R="12" G="161" B="84" A="255"/>
<Vtx X="44" Y="44" Z="4" S="304" T="432" R="166" G="174" B="219" A="255"/>
<Vtx X="42" Y="48" Z="1" S="432" T="304" R="166" G="174" B="219" A="255"/>
<Vtx X="43" Y="43" Z="-2" S="496" T="496" R="140" G="211" B="26" A="255"/>
<Vtx X="39" Y="43" Z="10" S="112" T="304" R="172" G="179" B="200" A="255"/>
<Vtx X="35" Y="50" Z="4" S="304" T="112" R="182" G="161" B="215" A="255"/>
<Vtx X="35" Y="49" Z="11" S="112" T="112" R="190" G="167" B="194" A="255"/>
<Vtx X="34" Y="46" Z="14" S="-16" T="176" R="190" G="160" B="205" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="31" Y="51" Z="10" S="176" T="-16" R="180" G="177" B="193" A="255"/>
<Vtx X="35" Y="49" Z="11" S="112" T="112" R="190" G="167" B="194" A="255"/>
<Vtx X="35" Y="50" Z="4" S="304" T="112" R="182" G="161" B="215" A="255"/>
<Vtx X="16" Y="63" Z="18" S="304" T="432" R="186" G="163" B="206" A="255"/>
<Vtx X="15" Y="61" Z="23" S="432" T="304" R="186" G="163" B="206" A="255"/>
<Vtx X="11" Y="62" Z="20" S="496" T="496" R="4" G="142" B="201" A="255"/>
<Vtx X="20" Y="59" Z="14" S="112" T="304" R="172" G="167" B="221" A="255"/>
<Vtx X="19" Y="55" Z="23" S="304" T="112" R="174" G="178" B="199" A="255"/>
<Vtx X="25" Y="55" Z="18" S="112" T="112" R="158" G="187" B="216" A="255"/>
<Vtx X="26" Y="54" Z="14" S="-16" T="176" R="165" G="184" B="205" A="255"/>
<Vtx X="25" Y="51" Z="20" S="176" T="-16" R="164" G="176" B="221" A="255"/>
<Vtx X="40" Y="37" Z="25" S="304" T="432" R="167" G="181" B="205" A="255"/>
<Vtx X="43" Y="37" Z="20" S="432" T="304" R="167" G="181" B="205" A="255"/>
<Vtx X="41" Y="32" Z="23" S="496" T="496" R="146" G="255" B="193" A="255"/>
<Vtx X="34" Y="40" Z="24" S="112" T="304" R="183" G="169" B="200" A="255"/>
<Vtx X="39" Y="40" Z="15" S="304" T="112" R="170" G="169" B="221" A="255"/>
<Vtx X="34" Y="46" Z="19" S="112" T="112" R="188" G="156" B="218" A="255"/>
<Vtx X="30" Y="46" Z="20" S="-16" T="176" R="177" G="161" B="225" A="255"/>
<Vtx X="34" Y="46" Z="14" S="176" T="-16" R="190" G="160" B="205" A="255"/>
<Vtx X="29" Y="61" Z="0" S="304" T="432" R="178" G="163" B="220" A="255"/>
<Vtx X="25" Y="63" Z="3" S="432" T="304" R="178" G="163" B="220" A="255"/>
<Vtx X="24" Y="62" Z="-3" S="496" T="496" R="211" G="142" B="31" A="255"/>
<Vtx X="31" Y="55" Z="3" S="112" T="304" R="166" G="178" B="214" A="255"/>
<Vtx X="23" Y="59" Z="8" S="304" T="112" R="184" G="167" B="201" A="255"/>
<Vtx X="29" Y="55" Z="11" S="112" T="112" R="171" G="186" B="192" A="255"/>
<Vtx X="31" Y="51" Z="10" S="-16" T="176" R="180" G="177" B="193" A="255"/>
<Vtx X="26" Y="54" Z="14" S="176" T="-16" R="165" G="184" B="205" A="255"/>
<Vtx X="23" Y="48" Z="34" S="304" T="432" R="179" G="174" B="197" A="255"/>
<Vtx X="27" Y="44" Z="34" S="432" T="304" R="179" G="174" B="197" A="255"/>
<Vtx X="21" Y="43" Z="36" S="496" T="496" R="221" G="211" B="143" A="255"/>
<Vtx X="22" Y="50" Z="27" S="112" T="304" R="183" G="162" B="213" A="255"/>
<Vtx X="22" Y="50" Z="27" S="112" T="304" R="183" G="162" B="213" A="255"/>
<Vtx X="29" Y="43" Z="27" S="304" T="112" R="166" G="179" B="211" A="255"/>
<Vtx X="27" Y="44" Z="34" S="432" T="304" R="179" G="174" B="197" A="255"/>
<Vtx X="29" Y="49" Z="22" S="112" T="112" R="168" G="167" B="232" A="255"/>
<Vtx X="25" Y="51" Z="20" S="-16" T="176" R="164" G="176" B="221" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="30" Y="46" Z="20" S="176" T="-16" R="177" G="161" B="225" A="255"/>
<Vtx X="-25" Y="44" Z="36" S="304" T="432" R="179" G="82" B="59" A="255"/>
<Vtx X="-20" Y="43" Z="38" S="496" T="496" R="221" G="45" B="113" A="255"/>
<Vtx X="-22" Y="48" Z="36" S="432" T="304" R="179" G="82" B="59" A="255"/>
<Vtx X="-28" Y="43" Z="29" S="112" T="304" R="166" G="77" B="45" A="255"/>
<Vtx X="-21" Y="50" Z="29" S="304" T="112" R="183" G="95" B="43" A="255"/>
<Vtx X="-27" Y="49" Z="25" S="112" T="112" R="169" G="89" B="26" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="176" T="-16" R="163" G="79" B="35" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="175" G="85" B="47" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="-16" T="176" R="179" G="96" B="32" A="255"/>
<Vtx X="-24" Y="63" Z="4" S="304" T="432" R="178" G="93" B="36" A="255"/>
<Vtx X="-23" Y="62" Z="-1" S="496" T="496" R="211" G="114" B="225" A="255"/>
<Vtx X="-28" Y="61" Z="2" S="432" T="304" R="178" G="93" B="36" A="255"/>
<Vtx X="-22" Y="59" Z="10" S="112" T="304" R="184" G="89" B="55" A="255"/>
<Vtx X="-30" Y="55" Z="5" S="304" T="112" R="166" G="78" B="43" A="255"/>
<Vtx X="-28" Y="55" Z="13" S="112" T="112" R="172" G="70" B="65" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="176" T="-16" R="180" G="80" B="62" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="-16" T="176" R="166" G="72" B="53" A="255"/>
<Vtx X="-42" Y="37" Z="22" S="304" T="432" R="167" G="75" B="51" A="255"/>
<Vtx X="-40" Y="32" Z="25" S="496" T="496" R="146" G="1" B="63" A="255"/>
<Vtx X="-39" Y="37" Z="27" S="432" T="304" R="167" G="75" B="51" A="255"/>
<Vtx X="-38" Y="40" Z="17" S="112" T="304" R="171" G="87" B="35" A="255"/>
<Vtx X="-33" Y="40" Z="26" S="304" T="112" R="183" G="87" B="57" A="255"/>
<Vtx X="-33" Y="46" Z="21" S="112" T="112" R="189" G="100" B="40" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="176" T="-16" R="179" G="96" B="32" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="-16" T="176" R="190" G="95" B="52" A="255"/>
<Vtx X="-14" Y="61" Z="25" S="304" T="432" R="186" G="93" B="50" A="255"/>
<Vtx X="-9" Y="62" Z="22" S="496" T="496" R="4" G="114" B="55" A="255"/>
<Vtx X="-15" Y="63" Z="20" S="432" T="304" R="186" G="93" B="50" A="255"/>
<Vtx X="-18" Y="55" Z="25" S="112" T="304" R="174" G="78" B="57" A="255"/>
<Vtx X="-19" Y="59" Z="16" S="304" T="112" R="172" G="89" B="35" A="255"/>
<Vtx X="-24" Y="55" Z="20" S="112" T="112" R="158" G="70" B="42" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="176" T="-16" R="166" G="72" B="53" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="175" G="85" B="47" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="-16" T="176" R="163" G="79" B="35" A="255"/>
<Vtx X="-41" Y="48" Z="3" S="304" T="432" R="166" G="82" B="37" A="255"/>
<Vtx X="-42" Y="43" Z="0" S="496" T="496" R="140" G="45" B="230" A="255"/>
<Vtx X="-43" Y="44" Z="6" S="432" T="304" R="166" G="82" B="37" A="255"/>
<Vtx X="-34" Y="50" Z="6" S="112" T="304" R="182" G="94" B="42" A="255"/>
<Vtx X="-38" Y="43" Z="11" S="304" T="112" R="172" G="77" B="56" A="255"/>
<Vtx X="-34" Y="49" Z="14" S="112" T="112" R="191" G="89" B="64" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="176" T="-16" R="190" G="95" B="52" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="-16" T="176" R="180" G="80" B="62" A="255"/>
<Vtx X="-18" Y="44" Z="-40" S="304" T="432" R="243" G="82" B="160" A="255"/>
<Vtx X="-23" Y="43" Z="-37" S="496" T="496" R="175" G="45" B="169" A="255"/>
<Vtx X="-20" Y="48" Z="-37" S="432" T="304" R="243" G="82" B="160" A="255"/>
<Vtx X="-11" Y="43" Z="-39" S="112" T="304" R="6" G="77" B="155" A="255"/>
<Vtx X="-14" Y="50" Z="-33" S="304" T="112" R="255" G="95" B="171" A="255"/>
<Vtx X="-8" Y="49" Z="-36" S="112" T="112" R="21" G="89" B="168" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="176" T="-16" R="17" G="79" B="158" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="-16" T="176" R="11" G="96" B="174" A="255"/>
<Vtx X="8" Y="63" Z="-23" S="304" T="432" R="8" G="93" B="170" A="255"/>
<Vtx X="12" Y="62" Z="-19" S="496" T="496" R="50" G="114" B="232" A="255"/>
<Vtx X="12" Y="61" Z="-25" S="432" T="304" R="8" G="93" B="170" A="255"/>
<Vtx X="2" Y="59" Z="-24" S="112" T="304" R="245" G="89" B="166" A="255"/>
<Vtx X="10" Y="55" Z="-28" S="304" T="112" R="8" G="78" B="156" A="255"/>
<Vtx X="3" Y="55" Z="-31" S="112" T="112" R="242" G="69" B="151" A="255"/>
<Vtx X="3" Y="55" Z="-31" S="112" T="112" R="242" G="69" B="151" A="255"/>
<Vtx X="10" Y="55" Z="-28" S="304" T="112" R="8" G="78" B="156" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="176" T="-16" R="240" G="80" B="159" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="-16" T="176" R="255" G="72" B="152" A="255"/>
<Vtx X="2" Y="59" Z="-24" S="112" T="304" R="245" G="89" B="166" A="255"/>
<Vtx X="2" Y="37" Z="-47" S="304" T="432" R="0" G="75" B="154" A="255"/>
<Vtx X="-1" Y="32" Z="-47" S="496" T="496" R="0" G="1" B="129" A="255"/>
<Vtx X="-4" Y="37" Z="-47" S="432" T="304" R="0" G="75" B="154" A="255"/>
<Vtx X="4" Y="40" Z="-42" S="112" T="304" R="12" G="87" B="165" A="255"/>
<Vtx X="-6" Y="40" Z="-42" S="304" T="112" R="244" G="87" B="164" A="255"/>
<Vtx X="-1" Y="46" Z="-39" S="112" T="112" R="255" G="100" B="178" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="176" T="-16" R="11" G="96" B="174" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="-16" T="176" R="244" G="95" B="172" A="255"/>
<Vtx X="-15" Y="61" Z="-25" S="304" T="432" R="248" G="93" B="170" A="255"/>
<Vtx X="-15" Y="62" Z="-19" S="496" T="496" R="206" G="114" B="232" A="255"/>
<Vtx X="-10" Y="63" Z="-23" S="432" T="304" R="248" G="93" B="170" A="255"/>
<Vtx X="-12" Y="55" Z="-28" S="112" T="304" R="248" G="78" B="156" A="255"/>
<Vtx X="-4" Y="59" Z="-24" S="304" T="112" R="11" G="89" B="166" A="255"/>
<Vtx X="-5" Y="55" Z="-31" S="112" T="112" R="13" G="70" B="151" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="176" T="-16" R="255" G="72" B="152" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="-16" T="176" R="17" G="79" B="158" A="255"/>
<Vtx X="18" Y="48" Z="-37" S="304" T="432" R="13" G="82" B="160" A="255"/>
<Vtx X="21" Y="43" Z="-37" S="496" T="496" R="81" G="45" B="169" A="255"/>
<Vtx X="16" Y="44" Z="-40" S="432" T="304" R="13" G="82" B="160" A="255"/>
<Vtx X="12" Y="50" Z="-33" S="112" T="304" R="1" G="94" B="171" A="255"/>
<Vtx X="9" Y="43" Z="-39" S="304" T="112" R="250" G="77" B="155" A="255"/>
<Vtx X="5" Y="49" Z="-36" S="112" T="112" R="233" G="89" B="168" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="176" T="-16" R="244" G="95" B="172" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="-16" T="176" R="240" G="80" B="159" A="255"/>
<Vtx X="44" Y="44" Z="4" S="304" T="432" R="90" G="82" B="37" A="255"/>
<Vtx X="43" Y="43" Z="-2" S="496" T="496" R="116" G="45" B="230" A="255"/>
<Vtx X="42" Y="48" Z="1" S="432" T="304" R="90" G="82" B="37" A="255"/>
<Vtx X="39" Y="43" Z="10" S="112" T="304" R="84" G="77" B="56" A="255"/>
<Vtx X="35" Y="50" Z="4" S="304" T="112" R="74" G="95" B="41" A="255"/>
<Vtx X="35" Y="49" Z="11" S="112" T="112" R="66" G="89" B="62" A="255"/>
<Vtx X="31" Y="51" Z="10" S="176" T="-16" R="76" G="79" B="63" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="34" Y="46" Z="14" S="-16" T="176" R="66" G="96" B="51" A="255"/>
<Vtx X="16" Y="63" Z="18" S="304" T="432" R="70" G="93" B="50" A="255"/>
<Vtx X="11" Y="62" Z="20" S="496" T="496" R="252" G="114" B="55" A="255"/>
<Vtx X="15" Y="61" Z="23" S="432" T="304" R="70" G="93" B="50" A="255"/>
<Vtx X="20" Y="59" Z="14" S="112" T="304" R="84" G="89" B="35" A="255"/>
<Vtx X="19" Y="55" Z="23" S="304" T="112" R="82" G="78" B="57" A="255"/>
<Vtx X="25" Y="55" Z="18" S="112" T="112" R="98" G="69" B="40" A="255"/>
<Vtx X="25" Y="51" Z="20" S="176" T="-16" R="92" G="80" B="35" A="255"/>
<Vtx X="26" Y="54" Z="14" S="-16" T="176" R="91" G="72" B="51" A="255"/>
<Vtx X="40" Y="37" Z="25" S="304" T="432" R="89" G="75" B="51" A="255"/>
<Vtx X="41" Y="32" Z="23" S="496" T="496" R="110" G="1" B="63" A="255"/>
<Vtx X="43" Y="37" Z="20" S="432" T="304" R="89" G="75" B="51" A="255"/>
<Vtx X="34" Y="40" Z="24" S="112" T="304" R="73" G="87" B="56" A="255"/>
<Vtx X="39" Y="40" Z="15" S="304" T="112" R="86" G="87" B="35" A="255"/>
<Vtx X="34" Y="46" Z="19" S="112" T="112" R="68" G="100" B="38" A="255"/>
<Vtx X="34" Y="46" Z="14" S="176" T="-16" R="66" G="96" B="51" A="255"/>
<Vtx X="30" Y="46" Z="20" S="-16" T="176" R="79" G="95" B="31" A="255"/>
<Vtx X="29" Y="61" Z="0" S="304" T="432" R="78" G="93" B="36" A="255"/>
<Vtx X="24" Y="62" Z="-3" S="496" T="496" R="45" G="114" B="225" A="255"/>
<Vtx X="25" Y="63" Z="3" S="432" T="304" R="78" G="93" B="36" A="255"/>
<Vtx X="31" Y="55" Z="3" S="112" T="304" R="90" G="78" B="42" A="255"/>
<Vtx X="23" Y="59" Z="8" S="304" T="112" R="72" G="89" B="55" A="255"/>
<Vtx X="29" Y="55" Z="11" S="112" T="112" R="85" G="70" B="64" A="255"/>
<Vtx X="26" Y="54" Z="14" S="176" T="-16" R="91" G="72" B="51" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="31" Y="51" Z="10" S="-16" T="176" R="76" G="79" B="63" A="255"/>
<Vtx X="29" Y="55" Z="11" S="112" T="112" R="85" G="70" B="64" A="255"/>
<Vtx X="31" Y="55" Z="3" S="112" T="304" R="90" G="78" B="42" A="255"/>
<Vtx X="23" Y="48" Z="34" S="304" T="432" R="77" G="82" B="59" A="255"/>
<Vtx X="21" Y="43" Z="36" S="496" T="496" R="35" G="45" B="113" A="255"/>
<Vtx X="27" Y="44" Z="34" S="432" T="304" R="77" G="82" B="59" A="255"/>
<Vtx X="22" Y="50" Z="27" S="112" T="304" R="73" G="94" B="43" A="255"/>
<Vtx X="29" Y="43" Z="27" S="304" T="112" R="90" G="77" B="45" A="255"/>
<Vtx X="29" Y="49" Z="22" S="112" T="112" R="88" G="89" B="24" A="255"/>
<Vtx X="30" Y="46" Z="20" S="176" T="-16" R="79" G="95" B="31" A="255"/>
<Vtx X="25" Y="51" Z="20" S="-16" T="176" R="92" G="80" B="35" A="255"/>
</Vertex>
@@ -0,0 +1,268 @@
<Vertex Version="0">
<Vtx X="-38" Y="39" Z="35" S="304" T="432" R="80" G="167" B="214" A="255"/>
<Vtx X="-33" Y="42" Z="38" S="432" T="304" R="80" G="167" B="214" A="255"/>
<Vtx X="-36" Y="33" Z="43" S="496" T="496" R="84" G="191" B="187" A="255"/>
<Vtx X="-37" Y="42" Z="25" S="112" T="304" R="67" G="153" B="223" A="255"/>
<Vtx X="-28" Y="47" Z="32" S="304" T="112" R="83" G="163" B="234" A="255"/>
<Vtx X="-30" Y="46" Z="23" S="112" T="112" R="74" G="157" B="229" A="255"/>
<Vtx X="-34" Y="47" Z="21" S="-16" T="176" R="48" G="142" B="228" A="255"/>
<Vtx X="-27" Y="48" Z="17" S="-16" T="-16" R="82" G="171" B="209" A="255"/>
<Vtx X="-28" Y="50" Z="24" S="176" T="-16" R="88" G="165" B="0" A="255"/>
<Vtx X="-17" Y="69" Z="15" S="304" T="432" R="85" G="175" B="207" A="255"/>
<Vtx X="-20" Y="69" Z="9" S="432" T="304" R="85" G="175" B="207" A="255"/>
<Vtx X="-12" Y="75" Z="8" S="496" T="496" R="61" G="150" B="221" A="255"/>
<Vtx X="-20" Y="61" Z="20" S="112" T="304" R="99" G="190" B="211" A="255"/>
<Vtx X="-26" Y="61" Z="9" S="304" T="112" R="88" G="190" B="193" A="255"/>
<Vtx X="-25" Y="55" Z="16" S="112" T="112" R="95" G="191" B="201" A="255"/>
<Vtx X="-25" Y="55" Z="20" S="-16" T="176" R="111" G="203" B="224" A="255"/>
<Vtx X="-29" Y="55" Z="14" S="176" T="-16" R="83" G="203" B="176" A="255"/>
<Vtx X="-48" Y="42" Z="12" S="304" T="432" R="76" G="167" B="208" A="255"/>
<Vtx X="-48" Y="39" Z="17" S="432" T="304" R="76" G="167" B="208" A="255"/>
<Vtx X="-54" Y="33" Z="11" S="496" T="496" R="102" G="191" B="218" A="255"/>
<Vtx X="-40" Y="47" Z="10" S="112" T="304" R="60" G="163" B="195" A="255"/>
<Vtx X="-39" Y="42" Z="21" S="304" T="112" R="62" G="153" B="215" A="255"/>
<Vtx X="-34" Y="46" Z="16" S="112" T="112" R="61" G="157" B="205" A="255"/>
<Vtx X="-34" Y="50" Z="14" S="-16" T="176" R="44" G="165" B="180" A="255"/>
<Vtx X="-34" Y="47" Z="21" S="176" T="-16" R="48" G="142" B="228" A="255"/>
<Vtx X="-19" Y="56" Z="37" S="304" T="432" R="85" G="172" B="214" A="255"/>
<Vtx X="-16" Y="60" Z="33" S="432" T="304" R="85" G="172" B="214" A="255"/>
<Vtx X="-10" Y="59" Z="41" S="496" T="496" R="59" G="166" B="189" A="255"/>
<Vtx X="-24" Y="50" Z="31" S="112" T="304" R="91" G="170" B="234" A="255"/>
<Vtx X="-19" Y="59" Z="24" S="304" T="112" R="99" G="185" B="221" A="255"/>
<Vtx X="-25" Y="52" Z="23" S="112" T="112" R="95" G="176" B="230" A="255"/>
<Vtx X="-28" Y="50" Z="24" S="-16" T="176" R="88" G="165" B="0" A="255"/>
<Vtx X="-27" Y="48" Z="17" S="-16" T="-16" R="82" G="171" B="209" A="255"/>
<Vtx X="-25" Y="55" Z="20" S="176" T="-16" R="111" G="203" B="224" A="255"/>
<Vtx X="-25" Y="52" Z="23" S="112" T="112" R="95" G="176" B="230" A="255"/>
<Vtx X="-19" Y="59" Z="24" S="304" T="112" R="99" G="185" B="221" A="255"/>
<Vtx X="-36" Y="60" Z="-1" S="304" T="432" R="79" G="172" B="203" A="255"/>
<Vtx X="-40" Y="56" Z="-1" S="432" T="304" R="79" G="172" B="203" A="255"/>
<Vtx X="-39" Y="59" Z="-10" S="496" T="496" R="88" G="166" B="239" A="255"/>
<Vtx X="-29" Y="59" Z="7" S="112" T="304" R="80" G="185" B="188" A="255"/>
<Vtx X="-38" Y="50" Z="7" S="304" T="112" R="64" G="170" B="189" A="255"/>
<Vtx X="-31" Y="52" Z="12" S="112" T="112" R="70" G="176" B="186" A="255"/>
<Vtx X="-29" Y="55" Z="14" S="-16" T="176" R="83" G="203" B="176" A="255"/>
<Vtx X="-34" Y="50" Z="14" S="176" T="-16" R="44" G="165" B="180" A="255"/>
<Vtx X="-11" Y="39" Z="-50" S="304" T="432" R="252" G="167" B="90" A="255"/>
<Vtx X="-16" Y="42" Z="-48" S="432" T="304" R="252" G="167" B="90" A="255"/>
<Vtx X="-19" Y="33" Z="-52" S="496" T="496" R="18" G="191" B="108" A="255"/>
<Vtx X="-3" Y="42" Z="-45" S="112" T="304" R="251" G="153" B="74" A="255"/>
<Vtx X="-13" Y="47" Z="-40" S="304" T="112" R="233" G="163" B="83" A="255"/>
<Vtx X="-5" Y="46" Z="-38" S="112" T="112" R="242" G="157" B="78" A="255"/>
<Vtx X="-1" Y="47" Z="-40" S="-16" T="176" R="0" G="142" B="55" A="255"/>
<Vtx X="-1" Y="48" Z="-32" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-7" Y="50" Z="-37" S="176" T="-16" R="212" G="165" B="76" A="255"/>
<Vtx X="-4" Y="69" Z="-22" S="304" T="432" R="0" G="175" B="98" A="255"/>
<Vtx X="2" Y="69" Z="-22" S="432" T="304" R="0" G="175" B="98" A="255"/>
<Vtx X="-1" Y="75" Z="-14" S="496" T="496" R="0" G="150" B="70" A="255"/>
<Vtx X="-7" Y="61" Z="-27" S="112" T="304" R="245" G="190" B="108" A="255"/>
<Vtx X="5" Y="61" Z="-27" S="304" T="112" R="11" G="190" B="108" A="255"/>
<Vtx X="-1" Y="55" Z="-30" S="112" T="112" R="0" G="191" B="109" A="255"/>
<Vtx X="-5" Y="55" Z="-32" S="-16" T="176" R="228" G="203" B="112" A="255"/>
<Vtx X="3" Y="55" Z="-32" S="176" T="-16" R="28" G="203" B="112" A="255"/>
<Vtx X="14" Y="42" Z="-48" S="304" T="432" R="4" G="167" B="90" A="255"/>
<Vtx X="9" Y="39" Z="-50" S="432" T="304" R="4" G="167" B="90" A="255"/>
<Vtx X="17" Y="33" Z="-52" S="496" T="496" R="238" G="191" B="108" A="255"/>
<Vtx X="11" Y="47" Z="-40" S="112" T="304" R="23" G="163" B="83" A="255"/>
<Vtx X="9" Y="39" Z="-50" S="432" T="304" R="4" G="167" B="90" A="255"/>
<Vtx X="14" Y="42" Z="-48" S="304" T="432" R="4" G="167" B="90" A="255"/>
<Vtx X="1" Y="42" Z="-45" S="304" T="112" R="5" G="153" B="74" A="255"/>
<Vtx X="3" Y="46" Z="-38" S="112" T="112" R="14" G="157" B="78" A="255"/>
<Vtx X="5" Y="50" Z="-37" S="-16" T="176" R="44" G="165" B="76" A="255"/>
<Vtx X="-1" Y="48" Z="-32" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-1" Y="47" Z="-40" S="176" T="-16" R="0" G="142" B="55" A="255"/>
<Vtx X="-23" Y="56" Z="-35" S="304" T="432" R="250" G="172" B="95" A="255"/>
<Vtx X="-21" Y="60" Z="-31" S="432" T="304" R="250" G="172" B="95" A="255"/>
<Vtx X="-31" Y="59" Z="-29" S="496" T="496" R="29" G="166" B="85" A="255"/>
<Vtx X="-15" Y="50" Z="-37" S="112" T="304" R="230" G="170" B="90" A="255"/>
<Vtx X="-11" Y="59" Z="-29" S="304" T="112" R="237" G="185" B="104" A="255"/>
<Vtx X="-7" Y="52" Z="-33" S="112" T="112" R="231" G="176" B="96" A="255"/>
<Vtx X="-7" Y="50" Z="-37" S="-16" T="176" R="212" G="165" B="76" A="255"/>
<Vtx X="-5" Y="55" Z="-32" S="176" T="-16" R="228" G="203" B="112" A="255"/>
<Vtx X="19" Y="60" Z="-31" S="304" T="432" R="6" G="172" B="95" A="255"/>
<Vtx X="21" Y="56" Z="-35" S="432" T="304" R="6" G="172" B="95" A="255"/>
<Vtx X="28" Y="59" Z="-29" S="496" T="496" R="227" G="166" B="85" A="255"/>
<Vtx X="9" Y="59" Z="-29" S="112" T="304" R="19" G="185" B="104" A="255"/>
<Vtx X="13" Y="50" Z="-37" S="304" T="112" R="26" G="170" B="90" A="255"/>
<Vtx X="5" Y="52" Z="-33" S="112" T="112" R="25" G="176" B="96" A="255"/>
<Vtx X="3" Y="55" Z="-32" S="-16" T="176" R="28" G="203" B="112" A="255"/>
<Vtx X="5" Y="50" Z="-37" S="176" T="-16" R="44" G="165" B="76" A="255"/>
<Vtx X="49" Y="39" Z="15" S="304" T="432" R="180" G="167" B="208" A="255"/>
<Vtx X="50" Y="42" Z="10" S="432" T="304" R="180" G="167" B="208" A="255"/>
<Vtx X="55" Y="33" Z="9" S="496" T="496" R="154" G="191" B="218" A="255"/>
<Vtx X="40" Y="42" Z="19" S="112" T="304" R="194" G="153" B="215" A="255"/>
<Vtx X="41" Y="47" Z="8" S="304" T="112" R="196" G="163" B="195" A="255"/>
<Vtx X="35" Y="46" Z="15" S="112" T="112" R="195" G="157" B="205" A="255"/>
<Vtx X="35" Y="47" Z="19" S="-16" T="176" R="208" G="142" B="228" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="35" Y="50" Z="12" S="176" T="-16" R="212" G="165" B="180" A="255"/>
<Vtx X="35" Y="46" Z="15" S="112" T="112" R="195" G="157" B="205" A="255"/>
<Vtx X="41" Y="47" Z="8" S="304" T="112" R="196" G="163" B="195" A="255"/>
<Vtx X="21" Y="69" Z="8" S="304" T="432" R="171" G="175" B="207" A="255"/>
<Vtx X="18" Y="69" Z="13" S="432" T="304" R="171" G="175" B="207" A="255"/>
<Vtx X="13" Y="75" Z="6" S="496" T="496" R="195" G="150" B="221" A="255"/>
<Vtx X="27" Y="61" Z="7" S="112" T="304" R="168" G="190" B="193" A="255"/>
<Vtx X="21" Y="61" Z="18" S="304" T="112" R="157" G="190" B="211" A="255"/>
<Vtx X="26" Y="55" Z="14" S="112" T="112" R="161" G="191" B="201" A="255"/>
<Vtx X="30" Y="55" Z="12" S="-16" T="176" R="173" G="203" B="176" A="255"/>
<Vtx X="26" Y="55" Z="18" S="176" T="-16" R="145" G="203" B="224" A="255"/>
<Vtx X="34" Y="42" Z="36" S="304" T="432" R="176" G="167" B="214" A="255"/>
<Vtx X="39" Y="39" Z="33" S="432" T="304" R="176" G="167" B="214" A="255"/>
<Vtx X="37" Y="33" Z="41" S="496" T="496" R="172" G="191" B="187" A="255"/>
<Vtx X="29" Y="47" Z="30" S="112" T="304" R="173" G="163" B="234" A="255"/>
<Vtx X="38" Y="42" Z="23" S="304" T="112" R="189" G="153" B="223" A="255"/>
<Vtx X="31" Y="46" Z="21" S="112" T="112" R="182" G="157" B="229" A="255"/>
<Vtx X="29" Y="50" Z="23" S="-16" T="176" R="168" G="165" B="0" A="255"/>
<Vtx X="35" Y="47" Z="19" S="176" T="-16" R="208" G="142" B="228" A="255"/>
<Vtx X="41" Y="56" Z="-2" S="304" T="432" R="177" G="172" B="203" A="255"/>
<Vtx X="37" Y="60" Z="-3" S="432" T="304" R="177" G="172" B="203" A="255"/>
<Vtx X="40" Y="59" Z="-12" S="496" T="496" R="168" G="166" B="239" A="255"/>
<Vtx X="39" Y="50" Z="6" S="112" T="304" R="192" G="170" B="189" A="255"/>
<Vtx X="30" Y="59" Z="5" S="304" T="112" R="176" G="185" B="188" A="255"/>
<Vtx X="32" Y="52" Z="10" S="112" T="112" R="186" G="176" B="186" A="255"/>
<Vtx X="35" Y="50" Z="12" S="-16" T="176" R="212" G="165" B="180" A="255"/>
<Vtx X="30" Y="55" Z="12" S="176" T="-16" R="173" G="203" B="176" A="255"/>
<Vtx X="17" Y="60" Z="31" S="304" T="432" R="171" G="172" B="214" A="255"/>
<Vtx X="20" Y="56" Z="35" S="432" T="304" R="171" G="172" B="214" A="255"/>
<Vtx X="11" Y="59" Z="39" S="496" T="496" R="197" G="166" B="189" A="255"/>
<Vtx X="21" Y="59" Z="22" S="112" T="304" R="157" G="185" B="221" A="255"/>
<Vtx X="21" Y="59" Z="22" S="112" T="304" R="157" G="185" B="221" A="255"/>
<Vtx X="26" Y="50" Z="29" S="304" T="112" R="165" G="170" B="234" A="255"/>
<Vtx X="20" Y="56" Z="35" S="432" T="304" R="171" G="172" B="214" A="255"/>
<Vtx X="26" Y="52" Z="21" S="112" T="112" R="161" G="176" B="230" A="255"/>
<Vtx X="26" Y="55" Z="18" S="-16" T="176" R="145" G="203" B="224" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="29" Y="50" Z="23" S="176" T="-16" R="168" G="165" B="0" A="255"/>
<Vtx X="-38" Y="39" Z="35" S="304" T="432" R="176" G="89" B="42" A="255"/>
<Vtx X="-36" Y="33" Z="43" S="496" T="496" R="172" G="65" B="69" A="255"/>
<Vtx X="-33" Y="42" Z="38" S="432" T="304" R="176" G="89" B="42" A="255"/>
<Vtx X="-37" Y="42" Z="25" S="112" T="304" R="189" G="103" B="33" A="255"/>
<Vtx X="-28" Y="47" Z="32" S="304" T="112" R="173" G="93" B="22" A="255"/>
<Vtx X="-30" Y="46" Z="23" S="112" T="112" R="182" G="99" B="27" A="255"/>
<Vtx X="-28" Y="50" Z="24" S="176" T="-16" R="168" G="91" B="0" A="255"/>
<Vtx X="-27" Y="48" Z="17" S="-16" T="-16" R="174" G="85" B="47" A="255"/>
<Vtx X="-34" Y="47" Z="21" S="-16" T="176" R="208" G="114" B="28" A="255"/>
<Vtx X="-17" Y="69" Z="15" S="304" T="432" R="171" G="81" B="49" A="255"/>
<Vtx X="-12" Y="75" Z="8" S="496" T="496" R="195" G="106" B="35" A="255"/>
<Vtx X="-20" Y="69" Z="9" S="432" T="304" R="171" G="81" B="49" A="255"/>
<Vtx X="-20" Y="61" Z="20" S="112" T="304" R="157" G="66" B="45" A="255"/>
<Vtx X="-26" Y="61" Z="9" S="304" T="112" R="168" G="66" B="63" A="255"/>
<Vtx X="-25" Y="55" Z="16" S="112" T="112" R="161" G="65" B="55" A="255"/>
<Vtx X="-29" Y="55" Z="14" S="176" T="-16" R="173" G="53" B="80" A="255"/>
<Vtx X="-25" Y="55" Z="20" S="-16" T="176" R="145" G="53" B="32" A="255"/>
<Vtx X="-48" Y="42" Z="12" S="304" T="432" R="180" G="89" B="48" A="255"/>
<Vtx X="-54" Y="33" Z="11" S="496" T="496" R="154" G="65" B="38" A="255"/>
<Vtx X="-48" Y="39" Z="17" S="432" T="304" R="180" G="89" B="48" A="255"/>
<Vtx X="-40" Y="47" Z="10" S="112" T="304" R="196" G="93" B="61" A="255"/>
<Vtx X="-39" Y="42" Z="21" S="304" T="112" R="194" G="103" B="41" A="255"/>
<Vtx X="-34" Y="46" Z="16" S="112" T="112" R="195" G="99" B="51" A="255"/>
<Vtx X="-34" Y="47" Z="21" S="176" T="-16" R="208" G="114" B="28" A="255"/>
<Vtx X="-34" Y="50" Z="14" S="-16" T="176" R="212" G="91" B="76" A="255"/>
<Vtx X="-19" Y="56" Z="37" S="304" T="432" R="171" G="84" B="42" A="255"/>
<Vtx X="-10" Y="59" Z="41" S="496" T="496" R="197" G="90" B="67" A="255"/>
<Vtx X="-16" Y="60" Z="33" S="432" T="304" R="171" G="84" B="42" A="255"/>
<Vtx X="-24" Y="50" Z="31" S="112" T="304" R="165" G="86" B="22" A="255"/>
<Vtx X="-19" Y="59" Z="24" S="304" T="112" R="157" G="71" B="35" A="255"/>
<Vtx X="-25" Y="52" Z="23" S="112" T="112" R="161" G="80" B="26" A="255"/>
<Vtx X="-25" Y="55" Z="20" S="176" T="-16" R="145" G="53" B="32" A="255"/>
<Vtx X="-27" Y="48" Z="17" S="-16" T="-16" R="174" G="85" B="47" A="255"/>
<Vtx X="-28" Y="50" Z="24" S="-16" T="176" R="168" G="91" B="0" A="255"/>
<Vtx X="-36" Y="60" Z="-1" S="304" T="432" R="177" G="84" B="53" A="255"/>
<Vtx X="-39" Y="59" Z="-10" S="496" T="496" R="168" G="90" B="17" A="255"/>
<Vtx X="-40" Y="56" Z="-1" S="432" T="304" R="177" G="84" B="53" A="255"/>
<Vtx X="-29" Y="59" Z="7" S="112" T="304" R="176" G="71" B="68" A="255"/>
<Vtx X="-38" Y="50" Z="7" S="304" T="112" R="192" G="86" B="67" A="255"/>
<Vtx X="-31" Y="52" Z="12" S="112" T="112" R="186" G="80" B="70" A="255"/>
<Vtx X="-34" Y="50" Z="14" S="176" T="-16" R="212" G="91" B="76" A="255"/>
<Vtx X="-29" Y="55" Z="14" S="-16" T="176" R="173" G="53" B="80" A="255"/>
<Vtx X="-11" Y="39" Z="-50" S="304" T="432" R="4" G="89" B="166" A="255"/>
<Vtx X="-19" Y="33" Z="-52" S="496" T="496" R="238" G="65" B="148" A="255"/>
<Vtx X="-16" Y="42" Z="-48" S="432" T="304" R="4" G="89" B="166" A="255"/>
<Vtx X="-3" Y="42" Z="-45" S="112" T="304" R="5" G="103" B="182" A="255"/>
<Vtx X="-13" Y="47" Z="-40" S="304" T="112" R="23" G="93" B="173" A="255"/>
<Vtx X="-5" Y="46" Z="-38" S="112" T="112" R="14" G="99" B="178" A="255"/>
<Vtx X="-7" Y="50" Z="-37" S="176" T="-16" R="44" G="91" B="180" A="255"/>
<Vtx X="-1" Y="48" Z="-32" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-1" Y="47" Z="-40" S="-16" T="176" R="0" G="114" B="201" A="255"/>
<Vtx X="-4" Y="69" Z="-22" S="304" T="432" R="0" G="81" B="158" A="255"/>
<Vtx X="-1" Y="75" Z="-14" S="496" T="496" R="0" G="106" B="186" A="255"/>
<Vtx X="2" Y="69" Z="-22" S="432" T="304" R="0" G="81" B="158" A="255"/>
<Vtx X="-7" Y="61" Z="-27" S="112" T="304" R="11" G="66" B="148" A="255"/>
<Vtx X="5" Y="61" Z="-27" S="304" T="112" R="245" G="66" B="148" A="255"/>
<Vtx X="-1" Y="55" Z="-30" S="112" T="112" R="0" G="65" B="147" A="255"/>
<Vtx X="-1" Y="55" Z="-30" S="112" T="112" R="0" G="65" B="147" A="255"/>
<Vtx X="5" Y="61" Z="-27" S="304" T="112" R="245" G="66" B="148" A="255"/>
<Vtx X="3" Y="55" Z="-32" S="176" T="-16" R="228" G="53" B="144" A="255"/>
<Vtx X="-1" Y="48" Z="-32" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-5" Y="55" Z="-32" S="-16" T="176" R="28" G="53" B="144" A="255"/>
<Vtx X="-7" Y="61" Z="-27" S="112" T="304" R="11" G="66" B="148" A="255"/>
<Vtx X="14" Y="42" Z="-48" S="304" T="432" R="252" G="89" B="166" A="255"/>
<Vtx X="17" Y="33" Z="-52" S="496" T="496" R="18" G="65" B="148" A="255"/>
<Vtx X="9" Y="39" Z="-50" S="432" T="304" R="252" G="89" B="166" A="255"/>
<Vtx X="11" Y="47" Z="-40" S="112" T="304" R="233" G="93" B="173" A="255"/>
<Vtx X="1" Y="42" Z="-45" S="304" T="112" R="251" G="103" B="182" A="255"/>
<Vtx X="3" Y="46" Z="-38" S="112" T="112" R="242" G="99" B="178" A="255"/>
<Vtx X="-1" Y="47" Z="-40" S="176" T="-16" R="0" G="114" B="201" A="255"/>
<Vtx X="5" Y="50" Z="-37" S="-16" T="176" R="212" G="91" B="180" A="255"/>
<Vtx X="-23" Y="56" Z="-35" S="304" T="432" R="6" G="84" B="161" A="255"/>
<Vtx X="-31" Y="59" Z="-29" S="496" T="496" R="227" G="90" B="171" A="255"/>
<Vtx X="-21" Y="60" Z="-31" S="432" T="304" R="6" G="84" B="161" A="255"/>
<Vtx X="-15" Y="50" Z="-37" S="112" T="304" R="26" G="86" B="166" A="255"/>
<Vtx X="-11" Y="59" Z="-29" S="304" T="112" R="19" G="71" B="152" A="255"/>
<Vtx X="-7" Y="52" Z="-33" S="112" T="112" R="25" G="80" B="160" A="255"/>
<Vtx X="-5" Y="55" Z="-32" S="176" T="-16" R="28" G="53" B="144" A="255"/>
<Vtx X="-7" Y="50" Z="-37" S="-16" T="176" R="44" G="91" B="180" A="255"/>
<Vtx X="19" Y="60" Z="-31" S="304" T="432" R="250" G="84" B="161" A="255"/>
<Vtx X="28" Y="59" Z="-29" S="496" T="496" R="29" G="90" B="171" A="255"/>
<Vtx X="21" Y="56" Z="-35" S="432" T="304" R="250" G="84" B="161" A="255"/>
<Vtx X="9" Y="59" Z="-29" S="112" T="304" R="237" G="71" B="152" A="255"/>
<Vtx X="13" Y="50" Z="-37" S="304" T="112" R="230" G="86" B="166" A="255"/>
<Vtx X="5" Y="52" Z="-33" S="112" T="112" R="231" G="80" B="160" A="255"/>
<Vtx X="5" Y="50" Z="-37" S="176" T="-16" R="212" G="91" B="180" A="255"/>
<Vtx X="3" Y="55" Z="-32" S="-16" T="176" R="228" G="53" B="144" A="255"/>
<Vtx X="49" Y="39" Z="15" S="304" T="432" R="76" G="89" B="48" A="255"/>
<Vtx X="55" Y="33" Z="9" S="496" T="496" R="102" G="65" B="38" A="255"/>
<Vtx X="50" Y="42" Z="10" S="432" T="304" R="76" G="89" B="48" A="255"/>
<Vtx X="40" Y="42" Z="19" S="112" T="304" R="62" G="103" B="41" A="255"/>
<Vtx X="41" Y="47" Z="8" S="304" T="112" R="60" G="93" B="61" A="255"/>
<Vtx X="35" Y="46" Z="15" S="112" T="112" R="61" G="99" B="51" A="255"/>
<Vtx X="35" Y="50" Z="12" S="176" T="-16" R="44" G="91" B="76" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="35" Y="47" Z="19" S="-16" T="176" R="48" G="114" B="28" A="255"/>
<Vtx X="21" Y="69" Z="8" S="304" T="432" R="85" G="81" B="49" A="255"/>
<Vtx X="13" Y="75" Z="6" S="496" T="496" R="61" G="106" B="35" A="255"/>
<Vtx X="18" Y="69" Z="13" S="432" T="304" R="85" G="81" B="49" A="255"/>
<Vtx X="27" Y="61" Z="7" S="112" T="304" R="88" G="66" B="63" A="255"/>
<Vtx X="21" Y="61" Z="18" S="304" T="112" R="99" G="66" B="45" A="255"/>
<Vtx X="26" Y="55" Z="14" S="112" T="112" R="95" G="65" B="55" A="255"/>
<Vtx X="26" Y="55" Z="18" S="176" T="-16" R="111" G="53" B="32" A="255"/>
<Vtx X="30" Y="55" Z="12" S="-16" T="176" R="83" G="53" B="80" A="255"/>
<Vtx X="34" Y="42" Z="36" S="304" T="432" R="80" G="89" B="42" A="255"/>
<Vtx X="37" Y="33" Z="41" S="496" T="496" R="84" G="65" B="69" A="255"/>
<Vtx X="39" Y="39" Z="33" S="432" T="304" R="80" G="89" B="42" A="255"/>
<Vtx X="29" Y="47" Z="30" S="112" T="304" R="83" G="93" B="22" A="255"/>
<Vtx X="38" Y="42" Z="23" S="304" T="112" R="67" G="103" B="33" A="255"/>
<Vtx X="31" Y="46" Z="21" S="112" T="112" R="74" G="99" B="27" A="255"/>
<Vtx X="35" Y="47" Z="19" S="176" T="-16" R="48" G="114" B="28" A="255"/>
<Vtx X="29" Y="50" Z="23" S="-16" T="176" R="88" G="91" B="0" A="255"/>
<Vtx X="41" Y="56" Z="-2" S="304" T="432" R="79" G="84" B="53" A="255"/>
<Vtx X="40" Y="59" Z="-12" S="496" T="496" R="88" G="90" B="17" A="255"/>
<Vtx X="37" Y="60" Z="-3" S="432" T="304" R="79" G="84" B="53" A="255"/>
<Vtx X="39" Y="50" Z="6" S="112" T="304" R="64" G="86" B="67" A="255"/>
<Vtx X="30" Y="59" Z="5" S="304" T="112" R="80" G="71" B="68" A="255"/>
<Vtx X="32" Y="52" Z="10" S="112" T="112" R="70" G="80" B="70" A="255"/>
<Vtx X="30" Y="55" Z="12" S="176" T="-16" R="83" G="53" B="80" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="35" Y="50" Z="12" S="-16" T="176" R="44" G="91" B="76" A="255"/>
<Vtx X="32" Y="52" Z="10" S="112" T="112" R="70" G="80" B="70" A="255"/>
<Vtx X="39" Y="50" Z="6" S="112" T="304" R="64" G="86" B="67" A="255"/>
<Vtx X="17" Y="60" Z="31" S="304" T="432" R="85" G="84" B="42" A="255"/>
<Vtx X="11" Y="59" Z="39" S="496" T="496" R="59" G="90" B="67" A="255"/>
<Vtx X="20" Y="56" Z="35" S="432" T="304" R="85" G="84" B="42" A="255"/>
<Vtx X="21" Y="59" Z="22" S="112" T="304" R="99" G="71" B="35" A="255"/>
<Vtx X="26" Y="50" Z="29" S="304" T="112" R="91" G="86" B="22" A="255"/>
<Vtx X="26" Y="52" Z="21" S="112" T="112" R="95" G="80" B="26" A="255"/>
<Vtx X="29" Y="50" Z="23" S="176" T="-16" R="88" G="91" B="0" A="255"/>
<Vtx X="26" Y="55" Z="18" S="-16" T="176" R="111" G="53" B="32" A="255"/>
</Vertex>
@@ -0,0 +1,10 @@
<Vertex Version="0">
<Vtx X="-107" Y="0" Z="-93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="-107" Y="0" Z="93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="-107" Y="98" Z="93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="-107" Y="98" Z="-93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="107" Y="0" Z="-93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="107" Y="0" Z="93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="107" Y="98" Z="93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="107" Y="98" Z="-93" S="0" T="0" R="0" G="0" B="0" A="0"/>
</Vertex>
@@ -0,0 +1,14 @@
<DisplayList Version="0">
<ClearGeometryMode G_LIGHTING="1" />
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_cull" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<SetGeometryMode G_LIGHTING="1" />
<CullDisplayList Start="0" End="7"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushFairyDL_f3dlite_shrubbery"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushFairyDL_tri_0"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushFairyDL_f3dlite_leaf"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushFairyDL_tri_1"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushFairyDL_f3dlite_flower_fairy"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushFairyDL_tri_2"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,8 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="14"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="0" V01="5" V02="6" Flag0="0" V10="7" V11="8" V12="9" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="11" Flag0="0" V10="7" V11="12" V12="13" Flag1="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,134 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="1" Flag0="0" V10="5" V11="4" V12="3" Flag1="0"/>
<Triangles2 V00="3" V01="6" V02="5" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="5" V11="8" V12="4" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="10" V12="9" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="10" Flag0="0" V10="14" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="12" V01="15" V02="14" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="14" V11="16" V12="13" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="18" V12="17" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="18" Flag0="0" V10="22" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="20" V01="23" V02="22" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="22" V11="24" V12="21" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="26" V12="25" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="26" Flag0="0" V10="30" V11="29" V12="28" Flag1="0"/>
<Triangles2 V00="28" V01="31" V02="30" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_1" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="20" V02="17" Flag0="0" V10="17" V11="20" V12="16" Flag1="0"/>
<Triangles2 V00="21" V01="22" V02="23" Flag0="0" V10="24" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="26" V11="25" V12="24" Flag1="0"/>
<Triangles2 V00="24" V01="27" V02="26" Flag0="0" V10="19" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="19" V01="28" V02="26" Flag0="0" V10="26" V11="28" V12="25" Flag1="0"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_1" VertexBufferIndex="0" VertexOffset="64" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="3" V02="0" Flag0="0" V10="0" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="4" V02="5" Flag0="0" V10="6" V11="7" V12="4" Flag1="0"/>
<Triangles2 V00="4" V01="7" V02="3" Flag0="0" V10="8" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="9" V02="8" Flag0="0" V10="11" V11="12" V12="9" Flag1="0"/>
<Triangles2 V00="13" V01="12" V02="11" Flag0="0" V10="11" V11="14" V12="13" Flag1="0"/>
<Triangles2 V00="6" V01="13" V02="14" Flag0="0" V10="6" V11="15" V12="13" Flag1="0"/>
<Triangles2 V00="13" V01="15" V02="12" Flag0="0" V10="16" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="17" V02="16" Flag0="0" V10="19" V11="20" V12="17" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="19" Flag0="0" V10="19" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="6" V01="21" V02="22" Flag0="0" V10="6" V11="23" V12="21" Flag1="0"/>
<Triangles2 V00="21" V01="23" V02="20" Flag0="0" V10="24" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="25" V02="24" Flag0="0" V10="27" V11="28" V12="25" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="27" Flag0="0" V10="27" V11="30" V12="29" Flag1="0"/>
<Triangle1 V00="31" V01="29" V02="30"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_1" VertexBufferIndex="0" VertexOffset="96" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="0" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="0" V01="19" V02="17" Flag0="0" V10="17" V11="19" V12="16" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="23" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="23" V01="24" V02="21" Flag0="0" V10="25" V11="24" V12="23" Flag1="0"/>
<Triangles2 V00="23" V01="26" V02="25" Flag0="0" V10="0" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="0" V01="27" V02="25" Flag0="0" V10="25" V11="27" V12="24" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="31" V11="29" V12="28" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_1" VertexBufferIndex="0" VertexOffset="128" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="0" V01="4" V02="3" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="6" V02="3" Flag0="0" V10="3" V11="6" V12="1" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="9" Flag0="0" V10="10" V11="7" V12="9" Flag1="0"/>
<Triangles2 V00="10" V01="9" V02="11" Flag0="0" V10="12" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="12" Flag0="0" V10="10" V11="12" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="19" V11="16" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="21" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="22" Flag0="0" V10="14" V11="21" V12="22" Flag1="0"/>
<Triangles2 V00="14" V01="23" V02="21" Flag0="0" V10="19" V11="21" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="27" V11="24" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="29" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="14" V11="29" V12="30" Flag1="0"/>
<Triangles2 V00="14" V01="31" V02="29" Flag0="0" V10="27" V11="29" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_1" VertexBufferIndex="0" VertexOffset="160" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="24" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="20" V11="22" V12="25" Flag1="0"/>
<Triangles2 V00="26" V01="27" V02="28" Flag0="0" V10="29" V11="26" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="31" V11="29" V12="30" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_1" VertexBufferIndex="0" VertexOffset="192" Count="30"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="0" Flag0="0" V10="5" V11="0" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="7" V02="8" Flag0="0" V10="9" V11="6" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="11" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="10" V02="12" Flag0="0" V10="3" V11="11" V12="12" Flag1="0"/>
<Triangles2 V00="3" V01="13" V02="11" Flag0="0" V10="9" V11="11" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="16" Flag0="0" V10="17" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="16" V02="18" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="3" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="3" V01="21" V02="19" Flag0="0" V10="17" V11="19" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="23" V02="24" Flag0="0" V10="25" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="24" V02="26" Flag0="0" V10="27" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="3" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="3" V01="29" V02="27" Flag0="0" V10="25" V11="27" V12="29" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_1" VertexBufferIndex="0" VertexOffset="222" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="20" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="25" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="27" V02="29" Flag0="0" V10="30" V11="28" V12="29" Flag1="0"/>
<Triangles2 V00="30" V01="29" V02="31" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_1" VertexBufferIndex="0" VertexOffset="254" Count="12"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="2" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="4" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="6" V02="8" Flag0="0" V10="9" V11="7" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="7" V11="9" V12="11" Flag1="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,134 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="1" Flag0="0" V10="5" V11="4" V12="3" Flag1="0"/>
<Triangles2 V00="3" V01="6" V02="5" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="5" V11="8" V12="4" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="10" V12="9" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="10" Flag0="0" V10="14" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="12" V01="15" V02="14" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="14" V11="16" V12="13" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="18" V12="17" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="18" Flag0="0" V10="22" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="20" V01="23" V02="22" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="22" V11="24" V12="21" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="26" V12="25" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="26" Flag0="0" V10="30" V11="29" V12="28" Flag1="0"/>
<Triangles2 V00="28" V01="31" V02="30" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_2" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="20" V02="17" Flag0="0" V10="17" V11="20" V12="16" Flag1="0"/>
<Triangles2 V00="21" V01="22" V02="23" Flag0="0" V10="24" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="26" V11="25" V12="24" Flag1="0"/>
<Triangles2 V00="24" V01="27" V02="26" Flag0="0" V10="19" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="19" V01="28" V02="26" Flag0="0" V10="26" V11="28" V12="25" Flag1="0"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_2" VertexBufferIndex="0" VertexOffset="64" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="3" V02="0" Flag0="0" V10="0" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="4" V02="5" Flag0="0" V10="6" V11="7" V12="4" Flag1="0"/>
<Triangles2 V00="4" V01="7" V02="3" Flag0="0" V10="8" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="9" V02="8" Flag0="0" V10="11" V11="12" V12="9" Flag1="0"/>
<Triangles2 V00="13" V01="12" V02="11" Flag0="0" V10="11" V11="14" V12="13" Flag1="0"/>
<Triangles2 V00="6" V01="13" V02="14" Flag0="0" V10="6" V11="15" V12="13" Flag1="0"/>
<Triangles2 V00="13" V01="15" V02="12" Flag0="0" V10="16" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="17" V02="16" Flag0="0" V10="19" V11="20" V12="17" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="19" Flag0="0" V10="19" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="6" V01="21" V02="22" Flag0="0" V10="6" V11="23" V12="21" Flag1="0"/>
<Triangles2 V00="21" V01="23" V02="20" Flag0="0" V10="24" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="25" V02="24" Flag0="0" V10="27" V11="28" V12="25" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="27" Flag0="0" V10="27" V11="30" V12="29" Flag1="0"/>
<Triangle1 V00="31" V01="29" V02="30"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_2" VertexBufferIndex="0" VertexOffset="96" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="0" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="0" V01="19" V02="17" Flag0="0" V10="17" V11="19" V12="16" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="23" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="23" V01="24" V02="21" Flag0="0" V10="25" V11="24" V12="23" Flag1="0"/>
<Triangles2 V00="23" V01="26" V02="25" Flag0="0" V10="0" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="0" V01="27" V02="25" Flag0="0" V10="25" V11="27" V12="24" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="31" V11="29" V12="28" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_2" VertexBufferIndex="0" VertexOffset="128" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="0" V01="4" V02="3" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="6" V02="3" Flag0="0" V10="3" V11="6" V12="1" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="9" Flag0="0" V10="10" V11="7" V12="9" Flag1="0"/>
<Triangles2 V00="10" V01="9" V02="11" Flag0="0" V10="12" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="12" Flag0="0" V10="10" V11="12" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="19" V11="16" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="21" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="22" Flag0="0" V10="14" V11="21" V12="22" Flag1="0"/>
<Triangles2 V00="14" V01="23" V02="21" Flag0="0" V10="19" V11="21" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="27" V11="24" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="29" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="14" V11="29" V12="30" Flag1="0"/>
<Triangles2 V00="14" V01="31" V02="29" Flag0="0" V10="27" V11="29" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_2" VertexBufferIndex="0" VertexOffset="160" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="24" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="20" V11="22" V12="25" Flag1="0"/>
<Triangles2 V00="26" V01="27" V02="28" Flag0="0" V10="29" V11="26" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="31" V11="29" V12="30" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_2" VertexBufferIndex="0" VertexOffset="192" Count="30"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="0" Flag0="0" V10="5" V11="0" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="7" V02="8" Flag0="0" V10="9" V11="6" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="11" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="10" V02="12" Flag0="0" V10="3" V11="11" V12="12" Flag1="0"/>
<Triangles2 V00="3" V01="13" V02="11" Flag0="0" V10="9" V11="11" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="16" Flag0="0" V10="17" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="16" V02="18" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="3" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="3" V01="21" V02="19" Flag0="0" V10="17" V11="19" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="23" V02="24" Flag0="0" V10="25" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="24" V02="26" Flag0="0" V10="27" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="3" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="3" V01="29" V02="27" Flag0="0" V10="25" V11="27" V12="29" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_2" VertexBufferIndex="0" VertexOffset="222" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="20" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="25" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="27" V02="29" Flag0="0" V10="30" V11="28" V12="29" Flag1="0"/>
<Triangles2 V00="30" V01="29" V02="31" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushFairyDL_vtx_2" VertexBufferIndex="0" VertexOffset="254" Count="12"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="2" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="4" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="6" V02="8" Flag0="0" V10="9" V11="7" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="7" V11="9" V12="11" Flag1="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,16 @@
<Vertex Version="0">
<Vtx X="0" Y="98" Z="0" S="558" T="-664" R="0" G="0" B="129" A="255"/>
<Vtx X="54" Y="0" Z="93" S="-281" T="1008" R="110" G="0" B="192" A="255"/>
<Vtx X="-54" Y="0" Z="-93" S="1398" T="1008" R="110" G="0" B="192" A="255"/>
<Vtx X="-107" Y="0" Z="0" S="-281" T="1008" R="0" G="0" B="127" A="255"/>
<Vtx X="107" Y="0" Z="0" S="1398" T="1008" R="0" G="0" B="127" A="255"/>
<Vtx X="54" Y="0" Z="-93" S="-281" T="1008" R="146" G="0" B="192" A="255"/>
<Vtx X="-54" Y="0" Z="93" S="1398" T="1008" R="146" G="0" B="192" A="255"/>
<Vtx X="0" Y="98" Z="0" S="558" T="-664" R="0" G="0" B="127" A="255"/>
<Vtx X="-54" Y="0" Z="-93" S="1398" T="1008" R="146" G="0" B="64" A="255"/>
<Vtx X="54" Y="0" Z="93" S="-281" T="1008" R="146" G="0" B="64" A="255"/>
<Vtx X="107" Y="0" Z="0" S="1398" T="1008" R="0" G="0" B="129" A="255"/>
<Vtx X="-107" Y="0" Z="0" S="-281" T="1008" R="0" G="0" B="129" A="255"/>
<Vtx X="-54" Y="0" Z="93" S="1398" T="1008" R="110" G="0" B="64" A="255"/>
<Vtx X="54" Y="0" Z="-93" S="-281" T="1008" R="110" G="0" B="64" A="255"/>
</Vertex>
@@ -0,0 +1,268 @@
<Vertex Version="0">
<Vtx X="-25" Y="44" Z="36" S="304" T="432" R="77" G="174" B="197" A="255"/>
<Vtx X="-22" Y="48" Z="36" S="432" T="304" R="77" G="174" B="197" A="255"/>
<Vtx X="-20" Y="43" Z="38" S="496" T="496" R="35" G="211" B="143" A="255"/>
<Vtx X="-28" Y="43" Z="29" S="112" T="304" R="90" G="179" B="211" A="255"/>
<Vtx X="-21" Y="50" Z="29" S="304" T="112" R="73" G="161" B="213" A="255"/>
<Vtx X="-27" Y="49" Z="25" S="112" T="112" R="87" G="167" B="230" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="-16" T="176" R="77" G="160" B="224" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="81" G="171" B="209" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="176" T="-16" R="93" G="177" B="221" A="255"/>
<Vtx X="-24" Y="63" Z="4" S="304" T="432" R="78" G="163" B="220" A="255"/>
<Vtx X="-28" Y="61" Z="2" S="432" T="304" R="78" G="163" B="220" A="255"/>
<Vtx X="-23" Y="62" Z="-1" S="496" T="496" R="45" G="142" B="31" A="255"/>
<Vtx X="-22" Y="59" Z="10" S="112" T="304" R="72" G="167" B="201" A="255"/>
<Vtx X="-30" Y="55" Z="5" S="304" T="112" R="90" G="178" B="213" A="255"/>
<Vtx X="-28" Y="55" Z="13" S="112" T="112" R="84" G="186" B="191" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="-16" T="176" R="90" G="184" B="203" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="176" T="-16" R="76" G="176" B="194" A="255"/>
<Vtx X="-42" Y="37" Z="22" S="304" T="432" R="89" G="181" B="205" A="255"/>
<Vtx X="-39" Y="37" Z="27" S="432" T="304" R="89" G="181" B="205" A="255"/>
<Vtx X="-40" Y="32" Z="25" S="496" T="496" R="110" G="255" B="193" A="255"/>
<Vtx X="-38" Y="40" Z="17" S="112" T="304" R="85" G="169" B="221" A="255"/>
<Vtx X="-33" Y="40" Z="26" S="304" T="112" R="73" G="169" B="199" A="255"/>
<Vtx X="-33" Y="46" Z="21" S="112" T="112" R="67" G="156" B="216" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="-16" T="176" R="66" G="161" B="204" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="176" T="-16" R="77" G="160" B="224" A="255"/>
<Vtx X="-14" Y="61" Z="25" S="304" T="432" R="70" G="163" B="206" A="255"/>
<Vtx X="-15" Y="63" Z="20" S="432" T="304" R="70" G="163" B="206" A="255"/>
<Vtx X="-9" Y="62" Z="22" S="496" T="496" R="252" G="142" B="201" A="255"/>
<Vtx X="-18" Y="55" Z="25" S="112" T="304" R="82" G="178" B="199" A="255"/>
<Vtx X="-19" Y="59" Z="16" S="304" T="112" R="84" G="167" B="221" A="255"/>
<Vtx X="-24" Y="55" Z="20" S="112" T="112" R="98" G="186" B="214" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="-16" T="176" R="93" G="177" B="221" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="81" G="171" B="209" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="176" T="-16" R="90" G="184" B="203" A="255"/>
<Vtx X="-24" Y="55" Z="20" S="112" T="112" R="98" G="186" B="214" A="255"/>
<Vtx X="-19" Y="59" Z="16" S="304" T="112" R="84" G="167" B="221" A="255"/>
<Vtx X="-41" Y="48" Z="3" S="304" T="432" R="90" G="174" B="219" A="255"/>
<Vtx X="-43" Y="44" Z="6" S="432" T="304" R="90" G="174" B="219" A="255"/>
<Vtx X="-42" Y="43" Z="0" S="496" T="496" R="116" G="211" B="26" A="255"/>
<Vtx X="-34" Y="50" Z="6" S="112" T="304" R="74" G="162" B="214" A="255"/>
<Vtx X="-38" Y="43" Z="11" S="304" T="112" R="84" G="179" B="200" A="255"/>
<Vtx X="-34" Y="49" Z="14" S="112" T="112" R="65" G="167" B="192" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="-16" T="176" R="76" G="176" B="194" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="176" T="-16" R="66" G="161" B="204" A="255"/>
<Vtx X="-18" Y="44" Z="-40" S="304" T="432" R="13" G="174" B="96" A="255"/>
<Vtx X="-20" Y="48" Z="-37" S="432" T="304" R="13" G="174" B="96" A="255"/>
<Vtx X="-23" Y="43" Z="-37" S="496" T="496" R="81" G="211" B="87" A="255"/>
<Vtx X="-11" Y="43" Z="-39" S="112" T="304" R="250" G="179" B="101" A="255"/>
<Vtx X="-14" Y="50" Z="-33" S="304" T="112" R="1" G="161" B="85" A="255"/>
<Vtx X="-8" Y="49" Z="-36" S="112" T="112" R="235" G="167" B="88" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="-16" T="176" R="245" G="160" B="82" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="176" T="-16" R="239" G="177" B="98" A="255"/>
<Vtx X="8" Y="63" Z="-23" S="304" T="432" R="248" G="163" B="86" A="255"/>
<Vtx X="12" Y="61" Z="-25" S="432" T="304" R="248" G="163" B="86" A="255"/>
<Vtx X="12" Y="62" Z="-19" S="496" T="496" R="206" G="142" B="24" A="255"/>
<Vtx X="2" Y="59" Z="-24" S="112" T="304" R="11" G="167" B="90" A="255"/>
<Vtx X="10" Y="55" Z="-28" S="304" T="112" R="248" G="178" B="100" A="255"/>
<Vtx X="3" Y="55" Z="-31" S="112" T="112" R="14" G="187" B="105" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="-16" T="176" R="1" G="184" B="104" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="176" T="-16" R="16" G="176" B="97" A="255"/>
<Vtx X="2" Y="37" Z="-47" S="304" T="432" R="0" G="181" B="102" A="255"/>
<Vtx X="-4" Y="37" Z="-47" S="432" T="304" R="0" G="181" B="102" A="255"/>
<Vtx X="-1" Y="32" Z="-47" S="496" T="496" R="0" G="255" B="127" A="255"/>
<Vtx X="4" Y="40" Z="-42" S="112" T="304" R="244" G="169" B="91" A="255"/>
<Vtx X="-4" Y="37" Z="-47" S="432" T="304" R="0" G="181" B="102" A="255"/>
<Vtx X="2" Y="37" Z="-47" S="304" T="432" R="0" G="181" B="102" A="255"/>
<Vtx X="-6" Y="40" Z="-42" S="304" T="112" R="12" G="169" B="92" A="255"/>
<Vtx X="-1" Y="46" Z="-39" S="112" T="112" R="1" G="156" B="78" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="-16" T="176" R="12" G="161" B="84" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="176" T="-16" R="245" G="160" B="82" A="255"/>
<Vtx X="-15" Y="61" Z="-25" S="304" T="432" R="8" G="163" B="86" A="255"/>
<Vtx X="-10" Y="63" Z="-23" S="432" T="304" R="8" G="163" B="86" A="255"/>
<Vtx X="-15" Y="62" Z="-19" S="496" T="496" R="50" G="142" B="24" A="255"/>
<Vtx X="-12" Y="55" Z="-28" S="112" T="304" R="8" G="178" B="100" A="255"/>
<Vtx X="-4" Y="59" Z="-24" S="304" T="112" R="245" G="167" B="90" A="255"/>
<Vtx X="-5" Y="55" Z="-31" S="112" T="112" R="243" G="186" B="105" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="-16" T="176" R="239" G="177" B="98" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="176" T="-16" R="1" G="184" B="104" A="255"/>
<Vtx X="18" Y="48" Z="-37" S="304" T="432" R="243" G="174" B="96" A="255"/>
<Vtx X="16" Y="44" Z="-40" S="432" T="304" R="243" G="174" B="96" A="255"/>
<Vtx X="21" Y="43" Z="-37" S="496" T="496" R="175" G="211" B="87" A="255"/>
<Vtx X="12" Y="50" Z="-33" S="112" T="304" R="255" G="162" B="85" A="255"/>
<Vtx X="9" Y="43" Z="-39" S="304" T="112" R="6" G="179" B="101" A="255"/>
<Vtx X="5" Y="49" Z="-36" S="112" T="112" R="23" G="167" B="88" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="-16" T="176" R="16" G="176" B="97" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="176" T="-16" R="12" G="161" B="84" A="255"/>
<Vtx X="44" Y="44" Z="4" S="304" T="432" R="166" G="174" B="219" A="255"/>
<Vtx X="42" Y="48" Z="1" S="432" T="304" R="166" G="174" B="219" A="255"/>
<Vtx X="43" Y="43" Z="-2" S="496" T="496" R="140" G="211" B="26" A="255"/>
<Vtx X="39" Y="43" Z="10" S="112" T="304" R="172" G="179" B="200" A="255"/>
<Vtx X="35" Y="50" Z="4" S="304" T="112" R="182" G="161" B="215" A="255"/>
<Vtx X="35" Y="49" Z="11" S="112" T="112" R="190" G="167" B="194" A="255"/>
<Vtx X="34" Y="46" Z="14" S="-16" T="176" R="190" G="160" B="205" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="31" Y="51" Z="10" S="176" T="-16" R="180" G="177" B="193" A="255"/>
<Vtx X="35" Y="49" Z="11" S="112" T="112" R="190" G="167" B="194" A="255"/>
<Vtx X="35" Y="50" Z="4" S="304" T="112" R="182" G="161" B="215" A="255"/>
<Vtx X="16" Y="63" Z="18" S="304" T="432" R="186" G="163" B="206" A="255"/>
<Vtx X="15" Y="61" Z="23" S="432" T="304" R="186" G="163" B="206" A="255"/>
<Vtx X="11" Y="62" Z="20" S="496" T="496" R="4" G="142" B="201" A="255"/>
<Vtx X="20" Y="59" Z="14" S="112" T="304" R="172" G="167" B="221" A="255"/>
<Vtx X="19" Y="55" Z="23" S="304" T="112" R="174" G="178" B="199" A="255"/>
<Vtx X="25" Y="55" Z="18" S="112" T="112" R="158" G="187" B="216" A="255"/>
<Vtx X="26" Y="54" Z="14" S="-16" T="176" R="165" G="184" B="205" A="255"/>
<Vtx X="25" Y="51" Z="20" S="176" T="-16" R="164" G="176" B="221" A="255"/>
<Vtx X="40" Y="37" Z="25" S="304" T="432" R="167" G="181" B="205" A="255"/>
<Vtx X="43" Y="37" Z="20" S="432" T="304" R="167" G="181" B="205" A="255"/>
<Vtx X="41" Y="32" Z="23" S="496" T="496" R="146" G="255" B="193" A="255"/>
<Vtx X="34" Y="40" Z="24" S="112" T="304" R="183" G="169" B="200" A="255"/>
<Vtx X="39" Y="40" Z="15" S="304" T="112" R="170" G="169" B="221" A="255"/>
<Vtx X="34" Y="46" Z="19" S="112" T="112" R="188" G="156" B="218" A="255"/>
<Vtx X="30" Y="46" Z="20" S="-16" T="176" R="177" G="161" B="225" A="255"/>
<Vtx X="34" Y="46" Z="14" S="176" T="-16" R="190" G="160" B="205" A="255"/>
<Vtx X="29" Y="61" Z="0" S="304" T="432" R="178" G="163" B="220" A="255"/>
<Vtx X="25" Y="63" Z="3" S="432" T="304" R="178" G="163" B="220" A="255"/>
<Vtx X="24" Y="62" Z="-3" S="496" T="496" R="211" G="142" B="31" A="255"/>
<Vtx X="31" Y="55" Z="3" S="112" T="304" R="166" G="178" B="214" A="255"/>
<Vtx X="23" Y="59" Z="8" S="304" T="112" R="184" G="167" B="201" A="255"/>
<Vtx X="29" Y="55" Z="11" S="112" T="112" R="171" G="186" B="192" A="255"/>
<Vtx X="31" Y="51" Z="10" S="-16" T="176" R="180" G="177" B="193" A="255"/>
<Vtx X="26" Y="54" Z="14" S="176" T="-16" R="165" G="184" B="205" A="255"/>
<Vtx X="23" Y="48" Z="34" S="304" T="432" R="179" G="174" B="197" A="255"/>
<Vtx X="27" Y="44" Z="34" S="432" T="304" R="179" G="174" B="197" A="255"/>
<Vtx X="21" Y="43" Z="36" S="496" T="496" R="221" G="211" B="143" A="255"/>
<Vtx X="22" Y="50" Z="27" S="112" T="304" R="183" G="162" B="213" A="255"/>
<Vtx X="22" Y="50" Z="27" S="112" T="304" R="183" G="162" B="213" A="255"/>
<Vtx X="29" Y="43" Z="27" S="304" T="112" R="166" G="179" B="211" A="255"/>
<Vtx X="27" Y="44" Z="34" S="432" T="304" R="179" G="174" B="197" A="255"/>
<Vtx X="29" Y="49" Z="22" S="112" T="112" R="168" G="167" B="232" A="255"/>
<Vtx X="25" Y="51" Z="20" S="-16" T="176" R="164" G="176" B="221" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="30" Y="46" Z="20" S="176" T="-16" R="177" G="161" B="225" A="255"/>
<Vtx X="-25" Y="44" Z="36" S="304" T="432" R="179" G="82" B="59" A="255"/>
<Vtx X="-20" Y="43" Z="38" S="496" T="496" R="221" G="45" B="113" A="255"/>
<Vtx X="-22" Y="48" Z="36" S="432" T="304" R="179" G="82" B="59" A="255"/>
<Vtx X="-28" Y="43" Z="29" S="112" T="304" R="166" G="77" B="45" A="255"/>
<Vtx X="-21" Y="50" Z="29" S="304" T="112" R="183" G="95" B="43" A="255"/>
<Vtx X="-27" Y="49" Z="25" S="112" T="112" R="169" G="89" B="26" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="176" T="-16" R="163" G="79" B="35" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="175" G="85" B="47" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="-16" T="176" R="179" G="96" B="32" A="255"/>
<Vtx X="-24" Y="63" Z="4" S="304" T="432" R="178" G="93" B="36" A="255"/>
<Vtx X="-23" Y="62" Z="-1" S="496" T="496" R="211" G="114" B="225" A="255"/>
<Vtx X="-28" Y="61" Z="2" S="432" T="304" R="178" G="93" B="36" A="255"/>
<Vtx X="-22" Y="59" Z="10" S="112" T="304" R="184" G="89" B="55" A="255"/>
<Vtx X="-30" Y="55" Z="5" S="304" T="112" R="166" G="78" B="43" A="255"/>
<Vtx X="-28" Y="55" Z="13" S="112" T="112" R="172" G="70" B="65" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="176" T="-16" R="180" G="80" B="62" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="-16" T="176" R="166" G="72" B="53" A="255"/>
<Vtx X="-42" Y="37" Z="22" S="304" T="432" R="167" G="75" B="51" A="255"/>
<Vtx X="-40" Y="32" Z="25" S="496" T="496" R="146" G="1" B="63" A="255"/>
<Vtx X="-39" Y="37" Z="27" S="432" T="304" R="167" G="75" B="51" A="255"/>
<Vtx X="-38" Y="40" Z="17" S="112" T="304" R="171" G="87" B="35" A="255"/>
<Vtx X="-33" Y="40" Z="26" S="304" T="112" R="183" G="87" B="57" A="255"/>
<Vtx X="-33" Y="46" Z="21" S="112" T="112" R="189" G="100" B="40" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="176" T="-16" R="179" G="96" B="32" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="-16" T="176" R="190" G="95" B="52" A="255"/>
<Vtx X="-14" Y="61" Z="25" S="304" T="432" R="186" G="93" B="50" A="255"/>
<Vtx X="-9" Y="62" Z="22" S="496" T="496" R="4" G="114" B="55" A="255"/>
<Vtx X="-15" Y="63" Z="20" S="432" T="304" R="186" G="93" B="50" A="255"/>
<Vtx X="-18" Y="55" Z="25" S="112" T="304" R="174" G="78" B="57" A="255"/>
<Vtx X="-19" Y="59" Z="16" S="304" T="112" R="172" G="89" B="35" A="255"/>
<Vtx X="-24" Y="55" Z="20" S="112" T="112" R="158" G="70" B="42" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="176" T="-16" R="166" G="72" B="53" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="175" G="85" B="47" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="-16" T="176" R="163" G="79" B="35" A="255"/>
<Vtx X="-41" Y="48" Z="3" S="304" T="432" R="166" G="82" B="37" A="255"/>
<Vtx X="-42" Y="43" Z="0" S="496" T="496" R="140" G="45" B="230" A="255"/>
<Vtx X="-43" Y="44" Z="6" S="432" T="304" R="166" G="82" B="37" A="255"/>
<Vtx X="-34" Y="50" Z="6" S="112" T="304" R="182" G="94" B="42" A="255"/>
<Vtx X="-38" Y="43" Z="11" S="304" T="112" R="172" G="77" B="56" A="255"/>
<Vtx X="-34" Y="49" Z="14" S="112" T="112" R="191" G="89" B="64" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="176" T="-16" R="190" G="95" B="52" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="-16" T="176" R="180" G="80" B="62" A="255"/>
<Vtx X="-18" Y="44" Z="-40" S="304" T="432" R="243" G="82" B="160" A="255"/>
<Vtx X="-23" Y="43" Z="-37" S="496" T="496" R="175" G="45" B="169" A="255"/>
<Vtx X="-20" Y="48" Z="-37" S="432" T="304" R="243" G="82" B="160" A="255"/>
<Vtx X="-11" Y="43" Z="-39" S="112" T="304" R="6" G="77" B="155" A="255"/>
<Vtx X="-14" Y="50" Z="-33" S="304" T="112" R="255" G="95" B="171" A="255"/>
<Vtx X="-8" Y="49" Z="-36" S="112" T="112" R="21" G="89" B="168" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="176" T="-16" R="17" G="79" B="158" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="-16" T="176" R="11" G="96" B="174" A="255"/>
<Vtx X="8" Y="63" Z="-23" S="304" T="432" R="8" G="93" B="170" A="255"/>
<Vtx X="12" Y="62" Z="-19" S="496" T="496" R="50" G="114" B="232" A="255"/>
<Vtx X="12" Y="61" Z="-25" S="432" T="304" R="8" G="93" B="170" A="255"/>
<Vtx X="2" Y="59" Z="-24" S="112" T="304" R="245" G="89" B="166" A="255"/>
<Vtx X="10" Y="55" Z="-28" S="304" T="112" R="8" G="78" B="156" A="255"/>
<Vtx X="3" Y="55" Z="-31" S="112" T="112" R="242" G="69" B="151" A="255"/>
<Vtx X="3" Y="55" Z="-31" S="112" T="112" R="242" G="69" B="151" A="255"/>
<Vtx X="10" Y="55" Z="-28" S="304" T="112" R="8" G="78" B="156" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="176" T="-16" R="240" G="80" B="159" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="-16" T="176" R="255" G="72" B="152" A="255"/>
<Vtx X="2" Y="59" Z="-24" S="112" T="304" R="245" G="89" B="166" A="255"/>
<Vtx X="2" Y="37" Z="-47" S="304" T="432" R="0" G="75" B="154" A="255"/>
<Vtx X="-1" Y="32" Z="-47" S="496" T="496" R="0" G="1" B="129" A="255"/>
<Vtx X="-4" Y="37" Z="-47" S="432" T="304" R="0" G="75" B="154" A="255"/>
<Vtx X="4" Y="40" Z="-42" S="112" T="304" R="12" G="87" B="165" A="255"/>
<Vtx X="-6" Y="40" Z="-42" S="304" T="112" R="244" G="87" B="164" A="255"/>
<Vtx X="-1" Y="46" Z="-39" S="112" T="112" R="255" G="100" B="178" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="176" T="-16" R="11" G="96" B="174" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="-16" T="176" R="244" G="95" B="172" A="255"/>
<Vtx X="-15" Y="61" Z="-25" S="304" T="432" R="248" G="93" B="170" A="255"/>
<Vtx X="-15" Y="62" Z="-19" S="496" T="496" R="206" G="114" B="232" A="255"/>
<Vtx X="-10" Y="63" Z="-23" S="432" T="304" R="248" G="93" B="170" A="255"/>
<Vtx X="-12" Y="55" Z="-28" S="112" T="304" R="248" G="78" B="156" A="255"/>
<Vtx X="-4" Y="59" Z="-24" S="304" T="112" R="11" G="89" B="166" A="255"/>
<Vtx X="-5" Y="55" Z="-31" S="112" T="112" R="13" G="70" B="151" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="176" T="-16" R="255" G="72" B="152" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="-16" T="176" R="17" G="79" B="158" A="255"/>
<Vtx X="18" Y="48" Z="-37" S="304" T="432" R="13" G="82" B="160" A="255"/>
<Vtx X="21" Y="43" Z="-37" S="496" T="496" R="81" G="45" B="169" A="255"/>
<Vtx X="16" Y="44" Z="-40" S="432" T="304" R="13" G="82" B="160" A="255"/>
<Vtx X="12" Y="50" Z="-33" S="112" T="304" R="1" G="94" B="171" A="255"/>
<Vtx X="9" Y="43" Z="-39" S="304" T="112" R="250" G="77" B="155" A="255"/>
<Vtx X="5" Y="49" Z="-36" S="112" T="112" R="233" G="89" B="168" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="176" T="-16" R="244" G="95" B="172" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="-16" T="176" R="240" G="80" B="159" A="255"/>
<Vtx X="44" Y="44" Z="4" S="304" T="432" R="90" G="82" B="37" A="255"/>
<Vtx X="43" Y="43" Z="-2" S="496" T="496" R="116" G="45" B="230" A="255"/>
<Vtx X="42" Y="48" Z="1" S="432" T="304" R="90" G="82" B="37" A="255"/>
<Vtx X="39" Y="43" Z="10" S="112" T="304" R="84" G="77" B="56" A="255"/>
<Vtx X="35" Y="50" Z="4" S="304" T="112" R="74" G="95" B="41" A="255"/>
<Vtx X="35" Y="49" Z="11" S="112" T="112" R="66" G="89" B="62" A="255"/>
<Vtx X="31" Y="51" Z="10" S="176" T="-16" R="76" G="79" B="63" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="34" Y="46" Z="14" S="-16" T="176" R="66" G="96" B="51" A="255"/>
<Vtx X="16" Y="63" Z="18" S="304" T="432" R="70" G="93" B="50" A="255"/>
<Vtx X="11" Y="62" Z="20" S="496" T="496" R="252" G="114" B="55" A="255"/>
<Vtx X="15" Y="61" Z="23" S="432" T="304" R="70" G="93" B="50" A="255"/>
<Vtx X="20" Y="59" Z="14" S="112" T="304" R="84" G="89" B="35" A="255"/>
<Vtx X="19" Y="55" Z="23" S="304" T="112" R="82" G="78" B="57" A="255"/>
<Vtx X="25" Y="55" Z="18" S="112" T="112" R="98" G="69" B="40" A="255"/>
<Vtx X="25" Y="51" Z="20" S="176" T="-16" R="92" G="80" B="35" A="255"/>
<Vtx X="26" Y="54" Z="14" S="-16" T="176" R="91" G="72" B="51" A="255"/>
<Vtx X="40" Y="37" Z="25" S="304" T="432" R="89" G="75" B="51" A="255"/>
<Vtx X="41" Y="32" Z="23" S="496" T="496" R="110" G="1" B="63" A="255"/>
<Vtx X="43" Y="37" Z="20" S="432" T="304" R="89" G="75" B="51" A="255"/>
<Vtx X="34" Y="40" Z="24" S="112" T="304" R="73" G="87" B="56" A="255"/>
<Vtx X="39" Y="40" Z="15" S="304" T="112" R="86" G="87" B="35" A="255"/>
<Vtx X="34" Y="46" Z="19" S="112" T="112" R="68" G="100" B="38" A="255"/>
<Vtx X="34" Y="46" Z="14" S="176" T="-16" R="66" G="96" B="51" A="255"/>
<Vtx X="30" Y="46" Z="20" S="-16" T="176" R="79" G="95" B="31" A="255"/>
<Vtx X="29" Y="61" Z="0" S="304" T="432" R="78" G="93" B="36" A="255"/>
<Vtx X="24" Y="62" Z="-3" S="496" T="496" R="45" G="114" B="225" A="255"/>
<Vtx X="25" Y="63" Z="3" S="432" T="304" R="78" G="93" B="36" A="255"/>
<Vtx X="31" Y="55" Z="3" S="112" T="304" R="90" G="78" B="42" A="255"/>
<Vtx X="23" Y="59" Z="8" S="304" T="112" R="72" G="89" B="55" A="255"/>
<Vtx X="29" Y="55" Z="11" S="112" T="112" R="85" G="70" B="64" A="255"/>
<Vtx X="26" Y="54" Z="14" S="176" T="-16" R="91" G="72" B="51" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="31" Y="51" Z="10" S="-16" T="176" R="76" G="79" B="63" A="255"/>
<Vtx X="29" Y="55" Z="11" S="112" T="112" R="85" G="70" B="64" A="255"/>
<Vtx X="31" Y="55" Z="3" S="112" T="304" R="90" G="78" B="42" A="255"/>
<Vtx X="23" Y="48" Z="34" S="304" T="432" R="77" G="82" B="59" A="255"/>
<Vtx X="21" Y="43" Z="36" S="496" T="496" R="35" G="45" B="113" A="255"/>
<Vtx X="27" Y="44" Z="34" S="432" T="304" R="77" G="82" B="59" A="255"/>
<Vtx X="22" Y="50" Z="27" S="112" T="304" R="73" G="94" B="43" A="255"/>
<Vtx X="29" Y="43" Z="27" S="304" T="112" R="90" G="77" B="45" A="255"/>
<Vtx X="29" Y="49" Z="22" S="112" T="112" R="88" G="89" B="24" A="255"/>
<Vtx X="30" Y="46" Z="20" S="176" T="-16" R="79" G="95" B="31" A="255"/>
<Vtx X="25" Y="51" Z="20" S="-16" T="176" R="92" G="80" B="35" A="255"/>
</Vertex>
@@ -0,0 +1,268 @@
<Vertex Version="0">
<Vtx X="-38" Y="39" Z="35" S="304" T="432" R="80" G="167" B="214" A="255"/>
<Vtx X="-33" Y="42" Z="38" S="432" T="304" R="80" G="167" B="214" A="255"/>
<Vtx X="-36" Y="33" Z="43" S="496" T="496" R="84" G="191" B="187" A="255"/>
<Vtx X="-37" Y="42" Z="25" S="112" T="304" R="67" G="153" B="223" A="255"/>
<Vtx X="-28" Y="47" Z="32" S="304" T="112" R="83" G="163" B="234" A="255"/>
<Vtx X="-30" Y="46" Z="23" S="112" T="112" R="74" G="157" B="229" A="255"/>
<Vtx X="-34" Y="47" Z="21" S="-16" T="176" R="48" G="142" B="228" A="255"/>
<Vtx X="-27" Y="48" Z="17" S="-16" T="-16" R="82" G="171" B="209" A="255"/>
<Vtx X="-28" Y="50" Z="24" S="176" T="-16" R="88" G="165" B="0" A="255"/>
<Vtx X="-17" Y="69" Z="15" S="304" T="432" R="85" G="175" B="207" A="255"/>
<Vtx X="-20" Y="69" Z="9" S="432" T="304" R="85" G="175" B="207" A="255"/>
<Vtx X="-12" Y="75" Z="8" S="496" T="496" R="61" G="150" B="221" A="255"/>
<Vtx X="-20" Y="61" Z="20" S="112" T="304" R="99" G="190" B="211" A="255"/>
<Vtx X="-26" Y="61" Z="9" S="304" T="112" R="88" G="190" B="193" A="255"/>
<Vtx X="-25" Y="55" Z="16" S="112" T="112" R="95" G="191" B="201" A="255"/>
<Vtx X="-25" Y="55" Z="20" S="-16" T="176" R="111" G="203" B="224" A="255"/>
<Vtx X="-29" Y="55" Z="14" S="176" T="-16" R="83" G="203" B="176" A="255"/>
<Vtx X="-48" Y="42" Z="12" S="304" T="432" R="76" G="167" B="208" A="255"/>
<Vtx X="-48" Y="39" Z="17" S="432" T="304" R="76" G="167" B="208" A="255"/>
<Vtx X="-54" Y="33" Z="11" S="496" T="496" R="102" G="191" B="218" A="255"/>
<Vtx X="-40" Y="47" Z="10" S="112" T="304" R="60" G="163" B="195" A="255"/>
<Vtx X="-39" Y="42" Z="21" S="304" T="112" R="62" G="153" B="215" A="255"/>
<Vtx X="-34" Y="46" Z="16" S="112" T="112" R="61" G="157" B="205" A="255"/>
<Vtx X="-34" Y="50" Z="14" S="-16" T="176" R="44" G="165" B="180" A="255"/>
<Vtx X="-34" Y="47" Z="21" S="176" T="-16" R="48" G="142" B="228" A="255"/>
<Vtx X="-19" Y="56" Z="37" S="304" T="432" R="85" G="172" B="214" A="255"/>
<Vtx X="-16" Y="60" Z="33" S="432" T="304" R="85" G="172" B="214" A="255"/>
<Vtx X="-10" Y="59" Z="41" S="496" T="496" R="59" G="166" B="189" A="255"/>
<Vtx X="-24" Y="50" Z="31" S="112" T="304" R="91" G="170" B="234" A="255"/>
<Vtx X="-19" Y="59" Z="24" S="304" T="112" R="99" G="185" B="221" A="255"/>
<Vtx X="-25" Y="52" Z="23" S="112" T="112" R="95" G="176" B="230" A="255"/>
<Vtx X="-28" Y="50" Z="24" S="-16" T="176" R="88" G="165" B="0" A="255"/>
<Vtx X="-27" Y="48" Z="17" S="-16" T="-16" R="82" G="171" B="209" A="255"/>
<Vtx X="-25" Y="55" Z="20" S="176" T="-16" R="111" G="203" B="224" A="255"/>
<Vtx X="-25" Y="52" Z="23" S="112" T="112" R="95" G="176" B="230" A="255"/>
<Vtx X="-19" Y="59" Z="24" S="304" T="112" R="99" G="185" B="221" A="255"/>
<Vtx X="-36" Y="60" Z="-1" S="304" T="432" R="79" G="172" B="203" A="255"/>
<Vtx X="-40" Y="56" Z="-1" S="432" T="304" R="79" G="172" B="203" A="255"/>
<Vtx X="-39" Y="59" Z="-10" S="496" T="496" R="88" G="166" B="239" A="255"/>
<Vtx X="-29" Y="59" Z="7" S="112" T="304" R="80" G="185" B="188" A="255"/>
<Vtx X="-38" Y="50" Z="7" S="304" T="112" R="64" G="170" B="189" A="255"/>
<Vtx X="-31" Y="52" Z="12" S="112" T="112" R="70" G="176" B="186" A="255"/>
<Vtx X="-29" Y="55" Z="14" S="-16" T="176" R="83" G="203" B="176" A="255"/>
<Vtx X="-34" Y="50" Z="14" S="176" T="-16" R="44" G="165" B="180" A="255"/>
<Vtx X="-11" Y="39" Z="-50" S="304" T="432" R="252" G="167" B="90" A="255"/>
<Vtx X="-16" Y="42" Z="-48" S="432" T="304" R="252" G="167" B="90" A="255"/>
<Vtx X="-19" Y="33" Z="-52" S="496" T="496" R="18" G="191" B="108" A="255"/>
<Vtx X="-3" Y="42" Z="-45" S="112" T="304" R="251" G="153" B="74" A="255"/>
<Vtx X="-13" Y="47" Z="-40" S="304" T="112" R="233" G="163" B="83" A="255"/>
<Vtx X="-5" Y="46" Z="-38" S="112" T="112" R="242" G="157" B="78" A="255"/>
<Vtx X="-1" Y="47" Z="-40" S="-16" T="176" R="0" G="142" B="55" A="255"/>
<Vtx X="-1" Y="48" Z="-32" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-7" Y="50" Z="-37" S="176" T="-16" R="212" G="165" B="76" A="255"/>
<Vtx X="-4" Y="69" Z="-22" S="304" T="432" R="0" G="175" B="98" A="255"/>
<Vtx X="2" Y="69" Z="-22" S="432" T="304" R="0" G="175" B="98" A="255"/>
<Vtx X="-1" Y="75" Z="-14" S="496" T="496" R="0" G="150" B="70" A="255"/>
<Vtx X="-7" Y="61" Z="-27" S="112" T="304" R="245" G="190" B="108" A="255"/>
<Vtx X="5" Y="61" Z="-27" S="304" T="112" R="11" G="190" B="108" A="255"/>
<Vtx X="-1" Y="55" Z="-30" S="112" T="112" R="0" G="191" B="109" A="255"/>
<Vtx X="-5" Y="55" Z="-32" S="-16" T="176" R="228" G="203" B="112" A="255"/>
<Vtx X="3" Y="55" Z="-32" S="176" T="-16" R="28" G="203" B="112" A="255"/>
<Vtx X="14" Y="42" Z="-48" S="304" T="432" R="4" G="167" B="90" A="255"/>
<Vtx X="9" Y="39" Z="-50" S="432" T="304" R="4" G="167" B="90" A="255"/>
<Vtx X="17" Y="33" Z="-52" S="496" T="496" R="238" G="191" B="108" A="255"/>
<Vtx X="11" Y="47" Z="-40" S="112" T="304" R="23" G="163" B="83" A="255"/>
<Vtx X="9" Y="39" Z="-50" S="432" T="304" R="4" G="167" B="90" A="255"/>
<Vtx X="14" Y="42" Z="-48" S="304" T="432" R="4" G="167" B="90" A="255"/>
<Vtx X="1" Y="42" Z="-45" S="304" T="112" R="5" G="153" B="74" A="255"/>
<Vtx X="3" Y="46" Z="-38" S="112" T="112" R="14" G="157" B="78" A="255"/>
<Vtx X="5" Y="50" Z="-37" S="-16" T="176" R="44" G="165" B="76" A="255"/>
<Vtx X="-1" Y="48" Z="-32" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-1" Y="47" Z="-40" S="176" T="-16" R="0" G="142" B="55" A="255"/>
<Vtx X="-23" Y="56" Z="-35" S="304" T="432" R="250" G="172" B="95" A="255"/>
<Vtx X="-21" Y="60" Z="-31" S="432" T="304" R="250" G="172" B="95" A="255"/>
<Vtx X="-31" Y="59" Z="-29" S="496" T="496" R="29" G="166" B="85" A="255"/>
<Vtx X="-15" Y="50" Z="-37" S="112" T="304" R="230" G="170" B="90" A="255"/>
<Vtx X="-11" Y="59" Z="-29" S="304" T="112" R="237" G="185" B="104" A="255"/>
<Vtx X="-7" Y="52" Z="-33" S="112" T="112" R="231" G="176" B="96" A="255"/>
<Vtx X="-7" Y="50" Z="-37" S="-16" T="176" R="212" G="165" B="76" A="255"/>
<Vtx X="-5" Y="55" Z="-32" S="176" T="-16" R="228" G="203" B="112" A="255"/>
<Vtx X="19" Y="60" Z="-31" S="304" T="432" R="6" G="172" B="95" A="255"/>
<Vtx X="21" Y="56" Z="-35" S="432" T="304" R="6" G="172" B="95" A="255"/>
<Vtx X="28" Y="59" Z="-29" S="496" T="496" R="227" G="166" B="85" A="255"/>
<Vtx X="9" Y="59" Z="-29" S="112" T="304" R="19" G="185" B="104" A="255"/>
<Vtx X="13" Y="50" Z="-37" S="304" T="112" R="26" G="170" B="90" A="255"/>
<Vtx X="5" Y="52" Z="-33" S="112" T="112" R="25" G="176" B="96" A="255"/>
<Vtx X="3" Y="55" Z="-32" S="-16" T="176" R="28" G="203" B="112" A="255"/>
<Vtx X="5" Y="50" Z="-37" S="176" T="-16" R="44" G="165" B="76" A="255"/>
<Vtx X="49" Y="39" Z="15" S="304" T="432" R="180" G="167" B="208" A="255"/>
<Vtx X="50" Y="42" Z="10" S="432" T="304" R="180" G="167" B="208" A="255"/>
<Vtx X="55" Y="33" Z="9" S="496" T="496" R="154" G="191" B="218" A="255"/>
<Vtx X="40" Y="42" Z="19" S="112" T="304" R="194" G="153" B="215" A="255"/>
<Vtx X="41" Y="47" Z="8" S="304" T="112" R="196" G="163" B="195" A="255"/>
<Vtx X="35" Y="46" Z="15" S="112" T="112" R="195" G="157" B="205" A="255"/>
<Vtx X="35" Y="47" Z="19" S="-16" T="176" R="208" G="142" B="228" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="35" Y="50" Z="12" S="176" T="-16" R="212" G="165" B="180" A="255"/>
<Vtx X="35" Y="46" Z="15" S="112" T="112" R="195" G="157" B="205" A="255"/>
<Vtx X="41" Y="47" Z="8" S="304" T="112" R="196" G="163" B="195" A="255"/>
<Vtx X="21" Y="69" Z="8" S="304" T="432" R="171" G="175" B="207" A="255"/>
<Vtx X="18" Y="69" Z="13" S="432" T="304" R="171" G="175" B="207" A="255"/>
<Vtx X="13" Y="75" Z="6" S="496" T="496" R="195" G="150" B="221" A="255"/>
<Vtx X="27" Y="61" Z="7" S="112" T="304" R="168" G="190" B="193" A="255"/>
<Vtx X="21" Y="61" Z="18" S="304" T="112" R="157" G="190" B="211" A="255"/>
<Vtx X="26" Y="55" Z="14" S="112" T="112" R="161" G="191" B="201" A="255"/>
<Vtx X="30" Y="55" Z="12" S="-16" T="176" R="173" G="203" B="176" A="255"/>
<Vtx X="26" Y="55" Z="18" S="176" T="-16" R="145" G="203" B="224" A="255"/>
<Vtx X="34" Y="42" Z="36" S="304" T="432" R="176" G="167" B="214" A="255"/>
<Vtx X="39" Y="39" Z="33" S="432" T="304" R="176" G="167" B="214" A="255"/>
<Vtx X="37" Y="33" Z="41" S="496" T="496" R="172" G="191" B="187" A="255"/>
<Vtx X="29" Y="47" Z="30" S="112" T="304" R="173" G="163" B="234" A="255"/>
<Vtx X="38" Y="42" Z="23" S="304" T="112" R="189" G="153" B="223" A="255"/>
<Vtx X="31" Y="46" Z="21" S="112" T="112" R="182" G="157" B="229" A="255"/>
<Vtx X="29" Y="50" Z="23" S="-16" T="176" R="168" G="165" B="0" A="255"/>
<Vtx X="35" Y="47" Z="19" S="176" T="-16" R="208" G="142" B="228" A="255"/>
<Vtx X="41" Y="56" Z="-2" S="304" T="432" R="177" G="172" B="203" A="255"/>
<Vtx X="37" Y="60" Z="-3" S="432" T="304" R="177" G="172" B="203" A="255"/>
<Vtx X="40" Y="59" Z="-12" S="496" T="496" R="168" G="166" B="239" A="255"/>
<Vtx X="39" Y="50" Z="6" S="112" T="304" R="192" G="170" B="189" A="255"/>
<Vtx X="30" Y="59" Z="5" S="304" T="112" R="176" G="185" B="188" A="255"/>
<Vtx X="32" Y="52" Z="10" S="112" T="112" R="186" G="176" B="186" A="255"/>
<Vtx X="35" Y="50" Z="12" S="-16" T="176" R="212" G="165" B="180" A="255"/>
<Vtx X="30" Y="55" Z="12" S="176" T="-16" R="173" G="203" B="176" A="255"/>
<Vtx X="17" Y="60" Z="31" S="304" T="432" R="171" G="172" B="214" A="255"/>
<Vtx X="20" Y="56" Z="35" S="432" T="304" R="171" G="172" B="214" A="255"/>
<Vtx X="11" Y="59" Z="39" S="496" T="496" R="197" G="166" B="189" A="255"/>
<Vtx X="21" Y="59" Z="22" S="112" T="304" R="157" G="185" B="221" A="255"/>
<Vtx X="21" Y="59" Z="22" S="112" T="304" R="157" G="185" B="221" A="255"/>
<Vtx X="26" Y="50" Z="29" S="304" T="112" R="165" G="170" B="234" A="255"/>
<Vtx X="20" Y="56" Z="35" S="432" T="304" R="171" G="172" B="214" A="255"/>
<Vtx X="26" Y="52" Z="21" S="112" T="112" R="161" G="176" B="230" A="255"/>
<Vtx X="26" Y="55" Z="18" S="-16" T="176" R="145" G="203" B="224" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="29" Y="50" Z="23" S="176" T="-16" R="168" G="165" B="0" A="255"/>
<Vtx X="-38" Y="39" Z="35" S="304" T="432" R="176" G="89" B="42" A="255"/>
<Vtx X="-36" Y="33" Z="43" S="496" T="496" R="172" G="65" B="69" A="255"/>
<Vtx X="-33" Y="42" Z="38" S="432" T="304" R="176" G="89" B="42" A="255"/>
<Vtx X="-37" Y="42" Z="25" S="112" T="304" R="189" G="103" B="33" A="255"/>
<Vtx X="-28" Y="47" Z="32" S="304" T="112" R="173" G="93" B="22" A="255"/>
<Vtx X="-30" Y="46" Z="23" S="112" T="112" R="182" G="99" B="27" A="255"/>
<Vtx X="-28" Y="50" Z="24" S="176" T="-16" R="168" G="91" B="0" A="255"/>
<Vtx X="-27" Y="48" Z="17" S="-16" T="-16" R="174" G="85" B="47" A="255"/>
<Vtx X="-34" Y="47" Z="21" S="-16" T="176" R="208" G="114" B="28" A="255"/>
<Vtx X="-17" Y="69" Z="15" S="304" T="432" R="171" G="81" B="49" A="255"/>
<Vtx X="-12" Y="75" Z="8" S="496" T="496" R="195" G="106" B="35" A="255"/>
<Vtx X="-20" Y="69" Z="9" S="432" T="304" R="171" G="81" B="49" A="255"/>
<Vtx X="-20" Y="61" Z="20" S="112" T="304" R="157" G="66" B="45" A="255"/>
<Vtx X="-26" Y="61" Z="9" S="304" T="112" R="168" G="66" B="63" A="255"/>
<Vtx X="-25" Y="55" Z="16" S="112" T="112" R="161" G="65" B="55" A="255"/>
<Vtx X="-29" Y="55" Z="14" S="176" T="-16" R="173" G="53" B="80" A="255"/>
<Vtx X="-25" Y="55" Z="20" S="-16" T="176" R="145" G="53" B="32" A="255"/>
<Vtx X="-48" Y="42" Z="12" S="304" T="432" R="180" G="89" B="48" A="255"/>
<Vtx X="-54" Y="33" Z="11" S="496" T="496" R="154" G="65" B="38" A="255"/>
<Vtx X="-48" Y="39" Z="17" S="432" T="304" R="180" G="89" B="48" A="255"/>
<Vtx X="-40" Y="47" Z="10" S="112" T="304" R="196" G="93" B="61" A="255"/>
<Vtx X="-39" Y="42" Z="21" S="304" T="112" R="194" G="103" B="41" A="255"/>
<Vtx X="-34" Y="46" Z="16" S="112" T="112" R="195" G="99" B="51" A="255"/>
<Vtx X="-34" Y="47" Z="21" S="176" T="-16" R="208" G="114" B="28" A="255"/>
<Vtx X="-34" Y="50" Z="14" S="-16" T="176" R="212" G="91" B="76" A="255"/>
<Vtx X="-19" Y="56" Z="37" S="304" T="432" R="171" G="84" B="42" A="255"/>
<Vtx X="-10" Y="59" Z="41" S="496" T="496" R="197" G="90" B="67" A="255"/>
<Vtx X="-16" Y="60" Z="33" S="432" T="304" R="171" G="84" B="42" A="255"/>
<Vtx X="-24" Y="50" Z="31" S="112" T="304" R="165" G="86" B="22" A="255"/>
<Vtx X="-19" Y="59" Z="24" S="304" T="112" R="157" G="71" B="35" A="255"/>
<Vtx X="-25" Y="52" Z="23" S="112" T="112" R="161" G="80" B="26" A="255"/>
<Vtx X="-25" Y="55" Z="20" S="176" T="-16" R="145" G="53" B="32" A="255"/>
<Vtx X="-27" Y="48" Z="17" S="-16" T="-16" R="174" G="85" B="47" A="255"/>
<Vtx X="-28" Y="50" Z="24" S="-16" T="176" R="168" G="91" B="0" A="255"/>
<Vtx X="-36" Y="60" Z="-1" S="304" T="432" R="177" G="84" B="53" A="255"/>
<Vtx X="-39" Y="59" Z="-10" S="496" T="496" R="168" G="90" B="17" A="255"/>
<Vtx X="-40" Y="56" Z="-1" S="432" T="304" R="177" G="84" B="53" A="255"/>
<Vtx X="-29" Y="59" Z="7" S="112" T="304" R="176" G="71" B="68" A="255"/>
<Vtx X="-38" Y="50" Z="7" S="304" T="112" R="192" G="86" B="67" A="255"/>
<Vtx X="-31" Y="52" Z="12" S="112" T="112" R="186" G="80" B="70" A="255"/>
<Vtx X="-34" Y="50" Z="14" S="176" T="-16" R="212" G="91" B="76" A="255"/>
<Vtx X="-29" Y="55" Z="14" S="-16" T="176" R="173" G="53" B="80" A="255"/>
<Vtx X="-11" Y="39" Z="-50" S="304" T="432" R="4" G="89" B="166" A="255"/>
<Vtx X="-19" Y="33" Z="-52" S="496" T="496" R="238" G="65" B="148" A="255"/>
<Vtx X="-16" Y="42" Z="-48" S="432" T="304" R="4" G="89" B="166" A="255"/>
<Vtx X="-3" Y="42" Z="-45" S="112" T="304" R="5" G="103" B="182" A="255"/>
<Vtx X="-13" Y="47" Z="-40" S="304" T="112" R="23" G="93" B="173" A="255"/>
<Vtx X="-5" Y="46" Z="-38" S="112" T="112" R="14" G="99" B="178" A="255"/>
<Vtx X="-7" Y="50" Z="-37" S="176" T="-16" R="44" G="91" B="180" A="255"/>
<Vtx X="-1" Y="48" Z="-32" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-1" Y="47" Z="-40" S="-16" T="176" R="0" G="114" B="201" A="255"/>
<Vtx X="-4" Y="69" Z="-22" S="304" T="432" R="0" G="81" B="158" A="255"/>
<Vtx X="-1" Y="75" Z="-14" S="496" T="496" R="0" G="106" B="186" A="255"/>
<Vtx X="2" Y="69" Z="-22" S="432" T="304" R="0" G="81" B="158" A="255"/>
<Vtx X="-7" Y="61" Z="-27" S="112" T="304" R="11" G="66" B="148" A="255"/>
<Vtx X="5" Y="61" Z="-27" S="304" T="112" R="245" G="66" B="148" A="255"/>
<Vtx X="-1" Y="55" Z="-30" S="112" T="112" R="0" G="65" B="147" A="255"/>
<Vtx X="-1" Y="55" Z="-30" S="112" T="112" R="0" G="65" B="147" A="255"/>
<Vtx X="5" Y="61" Z="-27" S="304" T="112" R="245" G="66" B="148" A="255"/>
<Vtx X="3" Y="55" Z="-32" S="176" T="-16" R="228" G="53" B="144" A="255"/>
<Vtx X="-1" Y="48" Z="-32" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-5" Y="55" Z="-32" S="-16" T="176" R="28" G="53" B="144" A="255"/>
<Vtx X="-7" Y="61" Z="-27" S="112" T="304" R="11" G="66" B="148" A="255"/>
<Vtx X="14" Y="42" Z="-48" S="304" T="432" R="252" G="89" B="166" A="255"/>
<Vtx X="17" Y="33" Z="-52" S="496" T="496" R="18" G="65" B="148" A="255"/>
<Vtx X="9" Y="39" Z="-50" S="432" T="304" R="252" G="89" B="166" A="255"/>
<Vtx X="11" Y="47" Z="-40" S="112" T="304" R="233" G="93" B="173" A="255"/>
<Vtx X="1" Y="42" Z="-45" S="304" T="112" R="251" G="103" B="182" A="255"/>
<Vtx X="3" Y="46" Z="-38" S="112" T="112" R="242" G="99" B="178" A="255"/>
<Vtx X="-1" Y="47" Z="-40" S="176" T="-16" R="0" G="114" B="201" A="255"/>
<Vtx X="5" Y="50" Z="-37" S="-16" T="176" R="212" G="91" B="180" A="255"/>
<Vtx X="-23" Y="56" Z="-35" S="304" T="432" R="6" G="84" B="161" A="255"/>
<Vtx X="-31" Y="59" Z="-29" S="496" T="496" R="227" G="90" B="171" A="255"/>
<Vtx X="-21" Y="60" Z="-31" S="432" T="304" R="6" G="84" B="161" A="255"/>
<Vtx X="-15" Y="50" Z="-37" S="112" T="304" R="26" G="86" B="166" A="255"/>
<Vtx X="-11" Y="59" Z="-29" S="304" T="112" R="19" G="71" B="152" A="255"/>
<Vtx X="-7" Y="52" Z="-33" S="112" T="112" R="25" G="80" B="160" A="255"/>
<Vtx X="-5" Y="55" Z="-32" S="176" T="-16" R="28" G="53" B="144" A="255"/>
<Vtx X="-7" Y="50" Z="-37" S="-16" T="176" R="44" G="91" B="180" A="255"/>
<Vtx X="19" Y="60" Z="-31" S="304" T="432" R="250" G="84" B="161" A="255"/>
<Vtx X="28" Y="59" Z="-29" S="496" T="496" R="29" G="90" B="171" A="255"/>
<Vtx X="21" Y="56" Z="-35" S="432" T="304" R="250" G="84" B="161" A="255"/>
<Vtx X="9" Y="59" Z="-29" S="112" T="304" R="237" G="71" B="152" A="255"/>
<Vtx X="13" Y="50" Z="-37" S="304" T="112" R="230" G="86" B="166" A="255"/>
<Vtx X="5" Y="52" Z="-33" S="112" T="112" R="231" G="80" B="160" A="255"/>
<Vtx X="5" Y="50" Z="-37" S="176" T="-16" R="212" G="91" B="180" A="255"/>
<Vtx X="3" Y="55" Z="-32" S="-16" T="176" R="228" G="53" B="144" A="255"/>
<Vtx X="49" Y="39" Z="15" S="304" T="432" R="76" G="89" B="48" A="255"/>
<Vtx X="55" Y="33" Z="9" S="496" T="496" R="102" G="65" B="38" A="255"/>
<Vtx X="50" Y="42" Z="10" S="432" T="304" R="76" G="89" B="48" A="255"/>
<Vtx X="40" Y="42" Z="19" S="112" T="304" R="62" G="103" B="41" A="255"/>
<Vtx X="41" Y="47" Z="8" S="304" T="112" R="60" G="93" B="61" A="255"/>
<Vtx X="35" Y="46" Z="15" S="112" T="112" R="61" G="99" B="51" A="255"/>
<Vtx X="35" Y="50" Z="12" S="176" T="-16" R="44" G="91" B="76" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="35" Y="47" Z="19" S="-16" T="176" R="48" G="114" B="28" A="255"/>
<Vtx X="21" Y="69" Z="8" S="304" T="432" R="85" G="81" B="49" A="255"/>
<Vtx X="13" Y="75" Z="6" S="496" T="496" R="61" G="106" B="35" A="255"/>
<Vtx X="18" Y="69" Z="13" S="432" T="304" R="85" G="81" B="49" A="255"/>
<Vtx X="27" Y="61" Z="7" S="112" T="304" R="88" G="66" B="63" A="255"/>
<Vtx X="21" Y="61" Z="18" S="304" T="112" R="99" G="66" B="45" A="255"/>
<Vtx X="26" Y="55" Z="14" S="112" T="112" R="95" G="65" B="55" A="255"/>
<Vtx X="26" Y="55" Z="18" S="176" T="-16" R="111" G="53" B="32" A="255"/>
<Vtx X="30" Y="55" Z="12" S="-16" T="176" R="83" G="53" B="80" A="255"/>
<Vtx X="34" Y="42" Z="36" S="304" T="432" R="80" G="89" B="42" A="255"/>
<Vtx X="37" Y="33" Z="41" S="496" T="496" R="84" G="65" B="69" A="255"/>
<Vtx X="39" Y="39" Z="33" S="432" T="304" R="80" G="89" B="42" A="255"/>
<Vtx X="29" Y="47" Z="30" S="112" T="304" R="83" G="93" B="22" A="255"/>
<Vtx X="38" Y="42" Z="23" S="304" T="112" R="67" G="103" B="33" A="255"/>
<Vtx X="31" Y="46" Z="21" S="112" T="112" R="74" G="99" B="27" A="255"/>
<Vtx X="35" Y="47" Z="19" S="176" T="-16" R="48" G="114" B="28" A="255"/>
<Vtx X="29" Y="50" Z="23" S="-16" T="176" R="88" G="91" B="0" A="255"/>
<Vtx X="41" Y="56" Z="-2" S="304" T="432" R="79" G="84" B="53" A="255"/>
<Vtx X="40" Y="59" Z="-12" S="496" T="496" R="88" G="90" B="17" A="255"/>
<Vtx X="37" Y="60" Z="-3" S="432" T="304" R="79" G="84" B="53" A="255"/>
<Vtx X="39" Y="50" Z="6" S="112" T="304" R="64" G="86" B="67" A="255"/>
<Vtx X="30" Y="59" Z="5" S="304" T="112" R="80" G="71" B="68" A="255"/>
<Vtx X="32" Y="52" Z="10" S="112" T="112" R="70" G="80" B="70" A="255"/>
<Vtx X="30" Y="55" Z="12" S="176" T="-16" R="83" G="53" B="80" A="255"/>
<Vtx X="28" Y="48" Z="15" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="35" Y="50" Z="12" S="-16" T="176" R="44" G="91" B="76" A="255"/>
<Vtx X="32" Y="52" Z="10" S="112" T="112" R="70" G="80" B="70" A="255"/>
<Vtx X="39" Y="50" Z="6" S="112" T="304" R="64" G="86" B="67" A="255"/>
<Vtx X="17" Y="60" Z="31" S="304" T="432" R="85" G="84" B="42" A="255"/>
<Vtx X="11" Y="59" Z="39" S="496" T="496" R="59" G="90" B="67" A="255"/>
<Vtx X="20" Y="56" Z="35" S="432" T="304" R="85" G="84" B="42" A="255"/>
<Vtx X="21" Y="59" Z="22" S="112" T="304" R="99" G="71" B="35" A="255"/>
<Vtx X="26" Y="50" Z="29" S="304" T="112" R="91" G="86" B="22" A="255"/>
<Vtx X="26" Y="52" Z="21" S="112" T="112" R="95" G="80" B="26" A="255"/>
<Vtx X="29" Y="50" Z="23" S="176" T="-16" R="88" G="91" B="0" A="255"/>
<Vtx X="26" Y="55" Z="18" S="-16" T="176" R="111" G="53" B="32" A="255"/>
</Vertex>
@@ -0,0 +1,10 @@
<Vertex Version="0">
<Vtx X="-107" Y="0" Z="-93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="-107" Y="0" Z="93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="-107" Y="98" Z="93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="-107" Y="98" Z="-93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="107" Y="0" Z="-93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="107" Y="0" Z="93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="107" Y="98" Z="93" S="0" T="0" R="0" G="0" B="0" A="0"/>
<Vtx X="107" Y="98" Z="-93" S="0" T="0" R="0" G="0" B="0" A="0"/>
</Vertex>
@@ -0,0 +1,14 @@
<DisplayList Version="0">
<ClearGeometryMode G_LIGHTING="1" />
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_cull" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<SetGeometryMode G_LIGHTING="1" />
<CullDisplayList Start="0" End="7"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushHeartDL_f3dlite_shrubbery"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushHeartDL_tri_0"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushHeartDL_f3dlite_leaf"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushHeartDL_tri_1"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushHeartDL_f3dlite_flower_heart"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushHeartDL_tri_2"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,8 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="14"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="0" V01="5" V02="6" Flag0="0" V10="7" V11="8" V12="9" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="11" Flag0="0" V10="7" V11="12" V12="13" Flag1="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,134 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="1" Flag0="0" V10="5" V11="4" V12="3" Flag1="0"/>
<Triangles2 V00="3" V01="6" V02="5" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="5" V11="8" V12="4" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="10" V12="9" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="10" Flag0="0" V10="14" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="12" V01="15" V02="14" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="14" V11="16" V12="13" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="18" V12="17" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="18" Flag0="0" V10="22" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="20" V01="23" V02="22" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="22" V11="24" V12="21" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="26" V12="25" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="26" Flag0="0" V10="30" V11="29" V12="28" Flag1="0"/>
<Triangles2 V00="28" V01="31" V02="30" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_1" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="20" V02="17" Flag0="0" V10="17" V11="20" V12="16" Flag1="0"/>
<Triangles2 V00="21" V01="22" V02="23" Flag0="0" V10="24" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="26" V11="25" V12="24" Flag1="0"/>
<Triangles2 V00="24" V01="27" V02="26" Flag0="0" V10="19" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="19" V01="28" V02="26" Flag0="0" V10="26" V11="28" V12="25" Flag1="0"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_1" VertexBufferIndex="0" VertexOffset="64" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="3" V02="0" Flag0="0" V10="0" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="4" V02="5" Flag0="0" V10="6" V11="7" V12="4" Flag1="0"/>
<Triangles2 V00="4" V01="7" V02="3" Flag0="0" V10="8" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="9" V02="8" Flag0="0" V10="11" V11="12" V12="9" Flag1="0"/>
<Triangles2 V00="13" V01="12" V02="11" Flag0="0" V10="11" V11="14" V12="13" Flag1="0"/>
<Triangles2 V00="6" V01="13" V02="14" Flag0="0" V10="6" V11="15" V12="13" Flag1="0"/>
<Triangles2 V00="13" V01="15" V02="12" Flag0="0" V10="16" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="17" V02="16" Flag0="0" V10="19" V11="20" V12="17" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="19" Flag0="0" V10="19" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="6" V01="21" V02="22" Flag0="0" V10="6" V11="23" V12="21" Flag1="0"/>
<Triangles2 V00="21" V01="23" V02="20" Flag0="0" V10="24" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="25" V02="24" Flag0="0" V10="27" V11="28" V12="25" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="27" Flag0="0" V10="27" V11="30" V12="29" Flag1="0"/>
<Triangle1 V00="31" V01="29" V02="30"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_1" VertexBufferIndex="0" VertexOffset="96" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="0" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="0" V01="19" V02="17" Flag0="0" V10="17" V11="19" V12="16" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="23" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="23" V01="24" V02="21" Flag0="0" V10="25" V11="24" V12="23" Flag1="0"/>
<Triangles2 V00="23" V01="26" V02="25" Flag0="0" V10="0" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="0" V01="27" V02="25" Flag0="0" V10="25" V11="27" V12="24" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="31" V11="29" V12="28" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_1" VertexBufferIndex="0" VertexOffset="128" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="0" V01="4" V02="3" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="6" V02="3" Flag0="0" V10="3" V11="6" V12="1" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="9" Flag0="0" V10="10" V11="7" V12="9" Flag1="0"/>
<Triangles2 V00="10" V01="9" V02="11" Flag0="0" V10="12" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="12" Flag0="0" V10="10" V11="12" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="19" V11="16" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="21" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="22" Flag0="0" V10="14" V11="21" V12="22" Flag1="0"/>
<Triangles2 V00="14" V01="23" V02="21" Flag0="0" V10="19" V11="21" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="27" V11="24" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="29" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="14" V11="29" V12="30" Flag1="0"/>
<Triangles2 V00="14" V01="31" V02="29" Flag0="0" V10="27" V11="29" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_1" VertexBufferIndex="0" VertexOffset="160" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="24" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="20" V11="22" V12="25" Flag1="0"/>
<Triangles2 V00="26" V01="27" V02="28" Flag0="0" V10="29" V11="26" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="31" V11="29" V12="30" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_1" VertexBufferIndex="0" VertexOffset="192" Count="30"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="0" Flag0="0" V10="5" V11="0" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="7" V02="8" Flag0="0" V10="9" V11="6" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="11" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="10" V02="12" Flag0="0" V10="3" V11="11" V12="12" Flag1="0"/>
<Triangles2 V00="3" V01="13" V02="11" Flag0="0" V10="9" V11="11" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="16" Flag0="0" V10="17" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="16" V02="18" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="3" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="3" V01="21" V02="19" Flag0="0" V10="17" V11="19" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="23" V02="24" Flag0="0" V10="25" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="24" V02="26" Flag0="0" V10="27" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="3" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="3" V01="29" V02="27" Flag0="0" V10="25" V11="27" V12="29" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_1" VertexBufferIndex="0" VertexOffset="222" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="20" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="25" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="27" V02="29" Flag0="0" V10="30" V11="28" V12="29" Flag1="0"/>
<Triangles2 V00="30" V01="29" V02="31" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_1" VertexBufferIndex="0" VertexOffset="254" Count="12"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="2" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="4" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="6" V02="8" Flag0="0" V10="9" V11="7" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="7" V11="9" V12="11" Flag1="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,134 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="1" Flag0="0" V10="5" V11="4" V12="3" Flag1="0"/>
<Triangles2 V00="3" V01="6" V02="5" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="5" V11="8" V12="4" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="10" V12="9" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="10" Flag0="0" V10="14" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="12" V01="15" V02="14" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="14" V11="16" V12="13" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="18" V12="17" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="18" Flag0="0" V10="22" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="20" V01="23" V02="22" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="22" V11="24" V12="21" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="26" V12="25" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="26" Flag0="0" V10="30" V11="29" V12="28" Flag1="0"/>
<Triangles2 V00="28" V01="31" V02="30" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_2" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="20" V02="17" Flag0="0" V10="17" V11="20" V12="16" Flag1="0"/>
<Triangles2 V00="21" V01="22" V02="23" Flag0="0" V10="24" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="26" V11="25" V12="24" Flag1="0"/>
<Triangles2 V00="24" V01="27" V02="26" Flag0="0" V10="19" V11="26" V12="27" Flag1="0"/>
<Triangles2 V00="19" V01="28" V02="26" Flag0="0" V10="26" V11="28" V12="25" Flag1="0"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_2" VertexBufferIndex="0" VertexOffset="64" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="0" V11="3" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="3" V02="0" Flag0="0" V10="0" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="4" V02="5" Flag0="0" V10="6" V11="7" V12="4" Flag1="0"/>
<Triangles2 V00="4" V01="7" V02="3" Flag0="0" V10="8" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="9" V02="8" Flag0="0" V10="11" V11="12" V12="9" Flag1="0"/>
<Triangles2 V00="13" V01="12" V02="11" Flag0="0" V10="11" V11="14" V12="13" Flag1="0"/>
<Triangles2 V00="6" V01="13" V02="14" Flag0="0" V10="6" V11="15" V12="13" Flag1="0"/>
<Triangles2 V00="13" V01="15" V02="12" Flag0="0" V10="16" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="17" V02="16" Flag0="0" V10="19" V11="20" V12="17" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="19" Flag0="0" V10="19" V11="22" V12="21" Flag1="0"/>
<Triangles2 V00="6" V01="21" V02="22" Flag0="0" V10="6" V11="23" V12="21" Flag1="0"/>
<Triangles2 V00="21" V01="23" V02="20" Flag0="0" V10="24" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="25" V02="24" Flag0="0" V10="27" V11="28" V12="25" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="27" Flag0="0" V10="27" V11="30" V12="29" Flag1="0"/>
<Triangle1 V00="31" V01="29" V02="30"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_2" VertexBufferIndex="0" VertexOffset="96" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="2" V11="1" V12="3" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="5" V12="4" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="9" V11="8" V12="7" Flag1="0"/>
<Triangles2 V00="7" V01="10" V02="9" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="9" V11="11" V12="8" Flag1="0"/>
<Triangles2 V00="12" V01="13" V02="14" Flag0="0" V10="15" V11="13" V12="12" Flag1="0"/>
<Triangles2 V00="15" V01="16" V02="13" Flag0="0" V10="17" V11="16" V12="15" Flag1="0"/>
<Triangles2 V00="15" V01="18" V02="17" Flag0="0" V10="0" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="0" V01="19" V02="17" Flag0="0" V10="17" V11="19" V12="16" Flag1="0"/>
<Triangles2 V00="20" V01="21" V02="22" Flag0="0" V10="23" V11="21" V12="20" Flag1="0"/>
<Triangles2 V00="23" V01="24" V02="21" Flag0="0" V10="25" V11="24" V12="23" Flag1="0"/>
<Triangles2 V00="23" V01="26" V02="25" Flag0="0" V10="0" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="0" V01="27" V02="25" Flag0="0" V10="25" V11="27" V12="24" Flag1="0"/>
<Triangles2 V00="28" V01="29" V02="30" Flag0="0" V10="31" V11="29" V12="28" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_2" VertexBufferIndex="0" VertexOffset="128" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="1" V12="0" Flag1="0"/>
<Triangles2 V00="0" V01="4" V02="3" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="6" V02="3" Flag0="0" V10="3" V11="6" V12="1" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="9" Flag0="0" V10="10" V11="7" V12="9" Flag1="0"/>
<Triangles2 V00="10" V01="9" V02="11" Flag0="0" V10="12" V11="10" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="12" Flag0="0" V10="10" V11="12" V12="15" Flag1="0"/>
<Triangles2 V00="16" V01="17" V02="18" Flag0="0" V10="19" V11="16" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="21" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="21" V01="20" V02="22" Flag0="0" V10="14" V11="21" V12="22" Flag1="0"/>
<Triangles2 V00="14" V01="23" V02="21" Flag0="0" V10="19" V11="21" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="26" Flag0="0" V10="27" V11="24" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="29" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="14" V11="29" V12="30" Flag1="0"/>
<Triangles2 V00="14" V01="31" V02="29" Flag0="0" V10="27" V11="29" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_2" VertexBufferIndex="0" VertexOffset="160" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="24" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="24" V01="25" V02="22" Flag0="0" V10="20" V11="22" V12="25" Flag1="0"/>
<Triangles2 V00="26" V01="27" V02="28" Flag0="0" V10="29" V11="26" V12="28" Flag1="0"/>
<Triangles2 V00="29" V01="28" V02="30" Flag0="0" V10="31" V11="29" V12="30" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_2" VertexBufferIndex="0" VertexOffset="192" Count="30"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="4" V02="0" Flag0="0" V10="5" V11="0" V12="4" Flag1="0"/>
<Triangles2 V00="6" V01="7" V02="8" Flag0="0" V10="9" V11="6" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="11" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="11" V01="10" V02="12" Flag0="0" V10="3" V11="11" V12="12" Flag1="0"/>
<Triangles2 V00="3" V01="13" V02="11" Flag0="0" V10="9" V11="11" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="15" V02="16" Flag0="0" V10="17" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="16" V02="18" Flag0="0" V10="19" V11="17" V12="18" Flag1="0"/>
<Triangles2 V00="19" V01="18" V02="20" Flag0="0" V10="3" V11="19" V12="20" Flag1="0"/>
<Triangles2 V00="3" V01="21" V02="19" Flag0="0" V10="17" V11="19" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="23" V02="24" Flag0="0" V10="25" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="24" V02="26" Flag0="0" V10="27" V11="25" V12="26" Flag1="0"/>
<Triangles2 V00="27" V01="26" V02="28" Flag0="0" V10="3" V11="27" V12="28" Flag1="0"/>
<Triangles2 V00="3" V01="29" V02="27" Flag0="0" V10="25" V11="27" V12="29" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_2" VertexBufferIndex="0" VertexOffset="222" Count="32"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="0" V12="2" Flag1="0"/>
<Triangles2 V00="3" V01="2" V02="4" Flag0="0" V10="5" V11="3" V12="4" Flag1="0"/>
<Triangles2 V00="5" V01="4" V02="6" Flag0="0" V10="7" V11="5" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="8" V02="5" Flag0="0" V10="3" V11="5" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="10" V02="11" Flag0="0" V10="12" V11="9" V12="11" Flag1="0"/>
<Triangles2 V00="12" V01="11" V02="13" Flag0="0" V10="14" V11="12" V12="13" Flag1="0"/>
<Triangles2 V00="14" V01="13" V02="15" Flag0="0" V10="7" V11="14" V12="15" Flag1="0"/>
<Triangles2 V00="7" V01="16" V02="14" Flag0="0" V10="12" V11="14" V12="16" Flag1="0"/>
<Triangles2 V00="17" V01="18" V02="19" Flag0="0" V10="20" V11="17" V12="19" Flag1="0"/>
<Triangles2 V00="20" V01="19" V02="21" Flag0="0" V10="22" V11="20" V12="21" Flag1="0"/>
<Triangles2 V00="22" V01="21" V02="23" Flag0="0" V10="7" V11="22" V12="23" Flag1="0"/>
<Triangles2 V00="7" V01="24" V02="22" Flag0="0" V10="20" V11="22" V12="24" Flag1="0"/>
<Triangles2 V00="25" V01="26" V02="27" Flag0="0" V10="28" V11="25" V12="27" Flag1="0"/>
<Triangles2 V00="28" V01="27" V02="29" Flag0="0" V10="30" V11="28" V12="29" Flag1="0"/>
<Triangles2 V00="30" V01="29" V02="31" Flag0="0" V10="7" V11="30" V12="31" Flag1="0"/>
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushHeartDL_vtx_2" VertexBufferIndex="0" VertexOffset="254" Count="12"/>
<Triangles2 V00="0" V01="1" V02="2" Flag0="0" V10="3" V11="2" V12="1" Flag1="0"/>
<Triangles2 V00="4" V01="5" V02="6" Flag0="0" V10="7" V11="4" V12="6" Flag1="0"/>
<Triangles2 V00="7" V01="6" V02="8" Flag0="0" V10="9" V11="7" V12="8" Flag1="0"/>
<Triangles2 V00="9" V01="8" V02="10" Flag0="0" V10="0" V11="9" V12="10" Flag1="0"/>
<Triangles2 V00="0" V01="11" V02="9" Flag0="0" V10="7" V11="9" V12="11" Flag1="0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,16 @@
<Vertex Version="0">
<Vtx X="0" Y="98" Z="0" S="558" T="-664" R="0" G="0" B="129" A="255"/>
<Vtx X="54" Y="0" Z="93" S="-281" T="1008" R="110" G="0" B="192" A="255"/>
<Vtx X="-54" Y="0" Z="-93" S="1398" T="1008" R="110" G="0" B="192" A="255"/>
<Vtx X="-107" Y="0" Z="0" S="-281" T="1008" R="0" G="0" B="127" A="255"/>
<Vtx X="107" Y="0" Z="0" S="1398" T="1008" R="0" G="0" B="127" A="255"/>
<Vtx X="54" Y="0" Z="-93" S="-281" T="1008" R="146" G="0" B="192" A="255"/>
<Vtx X="-54" Y="0" Z="93" S="1398" T="1008" R="146" G="0" B="192" A="255"/>
<Vtx X="0" Y="98" Z="0" S="558" T="-664" R="0" G="0" B="127" A="255"/>
<Vtx X="-54" Y="0" Z="-93" S="1398" T="1008" R="146" G="0" B="64" A="255"/>
<Vtx X="54" Y="0" Z="93" S="-281" T="1008" R="146" G="0" B="64" A="255"/>
<Vtx X="107" Y="0" Z="0" S="1398" T="1008" R="0" G="0" B="129" A="255"/>
<Vtx X="-107" Y="0" Z="0" S="-281" T="1008" R="0" G="0" B="129" A="255"/>
<Vtx X="-54" Y="0" Z="93" S="1398" T="1008" R="110" G="0" B="64" A="255"/>
<Vtx X="54" Y="0" Z="-93" S="-281" T="1008" R="110" G="0" B="64" A="255"/>
</Vertex>
@@ -0,0 +1,268 @@
<Vertex Version="0">
<Vtx X="-25" Y="44" Z="36" S="304" T="432" R="77" G="174" B="197" A="255"/>
<Vtx X="-22" Y="48" Z="36" S="432" T="304" R="77" G="174" B="197" A="255"/>
<Vtx X="-20" Y="43" Z="38" S="496" T="496" R="35" G="211" B="143" A="255"/>
<Vtx X="-28" Y="43" Z="29" S="112" T="304" R="90" G="179" B="211" A="255"/>
<Vtx X="-21" Y="50" Z="29" S="304" T="112" R="73" G="161" B="213" A="255"/>
<Vtx X="-27" Y="49" Z="25" S="112" T="112" R="87" G="167" B="230" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="-16" T="176" R="77" G="160" B="224" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="81" G="171" B="209" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="176" T="-16" R="93" G="177" B="221" A="255"/>
<Vtx X="-24" Y="63" Z="4" S="304" T="432" R="78" G="163" B="220" A="255"/>
<Vtx X="-28" Y="61" Z="2" S="432" T="304" R="78" G="163" B="220" A="255"/>
<Vtx X="-23" Y="62" Z="-1" S="496" T="496" R="45" G="142" B="31" A="255"/>
<Vtx X="-22" Y="59" Z="10" S="112" T="304" R="72" G="167" B="201" A="255"/>
<Vtx X="-30" Y="55" Z="5" S="304" T="112" R="90" G="178" B="213" A="255"/>
<Vtx X="-28" Y="55" Z="13" S="112" T="112" R="84" G="186" B="191" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="-16" T="176" R="90" G="184" B="203" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="176" T="-16" R="76" G="176" B="194" A="255"/>
<Vtx X="-42" Y="37" Z="22" S="304" T="432" R="89" G="181" B="205" A="255"/>
<Vtx X="-39" Y="37" Z="27" S="432" T="304" R="89" G="181" B="205" A="255"/>
<Vtx X="-40" Y="32" Z="25" S="496" T="496" R="110" G="255" B="193" A="255"/>
<Vtx X="-38" Y="40" Z="17" S="112" T="304" R="85" G="169" B="221" A="255"/>
<Vtx X="-33" Y="40" Z="26" S="304" T="112" R="73" G="169" B="199" A="255"/>
<Vtx X="-33" Y="46" Z="21" S="112" T="112" R="67" G="156" B="216" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="-16" T="176" R="66" G="161" B="204" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="176" T="-16" R="77" G="160" B="224" A="255"/>
<Vtx X="-14" Y="61" Z="25" S="304" T="432" R="70" G="163" B="206" A="255"/>
<Vtx X="-15" Y="63" Z="20" S="432" T="304" R="70" G="163" B="206" A="255"/>
<Vtx X="-9" Y="62" Z="22" S="496" T="496" R="252" G="142" B="201" A="255"/>
<Vtx X="-18" Y="55" Z="25" S="112" T="304" R="82" G="178" B="199" A="255"/>
<Vtx X="-19" Y="59" Z="16" S="304" T="112" R="84" G="167" B="221" A="255"/>
<Vtx X="-24" Y="55" Z="20" S="112" T="112" R="98" G="186" B="214" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="-16" T="176" R="93" G="177" B="221" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="81" G="171" B="209" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="176" T="-16" R="90" G="184" B="203" A="255"/>
<Vtx X="-24" Y="55" Z="20" S="112" T="112" R="98" G="186" B="214" A="255"/>
<Vtx X="-19" Y="59" Z="16" S="304" T="112" R="84" G="167" B="221" A="255"/>
<Vtx X="-41" Y="48" Z="3" S="304" T="432" R="90" G="174" B="219" A="255"/>
<Vtx X="-43" Y="44" Z="6" S="432" T="304" R="90" G="174" B="219" A="255"/>
<Vtx X="-42" Y="43" Z="0" S="496" T="496" R="116" G="211" B="26" A="255"/>
<Vtx X="-34" Y="50" Z="6" S="112" T="304" R="74" G="162" B="214" A="255"/>
<Vtx X="-38" Y="43" Z="11" S="304" T="112" R="84" G="179" B="200" A="255"/>
<Vtx X="-34" Y="49" Z="14" S="112" T="112" R="65" G="167" B="192" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="-16" T="176" R="76" G="176" B="194" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="176" T="-16" R="66" G="161" B="204" A="255"/>
<Vtx X="-18" Y="44" Z="-40" S="304" T="432" R="13" G="174" B="96" A="255"/>
<Vtx X="-20" Y="48" Z="-37" S="432" T="304" R="13" G="174" B="96" A="255"/>
<Vtx X="-23" Y="43" Z="-37" S="496" T="496" R="81" G="211" B="87" A="255"/>
<Vtx X="-11" Y="43" Z="-39" S="112" T="304" R="250" G="179" B="101" A="255"/>
<Vtx X="-14" Y="50" Z="-33" S="304" T="112" R="1" G="161" B="85" A="255"/>
<Vtx X="-8" Y="49" Z="-36" S="112" T="112" R="235" G="167" B="88" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="-16" T="176" R="245" G="160" B="82" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="176" T="-16" R="239" G="177" B="98" A="255"/>
<Vtx X="8" Y="63" Z="-23" S="304" T="432" R="248" G="163" B="86" A="255"/>
<Vtx X="12" Y="61" Z="-25" S="432" T="304" R="248" G="163" B="86" A="255"/>
<Vtx X="12" Y="62" Z="-19" S="496" T="496" R="206" G="142" B="24" A="255"/>
<Vtx X="2" Y="59" Z="-24" S="112" T="304" R="11" G="167" B="90" A="255"/>
<Vtx X="10" Y="55" Z="-28" S="304" T="112" R="248" G="178" B="100" A="255"/>
<Vtx X="3" Y="55" Z="-31" S="112" T="112" R="14" G="187" B="105" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="-16" T="176" R="1" G="184" B="104" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="176" T="-16" R="16" G="176" B="97" A="255"/>
<Vtx X="2" Y="37" Z="-47" S="304" T="432" R="0" G="181" B="102" A="255"/>
<Vtx X="-4" Y="37" Z="-47" S="432" T="304" R="0" G="181" B="102" A="255"/>
<Vtx X="-1" Y="32" Z="-47" S="496" T="496" R="0" G="255" B="127" A="255"/>
<Vtx X="4" Y="40" Z="-42" S="112" T="304" R="244" G="169" B="91" A="255"/>
<Vtx X="-4" Y="37" Z="-47" S="432" T="304" R="0" G="181" B="102" A="255"/>
<Vtx X="2" Y="37" Z="-47" S="304" T="432" R="0" G="181" B="102" A="255"/>
<Vtx X="-6" Y="40" Z="-42" S="304" T="112" R="12" G="169" B="92" A="255"/>
<Vtx X="-1" Y="46" Z="-39" S="112" T="112" R="1" G="156" B="78" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="-16" T="176" R="12" G="161" B="84" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="171" B="94" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="176" T="-16" R="245" G="160" B="82" A="255"/>
<Vtx X="-15" Y="61" Z="-25" S="304" T="432" R="8" G="163" B="86" A="255"/>
<Vtx X="-10" Y="63" Z="-23" S="432" T="304" R="8" G="163" B="86" A="255"/>
<Vtx X="-15" Y="62" Z="-19" S="496" T="496" R="50" G="142" B="24" A="255"/>
<Vtx X="-12" Y="55" Z="-28" S="112" T="304" R="8" G="178" B="100" A="255"/>
<Vtx X="-4" Y="59" Z="-24" S="304" T="112" R="245" G="167" B="90" A="255"/>
<Vtx X="-5" Y="55" Z="-31" S="112" T="112" R="243" G="186" B="105" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="-16" T="176" R="239" G="177" B="98" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="176" T="-16" R="1" G="184" B="104" A="255"/>
<Vtx X="18" Y="48" Z="-37" S="304" T="432" R="243" G="174" B="96" A="255"/>
<Vtx X="16" Y="44" Z="-40" S="432" T="304" R="243" G="174" B="96" A="255"/>
<Vtx X="21" Y="43" Z="-37" S="496" T="496" R="175" G="211" B="87" A="255"/>
<Vtx X="12" Y="50" Z="-33" S="112" T="304" R="255" G="162" B="85" A="255"/>
<Vtx X="9" Y="43" Z="-39" S="304" T="112" R="6" G="179" B="101" A="255"/>
<Vtx X="5" Y="49" Z="-36" S="112" T="112" R="23" G="167" B="88" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="-16" T="176" R="16" G="176" B="97" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="176" T="-16" R="12" G="161" B="84" A="255"/>
<Vtx X="44" Y="44" Z="4" S="304" T="432" R="166" G="174" B="219" A="255"/>
<Vtx X="42" Y="48" Z="1" S="432" T="304" R="166" G="174" B="219" A="255"/>
<Vtx X="43" Y="43" Z="-2" S="496" T="496" R="140" G="211" B="26" A="255"/>
<Vtx X="39" Y="43" Z="10" S="112" T="304" R="172" G="179" B="200" A="255"/>
<Vtx X="35" Y="50" Z="4" S="304" T="112" R="182" G="161" B="215" A="255"/>
<Vtx X="35" Y="49" Z="11" S="112" T="112" R="190" G="167" B="194" A="255"/>
<Vtx X="34" Y="46" Z="14" S="-16" T="176" R="190" G="160" B="205" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="31" Y="51" Z="10" S="176" T="-16" R="180" G="177" B="193" A="255"/>
<Vtx X="35" Y="49" Z="11" S="112" T="112" R="190" G="167" B="194" A="255"/>
<Vtx X="35" Y="50" Z="4" S="304" T="112" R="182" G="161" B="215" A="255"/>
<Vtx X="16" Y="63" Z="18" S="304" T="432" R="186" G="163" B="206" A="255"/>
<Vtx X="15" Y="61" Z="23" S="432" T="304" R="186" G="163" B="206" A="255"/>
<Vtx X="11" Y="62" Z="20" S="496" T="496" R="4" G="142" B="201" A="255"/>
<Vtx X="20" Y="59" Z="14" S="112" T="304" R="172" G="167" B="221" A="255"/>
<Vtx X="19" Y="55" Z="23" S="304" T="112" R="174" G="178" B="199" A="255"/>
<Vtx X="25" Y="55" Z="18" S="112" T="112" R="158" G="187" B="216" A="255"/>
<Vtx X="26" Y="54" Z="14" S="-16" T="176" R="165" G="184" B="205" A="255"/>
<Vtx X="25" Y="51" Z="20" S="176" T="-16" R="164" G="176" B="221" A="255"/>
<Vtx X="40" Y="37" Z="25" S="304" T="432" R="167" G="181" B="205" A="255"/>
<Vtx X="43" Y="37" Z="20" S="432" T="304" R="167" G="181" B="205" A="255"/>
<Vtx X="41" Y="32" Z="23" S="496" T="496" R="146" G="255" B="193" A="255"/>
<Vtx X="34" Y="40" Z="24" S="112" T="304" R="183" G="169" B="200" A="255"/>
<Vtx X="39" Y="40" Z="15" S="304" T="112" R="170" G="169" B="221" A="255"/>
<Vtx X="34" Y="46" Z="19" S="112" T="112" R="188" G="156" B="218" A="255"/>
<Vtx X="30" Y="46" Z="20" S="-16" T="176" R="177" G="161" B="225" A="255"/>
<Vtx X="34" Y="46" Z="14" S="176" T="-16" R="190" G="160" B="205" A="255"/>
<Vtx X="29" Y="61" Z="0" S="304" T="432" R="178" G="163" B="220" A="255"/>
<Vtx X="25" Y="63" Z="3" S="432" T="304" R="178" G="163" B="220" A="255"/>
<Vtx X="24" Y="62" Z="-3" S="496" T="496" R="211" G="142" B="31" A="255"/>
<Vtx X="31" Y="55" Z="3" S="112" T="304" R="166" G="178" B="214" A="255"/>
<Vtx X="23" Y="59" Z="8" S="304" T="112" R="184" G="167" B="201" A="255"/>
<Vtx X="29" Y="55" Z="11" S="112" T="112" R="171" G="186" B="192" A="255"/>
<Vtx X="31" Y="51" Z="10" S="-16" T="176" R="180" G="177" B="193" A="255"/>
<Vtx X="26" Y="54" Z="14" S="176" T="-16" R="165" G="184" B="205" A="255"/>
<Vtx X="23" Y="48" Z="34" S="304" T="432" R="179" G="174" B="197" A="255"/>
<Vtx X="27" Y="44" Z="34" S="432" T="304" R="179" G="174" B="197" A="255"/>
<Vtx X="21" Y="43" Z="36" S="496" T="496" R="221" G="211" B="143" A="255"/>
<Vtx X="22" Y="50" Z="27" S="112" T="304" R="183" G="162" B="213" A="255"/>
<Vtx X="22" Y="50" Z="27" S="112" T="304" R="183" G="162" B="213" A="255"/>
<Vtx X="29" Y="43" Z="27" S="304" T="112" R="166" G="179" B="211" A="255"/>
<Vtx X="27" Y="44" Z="34" S="432" T="304" R="179" G="174" B="197" A="255"/>
<Vtx X="29" Y="49" Z="22" S="112" T="112" R="168" G="167" B="232" A="255"/>
<Vtx X="25" Y="51" Z="20" S="-16" T="176" R="164" G="176" B="221" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="174" G="171" B="209" A="255"/>
<Vtx X="30" Y="46" Z="20" S="176" T="-16" R="177" G="161" B="225" A="255"/>
<Vtx X="-25" Y="44" Z="36" S="304" T="432" R="179" G="82" B="59" A="255"/>
<Vtx X="-20" Y="43" Z="38" S="496" T="496" R="221" G="45" B="113" A="255"/>
<Vtx X="-22" Y="48" Z="36" S="432" T="304" R="179" G="82" B="59" A="255"/>
<Vtx X="-28" Y="43" Z="29" S="112" T="304" R="166" G="77" B="45" A="255"/>
<Vtx X="-21" Y="50" Z="29" S="304" T="112" R="183" G="95" B="43" A="255"/>
<Vtx X="-27" Y="49" Z="25" S="112" T="112" R="169" G="89" B="26" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="176" T="-16" R="163" G="79" B="35" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="175" G="85" B="47" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="-16" T="176" R="179" G="96" B="32" A="255"/>
<Vtx X="-24" Y="63" Z="4" S="304" T="432" R="178" G="93" B="36" A="255"/>
<Vtx X="-23" Y="62" Z="-1" S="496" T="496" R="211" G="114" B="225" A="255"/>
<Vtx X="-28" Y="61" Z="2" S="432" T="304" R="178" G="93" B="36" A="255"/>
<Vtx X="-22" Y="59" Z="10" S="112" T="304" R="184" G="89" B="55" A="255"/>
<Vtx X="-30" Y="55" Z="5" S="304" T="112" R="166" G="78" B="43" A="255"/>
<Vtx X="-28" Y="55" Z="13" S="112" T="112" R="172" G="70" B="65" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="176" T="-16" R="180" G="80" B="62" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="-16" T="176" R="166" G="72" B="53" A="255"/>
<Vtx X="-42" Y="37" Z="22" S="304" T="432" R="167" G="75" B="51" A="255"/>
<Vtx X="-40" Y="32" Z="25" S="496" T="496" R="146" G="1" B="63" A="255"/>
<Vtx X="-39" Y="37" Z="27" S="432" T="304" R="167" G="75" B="51" A="255"/>
<Vtx X="-38" Y="40" Z="17" S="112" T="304" R="171" G="87" B="35" A="255"/>
<Vtx X="-33" Y="40" Z="26" S="304" T="112" R="183" G="87" B="57" A="255"/>
<Vtx X="-33" Y="46" Z="21" S="112" T="112" R="189" G="100" B="40" A="255"/>
<Vtx X="-29" Y="46" Z="22" S="176" T="-16" R="179" G="96" B="32" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="-16" T="176" R="190" G="95" B="52" A="255"/>
<Vtx X="-14" Y="61" Z="25" S="304" T="432" R="186" G="93" B="50" A="255"/>
<Vtx X="-9" Y="62" Z="22" S="496" T="496" R="4" G="114" B="55" A="255"/>
<Vtx X="-15" Y="63" Z="20" S="432" T="304" R="186" G="93" B="50" A="255"/>
<Vtx X="-18" Y="55" Z="25" S="112" T="304" R="174" G="78" B="57" A="255"/>
<Vtx X="-19" Y="59" Z="16" S="304" T="112" R="172" G="89" B="35" A="255"/>
<Vtx X="-24" Y="55" Z="20" S="112" T="112" R="158" G="70" B="42" A="255"/>
<Vtx X="-24" Y="54" Z="15" S="176" T="-16" R="166" G="72" B="53" A="255"/>
<Vtx X="-26" Y="48" Z="16" S="-16" T="-16" R="175" G="85" B="47" A="255"/>
<Vtx X="-24" Y="51" Z="22" S="-16" T="176" R="163" G="79" B="35" A="255"/>
<Vtx X="-41" Y="48" Z="3" S="304" T="432" R="166" G="82" B="37" A="255"/>
<Vtx X="-42" Y="43" Z="0" S="496" T="496" R="140" G="45" B="230" A="255"/>
<Vtx X="-43" Y="44" Z="6" S="432" T="304" R="166" G="82" B="37" A="255"/>
<Vtx X="-34" Y="50" Z="6" S="112" T="304" R="182" G="94" B="42" A="255"/>
<Vtx X="-38" Y="43" Z="11" S="304" T="112" R="172" G="77" B="56" A="255"/>
<Vtx X="-34" Y="49" Z="14" S="112" T="112" R="191" G="89" B="64" A="255"/>
<Vtx X="-33" Y="46" Z="16" S="176" T="-16" R="190" G="95" B="52" A="255"/>
<Vtx X="-30" Y="51" Z="12" S="-16" T="176" R="180" G="80" B="62" A="255"/>
<Vtx X="-18" Y="44" Z="-40" S="304" T="432" R="243" G="82" B="160" A="255"/>
<Vtx X="-23" Y="43" Z="-37" S="496" T="496" R="175" G="45" B="169" A="255"/>
<Vtx X="-20" Y="48" Z="-37" S="432" T="304" R="243" G="82" B="160" A="255"/>
<Vtx X="-11" Y="43" Z="-39" S="112" T="304" R="6" G="77" B="155" A="255"/>
<Vtx X="-14" Y="50" Z="-33" S="304" T="112" R="255" G="95" B="171" A="255"/>
<Vtx X="-8" Y="49" Z="-36" S="112" T="112" R="21" G="89" B="168" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="176" T="-16" R="17" G="79" B="158" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="-16" T="176" R="11" G="96" B="174" A="255"/>
<Vtx X="8" Y="63" Z="-23" S="304" T="432" R="8" G="93" B="170" A="255"/>
<Vtx X="12" Y="62" Z="-19" S="496" T="496" R="50" G="114" B="232" A="255"/>
<Vtx X="12" Y="61" Z="-25" S="432" T="304" R="8" G="93" B="170" A="255"/>
<Vtx X="2" Y="59" Z="-24" S="112" T="304" R="245" G="89" B="166" A="255"/>
<Vtx X="10" Y="55" Z="-28" S="304" T="112" R="8" G="78" B="156" A="255"/>
<Vtx X="3" Y="55" Z="-31" S="112" T="112" R="242" G="69" B="151" A="255"/>
<Vtx X="3" Y="55" Z="-31" S="112" T="112" R="242" G="69" B="151" A="255"/>
<Vtx X="10" Y="55" Z="-28" S="304" T="112" R="8" G="78" B="156" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="176" T="-16" R="240" G="80" B="159" A="255"/>
<Vtx X="-1" Y="48" Z="-31" S="-16" T="-16" R="0" G="85" B="162" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="-16" T="176" R="255" G="72" B="152" A="255"/>
<Vtx X="2" Y="59" Z="-24" S="112" T="304" R="245" G="89" B="166" A="255"/>
<Vtx X="2" Y="37" Z="-47" S="304" T="432" R="0" G="75" B="154" A="255"/>
<Vtx X="-1" Y="32" Z="-47" S="496" T="496" R="0" G="1" B="129" A="255"/>
<Vtx X="-4" Y="37" Z="-47" S="432" T="304" R="0" G="75" B="154" A="255"/>
<Vtx X="4" Y="40" Z="-42" S="112" T="304" R="12" G="87" B="165" A="255"/>
<Vtx X="-6" Y="40" Z="-42" S="304" T="112" R="244" G="87" B="164" A="255"/>
<Vtx X="-1" Y="46" Z="-39" S="112" T="112" R="255" G="100" B="178" A="255"/>
<Vtx X="-5" Y="46" Z="-37" S="176" T="-16" R="11" G="96" B="174" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="-16" T="176" R="244" G="95" B="172" A="255"/>
<Vtx X="-15" Y="61" Z="-25" S="304" T="432" R="248" G="93" B="170" A="255"/>
<Vtx X="-15" Y="62" Z="-19" S="496" T="496" R="206" G="114" B="232" A="255"/>
<Vtx X="-10" Y="63" Z="-23" S="432" T="304" R="248" G="93" B="170" A="255"/>
<Vtx X="-12" Y="55" Z="-28" S="112" T="304" R="248" G="78" B="156" A="255"/>
<Vtx X="-4" Y="59" Z="-24" S="304" T="112" R="11" G="89" B="166" A="255"/>
<Vtx X="-5" Y="55" Z="-31" S="112" T="112" R="13" G="70" B="151" A="255"/>
<Vtx X="-1" Y="54" Z="-29" S="176" T="-16" R="255" G="72" B="152" A="255"/>
<Vtx X="-7" Y="51" Z="-32" S="-16" T="176" R="17" G="79" B="158" A="255"/>
<Vtx X="18" Y="48" Z="-37" S="304" T="432" R="13" G="82" B="160" A="255"/>
<Vtx X="21" Y="43" Z="-37" S="496" T="496" R="81" G="45" B="169" A="255"/>
<Vtx X="16" Y="44" Z="-40" S="432" T="304" R="13" G="82" B="160" A="255"/>
<Vtx X="12" Y="50" Z="-33" S="112" T="304" R="1" G="94" B="171" A="255"/>
<Vtx X="9" Y="43" Z="-39" S="304" T="112" R="250" G="77" B="155" A="255"/>
<Vtx X="5" Y="49" Z="-36" S="112" T="112" R="233" G="89" B="168" A="255"/>
<Vtx X="3" Y="46" Z="-37" S="176" T="-16" R="244" G="95" B="172" A="255"/>
<Vtx X="5" Y="51" Z="-32" S="-16" T="176" R="240" G="80" B="159" A="255"/>
<Vtx X="44" Y="44" Z="4" S="304" T="432" R="90" G="82" B="37" A="255"/>
<Vtx X="43" Y="43" Z="-2" S="496" T="496" R="116" G="45" B="230" A="255"/>
<Vtx X="42" Y="48" Z="1" S="432" T="304" R="90" G="82" B="37" A="255"/>
<Vtx X="39" Y="43" Z="10" S="112" T="304" R="84" G="77" B="56" A="255"/>
<Vtx X="35" Y="50" Z="4" S="304" T="112" R="74" G="95" B="41" A="255"/>
<Vtx X="35" Y="49" Z="11" S="112" T="112" R="66" G="89" B="62" A="255"/>
<Vtx X="31" Y="51" Z="10" S="176" T="-16" R="76" G="79" B="63" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="34" Y="46" Z="14" S="-16" T="176" R="66" G="96" B="51" A="255"/>
<Vtx X="16" Y="63" Z="18" S="304" T="432" R="70" G="93" B="50" A="255"/>
<Vtx X="11" Y="62" Z="20" S="496" T="496" R="252" G="114" B="55" A="255"/>
<Vtx X="15" Y="61" Z="23" S="432" T="304" R="70" G="93" B="50" A="255"/>
<Vtx X="20" Y="59" Z="14" S="112" T="304" R="84" G="89" B="35" A="255"/>
<Vtx X="19" Y="55" Z="23" S="304" T="112" R="82" G="78" B="57" A="255"/>
<Vtx X="25" Y="55" Z="18" S="112" T="112" R="98" G="69" B="40" A="255"/>
<Vtx X="25" Y="51" Z="20" S="176" T="-16" R="92" G="80" B="35" A="255"/>
<Vtx X="26" Y="54" Z="14" S="-16" T="176" R="91" G="72" B="51" A="255"/>
<Vtx X="40" Y="37" Z="25" S="304" T="432" R="89" G="75" B="51" A="255"/>
<Vtx X="41" Y="32" Z="23" S="496" T="496" R="110" G="1" B="63" A="255"/>
<Vtx X="43" Y="37" Z="20" S="432" T="304" R="89" G="75" B="51" A="255"/>
<Vtx X="34" Y="40" Z="24" S="112" T="304" R="73" G="87" B="56" A="255"/>
<Vtx X="39" Y="40" Z="15" S="304" T="112" R="86" G="87" B="35" A="255"/>
<Vtx X="34" Y="46" Z="19" S="112" T="112" R="68" G="100" B="38" A="255"/>
<Vtx X="34" Y="46" Z="14" S="176" T="-16" R="66" G="96" B="51" A="255"/>
<Vtx X="30" Y="46" Z="20" S="-16" T="176" R="79" G="95" B="31" A="255"/>
<Vtx X="29" Y="61" Z="0" S="304" T="432" R="78" G="93" B="36" A="255"/>
<Vtx X="24" Y="62" Z="-3" S="496" T="496" R="45" G="114" B="225" A="255"/>
<Vtx X="25" Y="63" Z="3" S="432" T="304" R="78" G="93" B="36" A="255"/>
<Vtx X="31" Y="55" Z="3" S="112" T="304" R="90" G="78" B="42" A="255"/>
<Vtx X="23" Y="59" Z="8" S="304" T="112" R="72" G="89" B="55" A="255"/>
<Vtx X="29" Y="55" Z="11" S="112" T="112" R="85" G="70" B="64" A="255"/>
<Vtx X="26" Y="54" Z="14" S="176" T="-16" R="91" G="72" B="51" A="255"/>
<Vtx X="27" Y="48" Z="14" S="-16" T="-16" R="82" G="85" B="47" A="255"/>
<Vtx X="31" Y="51" Z="10" S="-16" T="176" R="76" G="79" B="63" A="255"/>
<Vtx X="29" Y="55" Z="11" S="112" T="112" R="85" G="70" B="64" A="255"/>
<Vtx X="31" Y="55" Z="3" S="112" T="304" R="90" G="78" B="42" A="255"/>
<Vtx X="23" Y="48" Z="34" S="304" T="432" R="77" G="82" B="59" A="255"/>
<Vtx X="21" Y="43" Z="36" S="496" T="496" R="35" G="45" B="113" A="255"/>
<Vtx X="27" Y="44" Z="34" S="432" T="304" R="77" G="82" B="59" A="255"/>
<Vtx X="22" Y="50" Z="27" S="112" T="304" R="73" G="94" B="43" A="255"/>
<Vtx X="29" Y="43" Z="27" S="304" T="112" R="90" G="77" B="45" A="255"/>
<Vtx X="29" Y="49" Z="22" S="112" T="112" R="88" G="89" B="24" A="255"/>
<Vtx X="30" Y="46" Z="20" S="176" T="-16" R="79" G="95" B="31" A="255"/>
<Vtx X="25" Y="51" Z="20" S="-16" T="176" R="92" G="80" B="35" A="255"/>
</Vertex>

Some files were not shown because too many files have changed in this diff Show More