Compare commits

..

1235 Commits

Author SHA1 Message Date
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
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
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
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
Eric Hoey 568639dfc0 skip ItemGet for small keys after skeleton key (#5730) 2025-08-12 20:37:08 -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
Pepper0ni b87f1432fd properly clear location subcatagories when generating a seed (#5707) 2025-08-05 20:43: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 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 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
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
Malkierian 1161ce3546 Expand tooltip for Free Look to explain camera locks and scene reload. (#5624) 2025-06-28 07:50:06 -07:00
Eric Hoey 8b616c8709 first person to first-person (#5616) 2025-06-25 21:54:57 -07:00
Jordan Longstaff 3b82b8eeff Ruto no longer targetable with sitting down skip (#5611) 2025-06-25 09:27:45 -07: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
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
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
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
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
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
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 40da9997c5 Fix some dark link issues (#5532) 2025-05-29 07:51:35 -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
xxAtrain223 de96f3cd0a Typo Fixes (#5533)
* Fixed a couple typos.

* Ran clang format.
2025-05-24 10:39:53 -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
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
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
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
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
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
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
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
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
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
Jordan Longstaff 19eb4f39ab Skip trial barrier dispel cutscenes (#5464) 2025-05-01 20:27:20 -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 baa91cbadb Format map GI text (#5417)
* Format map GI text

* dum
2025-05-01 19:00:22 -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 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 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
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
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
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
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
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
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
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
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
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
6475 changed files with 447237 additions and 93333 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
+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
+204 -189
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
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.otr
uses: actions/upload-artifact@v4
with:
name: soh.otr
path: soh.otr
retention-days: 1
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.9.3/MacPorts-2.9.3-14-Sonoma.pkg
sudo installer -pkg ./MacPorts-2.9.3-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
uses: actions/download-artifact@v4
with:
name: soh.otr
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: 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.otr
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: soh.otr
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
- name: Build SoH
env:
VCPKG_ROOT: D:/a/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 --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
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.otr
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: soh.otr
path: soh-windows
path: build-windows/soh
- name: Build SoH
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=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DBUILD_REMOTE_CONTROL=1
cmake --build build-windows --config Release --parallel 10
(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
+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.otr") 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 boost
pacman -Syu --noconfirm
pacman -S --noconfirm ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net boost
- 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 boost-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 boost-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 libboost-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 libboost-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 }}
+9 -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/
@@ -448,5 +450,9 @@ _packages
*/extract_assets_cmake*
/build*
soh/build.c
soh/src/boot/build.c
soh/properties.h
# Tools
/clang-format
/clang-format.exe
+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()
+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
+22
View File
@@ -0,0 +1,22 @@
set(CVAR_VSYNC_ENABLED "${CVAR_PREFIX_SETTING}.VsyncEnabled" CACHE STRING "")
set(CVAR_Z_FIGHTING_MODE "${CVAR_PREFIX_SETTING}.ZFightingMode" CACHE STRING "")
set(CVAR_NEW_FILE_DROPPED "${CVAR_PREFIX_GENERAL}.NewFileDropped" CACHE STRING "")
set(CVAR_DROPPED_FILE "${CVAR_PREFIX_GENERAL}.DroppedFile" 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}"
)
+120 -32
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 17 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.3 LANGUAGES C CXX)
set(PROJECT_BUILD_NAME "MacReady Delta" CACHE STRING "")
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "")
project(Ship VERSION 9.0.5 LANGUAGES C CXX)
include(CMake/soh-cvars.cmake)
include(CMake/lus-cvars.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 "Blair ${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)
if (CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache|sccache")
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
endif()
endif()
################################################################################
@@ -84,10 +145,26 @@ 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)
################################################################################
# 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}")
add_subdirectory(ZAPDTR/ZAPD ${CMAKE_BINARY_DIR}/ZAPD)
add_subdirectory(OTRExporter)
add_subdirectory(soh)
@@ -98,7 +175,7 @@ set_property(TARGET soh PROPERTY APPIMAGE_ICON_FILE "${CMAKE_BINARY_DIR}/sohIcon
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.otr" 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)
@@ -122,8 +199,12 @@ 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 ${CMAKE_COMMAND} -E rm -f oot.otr oot-mq.otr soh.otr
# 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/graphic/Fast3D/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 ../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} -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
@@ -144,8 +225,12 @@ add_custom_target(
# Target to generate only soh.otr
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 ${CMAKE_COMMAND} -E rm -f soh.otr
# 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/graphic/Fast3D/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.otr "--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
@@ -157,7 +242,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,16 +251,16 @@ 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 ..."
@@ -199,9 +284,12 @@ install(DIRECTORY ${CMAKE_BINARY_DIR}/assets
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...2aeababbfb
+123 -71
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,84 @@ 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 libboost-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 libboost-dev libopengl-dev
```
#### Arch
```sh
# using gcc
pacman -S gcc git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net boost
_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 boost
```
#### 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 boost-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 boost-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
```
### 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 +160,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,6 +216,19 @@ 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
+7
View File
@@ -29,3 +29,10 @@ This file is pulled from https://github.com/gabomdq/SDL_GameControllerDB during
| 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) |
| MacReady Alfa 8.0.0 | [c56329f](https://github.com/gabomdq/SDL_GameControllerDB/tree/c56329f4df93fc7a780bdbeae47a9c91447b629c) | [+67/-23](https://github.com/gabomdq/SDL_GameControllerDB/compare/cc9f777...c56329f) |
| MacReady Bravo 8.0.1 | [721b575](https://github.com/gabomdq/SDL_GameControllerDB/tree/721b575d3053b21d6d30419bf74afb5b1d0fa7a4) | [+5/-5](https://github.com/gabomdq/SDL_GameControllerDB/compare/c56329f...721b575) |
| MacReady Charlie 8.0.2 | [721b575](https://github.com/gabomdq/SDL_GameControllerDB/tree/721b575d3053b21d6d30419bf74afb5b1d0fa7a4) | [+0/-0](https://github.com/gabomdq/SDL_GameControllerDB/compare/721b575...721b575) |
| MacReady Delta 8.0.3 | [d4ab609](https://github.com/gabomdq/SDL_GameControllerDB/tree/d4ab609121ee6e687bc3d3a7e80244b3b26d1164) | [+5/-3](https://github.com/gabomdq/SDL_GameControllerDB/compare/721b575...d4ab609) |
| MacReady Echo 8.0.4 | [6555d47](https://github.com/gabomdq/SDL_GameControllerDB/tree/6555d47ecb5d9eebac0e3d8cd19a545e9d946c40) | [+2/-0](https://github.com/gabomdq/SDL_GameControllerDB/compare/d4ab609...6555d47) |
| MacReady Foxtrot 8.0.5 | [037d6a1](https://github.com/gabomdq/SDL_GameControllerDB/tree/037d6a1533ed94fbc6a8c71e6f1f9aff1e46208a) | [+47/-14](https://github.com/gabomdq/SDL_GameControllerDB/compare/6555d47...037d6a1) |
| MacReady Golf 8.0.6 | [075c154](https://github.com/gabomdq/SDL_GameControllerDB/tree/075c1549075ef89a397fd7e0663d21e53a2485fd) | [+340/-301](https://github.com/gabomdq/SDL_GameControllerDB/compare/037d6a1...075c154) |
+2 -2
View File
@@ -59,7 +59,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) {
@@ -188,4 +188,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"
}
]
+48
View File
@@ -0,0 +1,48 @@
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, $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' -and `
(-not ($_.FullName -like "*\soh\src\*" -or $_.FullName -like "*\soh\include\*")))) -and `
(-not ($_.FullName -like "*\soh\assets\*")) }
foreach ($file in $files) {
$relativePath = $file.FullName.Substring($basePath.Length + 1)
Write-Host "Formatting $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" ! -path "soh/src/**.h" ! -path "soh/include/**.h"
# find all .h 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
#
# | sed 's| |\\ |g'
# pipe the result of find into sed to
# ensure all the paths returned by find have spaces escaped
#
# | xargs clang-format-14 -i
# use xargs to take each path we've found
# and pass it as an argument to clang-format
find soh -type f \( -name "*.c" -o -name "*.cpp" -o \( -name "*.h" ! -path "soh/src/**.h" ! -path "soh/include/**.h" \) \) ! -path "soh/assets/*" | sed 's| |\\ |g' | xargs clang-format-14 -i
+138 -3
View File
@@ -21,12 +21,17 @@ 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
if [[ -e "$romfile" ]] || [[ -L "$romfile" ]]; then
export ASSETDIR="$(mktemp -d /tmp/assets-XXXXX)"
ln -s "$HERE"/usr/bin/{assets,soh.elf,ZAPD} "$ASSETDIR"
ln -s "$SHIP_BIN_DIR"/{assets,soh.elf,ZAPD} "$ASSETDIR"
export OLDPWD="$PWD"
mkdir -p "$ASSETDIR"/tmp
ln -s "$romfile" "$ASSETDIR"/tmp/rom.z64
if [[ -e "$romfile" ]]; then
ln -s "$romfile" "$ASSETDIR"/tmp/rom.z64
else
ORIG_ROM_PATH=$(readlink "$romfile")
ln -s "$ORIG_ROM_PATH" "$ASSETDIR"/tmp/rom.z64
fi
cd "$ASSETDIR"
ROMHASH=$(sha1sum -b "$ASSETDIR"/tmp/rom.z64 | awk '{ print $1 }')
@@ -87,6 +92,72 @@ while [[ (! -e "$SHIP_HOME"/oot.otr) || (! -e "$SHIP_HOME"/oot-mq.otr) ]]; do
166c02770d67fcc3954c443eb400a6a3573d3fc0) # n64
ROMHASH=517bd9714c73cb96c21e7c2ef640d7b55186102f
;;
79a4f053d34018e59279e6d4b83c7daccd985c87) # v64
ROMHASH=ad69c91157f6705e8ab06c79fe08aad47bb57ba7
;;
82fafee9c6ac7946739282958364ce606077ac65) # n64
ROMHASH=ad69c91157f6705e8ab06c79fe08aad47bb57ba7
;;
18cd0eb65914a21d8fa08dfe71c29d865e9d728a) # v64
ROMHASH=d3ecb253776cd847a5aa63d859d8c89a2f37b364
;;
07940d5609e04b7caac63570731e01189129212e) # n64
ROMHASH=d3ecb253776cd847a5aa63d859d8c89a2f37b364
;;
3ac86253e0c0d55486d212e647350c1527b9c92d) # v64
ROMHASH=41b3bdc48d98c48529219919015a1af22f5057c2
;;
70bf30a9980026e615a1ae8d2735a773cf9fcc94) # n64
ROMHASH=41b3bdc48d98c48529219919015a1af22f5057c2
;;
f9e2b6840b9103e9707ea390089a7b6943592a98) # v64
ROMHASH=c892bbda3993e66bd0d56a10ecd30b1ee612210f
;;
2fae1601aa7ae8d3e03ba3f4dcdfca3a36002ac5) # n64
ROMHASH=c892bbda3993e66bd0d56a10ecd30b1ee612210f
;;
1181034d5f9533f53ebe8e1c781badbee115f5aa) # v64
ROMHASH=dbfc81f655187dc6fefd93fa6798face770d579d
;;
07477067943abe8d0c50285eb4a6cb9ece99e79b) # n64
ROMHASH=dbfc81f655187dc6fefd93fa6798face770d579d
;;
2d8fb7140a9c5d11ce614561e5a36ffef0c17540) # v64
ROMHASH=fa5f5942b27480d60243c2d52c0e93e26b9e6b86
;;
d90bbe422ac728ac54ac6a2c9fec942f7ff04df9) # n64
ROMHASH=fa5f5942b27480d60243c2d52c0e93e26b9e6b86
;;
44c75962911e13bdfdc31b35e0b8e3be6a6a49ab) # v64
b82710ba2bd3b4c6ee8aa1a7e9acf787dfc72e9b
;;
5d47025581060af5ba19e6719c25fea7398e87cf) # n64
b82710ba2bd3b4c6ee8aa1a7e9acf787dfc72e9b
;;
e1d070ad7b017de9f992b362164dcd9d7f820f7e) # v64
8b5d13aac69bfbf989861cfdc50b1d840945fc1d
;;
a8c04cd5aa94a6a32198f36ff2069d43342d18a8) # n64
8b5d13aac69bfbf989861cfdc50b1d840945fc1d
;;
245410280d152f28d5b1c0c0fc37f384db0020cd) # v64
0769c84615422d60f16925cd859593cdfa597f84
;;
fbdc9e444807f9b881e3432cedf66f38746b81d8) # n64
0769c84615422d60f16925cd859593cdfa597f84
;;
b6d33d6bf5d6700c64b6a873ab8b06ff039619bc) # v64
2ce2d1a9f0534c9cd9fa04ea5317b80da21e5e73
;;
2c7113d20044f93c82ec888c19aa09ea7797396d) # n64
2ce2d1a9f0534c9cd9fa04ea5317b80da21e5e73
;;
06c3c098f0e14ed61811dfaf0e8e4519d7d7a826) # v64
dd14e143c4275861fe93ea79d0c02e36ae8c6c2f
;;
bb3f85bfaad9ae7a20afbf618fc9fe126c8c1b4f) # n64
dd14e143c4275861fe93ea79d0c02e36ae8c6c2f
;;
esac
case "$ROMHASH" in
@@ -120,6 +191,30 @@ while [[ (! -e "$SHIP_HOME"/oot.otr) || (! -e "$SHIP_HOME"/oot-mq.otr) ]]; do
continue
fi
;;
ad69c91157f6705e8ab06c79fe08aad47bb57ba7|c892bbda3993e66bd0d56a10ecd30b1ee612210f)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_NTSC_10
OTRNAME="oot.otr"
else
continue
fi
;;
d3ecb253776cd847a5aa63d859d8c89a2f37b364|dbfc81f655187dc6fefd93fa6798face770d579d)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_NTSC_11
OTRNAME="oot.otr"
else
continue
fi
;;
41b3bdc48d98c48529219919015a1af22f5057c2|fa5f5942b27480d60243c2d52c0e93e26b9e6b86)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=N64_NTSC_12
OTRNAME="oot.otr"
else
continue
fi
;;
f46239439f59a2a594ef83cf68ef65043b1bffe2)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_PAL_F
@@ -160,6 +255,46 @@ while [[ (! -e "$SHIP_HOME"/oot.otr) || (! -e "$SHIP_HOME"/oot-mq.otr) ]]; do
continue
fi
;;
b82710ba2bd3b4c6ee8aa1a7e9acf787dfc72e9b)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_NTSC_U
OTRNAME="oot.otr"
else
continue
fi
;;
8b5d13aac69bfbf989861cfdc50b1d840945fc1d)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_NTSC_U
OTRNAME="oot-mq.otr"
else
continue
fi
;;
0769c84615422d60f16925cd859593cdfa597f84)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_NTSC_J
OTRNAME="oot.otr"
else
continue
fi
;;
2ce2d1a9f0534c9cd9fa04ea5317b80da21e5e73)
if [[ ! -e "$SHIP_HOME"/oot.otr ]]; then
ROM=GC_NMQ_NTSC_J_CE
OTRNAME="oot.otr"
else
continue
fi
;;
dd14e143c4275861fe93ea79d0c02e36ae8c6c2f)
if [[ ! -e "$SHIP_HOME"/oot-mq.otr ]]; then
ROM=GC_MQ_NTSC_J
OTRNAME="oot-mq.otr"
else
continue
fi
;;
*)
echo -e "\n$romfile - $ROMHASH rom hash does not match\n"
continue;;
-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()
+61 -105
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 17 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,101 +121,61 @@ 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")
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")
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/*")
@@ -238,7 +195,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 +209,7 @@ set(ALL_FILES
${Header_Files}
${Header_Files__include}
${soh__}
${soh__config}
${soh__Enhancements}
${soh__Extractor}
${soh__Resource}
${src__}
)
@@ -328,7 +281,7 @@ endif()
include(FetchContent)
FetchContent_Declare(
Boost
URL https://boostorg.jfrog.io/artifactory/main/release/1.81.0/source/boost_1_81_0.tar.gz
URL https://archives.boost.io/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
@@ -354,9 +307,15 @@ endif()
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()
target_include_directories(${PROJECT_NAME} PRIVATE assets
@@ -385,10 +344,8 @@ target_include_directories(${PROJECT_NAME} PRIVATE assets
${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}
@@ -408,13 +365,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 +386,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 +402,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 +416,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 +441,7 @@ if(MSVC)
/Gy;
/W3
>
/bigobj;
/sdl-;
/permissive-;
/MP;
@@ -549,6 +512,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
-Wno-parentheses
-Wno-narrowing
-Wno-missing-braces
-Wno-int-conversion
$<$<COMPILE_LANGUAGE:C>:
-Werror-implicit-function-declaration
-Wno-incompatible-pointer-types
@@ -624,6 +588,8 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
-Wno-parentheses
-Wno-narrowing
-Wno-missing-braces
-Wno-int-conversion
-Wno-implicit-int
$<$<COMPILE_LANGUAGE:C>:
-Werror-implicit-function-declaration
-Wno-incompatible-pointer-types
@@ -643,34 +609,28 @@ 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")
set(VS_COPY_ASSETS_CMD ${CMAKE_COMMAND} -E copy_directory_if_different $<TARGET_FILE_DIR:soh>/assets ${CMAKE_BINARY_DIR}/soh/assets)
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 copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/extractor $<TARGET_FILE_DIR:soh>/assets/extractor
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_SOURCE_DIR}/soh/assets/xml $<TARGET_FILE_DIR:soh>/assets/extractor/xmls
COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${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_if_different ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ActorList_OoTMqDbg.txt $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/ObjectList_OoTMqDbg.txt $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/OTRExporter/CFG/SymbolMap_OoTMqDbg.txt $<TARGET_FILE_DIR:soh>/assets/extractor/symbols
COMMAND ${VS_COPY_ASSETS_CMD}
)
endif()
################################################################################
# Dependencies
################################################################################
add_dependencies(${PROJECT_NAME}
ZAPDUtils
libultraship
)
if(NOT CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch|CafeOS")
@@ -684,12 +644,11 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
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;"
@@ -699,7 +658,6 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;"
"ZAPDUtils;"
"ZAPDLib;"
"glu32;"
"SDL2::SDL2;"
@@ -717,7 +675,6 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
find_package(Threads REQUIRED)
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;"
"ZAPDUtils;"
SDL2::SDL2
-lglad
Threads::Threads
@@ -739,16 +696,15 @@ else()
find_package(Threads REQUIRED)
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;"
"ZAPDUtils;"
"ZAPDLib;"
SDL2::SDL2
"$<$<BOOL:${BUILD_CROWD_CONTROL}>:SDL2_net::SDL2_net>"
"$<$<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()
@@ -766,7 +722,7 @@ execute_process(COMMAND ${CURL} -sSfL https://raw.githubusercontent.com/gabomdq/
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)
elseif(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "NintendoSwitch|CafeOS")
+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
@@ -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)
}
}
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>
@@ -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,10 @@
<DisplayList Version="0">
<ClearGeometryMode G_LIGHTING="1" />
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushJunkDL_vtx_cull" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<SetGeometryMode G_LIGHTING="1" />
<CullDisplayList Start="0" End="7"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushJunkDL_f3dlite_shrubbery"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushJunkDL_tri_0"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,8 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushJunkDL_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,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,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/gFieldBushMajorDL_vtx_cull" VertexBufferIndex="0" VertexOffset="0" Count="8"/>
<SetGeometryMode G_LIGHTING="1" />
<CullDisplayList Start="0" End="7"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushMajorDL_f3dlite_shrubbery"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushMajorDL_tri_0"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushMajorDL_f3dlite_leaf"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushMajorDL_tri_1"/>
<CallDisplayList Path="objects/gameplay_field_keep/mat_gFieldBushMajorDL_f3dlite_flower_gold"/>
<CallDisplayList Path="objects/gameplay_field_keep/gFieldBushMajorDL_tri_2"/>
<EndDisplayList/>
</DisplayList>
@@ -0,0 +1,8 @@
<DisplayList Version="0">
<LoadVertices Path="objects/gameplay_field_keep/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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/gFieldBushMajorDL_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>

Some files were not shown because too many files have changed in this diff Show More