diff --git a/ExpandAssets/Assets/AssetBundles/AssetBundles b/ExpandAssets/Assets/AssetBundles/AssetBundles index ccdc5dd..d9d03b3 100644 Binary files a/ExpandAssets/Assets/AssetBundles/AssetBundles and b/ExpandAssets/Assets/AssetBundles/AssetBundles differ diff --git a/ExpandAssets/Assets/AssetBundles/AssetBundles.manifest b/ExpandAssets/Assets/AssetBundles/AssetBundles.manifest index ccbab1e..9f18a25 100644 --- a/ExpandAssets/Assets/AssetBundles/AssetBundles.manifest +++ b/ExpandAssets/Assets/AssetBundles/AssetBundles.manifest @@ -1,5 +1,5 @@ ManifestFileVersion: 0 -CRC: 1986574819 +CRC: 2731305875 AssetBundleManifest: AssetBundleInfos: Info_0: @@ -8,3 +8,6 @@ AssetBundleManifest: Info_1: Name: expandspritesbase Dependencies: {} + Info_2: + Name: expandaudio + Dependencies: {} diff --git a/ExpandAssets/Assets/AssetBundles/expandaudio b/ExpandAssets/Assets/AssetBundles/expandaudio new file mode 100644 index 0000000..72ea305 Binary files /dev/null and b/ExpandAssets/Assets/AssetBundles/expandaudio differ diff --git a/ExpandAssets/Assets/AssetBundles/expandaudio.manifest b/ExpandAssets/Assets/AssetBundles/expandaudio.manifest new file mode 100644 index 0000000..9b55a5f --- /dev/null +++ b/ExpandAssets/Assets/AssetBundles/expandaudio.manifest @@ -0,0 +1,16 @@ +ManifestFileVersion: 0 +CRC: 2487000756 +Hashes: + AssetFileHash: + serializedVersion: 2 + Hash: b911cfc3ae2821c51f7dd815df16a8cf + TypeTreeHash: + serializedVersion: 2 + Hash: 5ad585dd02dfb5016c0dad519eab8f49 +HashAppended: 0 +ClassTypes: +- Class: 49 + Script: {instanceID: 0} +Assets: +- Assets/ExpandAudio/EX_SFX.bytes +Dependencies: [] diff --git a/ExpandAssets/Assets/AssetBundles/expandsharedauto b/ExpandAssets/Assets/AssetBundles/expandsharedauto index d2245a7..bd658c0 100644 Binary files a/ExpandAssets/Assets/AssetBundles/expandsharedauto and b/ExpandAssets/Assets/AssetBundles/expandsharedauto differ diff --git a/ExpandAssets/Assets/AssetBundles/expandsharedauto.manifest b/ExpandAssets/Assets/AssetBundles/expandsharedauto.manifest index 187b166..40e48e8 100644 --- a/ExpandAssets/Assets/AssetBundles/expandsharedauto.manifest +++ b/ExpandAssets/Assets/AssetBundles/expandsharedauto.manifest @@ -1,9 +1,9 @@ ManifestFileVersion: 0 -CRC: 3113983598 +CRC: 11151786 Hashes: AssetFileHash: serializedVersion: 2 - Hash: e8ee3e36d599b2de937269aea63b7487 + Hash: e15650bbaa88e4676213d2b6ad45ae1f TypeTreeHash: serializedVersion: 2 Hash: e07db27c83368901a660c5a67ad09cfb @@ -884,7 +884,6 @@ Assets: - Assets/ExpandSerializedData/TilesetData/Jungle/Woods/facewallGrids_1.txt - Assets/ExpandRooms/RoomFactoryData/M_Expand_Achievement_Resourceful.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Bar2.bytes -- Assets/ExpandAudio/EX_SFX.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal2.bytes - Assets/ExpandRooms/RoomBuilderData/Castle/Expand_TurtleMelon_Box_Layout.png - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Odd2.bytes diff --git a/ExpandAssets/Assets/ExpandAudio/EX_SFX.bytes b/ExpandAssets/Assets/ExpandAudio/EX_SFX.bytes index 8724dce..708d7a2 100644 Binary files a/ExpandAssets/Assets/ExpandAudio/EX_SFX.bytes and b/ExpandAssets/Assets/ExpandAudio/EX_SFX.bytes differ diff --git a/ExpandAssets/Audio/Actor-Mixer Hierarchy/Default Work Unit.wwu b/ExpandAssets/Audio/Actor-Mixer Hierarchy/Default Work Unit.wwu index 68e2959..17f117b 100644 --- a/ExpandAssets/Audio/Actor-Mixer Hierarchy/Default Work Unit.wwu +++ b/ExpandAssets/Audio/Actor-Mixer Hierarchy/Default Work Unit.wwu @@ -2118,7 +2118,7 @@ 100 - 6 + 7 37 @@ -2322,7 +2322,7 @@ 100 - 6 + 7 37 @@ -2355,13 +2355,13 @@ - + - + @@ -2373,7 +2373,7 @@ 100 - 6 + 6.99999999999997 37 @@ -2406,13 +2406,13 @@ - + - + @@ -2424,7 +2424,7 @@ 100 - 6 + 6.99999999999997 37 @@ -2456,13 +2456,13 @@ - + - + @@ -2474,7 +2474,7 @@ 100 - 6 + 6.99999999999997 37 @@ -2733,13 +2733,13 @@ - + - + @@ -2751,7 +2751,7 @@ 100 - 6 + 6.99999999999997 37 @@ -2813,7 +2813,7 @@ 100 - 6 + 3 37 @@ -2902,6 +2902,377 @@ + + + + + + + + 1 + + + + + True + + + + + + + + + + + + + + + + + 0 + -200 + 5 + + + 100 + 0 + 37 + + + + + + + + + + + + + + + + + + SFX + Lockpick_Cathedral.wav + + + + + + + + + + + + + + + + + + + + + + + + + 0 + -200 + 5 + + + 100 + 0 + 37 + + + + + + + + + + + + + + + + + + SFX + Lockpick_Cathedral_FirstMovement.wav + + + + + + + + + + + + + + + + + + + + + + + + + 0 + -200 + 5 + + + 100 + 0 + 37 + + + + + + + + + + + + + + + + + + SFX + Lockpick_Cathedral_SecondMovement.wav + + + + + + + + + + + + + + + + + + + + + + + + + 0 + -200 + 5 + + + 100 + 0 + 37 + + + + + + + + + + + + + + + + + + SFX + Lockpick_Cathedral_ThirdMovement.wav + + + + + + + + + + + + + + + + + + + + + + + + + 0 + -200 + 5 + + + 100 + 6.99999999999997 + 37 + + + + + + + + + + + + + + + + + + SFX + Tummy_Full_of_Gunpoweder_Secret.wav + + + + + + + + + + + + + + + + + + + + + + + + + 0 + -200 + 5 + + + 100 + 0 + 37 + + + + + + + + + + + + + + + + + + SFX + Cola_flavored_soda.wav + + + + + + + + + + + + + + + + + + + + + + + + + 0 + -200 + 5 + + + 100 + 0 + 37 + + + + + + + + + + + + + + + + + + SFX + Lockpick_Cathedra_Calm.wav + + + + + + + + + diff --git a/ExpandAssets/Audio/Events/Weapons.wwu b/ExpandAssets/Audio/Events/Weapons.wwu index f483601..e82f292 100644 --- a/ExpandAssets/Audio/Events/Weapons.wwu +++ b/ExpandAssets/Audio/Events/Weapons.wwu @@ -507,6 +507,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1391,6 +1475,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExpandAssets/Audio/ExpandTheGungeon.Spenser.wsettings b/ExpandAssets/Audio/ExpandTheGungeon.Spenser.wsettings index 8bdbb11..2992bd5 100644 --- a/ExpandAssets/Audio/ExpandTheGungeon.Spenser.wsettings +++ b/ExpandAssets/Audio/ExpandTheGungeon.Spenser.wsettings @@ -3,8 +3,8 @@ - - + + @@ -52,8 +52,11 @@ + + + @@ -63,12 +66,17 @@ + + + + + @@ -94,6 +102,7 @@ + @@ -104,6 +113,7 @@ + @@ -114,6 +124,7 @@ + @@ -157,7 +168,7 @@ - + @@ -178,8 +189,8 @@ - - + + diff --git a/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.bnk b/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.bnk index 8724dce..708d7a2 100644 Binary files a/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.bnk and b/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.bnk differ diff --git a/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.txt b/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.txt index adf865c..3a7818f 100644 --- a/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.txt +++ b/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.txt @@ -8,10 +8,13 @@ Event ID Name Wwise Object Path Notes 304406506 Play_EX_SonicLoseRings_01 \Weapons\Play_EX_SonicLoseRings_01 330989735 Play_EX_BellyDoor_Open \Weapons\Play_EX_BellyDoor_Open 352490979 Play_EX_CorruptionBombPickup_01 \Weapons\Play_EX_CorruptionBombPickup_01 + 432080516 Play_EX_MUS_West_01_Shop \Weapons\Play_EX_MUS_West_01_Shop 582460727 Stop_EX_BellyDoor_Close \Weapons\Stop_EX_BellyDoor_Close 587415615 Play_EX_TableAssassin_01 \Weapons\Play_EX_TableAssassin_01 620344165 Play_EX_MUS_Belly_01_Intro \Weapons\Play_EX_MUS_Belly_01_Intro 633823961 Stop_EX_TableAssassin_01 \Weapons\Stop_EX_TableAssassin_01 + 657056321 Play_EX_MUS_West_01_Calm \Weapons\Play_EX_MUS_West_01_Calm + 726629014 Play_EX_MUS_West_01_Intro \Weapons\Play_EX_MUS_West_01_Intro 761530598 Play_EX_MUS_Jungle_01_Secret \Weapons\Play_EX_MUS_Jungle_01_Secret 797577896 Play_EX_CorruptedObjectDamage_01 \Weapons\Play_EX_CorruptedObjectDamage_01 866377016 Stop_EX_MUS_DeepDungeon_01 \Weapons\Stop_EX_MUS_DeepDungeon_01 @@ -39,6 +42,10 @@ Event ID Name Wwise Object Path Notes 1504561828 Play_EX_MUS_Jungle_01_LoopD \Weapons\Play_EX_MUS_Jungle_01_LoopD 1648051329 Stop_EX_BellyDoor_Open \Weapons\Stop_EX_BellyDoor_Open 1687291301 Play_EX_ElevatorBell_01 \Weapons\Play_EX_ElevatorBell_01 + 1718848762 Play_EX_MUS_West_01_LoopD \Weapons\Play_EX_MUS_West_01_LoopD + 1718848764 Play_EX_MUS_West_01_LoopB \Weapons\Play_EX_MUS_West_01_LoopB + 1718848765 Play_EX_MUS_West_01_LoopC \Weapons\Play_EX_MUS_West_01_LoopC + 1718848767 Play_EX_MUS_West_01_LoopA \Weapons\Play_EX_MUS_West_01_LoopA 1782047987 Play_EX_MUS_Jungle_01 \Weapons\Play_EX_MUS_Jungle_01 2039091240 Play_EX_CorruptedObjectDestroyed_01 \Weapons\Play_EX_CorruptedObjectDestroyed_01 2063256460 Play_EXAlarmMushroom_01 \Weapons\Play_EXAlarmMushroom_01 @@ -55,14 +62,17 @@ Event ID Name Wwise Object Path Notes 2662118238 Play_EX_SonicSpinDashCharge_01 \Weapons\Play_EX_SonicSpinDashCharge_01 2704630512 Play_EX_MUS_Belly_01_Calm \Weapons\Play_EX_MUS_Belly_01_Calm 2837708698 Stop_EX_SonicDeath_01 \Weapons\Stop_EX_SonicDeath_01 + 2844332837 Play_EX_MUS_West_01 \Weapons\Play_EX_MUS_West_01 2950242728 Play_EX_CorruptionRoomTransition_02 \Weapons\Play_EX_CorruptionRoomTransition_02 2950242731 Play_EX_CorruptionRoomTransition_01 \Weapons\Play_EX_CorruptionRoomTransition_01 + 2990710977 Play_EX_MUS_Belly_01_Secret \Weapons\Play_EX_MUS_Belly_01_Secret 3031994881 Stop_EX_SonicSpinDashRelease_01 \Weapons\Stop_EX_SonicSpinDashRelease_01 3099192838 Play_EX_MUS_DeepDungeon_01 \Weapons\Play_EX_MUS_DeepDungeon_01 3112632927 Play_EX_CorruptedObjectTransform_01 \Weapons\Play_EX_CorruptedObjectTransform_01 3121071097 Play_EX_BellyDoor_Unseal \Weapons\Play_EX_BellyDoor_Unseal 3333407891 Stop_EX_RickRollMusic_01 \Weapons\Stop_EX_RickRollMusic_01 3398866015 Play_EX_SonicSpinDashRelease_01 \Weapons\Play_EX_SonicSpinDashRelease_01 + 3429717028 Play_EX_MUS_West_01_Secret \Weapons\Play_EX_MUS_West_01_Secret 3457196330 Play_EX_MUS_Belly_01 \Weapons\Play_EX_MUS_Belly_01 3492306034 Stop_EX_CorruptedObjectDestroyed_01 \Weapons\Stop_EX_CorruptedObjectDestroyed_01 3501969484 Play_EX_BellyDoor_Seal \Weapons\Play_EX_BellyDoor_Seal @@ -78,6 +88,7 @@ Event ID Name Wwise Object Path Notes 3939060724 Play_EX_MUS_BellyEntrance_01 \Weapons\Play_EX_MUS_BellyEntrance_01 3971937637 Play_EX_Cronenberg_Damage_01 \Weapons\Play_EX_Cronenberg_Damage_01 3980046948 Stop_EX_MUS_BellyMonster_Devour_01 \Weapons\Stop_EX_MUS_BellyMonster_Devour_01 + 3993031077 Play_EX_MUS_Belly_01_Shop \Weapons\Play_EX_MUS_Belly_01_Shop 4051006923 Stop_EX_UnicornMusic_01 \Weapons\Stop_EX_UnicornMusic_01 4171926144 Stop_EX_SonicSpinDashCharge_01 \Weapons\Stop_EX_SonicSpinDashCharge_01 4229475922 Play_EX_SonicRingCollect_01 \Weapons\Play_EX_SonicRingCollect_01 @@ -88,6 +99,8 @@ Game Parameter ID Name Wwise Object Path Notes In Memory Audio ID Name Audio source file Wwise Object Path Notes Data Size 15010807 MushroomAlarm C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\MushroomAlarm_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\MushroomAlarm 30859 + 21307161 Lockpick_Cathedral C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Lockpick_Cathedral_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Lockpick_Cathedral 2033175 + 112621323 Lockpick_Cathedral_FirstMovement C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Lockpick_Cathedral_FirstMovement_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Lockpick_Cathedral_FirstMovement 2612507 118216860 GlitchObjectDestroy C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\GlitchObjectDestroy_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\GlitchObjectDestroy 11569 122249576 Tummy_Full_of_Gunpowder_LoopB C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Tummy_Full_of_Gunpowder_LoopB_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Tummy_Full_of_Gunpowder_LoopB 1421219 186141995 GlitchDestruct C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\GlitchDestruct_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\GlitchDestruct 8848 @@ -96,7 +109,7 @@ In Memory Audio ID Name Audio source file Wwise Object Path Notes Data Size 197226656 Quiet_Forest C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Quiet_Forest_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Quiet_Forest 3109370 210760446 TableAssassin C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\TableAssassin_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\TableAssassin 22183 216664074 Quiet_Forest_LoopA C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Quiet_Forest_LoopA_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Quiet_Forest_LoopA 888689 - 235313123 Quiet_Forest_Shop C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Quiet_Forest_Shop_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Quiet_Forest_Shop 1968535 + 235313123 Quiet_Forest_Shop C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Quiet_Forest_Shop_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Quiet_Forest_Shop 1996226 270161796 Abomination_Damage C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Abomination_damage_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\Abomination_Damage 6414 282880781 BootlegGungeonMusic C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\BootlegGungeonMusic_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\BootlegGungeonMusic 1462202 352764876 Balloonpop1 C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Balloonpop1_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\Balloonpop1 4365 @@ -111,11 +124,13 @@ In Memory Audio ID Name Audio source file Wwise Object Path Notes Data Size 448206274 PowBlock C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\PowBlock_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\PowBlock 7235 449996002 Quiet_Forest_LoopB C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Quiet_Forest_LoopB_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Quiet_Forest_LoopB 1173698 587730353 GlitchBombDrop C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\GlitchBombDrop_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\GlitchBombDrop 10922 + 601901134 Lockpick_Cathedral_SecondMovement C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Lockpick_Cathedral_SecondMovement_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Lockpick_Cathedral_SecondMovement 2626268 603781093 Abomination_Spawn C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Abomination_Spawn_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\Abomination_Spawn 8969 632808090 GlitchBombFire C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\GlitchBombFire_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\GlitchBombFire 42152 666310335 DeVito_TrashMan C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\EX_DeVito_TrashMan_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\DeVito_TrashMan 30902 719081646 CorruptionAmbience_02 C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\CorruptionAmbience_AD29F36A_5B8C7134.wem \Actor-Mixer Hierarchy\Default Work Unit\CorruptionAmbience_02 46688 725215193 Tummy_Full_of_Gunpowder_LoopA C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Tummy_Full_of_Gunpowder_LoopA_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Tummy_Full_of_Gunpowder_LoopA 2159272 + 729324848 Lockpick_Cathedral_ThirdMovement C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Lockpick_Cathedral_ThirdMovement_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Lockpick_Cathedral_ThirdMovement 2617422 737519471 Belly_Door_Unlock C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Belly_Door_Unlock_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\Belly_Door_Unlock 2288 737636557 SonicRingCollect C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\SonicRingCollect_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\SonicRingCollect 8956 777371175 Shots Fired! C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Shots Fired!_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Shots Fired! 1990376 @@ -128,7 +143,9 @@ In Memory Audio ID Name Audio source file Wwise Object Path Notes Data Size 900807623 GlitchBombExplode C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\GlitchBombExplode_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\GlitchBombExplode 42566 908035244 RickRollMusic_01 C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\RickRolled_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\RickRollMusic_01 111817 958802487 Abomination_Die C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Abomination_Die_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\Abomination_Die 13648 + 961443732 Lockpick_Cathedra_Calm C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Lockpick_Cathedra_Calm_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Lockpick_Cathedra_Calm 2320942 979919218 PowEnemyDeath C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\PowEnemyDeath_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\PowEnemyDeath 3344 + 980031676 Tummy_Full_of_Gunpowder_Secret C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Tummy_Full_of_Gunpoweder_Secret_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Tummy_Full_of_Gunpowder_Secret 841450 984890443 Belly_Door_Close C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Belly_Door_Close_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\Belly_Door_Close 3174 989083201 SonicDeath C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\SonicDeath_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\SonicDeath 22072 994875608 SonicLoseRings C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\SonicLoseRings_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\SonicLoseRings 22416 @@ -136,6 +153,7 @@ In Memory Audio ID Name Audio source file Wwise Object Path Notes Data Size 1020036941 Tummy_Full_of_Gunpowder_Entrance C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Tummy_Full_of_Gunpowder_Entrance_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Tummy_Full_of_Gunpowder_Entrance 6739925 1020991936 Quiet_Forest_Calm C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Quiet_Forest_Calm_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Quiet_Forest_Calm 564880 1026631834 BreachTransitionFast C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\BreachTransitionFast_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\BreachTransitionFast 70430 + 1028827529 Cola_flavored_soda C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\Cola_flavored_soda_AD29F36A.wem \Actor-Mixer Hierarchy\Default Work Unit\Cola_flavored_soda 1466155 1035017998 ElevatorDing C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\ElevatorDing_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\ElevatorDing 13620 1053740231 GlitchDamage C:\Users\Spenser\Documents\GitHub\ApacheThunder\ExpandTheGungeon\ExpandAssets\Audio\.cache\Windows\SFX\GlitchDamage_F7D0E330.wem \Actor-Mixer Hierarchy\Default Work Unit\GlitchDamage 4024 diff --git a/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.xml b/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.xml index 56a3eac..5a0deeb 100644 --- a/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.xml +++ b/ExpandAssets/Audio/GeneratedSoundBanks/Windows/EX_SFX.xml @@ -42,6 +42,8 @@ + + @@ -56,6 +58,15 @@ + + + + + + + + + @@ -101,6 +112,14 @@ MushroomAlarm.wav SFX\MushroomAlarm_F7D0E330.wem + + Lockpick_Cathedral.wav + SFX\Lockpick_Cathedral_AD29F36A.wem + + + Lockpick_Cathedral_FirstMovement.wav + SFX\Lockpick_Cathedral_FirstMovement_AD29F36A.wem + GlitchObjectDestroy.wav SFX\GlitchObjectDestroy_F7D0E330.wem @@ -193,6 +212,10 @@ GlitchBombDrop.wav SFX\GlitchBombDrop_F7D0E330.wem + + Lockpick_Cathedral_SecondMovement.wav + SFX\Lockpick_Cathedral_SecondMovement_AD29F36A.wem + Abomination_Spawn.wav SFX\Abomination_Spawn_F7D0E330.wem @@ -213,6 +236,10 @@ Tummy_Full_of_Gunpowder_LoopA.wav SFX\Tummy_Full_of_Gunpowder_LoopA_AD29F36A.wem + + Lockpick_Cathedral_ThirdMovement.wav + SFX\Lockpick_Cathedral_ThirdMovement_AD29F36A.wem + Belly_Door_Unlock.wav SFX\Belly_Door_Unlock_F7D0E330.wem @@ -261,10 +288,18 @@ Abomination_Die.wav SFX\Abomination_Die_F7D0E330.wem + + Lockpick_Cathedra_Calm.wav + SFX\Lockpick_Cathedra_Calm_AD29F36A.wem + PowEnemyDeath.wav SFX\PowEnemyDeath_F7D0E330.wem + + Tummy_Full_of_Gunpoweder_Secret.wav + SFX\Tummy_Full_of_Gunpoweder_Secret_AD29F36A.wem + Belly_Door_Close.wav SFX\Belly_Door_Close_F7D0E330.wem @@ -293,6 +328,10 @@ BreachTransitionFast.wav SFX\BreachTransitionFast_F7D0E330.wem + + Cola_flavored_soda.wav + SFX\Cola_flavored_soda_AD29F36A.wem + ElevatorDing.wav SFX\ElevatorDing_F7D0E330.wem diff --git a/ExpandAssets/Audio/GeneratedSoundBanks/Windows/SoundbanksInfo.xml b/ExpandAssets/Audio/GeneratedSoundBanks/Windows/SoundbanksInfo.xml index cb37cfe..6346c69 100644 --- a/ExpandAssets/Audio/GeneratedSoundBanks/Windows/SoundbanksInfo.xml +++ b/ExpandAssets/Audio/GeneratedSoundBanks/Windows/SoundbanksInfo.xml @@ -50,6 +50,8 @@ + + @@ -64,6 +66,15 @@ + + + + + + + + + @@ -109,6 +120,14 @@ MushroomAlarm.wav SFX\MushroomAlarm_F7D0E330.wem + + Lockpick_Cathedral.wav + SFX\Lockpick_Cathedral_AD29F36A.wem + + + Lockpick_Cathedral_FirstMovement.wav + SFX\Lockpick_Cathedral_FirstMovement_AD29F36A.wem + GlitchObjectDestroy.wav SFX\GlitchObjectDestroy_F7D0E330.wem @@ -201,6 +220,10 @@ GlitchBombDrop.wav SFX\GlitchBombDrop_F7D0E330.wem + + Lockpick_Cathedral_SecondMovement.wav + SFX\Lockpick_Cathedral_SecondMovement_AD29F36A.wem + Abomination_Spawn.wav SFX\Abomination_Spawn_F7D0E330.wem @@ -221,6 +244,10 @@ Tummy_Full_of_Gunpowder_LoopA.wav SFX\Tummy_Full_of_Gunpowder_LoopA_AD29F36A.wem + + Lockpick_Cathedral_ThirdMovement.wav + SFX\Lockpick_Cathedral_ThirdMovement_AD29F36A.wem + Belly_Door_Unlock.wav SFX\Belly_Door_Unlock_F7D0E330.wem @@ -269,10 +296,18 @@ Abomination_Die.wav SFX\Abomination_Die_F7D0E330.wem + + Lockpick_Cathedra_Calm.wav + SFX\Lockpick_Cathedra_Calm_AD29F36A.wem + PowEnemyDeath.wav SFX\PowEnemyDeath_F7D0E330.wem + + Tummy_Full_of_Gunpoweder_Secret.wav + SFX\Tummy_Full_of_Gunpoweder_Secret_AD29F36A.wem + Belly_Door_Close.wav SFX\Belly_Door_Close_F7D0E330.wem @@ -301,6 +336,10 @@ BreachTransitionFast.wav SFX\BreachTransitionFast_F7D0E330.wem + + Cola_flavored_soda.wav + SFX\Cola_flavored_soda_AD29F36A.wem + ElevatorDing.wav SFX\ElevatorDing_F7D0E330.wem diff --git a/ExpandAssets/Audio/IncrementalSoundBankData.xml b/ExpandAssets/Audio/IncrementalSoundBankData.xml index ea3867b..6b0e823 100644 --- a/ExpandAssets/Audio/IncrementalSoundBankData.xml +++ b/ExpandAssets/Audio/IncrementalSoundBankData.xml @@ -3,19 +3,19 @@ - + - + - - + + - + diff --git a/ExpandAssets/Audio/Originals/SFX/Cola_flavored_soda.wav b/ExpandAssets/Audio/Originals/SFX/Cola_flavored_soda.wav new file mode 100644 index 0000000..ba9b726 Binary files /dev/null and b/ExpandAssets/Audio/Originals/SFX/Cola_flavored_soda.wav differ diff --git a/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedra_Calm.wav b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedra_Calm.wav new file mode 100644 index 0000000..c2a8269 Binary files /dev/null and b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedra_Calm.wav differ diff --git a/ExpandTheGungeon/ExpandSharedAuto b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral.wav similarity index 70% rename from ExpandTheGungeon/ExpandSharedAuto rename to ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral.wav index 523d66f..4ea198b 100644 Binary files a/ExpandTheGungeon/ExpandSharedAuto and b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral.wav differ diff --git a/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral_FirstMovement.wav b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral_FirstMovement.wav new file mode 100644 index 0000000..88c58c2 Binary files /dev/null and b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral_FirstMovement.wav differ diff --git a/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral_SecondMovement.wav b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral_SecondMovement.wav new file mode 100644 index 0000000..91683cc Binary files /dev/null and b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral_SecondMovement.wav differ diff --git a/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral_ThirdMovement.wav b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral_ThirdMovement.wav new file mode 100644 index 0000000..f7bd1b3 Binary files /dev/null and b/ExpandAssets/Audio/Originals/SFX/Lockpick_Cathedral_ThirdMovement.wav differ diff --git a/ExpandAssets/Audio/Originals/SFX/Quiet_Forest_Shop.wav b/ExpandAssets/Audio/Originals/SFX/Quiet_Forest_Shop.wav index 04cb111..387a534 100644 Binary files a/ExpandAssets/Audio/Originals/SFX/Quiet_Forest_Shop.wav and b/ExpandAssets/Audio/Originals/SFX/Quiet_Forest_Shop.wav differ diff --git a/ExpandAssets/Audio/Originals/SFX/Tummy_Full_of_Gunpoweder_Secret.wav b/ExpandAssets/Audio/Originals/SFX/Tummy_Full_of_Gunpoweder_Secret.wav new file mode 100644 index 0000000..e92117c Binary files /dev/null and b/ExpandAssets/Audio/Originals/SFX/Tummy_Full_of_Gunpoweder_Secret.wav differ diff --git a/ExpandTheGungeon/ExpandAssets.cs b/ExpandTheGungeon/ExpandAssets.cs index 5c75acb..07d9b24 100644 --- a/ExpandTheGungeon/ExpandAssets.cs +++ b/ExpandTheGungeon/ExpandAssets.cs @@ -54,12 +54,15 @@ public enum AssetSource { BraveResources, SharedAuto1, SharedAuto2, EnemiesBase, public static void InitCustomAssetBundles(string nameSpace = null) { Dictionary m_AssetBundles = ReflectionHelpers.ReflectGetField>(typeof(ResourceManager), "LoadedBundles"); AssetBundle m_ExpandSharedAssets1 = null; + AssetBundle m_ExpandAudio = null; try { if (string.IsNullOrEmpty(nameSpace)) { m_ExpandSharedAssets1 = LoadFromModZIPOrModFolder(ExpandTheGungeon.ModAssetBundleName.ToLower()); + m_ExpandAudio = LoadFromModZIPOrModFolder(ExpandTheGungeon.ModAudioAssetBundleName.ToLower()); } else { m_ExpandSharedAssets1 = LoadAssetBundleFromResource(ExpandTheGungeon.ModAssetBundleName, nameSpace); + m_ExpandAudio = LoadAssetBundleFromResource(ExpandTheGungeon.ModAudioAssetBundleName, nameSpace); } if (m_ExpandSharedAssets1 != null) { @@ -70,6 +73,15 @@ public enum AssetSource { BraveResources, SharedAuto1, SharedAuto2, EnemiesBase, ExpandTheGungeon.ExceptionText.Add(ErrorMessage); return; } + + if (m_ExpandAudio != null) { + m_AssetBundles.Add(ExpandTheGungeon.ModAudioAssetBundleName, m_ExpandAudio); + } else { + string ErrorMessage = "[ExpandTheGungeon] ERROR: ExpandAudio asset bundle not found!"; + Debug.Log(ErrorMessage); + ExpandTheGungeon.ExceptionText.Add(ErrorMessage); + return; + } } catch (Exception ex) { string ErrorMessage = "[ExpandTheGungeon] ERROR: Exception while loading custom asset bundles! Possible GUID conflict with other custom AssetBundles?"; Debug.Log(ErrorMessage); @@ -115,8 +127,8 @@ public enum AssetSource { BraveResources, SharedAuto1, SharedAuto2, EnemiesBase, } - public static void InitAudio (AssetBundle expandSharedAssets1, string assetPath) { - TextAsset SoundBankBinary = expandSharedAssets1.LoadAsset(assetPath); + public static void InitAudio (AssetBundle expandAudio, string assetPath) { + TextAsset SoundBankBinary = expandAudio.LoadAsset(assetPath); if (SoundBankBinary) { byte[] array = SoundBankBinary.bytes; IntPtr intPtr = Marshal.AllocHGlobal(array.Length); diff --git a/ExpandTheGungeon/ExpandFoyer.cs b/ExpandTheGungeon/ExpandFoyer.cs index d82f782..e866587 100644 --- a/ExpandTheGungeon/ExpandFoyer.cs +++ b/ExpandTheGungeon/ExpandFoyer.cs @@ -49,6 +49,7 @@ private enum State { PreFoyerCheck, CheckSettings, SpawnObjects, Exit }; GameManager.Instance.InjectedLevelName = ExpandSettings.TestFloor; } if (GameManager.Instance.EnemyReplacementTiers != null) { ExpandEnemyReplacements.Init(GameManager.Instance.EnemyReplacementTiers); } + ExpandDungeonMusicAPI.EnteredNewCustomFloor = false; m_State = State.SpawnObjects; return; case State.SpawnObjects: diff --git a/ExpandTheGungeon/ExpandMain/ExpandDungeonMusicAPI.cs b/ExpandTheGungeon/ExpandMain/ExpandDungeonMusicAPI.cs index 2804331..b7c6ced 100644 --- a/ExpandTheGungeon/ExpandMain/ExpandDungeonMusicAPI.cs +++ b/ExpandTheGungeon/ExpandMain/ExpandDungeonMusicAPI.cs @@ -10,7 +10,8 @@ namespace ExpandTheGungeon.ExpandMain { public class ExpandDungeonMusicAPI { public static string TempCustomBossMusic = string.Empty; - + public static bool EnteredNewCustomFloor = false; + public static Hook switchToStateHook; public static Hook notifyEnteredNewRoomHook; public static Hook switchToCustomMusicHook; @@ -21,6 +22,7 @@ public class ExpandDungeonMusicAPI { public static Hook flushAudioHook; public static Hook endBossMusicHook; + // Event for stopping all custom music. Ensure you defined this in your sound bank and put the string for it here. public static readonly string StopAllMusicEventName = "Stop_EX_MUS_All"; @@ -28,13 +30,14 @@ public class ExpandDungeonMusicAPI { public static readonly Dictionary CustomLevelMusic = new Dictionary() { ["Play_EX_MUS_Belly_01"] = true, ["Play_EX_MUS_Jungle_01"] = true, + ["Play_EX_MUS_West_01"] = true, ["Play_EX_MUS_DeepDungeon_01"] = false }; - public static readonly List CustomWestFloorMusic = new List() { - "Play_MUS_Space_Theme_01", + /*public static readonly List CustomWestFloorMusic = new List() { + "Play_EX_MUS_West_01", "Play_MUS_Office_Theme_01" - }; + };*/ // Any custom rooms that use custom music goes here. public static readonly List CustomRoomMusic = new List() { @@ -49,7 +52,9 @@ public class ExpandDungeonMusicAPI { }; public static readonly List TilesetsWithCustomShopSecretMusic = new List() { - GlobalDungeonData.ValidTilesets.JUNGLEGEON + GlobalDungeonData.ValidTilesets.JUNGLEGEON, + GlobalDungeonData.ValidTilesets.BELLYGEON, + GlobalDungeonData.ValidTilesets.WESTGEON }; // Normal Action delegate doesn't support 5 arguments needed for SwitchToCustomMusic hook. @@ -68,6 +73,7 @@ public class ExpandDungeonMusicAPI { typeof(ExpandDungeonMusicAPI).GetMethod(nameof(SwitchToState), BindingFlags.NonPublic | BindingFlags.Instance), typeof(DungeonFloorMusicController) ); + if (ExpandSettings.debugMode) { Debug.Log("[ExpandTheGungeon] Installing DungeonFloorMusicController.NotifyEnteredNewRoom Hook...."); } notifyEnteredNewRoomHook = new Hook( typeof(DungeonFloorMusicController).GetMethod(nameof(DungeonFloorMusicController.NotifyEnteredNewRoom), BindingFlags.Public | BindingFlags.Instance), @@ -132,11 +138,11 @@ public class ExpandDungeonMusicAPI { float m_changedToArcadeTimer = ReflectGetField(typeof(DungeonFloorMusicController), "m_changedToArcadeTimer", self); float m_cooldownTimerRemaining = ReflectGetField(typeof(DungeonFloorMusicController), "m_cooldownTimerRemaining", self); uint m_coreMusicEventID = ReflectGetField(typeof(DungeonFloorMusicController), "m_coreMusicEventID", self); - DungeonFloorMusicController.DungeonMusicState m_currentState = ReflectGetField(typeof(DungeonFloorMusicController), "m_currentState", self); - bool m_overrideMusic = ReflectGetField(typeof(DungeonFloorMusicController), "m_overrideMusic", self); + // DungeonFloorMusicController.DungeonMusicState m_currentState = ReflectGetField(typeof(DungeonFloorMusicController), "m_currentState", self); + // bool m_overrideMusic = ReflectGetField(typeof(DungeonFloorMusicController), "m_overrideMusic", self); if (string.IsNullOrEmpty(m_cachedMusicEventCore) | !CustomLevelMusic.TryGetValue(m_cachedMusicEventCore, out SupportsLoopSections)) { - if (m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { + if (self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); } orig(self, targetState); @@ -146,84 +152,109 @@ public class ExpandDungeonMusicAPI { FieldInfo m_cooldownTimerRemainingField = typeof(DungeonFloorMusicController).GetField("m_cooldownTimerRemaining", BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo m_currentStateField = typeof(DungeonFloorMusicController).GetField("m_currentState", BindingFlags.NonPublic | BindingFlags.Instance); - if (m_changedToArcadeTimer > 0f && targetState == DungeonFloorMusicController.DungeonMusicState.CALM && m_currentState == DungeonFloorMusicController.DungeonMusicState.ARCADE) { + if (m_changedToArcadeTimer > 0f && targetState == DungeonFloorMusicController.DungeonMusicState.CALM && self.CurrentState == DungeonFloorMusicController.DungeonMusicState.ARCADE) { return; } Debug.Log(string.Concat(new object[] { "(EX) Attemping to switch to state: ", targetState.ToString(), " with core ID: ", m_coreMusicEventID })); - if (m_overrideMusic) { return; } + if (self.MusicOverridden) { return; } switch (targetState) { - case DungeonFloorMusicController.DungeonMusicState.ACTIVE_SIDE_A: + /*default: AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); + AkSoundEngine.PostEvent(m_cachedMusicEventCore, self.gameObject); + break;*/ + case DungeonFloorMusicController.DungeonMusicState.ACTIVE_SIDE_A: if (SupportsLoopSections) { - AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); - AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_LoopA", self.gameObject); + if (EnteredNewCustomFloor) { + AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); + AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_LoopA", self.gameObject); + } else { + EnteredNewCustomFloor = true; + } // AkSoundEngine.PostEvent("Play_MUS_Dungeon_State_LoopA", self.gameObject); - } else if (m_currentState == DungeonFloorMusicController.DungeonMusicState.SHOP | - m_currentState == DungeonFloorMusicController.DungeonMusicState.SECRET | - m_currentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | - m_currentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | - m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1) + } else if (self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SHOP | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SECRET | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | + self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1) ) { - if (m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { + AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + if (self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); } AkSoundEngine.PostEvent(m_cachedMusicEventCore, self.gameObject); } break; case DungeonFloorMusicController.DungeonMusicState.ACTIVE_SIDE_B: - AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); if (SupportsLoopSections) { - AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); - AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_LoopB", self.gameObject); + if (EnteredNewCustomFloor) { + AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); + AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_LoopB", self.gameObject); + } else { + EnteredNewCustomFloor = true; + } // AkSoundEngine.PostEvent("Play_MUS_Dungeon_State_LoopB", self.gameObject); - } else if (m_currentState == DungeonFloorMusicController.DungeonMusicState.SHOP | - m_currentState == DungeonFloorMusicController.DungeonMusicState.SECRET | - m_currentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | - m_currentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | - m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1) + } else if (self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SHOP | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SECRET | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | + self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1) ) { - if (m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { + AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + if (self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); } AkSoundEngine.PostEvent(m_cachedMusicEventCore, self.gameObject); } break; case DungeonFloorMusicController.DungeonMusicState.ACTIVE_SIDE_C: - AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); if (SupportsLoopSections) { - AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); - AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_LoopC", self.gameObject); + if (EnteredNewCustomFloor) { + AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); + AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_LoopC", self.gameObject); + } else { + EnteredNewCustomFloor = true; + } // AkSoundEngine.PostEvent("Play_MUS_Dungeon_State_LoopC", self.gameObject); - } else if (m_currentState == DungeonFloorMusicController.DungeonMusicState.SHOP | - m_currentState == DungeonFloorMusicController.DungeonMusicState.SECRET | - m_currentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | - m_currentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | - m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1) + } else if (self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SHOP | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SECRET | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | + self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1) ) { - if (m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { + AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + if (self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); } AkSoundEngine.PostEvent(m_cachedMusicEventCore, self.gameObject); } break; - case DungeonFloorMusicController.DungeonMusicState.ACTIVE_SIDE_D: - AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + case DungeonFloorMusicController.DungeonMusicState.ACTIVE_SIDE_D: if (SupportsLoopSections) { - AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); - AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_LoopD", self.gameObject); + if (EnteredNewCustomFloor) { + AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); + AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_LoopD", self.gameObject); + } else { + EnteredNewCustomFloor = true; + } // AkSoundEngine.PostEvent("Play_MUS_Dungeon_State_LoopD", self.gameObject); - } else if (m_currentState == DungeonFloorMusicController.DungeonMusicState.SHOP | - m_currentState == DungeonFloorMusicController.DungeonMusicState.SECRET | - m_currentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | - m_currentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | - m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1) + } else if (self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SHOP | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SECRET | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | + self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1) ) { - if (m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { + AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); + if (self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); } AkSoundEngine.PostEvent(m_cachedMusicEventCore, self.gameObject); @@ -241,6 +272,13 @@ public class ExpandDungeonMusicAPI { break; case DungeonFloorMusicController.DungeonMusicState.CALM: m_cooldownTimerRemainingField.SetValue(self, -1f); + if (self.gameObject.GetComponent().Dungeon.tileIndices.tilesetId == GlobalDungeonData.ValidTilesets.WESTGEON) { + if (self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SECRET) { + Debug.Log("(EX) Skipped switching to state on Old West Floor: " + targetState.ToString()); + m_currentStateField.SetValue(self, targetState); + return; + } + } if (GameManager.Instance.CurrentLevelOverrideState == GameManager.LevelOverrideState.FOYER && GameStatsManager.Instance.AnyPastBeaten()) { AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); @@ -250,14 +288,14 @@ public class ExpandDungeonMusicAPI { if (SupportsLoopSections) { AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_Calm", self.gameObject); - } else if (m_currentState == DungeonFloorMusicController.DungeonMusicState.SHOP | - m_currentState == DungeonFloorMusicController.DungeonMusicState.SECRET | - m_currentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | - m_currentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | - m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1) + } else if (self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SHOP | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.SECRET | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.FOYER_SORCERESS | + self.CurrentState == DungeonFloorMusicController.DungeonMusicState.ARCADE | + self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1) ) { - if (m_currentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { + if (self.CurrentState == (DungeonFloorMusicController.DungeonMusicState)(-1)) { AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); } AkSoundEngine.PostEvent(m_cachedMusicEventCore, self.gameObject); @@ -293,6 +331,7 @@ public class ExpandDungeonMusicAPI { // AkSoundEngine.PostEvent(m_cachedMusicEventCore + "_Sorceress", self.gameObject); break; case DungeonFloorMusicController.DungeonMusicState.SECRET: + if (self.gameObject.GetComponent().Dungeon.tileIndices.tilesetId == GlobalDungeonData.ValidTilesets.WESTGEON) { return; } m_cooldownTimerRemainingField.SetValue(self, -1f); AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); AkSoundEngine.PostEvent("Stop_MUS_All", self.gameObject); @@ -314,20 +353,26 @@ public class ExpandDungeonMusicAPI { AkSoundEngine.PostEvent("Play_MUS_Dungeon_State_Shop", self.gameObject); } break; - } + } Debug.Log("(EX) Successfully switched to state: " + targetState.ToString()); m_currentStateField.SetValue(self, targetState); } // Ensures custom floor music doesn't overlap and not overlap with other custom room music if player enters one room that has custom room music into another that also has custom room music. public void SwitchToCustomMusic(Action5X orig, DungeonFloorMusicController self, string customMusicEvent, GameObject source, bool useSwitch, string switchEvent) { + if (customMusicEvent == "Play_MUS_Dungeon_State_NPC") { + string m_cachedMusicEventCore = ReflectGetField(typeof(DungeonFloorMusicController), "m_cachedMusicEventCore", self); + bool SupportsLoopSections = false; + if (CustomLevelMusic.TryGetValue(m_cachedMusicEventCore, out SupportsLoopSections)) { return; } + } AkSoundEngine.PostEvent(StopAllMusicEventName, self.gameObject); + Debug.Log("(EX) Successfully switched to custom music: " + customMusicEvent); orig(self, customMusicEvent, source, useSwitch, switchEvent); } // This is specific to ExpandTheGungeon's Old West floor currently. public void NotifyEnteredNewRoom(Action orig, DungeonFloorMusicController self, RoomHandler newRoom) { - if (GameManager.Instance.Dungeon.tileIndices.tilesetId == GlobalDungeonData.ValidTilesets.WESTGEON) { + /*if (GameManager.Instance.Dungeon.tileIndices.tilesetId == GlobalDungeonData.ValidTilesets.WESTGEON) { self.UpdateCoreMusicEvent(); FieldInfo m_cachedMusicEventCore = typeof(DungeonFloorMusicController).GetField("m_cachedMusicEventCore", BindingFlags.NonPublic | BindingFlags.Instance); FieldInfo m_currentState = typeof(DungeonFloorMusicController).GetField("m_currentState", BindingFlags.NonPublic | BindingFlags.Instance); @@ -350,7 +395,19 @@ public class ExpandDungeonMusicAPI { m_cachedMusicEventCore.SetValue(self, CustomWestFloorMusic[1]); AkSoundEngine.PostEvent(CustomWestFloorMusic[1], self.gameObject); } - } + }*/ + try { + if (!EnteredNewCustomFloor && newRoom.area != null && newRoom.area.PrototypeRoomCategory != PrototypeDungeonRoom.RoomCategory.ENTRANCE) { + if (newRoom?.parentRoom?.area != null && newRoom.parentRoom.area.PrototypeRoomCategory != PrototypeDungeonRoom.RoomCategory.ENTRANCE) { + EnteredNewCustomFloor = true; + } + } /*else { + string m_cachedMusicEventCore = ReflectGetField(typeof(DungeonFloorMusicController), "m_cachedMusicEventCore", self); + if (!string.IsNullOrEmpty(m_cachedMusicEventCore) && m_cachedMusicEventCore == "Play_EX_MUS_Belly_01") { + EnteredNewCustomFloor = true; + } + }*/ + } catch (Exception) { }; orig(self, newRoom); } diff --git a/ExpandTheGungeon/ExpandObjectMods.cs b/ExpandTheGungeon/ExpandObjectMods.cs index c81416c..6485a9f 100644 --- a/ExpandTheGungeon/ExpandObjectMods.cs +++ b/ExpandTheGungeon/ExpandObjectMods.cs @@ -8,6 +8,7 @@ using ExpandTheGungeon.ExpandUtilities; using ExpandTheGungeon.ExpandMain; using ExpandTheGungeon.ItemAPI; +using System.Reflection; namespace ExpandTheGungeon { @@ -40,6 +41,23 @@ public class ExpandObjectMods { } } + ExpandDungeonMusicAPI.EnteredNewCustomFloor = false; + try { + if (GameManager.Instance?.DungeonMusicController){ + bool SupportsLoopSections = false; + bool SupportsCustomMusic = ExpandDungeonMusicAPI.CustomLevelMusic.TryGetValue(dungeon.musicEventName, out SupportsLoopSections); + FieldInfo m_CoolDownTimer = typeof(DungeonFloorMusicController).GetField("COOLDOWN_TIMER", BindingFlags.NonPublic | BindingFlags.Instance); + FieldInfo m_MusicChangeTimer = typeof(DungeonFloorMusicController).GetField("MUSIC_CHANGE_TIMER", BindingFlags.NonPublic | BindingFlags.Instance); + if (SupportsCustomMusic && SupportsLoopSections) { + m_CoolDownTimer.SetValue(GameManager.Instance.DungeonMusicController, 34f); + m_MusicChangeTimer.SetValue(GameManager.Instance.DungeonMusicController, 50f); + } else { + m_CoolDownTimer.SetValue(GameManager.Instance.DungeonMusicController, 22.5f); + m_MusicChangeTimer.SetValue(GameManager.Instance.DungeonMusicController, 40f); + } + } + } catch (System.Exception) { } + if (dungeon.tileIndices.tilesetId == GlobalDungeonData.ValidTilesets.BELLYGEON && dungeon.data != null && dungeon.data.rooms != null) { foreach (RoomHandler room in dungeon.data.rooms) { if (room != null && room.area != null && room.area.PrototypeRoomCategory == PrototypeDungeonRoom.RoomCategory.BOSS) { diff --git a/ExpandTheGungeon/ExpandPrefab/ExpandDungeonPrefabs.cs b/ExpandTheGungeon/ExpandPrefab/ExpandDungeonPrefabs.cs index 71d6545..d068c85 100644 --- a/ExpandTheGungeon/ExpandPrefab/ExpandDungeonPrefabs.cs +++ b/ExpandTheGungeon/ExpandPrefab/ExpandDungeonPrefabs.cs @@ -2025,9 +2025,7 @@ public class ExpandDungeonPrefabs { dungeon.PlayerLightColor = Color.white; dungeon.PlayerLightIntensity = 3; dungeon.PlayerLightRadius = 5; - // dungeon.musicEventName = string.Empty; - dungeon.musicEventName = "Play_MUS_Dungeon_Rat_Theme_01"; - // dungeon.musicEventName = "Play_MUS_Office_Theme_01"; + dungeon.musicEventName = "Play_EX_MUS_West_01"; CastlePrefab = null; sharedAssets2 = null; diff --git a/ExpandTheGungeon/ExpandPrefab/ExpandEnemyCorruptor.cs b/ExpandTheGungeon/ExpandPrefab/ExpandEnemyCorruptor.cs index 94dd53b..3c19870 100644 --- a/ExpandTheGungeon/ExpandPrefab/ExpandEnemyCorruptor.cs +++ b/ExpandTheGungeon/ExpandPrefab/ExpandEnemyCorruptor.cs @@ -5718,7 +5718,7 @@ public class ExpandEnemyCorruptor { if (CachedEnemyActor.EnemyGuid == "4d37ce3d666b4ddda8039929225b7ede") { CachedGlitchEnemyActor.healthHaver.gameObject.AddComponent(); ExpandExplodeOnDeath CachedExploder = CachedGlitchEnemyActor.healthHaver.GetComponent(); - CachedExploder.deathType = OnDeathBehavior.DeathType.Death; + CachedExploder.deathType = OnDeathBehavior.DeathType.Death; } else { if (UnityEngine.Random.value <= 0.2f) { CachedGlitchEnemyActor.healthHaver.gameObject.AddComponent(); } ExpandExplodeOnDeath CachedExploder = CachedGlitchEnemyActor.healthHaver.GetComponent(); @@ -5747,7 +5747,7 @@ public class ExpandEnemyCorruptor { CachedGlitchEnemyActor.healthHaver.minimumHealth = CachedEnemyActor.healthHaver.minimumHealth; CachedGlitchEnemyActor.healthHaver.OnlyAllowSpecialBossDamage = false; CachedGlitchEnemyActor.healthHaver.PreventAllDamage = false; - CachedGlitchEnemyActor.IsNormalEnemy = true; + CachedGlitchEnemyActor.IsNormalEnemy = true; CachedGlitchEnemyActor.ImmuneToAllEffects = false; CachedGlitchEnemyActor.healthHaver.spawnBulletScript = CachedEnemyActor.healthHaver.spawnBulletScript; CachedGlitchEnemyActor.healthHaver.SuppressDeathSounds = CachedEnemyActor.healthHaver.SuppressDeathSounds; diff --git a/ExpandTheGungeon/ExpandPrefab/ExpandRoomPrefabs.cs b/ExpandTheGungeon/ExpandPrefab/ExpandRoomPrefabs.cs index 28c20df..c44a799 100644 --- a/ExpandTheGungeon/ExpandPrefab/ExpandRoomPrefabs.cs +++ b/ExpandTheGungeon/ExpandPrefab/ExpandRoomPrefabs.cs @@ -1587,6 +1587,11 @@ public class ExpandRoomPrefabs { Expand_West_ShrineRoom.QAID = "FF" + UnityEngine.Random.Range(1000, 9999); Expand_West_ShrineRoom.GUID = Guid.NewGuid().ToString(); Expand_West_ShrineRoom.overrideRoomVisualType = 0; + Expand_West_ShrineRoom.UseCustomMusic = false; + Expand_West_ShrineRoom.UseCustomMusicState = false; + Expand_West_ShrineRoom.CustomMusicEvent = string.Empty; + Expand_West_ShrineRoom.UseCustomMusicSwitch = false; + Expand_West_ShrineRoom.CustomMusicSwitch = string.Empty; RoomBuilder.GenerateBasicRoomLayout(Expand_West_ShrineRoom); Expand_West_WestBrosBossRoom.name = "West Bros Boss Room"; diff --git a/ExpandTheGungeon/ExpandTheGungeon.cs b/ExpandTheGungeon/ExpandTheGungeon.cs index 73ae0d2..9680856 100644 --- a/ExpandTheGungeon/ExpandTheGungeon.cs +++ b/ExpandTheGungeon/ExpandTheGungeon.cs @@ -24,7 +24,7 @@ public class ExpandTheGungeon : BaseUnityPlugin { public const string GUID = "ApacheThunder.etg.ExpandTheGungeon"; public const string ModName = "ExpandTheGungeon"; - public const string VERSION = "2.9.13"; + public const string VERSION = "2.9.14"; public static string ZipFilePath; public static string FilePath; public static string ResourcesPath; @@ -34,6 +34,7 @@ public class ExpandTheGungeon : BaseUnityPlugin { public const string ModSettingsFileName = "ExpandTheGungeon_Settings.txt"; public const string ModAssetBundleName = "ExpandSharedAuto"; + public const string ModAudioAssetBundleName = "ExpandAudio"; public const string ModSpriteAssetBundleName = "ExpandSpritesBase"; public const string ModSoundBankName = "EX_SFX"; public const string ConsoleCommandName = "expand"; @@ -142,12 +143,13 @@ public class ExpandTheGungeon : BaseUnityPlugin { } AssetBundle expandSharedAssets1 = ResourceManager.LoadAssetBundle(ModAssetBundleName); + AssetBundle expandAudio = ResourceManager.LoadAssetBundle(ModAudioAssetBundleName); AssetBundle sharedAssets = ResourceManager.LoadAssetBundle("shared_auto_001"); AssetBundle sharedAssets2 = ResourceManager.LoadAssetBundle("shared_auto_002"); AssetBundle braveResources = ResourceManager.LoadAssetBundle("brave_resources_001"); AssetBundle enemiesBase = ResourceManager.LoadAssetBundle("enemies_base_001"); - ExpandAssets.InitAudio(expandSharedAssets1, ModSoundBankName); + ExpandAssets.InitAudio(expandAudio, ModSoundBankName); // Init Custom GameLevelDefinitions ExpandDungeonPrefabs.InitCustomGameLevelDefinitions(braveResources, gameManager); // Init Custom Sprite Collections diff --git a/ExpandTheGungeon/ExpandTheGungeon.csproj b/ExpandTheGungeon/ExpandTheGungeon.csproj index d0d4a59..c88fc4b 100644 --- a/ExpandTheGungeon/ExpandTheGungeon.csproj +++ b/ExpandTheGungeon/ExpandTheGungeon.csproj @@ -279,7 +279,9 @@ - + + + diff --git a/ExpandTheGungeon/Properties/AssemblyInfo.cs b/ExpandTheGungeon/Properties/AssemblyInfo.cs index e5e09a4..05e3fbc 100644 --- a/ExpandTheGungeon/Properties/AssemblyInfo.cs +++ b/ExpandTheGungeon/Properties/AssemblyInfo.cs @@ -9,7 +9,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Apache Modding Inc")] [assembly: AssemblyProduct("ExpandTheGungeon")] -[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -31,5 +31,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.9.13")] -[assembly: AssemblyFileVersion("2.9.13")] +[assembly: AssemblyVersion("2.9.14")] +[assembly: AssemblyFileVersion("2.9.14")] diff --git a/UpdateSoundBank.cmd b/UpdateSoundBank.cmd index c03df8e..b33e48b 100644 --- a/UpdateSoundBank.cmd +++ b/UpdateSoundBank.cmd @@ -1 +1,3 @@ -copy ExpandAssets\Audio\GeneratedSoundBanks\Windows\EX_SFX.bnk ExpandAssets\Assets\ExpandAudio\EX_SFX.bytes /y \ No newline at end of file +@echo off +copy ExpandAssets\Audio\GeneratedSoundBanks\Windows\EX_SFX.bnk ExpandAssets\Assets\ExpandAudio\EX_SFX.bytes /y +pause