v2.9.7 Release Commit...

* Added Ammonomicon entries for most custom enemies and bosses. Sprite
work thanks to Lynceus!
* Added new Tree objects to ExpandFloorDecorator for Jungle floor.
Modified sprites courtasy of NeverNamed!
* Improved code in ExpandFloorDecorator for finding valid spawn
locations for objects.
* Bonus chest room on Jungle now has unique room design.
This commit is contained in:
ApacheThunder 2023-04-18 15:05:39 -05:00
parent acd2f9fd98
commit a27eca3ee3
90 changed files with 2706 additions and 953 deletions

View File

@ -1,5 +1,5 @@
ManifestFileVersion: 0 ManifestFileVersion: 0
CRC: 3602897831 CRC: 177801858
AssetBundleManifest: AssetBundleManifest:
AssetBundleInfos: AssetBundleInfos:
Info_0: Info_0:

View File

@ -1,12 +1,12 @@
ManifestFileVersion: 0 ManifestFileVersion: 0
CRC: 3937097182 CRC: 2023508650
Hashes: Hashes:
AssetFileHash: AssetFileHash:
serializedVersion: 2 serializedVersion: 2
Hash: 48c1897f0032b2a33fbef7c72666f38d Hash: 75a0642d52778f3f56fd3e7d286054b8
TypeTreeHash: TypeTreeHash:
serializedVersion: 2 serializedVersion: 2
Hash: 2241b0dac22d22b9de2222ad79842819 Hash: f4241535d4e8d4e11acb786dda0ad105
HashAppended: 0 HashAppended: 0
ClassTypes: ClassTypes:
- Class: 1 - Class: 1
@ -33,6 +33,8 @@ ClassTypes:
Script: {instanceID: 0} Script: {instanceID: 0}
- Class: 114 - Class: 114
Script: {fileID: 11500000, guid: 77e01a6014b97064fa53925969f884ae, type: 3} Script: {fileID: 11500000, guid: 77e01a6014b97064fa53925969f884ae, type: 3}
- Class: 114
Script: {fileID: 11500000, guid: dcb4fda0513fcf24a93207e0ed520ae2, type: 3}
- Class: 114 - Class: 114
Script: {fileID: 11500000, guid: 85a95b2198074e1459671337ed25c270, type: 3} Script: {fileID: 11500000, guid: 85a95b2198074e1459671337ed25c270, type: 3}
- Class: 114 - Class: 114
@ -49,6 +51,8 @@ ClassTypes:
Script: {fileID: 11500000, guid: 0159916ecce839b46a8148e75dacab83, type: 3} Script: {fileID: 11500000, guid: 0159916ecce839b46a8148e75dacab83, type: 3}
- Class: 114 - Class: 114
Script: {fileID: 11500000, guid: 1492b7fe0995e1f4b861785c3d23f832, type: 3} Script: {fileID: 11500000, guid: 1492b7fe0995e1f4b861785c3d23f832, type: 3}
- Class: 114
Script: {fileID: 11500000, guid: c59f4fb058392d745a690e85b4feba5d, type: 3}
- Class: 115 - Class: 115
Script: {instanceID: 0} Script: {instanceID: 0}
- Class: 198 - Class: 198
@ -68,6 +72,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon1_TinyPassage1.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon1_TinyPassage1.bytes
- Assets/ExpandPrefabs/Misc/EX_Chest_West.prefab - Assets/ExpandPrefabs/Misc/EX_Chest_West.prefab
- Assets/ExpandSerializedData/TilesetData/Nakatomi/Nakatomi_Purple/lavaGrids.txt - Assets/ExpandSerializedData/TilesetData/Nakatomi/Nakatomi_Purple/lavaGrids.txt
- Assets/ExpandTextures/AmmonomiconTextures/cronenberg_big_ammonomicon.png
- Assets/ExpandRooms/RoomFactoryData/MH_Expand_Achievement_Trickshot.bytes - Assets/ExpandRooms/RoomFactoryData/MH_Expand_Achievement_Trickshot.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular32.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular32.bytes
- Assets/ExpandPrefabs/AIActors/EXCorruptedEnemy.prefab - Assets/ExpandPrefabs/AIActors/EXCorruptedEnemy.prefab
@ -83,10 +88,12 @@ Assets:
- Assets/ExpandSerializedData/TilesetData/Nakatomi/Nakatomi_Blue/facewallGrids_1.txt - Assets/ExpandSerializedData/TilesetData/Nakatomi/Nakatomi_Blue/facewallGrids_1.txt
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter12.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter12.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_GunFairy.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_GunFairy.bytes
- Assets/ExpandTextures/AmmonomiconTextures/skusketling_ammonomicon.png
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals9.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals9.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Weird1.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Weird1.bytes
- Assets/ExpandPrefabs/Items/Portable Elevator.prefab - Assets/ExpandPrefabs/Items/Portable Elevator.prefab
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular2.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular2.bytes
- Assets/ExpandTextures/AmmonomiconTextures/hotshotcultist_icon.png
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter10.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter10.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Jungle_Exit.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Jungle_Exit.bytes
- Assets/ExpandPrefabs/Misc/EXSecretRoomGlitchFX.prefab - Assets/ExpandPrefabs/Misc/EXSecretRoomGlitchFX.prefab
@ -101,6 +108,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_smol1.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_smol1.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera5.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera5.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed22.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed22.bytes
- Assets/ExpandSerializedData/AmmonomiconData/BootlegBullat_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate_CellStronghold.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate_CellStronghold.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals6.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals6.bytes
- Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Gold/carpetGrid.txt - Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Gold/carpetGrid.txt
@ -128,16 +136,19 @@ Assets:
- Assets/ExpandRooms/RoomBuilderData/Mines/Neighborino_Pit_Layout.png - Assets/ExpandRooms/RoomBuilderData/Mines/Neighborino_Pit_Layout.png
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Jungle_SecretDragun.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Jungle_SecretDragun.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Owl10.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Owl10.bytes
- Assets/ExpandTextures/AmmonomiconTextures/clownkin_ammonomicon.png
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate2.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate2.bytes
- Assets/ExpandRooms/RoomBuilderData/Mines/Neighborino_Hopscoth_Layout.png - Assets/ExpandRooms/RoomBuilderData/Mines/Neighborino_Hopscoth_Layout.png
- Assets/ExpandPrefabs/Misc/EXSpaceFloorPitBorder_50x50.prefab - Assets/ExpandPrefabs/Misc/EXSpaceFloorPitBorder_50x50.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera24.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera24.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal27.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal27.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal19.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal19.bytes
- Assets/ExpandSerializedData/AmmonomiconData/BootlegShotgunManRed_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal20.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal20.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Teleport1.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Teleport1.bytes
- Assets/ExpandPrefabs/TilesetPrefabs/ExpandSarco_Pedestal.prefab - Assets/ExpandPrefabs/TilesetPrefabs/ExpandSarco_Pedestal.prefab
- Assets/ExpandPrefabs/AIActors/DoppelGunner/DopplegunnerHand.prefab - Assets/ExpandPrefabs/AIActors/DoppelGunner/DopplegunnerHand.prefab
- Assets/ExpandTextures/AmmonomiconTextures/chameleon_ammonomicon.png
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed17.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed17.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal22.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal22.bytes
- Assets/ExpandRooms/RoomBuilderData/TrapRooms/Expand_Thwomp_Crossing_Vertical_Layout.png - Assets/ExpandRooms/RoomBuilderData/TrapRooms/Expand_Thwomp_Crossing_Vertical_Layout.png
@ -148,6 +159,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular50.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular50.bytes
- Assets/ExpandPrefabs/Misc/BootlegRoomBorder_West.prefab - Assets/ExpandPrefabs/Misc/BootlegRoomBorder_West.prefab
- Assets/ExpandRooms/RoomFactoryData/Expand_Undead4.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Undead4.bytes
- Assets/ExpandSerializedData/AmmonomiconData/ClownKin_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera7.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera7.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular4.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular4.bytes
- Assets/ExpandRooms/RoomFactoryData/M_Expand_Achievement_Rider.bytes - Assets/ExpandRooms/RoomFactoryData/M_Expand_Achievement_Rider.bytes
@ -176,6 +188,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate14.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate14.bytes
- Assets/ExpandRooms/RoomFactoryData/BulletHell/BHell_TheReunion.bytes - Assets/ExpandRooms/RoomFactoryData/BulletHell/BHell_TheReunion.bytes
- Assets/ExpandRooms/RoomBuilderData/Creepy_Glitched_Room_Layout.png - Assets/ExpandRooms/RoomBuilderData/Creepy_Glitched_Room_Layout.png
- Assets/ExpandSerializedData/AmmonomiconData/Cronenberg_AmmonomiconData.txt
- Assets/ExpandPrefabs/Items/EXThirdEye.prefab - Assets/ExpandPrefabs/Items/EXThirdEye.prefab
- Assets/ExpandPrefabs/AIActors/Cultist Companion.prefab - Assets/ExpandPrefabs/AIActors/Cultist Companion.prefab
- Assets/ExpandPrefabs/Misc/EX_Trap_Apache.prefab - Assets/ExpandPrefabs/Misc/EX_Trap_Apache.prefab
@ -248,8 +261,10 @@ Assets:
- Assets/ExpandRooms/RoomBuilderData/Castle/Expand_TurtleMelon_Small_Passage_1_Layout.png - Assets/ExpandRooms/RoomBuilderData/Castle/Expand_TurtleMelon_Small_Passage_1_Layout.png
- Assets/ExpandPrefabs/TilesetPrefabs/Jungle Tree Frame.prefab - Assets/ExpandPrefabs/TilesetPrefabs/Jungle Tree Frame.prefab
- Assets/ExpandPrefabs/AIActors/HotShotCultist.prefab - Assets/ExpandPrefabs/AIActors/HotShotCultist.prefab
- Assets/ExpandTextures/AmmonomiconTextures/cronenberg_tall_ammonomicon.png
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Squareish4.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Squareish4.bytes
- Assets/ExpandPrefabs/Foyer/EXArcadeGameScanlineFX.prefab - Assets/ExpandPrefabs/Foyer/EXArcadeGameScanlineFX.prefab
- Assets/ExpandTextures/AmmonomiconTextures/bootlegbulletman_ammonomicon.png
- Assets/ExpandPrefabs/SpriteCollections/Misc/EXTrapCollection.prefab - Assets/ExpandPrefabs/SpriteCollections/Misc/EXTrapCollection.prefab
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter18.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter18.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular50.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular50.bytes
@ -291,6 +306,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Connector_04.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Connector_04.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch6.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch6.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Spiralbomb.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Spiralbomb.bytes
- Assets/ExpandSerializedData/AmmonomiconData/WestBrosTuc_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/P_Expand_MasterRound2.bytes - Assets/ExpandRooms/RoomFactoryData/P_Expand_MasterRound2.bytes
- Assets/ExpandRooms/RoomFactoryData/F_Expand_Obsidian_Shell_Casing.bytes - Assets/ExpandRooms/RoomFactoryData/F_Expand_Obsidian_Shell_Casing.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter13.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter13.bytes
@ -378,6 +394,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Boxes1.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Boxes1.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed8.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed8.bytes
- Assets/ExpandRooms/RoomBuilderData/Hollow/Expand_Neighborino_IceIsNice_Layout.png - Assets/ExpandRooms/RoomBuilderData/Hollow/Expand_Neighborino_IceIsNice_Layout.png
- Assets/ExpandSerializedData/AmmonomiconData/Dopplegunner_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular42.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular42.bytes
- Assets/ExpandRooms/RoomFactoryData/K_Expand_MasterRound1.bytes - Assets/ExpandRooms/RoomFactoryData/K_Expand_MasterRound1.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_BoomLine1.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_BoomLine1.bytes
@ -435,6 +452,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Trap_Expand_Turtlemelon.bytes - Assets/ExpandRooms/RoomFactoryData/Trap_Expand_Turtlemelon.bytes
- Assets/ExpandPrefabs/SpriteCollections/Misc/BabyGoodHammerCollection.prefab - Assets/ExpandPrefabs/SpriteCollections/Misc/BabyGoodHammerCollection.prefab
- Assets/ExpandRooms/RoomFactoryData/MH_Expand_Achievement_Challenger.bytes - Assets/ExpandRooms/RoomFactoryData/MH_Expand_Achievement_Challenger.bytes
- Assets/ExpandSerializedData/AmmonomiconData/Skusketling_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera4.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera4.bytes
- Assets/ExpandPrefabs/Foyer/EXArcadeGame_Prop.prefab - Assets/ExpandPrefabs/Foyer/EXArcadeGame_Prop.prefab
- Assets/ExpandPrefabs/Misc/EX_ParadropAnchor.prefab - Assets/ExpandPrefabs/Misc/EX_ParadropAnchor.prefab
@ -470,6 +488,7 @@ Assets:
- Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Blue/pitBorderFlatGrid.txt - Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Blue/pitBorderFlatGrid.txt
- Assets/ExpandSerializedData/TilesetData/West/RedInterior/floorGrid1.txt - Assets/ExpandSerializedData/TilesetData/West/RedInterior/floorGrid1.txt
- Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Gold/pitBorderFlatGrid.txt - Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Gold/pitBorderFlatGrid.txt
- Assets/ExpandPrefabs/Breakables/ExpandJungleTree_Medium.prefab
- Assets/ExpandPrefabs/Misc/CronenbergCorpseFragment_03.prefab - Assets/ExpandPrefabs/Misc/CronenbergCorpseFragment_03.prefab
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch8.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch8.bytes
- Assets/ExpandSerializedData/TilesetData/Belly/carpetGrid1.txt - Assets/ExpandSerializedData/TilesetData/Belly/carpetGrid1.txt
@ -511,6 +530,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_ZookieShroom.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_ZookieShroom.bytes
- Assets/ExpandRooms/RoomFactoryData/KP_Expand_Achievement_Historian.bytes - Assets/ExpandRooms/RoomFactoryData/KP_Expand_Achievement_Historian.bytes
- Assets/ExpandRooms/RoomFactoryData/K_Expand_Achievement_Hedge_Slinger.bytes - Assets/ExpandRooms/RoomFactoryData/K_Expand_Achievement_Hedge_Slinger.bytes
- Assets/ExpandPrefabs/Breakables/ExpandJungleTreeMedium_Stump.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal14.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal14.bytes
- Assets/ExpandRooms/RoomFactoryData/K_Expand_BigBird.bytes - Assets/ExpandRooms/RoomFactoryData/K_Expand_BigBird.bytes
- Assets/ExpandTextures/BossCards/MimicInMirror_BossCardBackground.png - Assets/ExpandTextures/BossCards/MimicInMirror_BossCardBackground.png
@ -527,6 +547,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate_DanglyBits.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate_DanglyBits.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Boxes3.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Boxes3.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_AP_West.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_AP_West.bytes
- Assets/ExpandSerializedData/AmmonomiconData/WestBrosNome_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals17.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals17.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_LongOdd1.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_LongOdd1.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter25.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter25.bytes
@ -546,12 +567,14 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed2.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed2.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed9.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed9.bytes
- Assets/ExpandSerializedData/TilesetData/Nakatomi/Nakatomi_Purple/carpetGrids_1.txt - Assets/ExpandSerializedData/TilesetData/Nakatomi/Nakatomi_Purple/carpetGrids_1.txt
- Assets/ExpandTextures/AmmonomiconTextures/bootlegshotgunman_ammonomicon.png
- Assets/ExpandPrefabs/Dungeons/Base_Belly.prefab - Assets/ExpandPrefabs/Dungeons/Base_Belly.prefab
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals27.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals27.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Teleport2_3.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Teleport2_3.bytes
- Assets/ExpandPrefabs/SpriteCollections/Misc/EXJungleCollection.prefab - Assets/ExpandPrefabs/SpriteCollections/Misc/EXJungleCollection.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed7.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed7.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter11.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter11.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/FloorData/Expand_Jungle_RewardRoom_FloorData.png
- Assets/ExpandPrefabs/TilesetPrefabs/StoneCubeCollection_West.prefab - Assets/ExpandPrefabs/TilesetPrefabs/StoneCubeCollection_West.prefab
- Assets/ExpandTextures/SpriteCollections/AIActors/HotShotShotgunMan.png - Assets/ExpandTextures/SpriteCollections/AIActors/HotShotShotgunMan.png
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera14.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera14.bytes
@ -608,6 +631,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular27.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular27.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Squareish2.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Squareish2.bytes
- Assets/ExpandRooms/RoomBuilderData/GungeonProper/Expand_Neighborino_Basic_Layout.png - Assets/ExpandRooms/RoomBuilderData/GungeonProper/Expand_Neighborino_Basic_Layout.png
- Assets/ExpandSerializedData/TilesetData/Jungle/Bamboo/carpetGrid2.txt
- Assets/ExpandPrefabs/TilesetPrefabs/ENV_Tileset_West.prefab - Assets/ExpandPrefabs/TilesetPrefabs/ENV_Tileset_West.prefab
- Assets/ExpandSerializedData/TilesetData/Jungle/Woods/facewallGrids_2_grid.txt - Assets/ExpandSerializedData/TilesetData/Jungle/Woods/facewallGrids_2_grid.txt
- Assets/ExpandTextures/SpriteCollections/Misc/EXTrap_Collection.png - Assets/ExpandTextures/SpriteCollections/Misc/EXTrap_Collection.png
@ -618,6 +642,7 @@ Assets:
- Assets/ExpandSerializedData/TilesetData/Belly/roomCeilingBorderGrid.txt - Assets/ExpandSerializedData/TilesetData/Belly/roomCeilingBorderGrid.txt
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed16.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed16.bytes
- Assets/ExpandRooms/RoomFactoryData/HB_Expand_Achievement_Hollowed_Out.bytes - Assets/ExpandRooms/RoomFactoryData/HB_Expand_Achievement_Hollowed_Out.bytes
- Assets/ExpandSerializedData/TilesetData/Jungle/Woods/facewallGrids_0_grid.txt
- Assets/ExpandPrefabs/Items/Projectiles/EXBootlegMachinePistolProjectile.prefab - Assets/ExpandPrefabs/Items/Projectiles/EXBootlegMachinePistolProjectile.prefab
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Teleport3.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Teleport3.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular14.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular14.bytes
@ -659,10 +684,12 @@ Assets:
- Assets/ExpandTextures/SpriteCollections/AIActors/BulletMan_Monochrome.png - Assets/ExpandTextures/SpriteCollections/AIActors/BulletMan_Monochrome.png
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate24.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate24.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Roundabout.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Roundabout.bytes
- Assets/ExpandSerializedData/AmmonomiconData/HotShotShotgunKin_AmmonomiconData.txt
- Assets/ExpandPrefabs/Breakables/ExpandCactus_Shard_002.prefab - Assets/ExpandPrefabs/Breakables/ExpandCactus_Shard_002.prefab
- Assets/ExpandSerializedData/TilesetData/West/WoodInterior/facadeTopGrid.txt - Assets/ExpandSerializedData/TilesetData/West/WoodInterior/facadeTopGrid.txt
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_SniperTotemBuff.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_SniperTotemBuff.bytes
- Assets/ExpandPrefabs/SpriteCollections/Misc/EXBalloonCollection.prefab - Assets/ExpandPrefabs/SpriteCollections/Misc/EXBalloonCollection.prefab
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Jungle_RewardRoom.bytes
- Assets/ExpandPrefabs/Items/Projectiles/WestBrosGoldenRevolverProjectile.prefab - Assets/ExpandPrefabs/Items/Projectiles/WestBrosGoldenRevolverProjectile.prefab
- Assets/ExpandRooms/RoomFactoryData/MHF_Expand_Achievement_Great_Hall.bytes - Assets/ExpandRooms/RoomFactoryData/MHF_Expand_Achievement_Great_Hall.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman7.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman7.bytes
@ -675,6 +702,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman6.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman6.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Fight2.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Fight2.bytes
- Assets/ExpandSerializedData/TilesetData/Nakatomi/ENV_Tileset_Nakatomi_MaterialTable.txt - Assets/ExpandSerializedData/TilesetData/Nakatomi/ENV_Tileset_Nakatomi_MaterialTable.txt
- Assets/ExpandTextures/AmmonomiconTextures/boss_icon_Western_Bros_Angel.png
- Assets/ExpandTextures/BossCards/WesternBrosBossCard.png - Assets/ExpandTextures/BossCards/WesternBrosBossCard.png
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular36.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular36.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed10.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed10.bytes
@ -685,6 +713,7 @@ Assets:
- Assets/ExpandRooms/RoomBuilderData/TrapRooms/Expand_Apache_SpikeAndPits_Layout.png - Assets/ExpandRooms/RoomBuilderData/TrapRooms/Expand_Apache_SpikeAndPits_Layout.png
- Assets/ExpandSerializedData/SpriteCollections/BootlegBulletManBandanaCollection.txt - Assets/ExpandSerializedData/SpriteCollections/BootlegBulletManBandanaCollection.txt
- Assets/ExpandPrefabs/Items/EXSonicBox.prefab - Assets/ExpandPrefabs/Items/EXSonicBox.prefab
- Assets/ExpandTextures/AmmonomiconTextures/hotshotshotgunkin_ammonomicon.png
- Assets/ExpandSerializedData/SpriteCollections/EXBootlegRoomCollection.txt - Assets/ExpandSerializedData/SpriteCollections/EXBootlegRoomCollection.txt
- Assets/ExpandPrefabs/Foyer/EXCasino_Hub.prefab - Assets/ExpandPrefabs/Foyer/EXCasino_Hub.prefab
- Assets/ExpandPrefabs/Foyer/EXPunchoutArcadeCoin.prefab - Assets/ExpandPrefabs/Foyer/EXPunchoutArcadeCoin.prefab
@ -699,6 +728,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_RegularSnakeParrot.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_RegularSnakeParrot.bytes
- Assets/ExpandPrefabs/TilesetPrefabs/EXOldWestWarp.prefab - Assets/ExpandPrefabs/TilesetPrefabs/EXOldWestWarp.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera15.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera15.bytes
- Assets/ExpandSerializedData/AmmonomiconData/BootlegShotgunManBlue_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular20.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular20.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_ArrowCat.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_ArrowCat.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Fight5.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Fight5.bytes
@ -713,6 +743,7 @@ Assets:
- Assets/ExpandPrefabs/SpriteCollections/GunsAndItems/EXItemCollection.prefab - Assets/ExpandPrefabs/SpriteCollections/GunsAndItems/EXItemCollection.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed5.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed5.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter16.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter16.bytes
- Assets/ExpandTextures/AmmonomiconTextures/boss_icon_Western_Bros_Nome.png
- Assets/ExpandSerializedData/SpriteCollections/EXSpaceCollection.txt - Assets/ExpandSerializedData/SpriteCollections/EXSpaceCollection.txt
- Assets/ExpandSerializedData/TilesetData/Jungle/ENV_Tileset_Jungle.txt - Assets/ExpandSerializedData/TilesetData/Jungle/ENV_Tileset_Jungle.txt
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Thin4.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Thin4.bytes
@ -734,6 +765,7 @@ Assets:
- Assets/ExpandPrefabs/Items/EX_ItemParadrop.prefab - Assets/ExpandPrefabs/Items/EX_ItemParadrop.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate25.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate25.bytes
- Assets/ExpandRooms/RoomFactoryData/PMH_Expand_Kyle.bytes - Assets/ExpandRooms/RoomFactoryData/PMH_Expand_Kyle.bytes
- Assets/ExpandTextures/AmmonomiconTextures/boss_icon_Western_Bros_Tuc.png
- Assets/ExpandPrefabs/Misc/EX_ExplodyBarrelDummy.prefab - Assets/ExpandPrefabs/Misc/EX_ExplodyBarrelDummy.prefab
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular32.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular32.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman5.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman5.bytes
@ -766,6 +798,7 @@ Assets:
- Assets/ExpandPrefabs/Misc/EXElevator_Arrival_Placable.prefab - Assets/ExpandPrefabs/Misc/EXElevator_Arrival_Placable.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate3.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate3.bytes
- Assets/ExpandRooms/RoomFactoryData/Keep_JungleElevatorRoom.bytes - Assets/ExpandRooms/RoomFactoryData/Keep_JungleElevatorRoom.bytes
- Assets/ExpandSerializedData/AmmonomiconData/CronenbergAngry_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/H_Expand_MasterRound4.bytes - Assets/ExpandRooms/RoomFactoryData/H_Expand_MasterRound4.bytes
- Assets/ExpandRooms/RoomBuilderData/TrapRooms/Expand_Thwomp_Crossing_Horizontal_Layout.png - Assets/ExpandRooms/RoomBuilderData/TrapRooms/Expand_Thwomp_Crossing_Horizontal_Layout.png
- Assets/ExpandRooms/RoomFactoryData/PM_Expand_bubblebuddy.bytes - Assets/ExpandRooms/RoomFactoryData/PM_Expand_bubblebuddy.bytes
@ -774,6 +807,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular21.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular21.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_HunterSporge.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_HunterSporge.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera1.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera1.bytes
- Assets/ExpandSerializedData/TilesetData/Jungle/Woods/carpetGrid2.txt
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular10.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular10.bytes
- Assets/ExpandPrefabs/Misc/EXLeadKeyGlitchScreenFX.prefab - Assets/ExpandPrefabs/Misc/EXLeadKeyGlitchScreenFX.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera_EyeDiagram.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera_EyeDiagram.bytes
@ -801,6 +835,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Expand_4wave.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_4wave.bytes
- Assets/ExpandSerializedData/TilesetData/Belly/faceWallGrid1.txt - Assets/ExpandSerializedData/TilesetData/Belly/faceWallGrid1.txt
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal18.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal18.bytes
- Assets/ExpandTextures/AmmonomiconTextures/hotshotbulletkin_ammonomicon.png
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular23.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular23.bytes
- Assets/ExpandPrefabs/Misc/BootlegRoomBorder_North.prefab - Assets/ExpandPrefabs/Misc/BootlegRoomBorder_North.prefab
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_CornerBomb1.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_CornerBomb1.bytes
@ -866,6 +901,7 @@ Assets:
- Assets/ExpandSerializedData/TilesetData/Jungle/Bamboo/pitLayoutGrid.txt - Assets/ExpandSerializedData/TilesetData/Jungle/Bamboo/pitLayoutGrid.txt
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed4.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed4.bytes
- Assets/ExpandPrefabs/TilesetPrefabs/Belly_PitVFX2.prefab - Assets/ExpandPrefabs/TilesetPrefabs/Belly_PitVFX2.prefab
- Assets/ExpandTextures/AmmonomiconTextures/hotshotcultist_ammonomicon.png
- Assets/ExpandPrefabs/Items/Wooden Crest.prefab - Assets/ExpandPrefabs/Items/Wooden Crest.prefab
- Assets/ExpandRooms/RoomFactoryData/PM_Expand_Achievement_Case_Closed.bytes - Assets/ExpandRooms/RoomFactoryData/PM_Expand_Achievement_Case_Closed.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera16.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera16.bytes
@ -899,6 +935,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon1_TinyPassage5.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon1_TinyPassage5.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera11.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera11.bytes
- Assets/ExpandSerializedData/SpriteCollections/CultistCompanionCollection.txt - Assets/ExpandSerializedData/SpriteCollections/CultistCompanionCollection.txt
- Assets/ExpandSerializedData/AmmonomiconData/BootlegBulletKin_AmmonomiconData.txt
- Assets/ExpandPrefabs/Misc/EXPortableElevator_Departure.prefab - Assets/ExpandPrefabs/Misc/EXPortableElevator_Departure.prefab
- Assets/ExpandPrefabs/AIActors/WestBros/WestBrosHat_Angel.prefab - Assets/ExpandPrefabs/AIActors/WestBros/WestBrosHat_Angel.prefab
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal4.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal4.bytes
@ -922,6 +959,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_smol5.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_smol5.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon1_Tiny16.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon1_Tiny16.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter4.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter4.bytes
- Assets/ExpandSerializedData/AmmonomiconData/HotShotCultist_AmmonomiconData.txt
- Assets/ExpandPrefabs/Misc/EXReward_Pedestal_CorruptionBomb.prefab - Assets/ExpandPrefabs/Misc/EXReward_Pedestal_CorruptionBomb.prefab
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_LongOdd2.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_LongOdd2.bytes
- Assets/ExpandPrefabs/SpriteCollections/Misc/EXBootlegRoomCollection.prefab - Assets/ExpandPrefabs/SpriteCollections/Misc/EXBootlegRoomCollection.prefab
@ -964,6 +1002,7 @@ Assets:
- Assets/ExpandPrefabs/Misc/EX_Secret_Door.prefab - Assets/ExpandPrefabs/Misc/EX_Secret_Door.prefab
- Assets/ExpandPrefabs/AIActors/WestBros/WestBrosAnimations_Tuc.prefab - Assets/ExpandPrefabs/AIActors/WestBros/WestBrosAnimations_Tuc.prefab
- Assets/ExpandPrefabs/AIActors/SonicCompanion.prefab - Assets/ExpandPrefabs/AIActors/SonicCompanion.prefab
- Assets/ExpandSerializedData/AmmonomiconData/Chameleon_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal13.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal13.bytes
- Assets/ExpandPrefabs/Foyer/EXFoyerWarpDoor.prefab - Assets/ExpandPrefabs/Foyer/EXFoyerWarpDoor.prefab
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Thin2.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Thin2.bytes
@ -979,6 +1018,7 @@ Assets:
- Assets/ExpandRooms/RoomBuilderData/Castle/Expand_TurtleMelon_Pit_Jump_Layout.png - Assets/ExpandRooms/RoomBuilderData/Castle/Expand_TurtleMelon_Pit_Jump_Layout.png
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate20.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate20.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular49.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular49.bytes
- Assets/ExpandTextures/AmmonomiconTextures/hotshotbulletkin_icon.png
- Assets/ExpandPrefabs/Items/Pow Block.prefab - Assets/ExpandPrefabs/Items/Pow Block.prefab
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular6.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular6.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter27.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter27.bytes
@ -986,8 +1026,10 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Steps4.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Steps4.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Connector_06.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Connector_06.bytes
- Assets/ExpandTextures/SpriteCollections/AIActors/SonicCompanion_Collection.png - Assets/ExpandTextures/SpriteCollections/AIActors/SonicCompanion_Collection.png
- Assets/ExpandSerializedData/AmmonomiconData/WestBrosAngel_AmmonomiconData.txt
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate27.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate27.bytes
- Assets/ExpandSerializedData/SpriteCollections/EXOfficeCollection.txt - Assets/ExpandSerializedData/SpriteCollections/EXOfficeCollection.txt
- Assets/ExpandPrefabs/Breakables/ExpandJungleTree_Shard_03.prefab
- Assets/ExpandPrefabs/Misc/BootlegRoomDoorBlocker_South.prefab - Assets/ExpandPrefabs/Misc/BootlegRoomDoorBlocker_South.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera17.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera17.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Long.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Long.bytes
@ -1018,6 +1060,8 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter2.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter2.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed7.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed7.bytes
- Assets/ExpandTextures/Misc/ExpandDustFXSprite_001.png - Assets/ExpandTextures/Misc/ExpandDustFXSprite_001.png
- Assets/ExpandPrefabs/Breakables/ExpandJungleTree_Shard_02.prefab
- Assets/ExpandTextures/AmmonomiconTextures/bootlegbullat_ammonomicon.png
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed24.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed24.bytes
- Assets/ExpandPrefabs/Items/Projectiles/EXBootlegShotgunProjectile.prefab - Assets/ExpandPrefabs/Items/Projectiles/EXBootlegShotgunProjectile.prefab
- Assets/ExpandPrefabs/SpriteCollections/AIActors/BootlegBulletManCollection.prefab - Assets/ExpandPrefabs/SpriteCollections/AIActors/BootlegBulletManCollection.prefab
@ -1025,11 +1069,11 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera18.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera18.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_BIRDS.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_BIRDS.bytes
- Assets/ExpandTextures/SpriteCollections/Tilesets/ENV_Tileset_West.png - Assets/ExpandTextures/SpriteCollections/Tilesets/ENV_Tileset_West.png
- Assets/ExpandTextures/AmmonomiconTextures/boss_photo_Western_Bros_Angel.png
- Assets/ExpandPrefabs/Misc/Sarcophagus_ShotgunMace_Kaliber.prefab - Assets/ExpandPrefabs/Misc/Sarcophagus_ShotgunMace_Kaliber.prefab
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_AnimalsFairy.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_AnimalsFairy.bytes
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed19.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed19.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_MushFairy.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_MushFairy.bytes
- Assets/ExpandSerializedData/TilesetData/Jungle/Woods/facewallGrids_0__grid.txt
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal25.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal25.bytes
- Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Grey/roomFloorBorderGrid.txt - Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Grey/roomFloorBorderGrid.txt
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Brother9.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Brother9.bytes
@ -1039,6 +1083,7 @@ Assets:
- Assets/ExpandTextures/SpriteCollections/AIActors/BootlegBullat_Collection.png - Assets/ExpandTextures/SpriteCollections/AIActors/BootlegBullat_Collection.png
- Assets/ExpandSerializedData/TilesetData/Jungle/Woods/facewallGrids_1_grid.txt - Assets/ExpandSerializedData/TilesetData/Jungle/Woods/facewallGrids_1_grid.txt
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter7.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter7.bytes
- Assets/ExpandTextures/AmmonomiconTextures/boss_photo_Western_Bros_Tuc.png
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular10.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular10.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_AnimalSpider.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_AnimalSpider.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch4.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch4.bytes
@ -1057,6 +1102,7 @@ Assets:
- Assets/ExpandSerializedData/SpriteCollections/EXSecretDoorCollection.txt - Assets/ExpandSerializedData/SpriteCollections/EXSecretDoorCollection.txt
- Assets/ExpandSerializedData/SpriteCollections/GungeoneerMimicCollection.txt - Assets/ExpandSerializedData/SpriteCollections/GungeoneerMimicCollection.txt
- Assets/ExpandTextures/SpriteCollections/Misc/EXLargeMonster_Collection.png - Assets/ExpandTextures/SpriteCollections/Misc/EXLargeMonster_Collection.png
- Assets/ExpandTextures/AmmonomiconTextures/boss_photo_Western_Bros_Nome.png
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_BigGap3.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_BigGap3.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Owl6.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Owl6.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular45.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular45.bytes
@ -1084,6 +1130,7 @@ Assets:
- Assets/ExpandRooms/RoomBuilderData/Castle/Expand_TurtleMelon_Singer_Gap_Layout.png - Assets/ExpandRooms/RoomBuilderData/Castle/Expand_TurtleMelon_Singer_Gap_Layout.png
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_ConfirmedSnakes.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_ConfirmedSnakes.bytes
- Assets/ExpandRooms/RoomFactoryData/TrapRooms/Expand_PitTraps.bytes - Assets/ExpandRooms/RoomFactoryData/TrapRooms/Expand_PitTraps.bytes
- Assets/ExpandPrefabs/Breakables/ExpandJungleTree_Small.prefab
- Assets/ExpandTextures/SpriteCollections/GunsAndItems/EXGun_Collection.png - Assets/ExpandTextures/SpriteCollections/GunsAndItems/EXGun_Collection.png
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman10.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman10.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_CornerBomb4.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_CornerBomb4.bytes
@ -1101,6 +1148,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman4.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman4.bytes
- Assets/ExpandPrefabs/SpriteCollections/AIActors/CronenbergTallCollection.prefab - Assets/ExpandPrefabs/SpriteCollections/AIActors/CronenbergTallCollection.prefab
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal7.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal7.bytes
- Assets/ExpandTextures/AmmonomiconTextures/hotshotshotgunkin_icon.png
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch3.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch3.bytes
- Assets/ExpandPrefabs/SpriteCollections/GunsAndItems/EXGunCollection.prefab - Assets/ExpandPrefabs/SpriteCollections/GunsAndItems/EXGunCollection.prefab
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal3.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal3.bytes
@ -1109,6 +1157,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate30.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate30.bytes
- Assets/ExpandRooms/RoomBuilderData/Secret_MiniElevator_Room_Layout.png - Assets/ExpandRooms/RoomBuilderData/Secret_MiniElevator_Room_Layout.png
- Assets/ExpandRooms/RoomBuilderData/Secret_Rat_MiniElevator_Room_Layout.png - Assets/ExpandRooms/RoomBuilderData/Secret_Rat_MiniElevator_Room_Layout.png
- Assets/ExpandSerializedData/AmmonomiconData/HotShotBulletKin_AmmonomiconData.txt
- Assets/ExpandSerializedData/SpriteCollections/WestBrosCollection.txt - Assets/ExpandSerializedData/SpriteCollections/WestBrosCollection.txt
- Assets/ExpandTextures/SpriteCollections/AIActors/GungeoneerMimic_Collection.png - Assets/ExpandTextures/SpriteCollections/AIActors/GungeoneerMimic_Collection.png
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal3.bytes - Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal3.bytes
@ -1141,6 +1190,7 @@ Assets:
- Assets/ExpandRooms/RoomFactoryData/PM_Expand_Achievement_Castle_Crasher.bytes - Assets/ExpandRooms/RoomFactoryData/PM_Expand_Achievement_Castle_Crasher.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Brother8.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Brother8.bytes
- Assets/ExpandPrefabs/Misc/ExpandChallenge_KingsMen.prefab - Assets/ExpandPrefabs/Misc/ExpandChallenge_KingsMen.prefab
- Assets/ExpandPrefabs/Breakables/ExpandJungleTree_Shard_01.prefab
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Weird4.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Weird4.bytes
- Assets/ExpandRooms/RoomFactoryData/M_Expand_ratkey.bytes - Assets/ExpandRooms/RoomFactoryData/M_Expand_ratkey.bytes
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal28.bytes - Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal28.bytes
@ -1196,6 +1246,7 @@ Assets:
- Assets/ExpandPrefabs/Foyer/EXCasino_HatRack.prefab - Assets/ExpandPrefabs/Foyer/EXCasino_HatRack.prefab
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular17.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular17.bytes
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Thin1.bytes - Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Thin1.bytes
- Assets/ExpandPrefabs/Breakables/ExpandJungleTreeSmall_Stump.prefab
- Assets/ExpandPrefabs/TilesetPrefabs/ExpandJungle_ExitLadder.prefab - Assets/ExpandPrefabs/TilesetPrefabs/ExpandJungle_ExitLadder.prefab
- Assets/ExpandRooms/RoomFactoryData/Expand_BootlegRoom.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_BootlegRoom.bytes
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular15.bytes - Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular15.bytes

View File

@ -1,9 +1,9 @@
ManifestFileVersion: 0 ManifestFileVersion: 0
CRC: 1620197715 CRC: 740429855
Hashes: Hashes:
AssetFileHash: AssetFileHash:
serializedVersion: 2 serializedVersion: 2
Hash: 0a024bbee988145ff8a96ef6a1b60a56 Hash: 98f8a042d84c2e85107dd650e77dfed5
TypeTreeHash: TypeTreeHash:
serializedVersion: 2 serializedVersion: 2
Hash: c73412a662fd4e4f36af34cbdf078b85 Hash: c73412a662fd4e4f36af34cbdf078b85

View File

@ -0,0 +1,127 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1145928303439584}
m_IsPrefabParent: 1
--- !u!1 &1145928303439584
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4923011530492008}
- component: {fileID: 114393448174012060}
- component: {fileID: 114421219494034938}
m_Layer: 22
m_Name: ExpandJungleTreeMedium_Stump
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1655174343259628
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4485090548940776}
m_Layer: 22
m_Name: stump
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1656464728701430
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4391965202308600}
m_Layer: 20
m_Name: shadow
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4391965202308600
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1656464728701430}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -0.58, y: -1.55, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4923011530492008}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4485090548940776
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1655174343259628}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.55, y: -1.5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4923011530492008}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4923011530492008
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1145928303439584}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4485090548940776}
- {fileID: 4391965202308600}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &114393448174012060
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1145928303439584}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dcb4fda0513fcf24a93207e0ed520ae2, type: 3}
m_Name:
m_EditorClassIdentifier:
SoundEvent: Play_OBJ_bush_whack_01
--- !u!114 &114421219494034938
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1145928303439584}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c59f4fb058392d745a690e85b4feba5d, type: 3}
m_Name:
m_EditorClassIdentifier:
FadeTime: 0.2
FadeStartAlpha: 0.5
FadeColor: {r: 0, g: 0, b: 0, a: 1}

View File

@ -0,0 +1,127 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1441732104078410}
m_IsPrefabParent: 1
--- !u!1 &1041408840989758
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4388218233542822}
m_Layer: 20
m_Name: shadow
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1395211978865882
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4024534932737566}
m_Layer: 22
m_Name: stump
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1441732104078410
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4725025541201714}
- component: {fileID: 114866844730935112}
- component: {fileID: 114088509076258938}
m_Layer: 22
m_Name: ExpandJungleTreeSmall_Stump
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4024534932737566
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1395211978865882}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -0.54, y: -1.02, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4725025541201714}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4388218233542822
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1041408840989758}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -0.62, y: -1.09, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4725025541201714}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4725025541201714
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1441732104078410}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4024534932737566}
- {fileID: 4388218233542822}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &114088509076258938
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1441732104078410}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c59f4fb058392d745a690e85b4feba5d, type: 3}
m_Name:
m_EditorClassIdentifier:
FadeTime: 0.2
FadeStartAlpha: 0.5
FadeColor: {r: 0, g: 0, b: 0, a: 1}
--- !u!114 &114866844730935112
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1441732104078410}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dcb4fda0513fcf24a93207e0ed520ae2, type: 3}
m_Name:
m_EditorClassIdentifier:
SoundEvent: Play_OBJ_bush_whack_01

View File

@ -0,0 +1,70 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1091896740447222}
m_IsPrefabParent: 1
--- !u!1 &1091896740447222
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4961511601201636}
m_Layer: 22
m_Name: ExpandJungleTree_Medium
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1938347378220462
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4478284814871498}
m_Layer: 20
m_Name: shadow
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4478284814871498
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1938347378220462}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4961511601201636}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4961511601201636
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1091896740447222}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4478284814871498}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@ -0,0 +1,41 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1579334081326930}
m_IsPrefabParent: 1
--- !u!1 &1579334081326930
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4891313054720286}
m_Layer: 22
m_Name: ExpandJungleTree_Shard_01
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4891313054720286
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1579334081326930}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@ -0,0 +1,41 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1732255563853130}
m_IsPrefabParent: 1
--- !u!1 &1732255563853130
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4592820774996424}
m_Layer: 22
m_Name: ExpandJungleTree_Shard_02
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4592820774996424
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1732255563853130}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@ -0,0 +1,41 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1562625379222856}
m_IsPrefabParent: 1
--- !u!1 &1562625379222856
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4415692026004770}
m_Layer: 22
m_Name: ExpandJungleTree_Shard_03
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4415692026004770
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1562625379222856}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

View File

@ -0,0 +1,70 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1408625252495124}
m_IsPrefabParent: 1
--- !u!1 &1408625252495124
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4648819970681010}
m_Layer: 22
m_Name: ExpandJungleTree_Small
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1427681307695434
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4109954329750062}
m_Layer: 20
m_Name: shadow
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4109954329750062
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1427681307695434}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -0.25, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4648819970681010}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4648819970681010
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1408625252495124}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4109954329750062}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 70,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": false,
"EnemyDifficulty": 0,
"TabSprite": "bullat_idle_001",
"FullArtSprite": "bootlegbullat_ammonomicon",
"EnemyName": "Bootleg Bullat",
"smallDescription": "Pixel Rated",
"bigDescription": "I have stumbled upon a place that defies all logic known to me.\nIt seems barely as though a real place! Everything is flat, as though every furniture, torch or detail were painted upon the floors and walls...\n\nViktor Nogov"
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 0,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": false,
"EnemyDifficulty": 0,
"TabSprite": "bulletman_run_down_001",
"FullArtSprite": "bootlegbulletman_ammonomicon",
"EnemyName": "Bootleg Bullet Kin",
"smallDescription": "8 Bit Bullet",
"bigDescription": "This bullet kin is not supposed to exist. It does not belong to the Gungeon, and even less so to this dimension.\n\nIts body is composed of but a few, indivisible atoms, squared and jagged, unlike anything I've ever seen. What is happening?\n\nViktor Nogov"
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 19,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": false,
"EnemyDifficulty": 0,
"TabSprite": "shotgunman_blue_move_down_001",
"FullArtSprite": "bootlegshotgunman_ammonomicon",
"EnemyName": "Bootleg Shotgun Kin (Blue)",
"smallDescription": "Sprite Right",
"bigDescription": "I can take this no longer! This... this is an infection!\n\nThe Gungeon itself is infected with something, with this plague, that is devouring it, remaking it! Even my own guns have degenerated into one of these squared, resolutionless things...\n\nI fear if I remain in this place any longer, I will myself become like these unfortunate gundead!\n\nViktor Nogov"
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 19,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": false,
"EnemyDifficulty": 0,
"TabSprite": "shotgunman_red_move_down_001",
"FullArtSprite": "bootlegshotgunman_ammonomicon",
"EnemyName": "Bootleg Shotgun Kin (Red)",
"smallDescription": "Sprite Right",
"bigDescription": "I can take this no longer! This... this is an infection!\n\nThe Gungeon itself is infected with something, with this plague, that is devouring it, remaking it! Even my own guns have degenerated into one of these squared, resolutionless things...\n\nI fear if I remain in this place any longer, I will myself become like these unfortunate gundead!\n\nViktor Nogov"
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 78,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": false,
"EnemyDifficulty": 0,
"TabSprite": "chameleon_idle_right_001",
"FullArtSprite": "chameleon_ammonomicon",
"EnemyName": "Chameleon",
"smallDescription": "Chammoeleon",
"bigDescription": "Well adapted to prey on the smaller bullat species native to the Gungeon, the Chameleon is able to store their prey's shells inside their multi-chambered stomachs, so as to vomit them at anything that threatens them.\n\nThis is an important step of the Gungeon's bulletrient cycle, allowing ammunition to be reused, making them easier to break down.\n\nUnfortunately, they are extremely skittish, and the novel sight of a Gungeoneer is more than enough to prompt them to defend themselves."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 0,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": false,
"EnemyDifficulty": 0,
"TabSprite": "clownkin_idle_right_001",
"FullArtSprite": "clownkin_ammonomicon",
"EnemyName": "Clown Kin",
"smallDescription": "All the world's a circus",
"bigDescription": "Although few in number, some Gundead choose to lay down their arms in favour of the deadliest weapon of them all: contagious laughter.\n\nHighly valued at Gundead parties."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 80,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": false,
"EnemyDifficulty": 0,
"TabSprite": "berg_tall_idle_front_001",
"FullArtSprite": "cronenberg_tall_ammonomicon",
"EnemyName": "Cronenberg (Angry)",
"smallDescription": "Of the Flesh",
"bigDescription": "A strange, mutated creature in the vague similitude of a shotgun kin.\n\nWrought entirely of flesh, it is known for charging at its enemies with mindless abandon and unbridled ferocity, with surprising agility for its misshapen body and unsteady gait.\n\nA horrible growl is often heard at its time of death, as though a last, pitiful cry before its body combusts under its own metabolism."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 80,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": false,
"EnemyDifficulty": 0,
"TabSprite": "Cronenberg_Idle_001",
"FullArtSprite": "cronenberg_big_ammonomicon",
"EnemyName": "Cronenberg",
"smallDescription": "Bullet Horror",
"bigDescription": "A vile abomination of flesh and lead, far too large to maintain any semblance of a proper shape as its mass shifts and contorts under the strain of its senseless musculature.\n\nShould any consciousness remain in the few heads whose forms are yet recognizable, then such a consciousness knows little more than pain."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 2,
"IsNormalEnemy": true,
"IsInBossTab": true,
"TabSpriteIsTexture": true,
"EnemyDifficulty": 3,
"TabSprite": "boss_icon_Western_Bros_Angel",
"FullArtSprite": "boss_photo_Western_Bros_Angel",
"EnemyName": "Dopplegunner",
"smallDescription": "TBD",
"bigDescription": "TBD"
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 0,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": true,
"EnemyDifficulty": 0,
"TabSprite": "hotshotbulletkin_icon",
"FullArtSprite": "hotshotbulletkin_ammonomicon",
"EnemyName": "HotShot Bullet Kin",
"smallDescription": "9000 .cal",
"bigDescription": "Equipped with state-of-the-art power analysers, these hotshots are able to duel-wield revolvers and fire them with pin-point accuracy.\n\nFew are able to beat them in a duel."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 79,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": true,
"EnemyDifficulty": 0,
"TabSprite": "hotshotcultist_icon",
"FullArtSprite": "hotshotcultist_ammonomicon",
"EnemyName": "HotShot Cultist",
"smallDescription": "Rest of the Order",
"bigDescription": "Even among the Gungeoneers that have descended into insanity and fallen to the worship of the Gun, some still manage to become more fanatical than the rest.\n\nDonning skulls in the likeness of their new Master, these Cultists have mastered not only the art of the dodge roll, but that of dual-wielding too.\n\nFeared by even their fellows, these zealots will indiscriminately attack any that poses a threat to the Gungeon and its relics."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 19,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": true,
"EnemyDifficulty": 0,
"TabSprite": "hotshotshotgunkin_icon",
"FullArtSprite": "hotshotshotgunkin_ammonomicon",
"EnemyName": "HotShot Shotgun Kin",
"smallDescription": "Bullet Hell's Aimgels",
"bigDescription": "These dangerous and rowdy shotgun kin are shunned by most of the Gungeon society, and are often found picking fights against other gundead or consuming copious amounts of shotga-cola in loud estabilishments.\n\nThough they stylise themselves after the imagery of hot lead, they are not, in fact, resistant to actual fire."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 45,
"IsNormalEnemy": true,
"IsInBossTab": false,
"TabSpriteIsTexture": false,
"EnemyDifficulty": 0,
"TabSprite": "powderskull_skull_move_front_002",
"FullArtSprite": "skusketling_ammonomicon",
"EnemyName": "Skusketling",
"smallDescription": "Bone to pick",
"bigDescription": "The skulls of age-old inhabitants and victims of the Gungeon.\n\nOnce crushed into ashes and dust, the latent magic of the Mines' gunpowder has reformed and reanimated them for an existence of grim servitude."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 2,
"IsNormalEnemy": true,
"IsInBossTab": true,
"TabSpriteIsTexture": true,
"EnemyDifficulty": 3,
"TabSprite": "boss_icon_Western_Bros_Angel",
"FullArtSprite": "boss_photo_Western_Bros_Angel",
"EnemyName": "West Brothers (Angel)",
"smallDescription": "Follow the job through",
"bigDescription": "A cruel and ruthless mercenary, willing to stop at nothing in his search for profit.\n\nFinding great pleasure in hunting his prey, his search for buried gold offers but another opportunity for the spilling of blood; if for a profit margin that could never be ignored."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 2,
"IsNormalEnemy": true,
"IsInBossTab": true,
"TabSpriteIsTexture": true,
"EnemyDifficulty": 3,
"TabSprite": "boss_icon_Western_Bros_Nome",
"FullArtSprite": "boss_photo_Western_Bros_Nome",
"EnemyName": "West Brothers (Nome)",
"smallDescription": "Every gun makes its own tune",
"bigDescription": "A mysterious and taciturn bounty hunter, searching for buried gold in a grave somewhere in the westernmost chamber of the Gungeon.\n\nCompassionate, though unyielding, many men and Gundead have been felled by the draw of his revolver."
}

View File

@ -0,0 +1,12 @@
{
"ForcedPositionInAmmonomicon": 2,
"IsNormalEnemy": true,
"IsInBossTab": true,
"TabSpriteIsTexture": true,
"EnemyDifficulty": 3,
"TabSprite": "boss_icon_Western_Bros_Tuc",
"FullArtSprite": "boss_photo_Western_Bros_Tuc",
"EnemyName": "West Brothers (Tuc)",
"smallDescription": "There's two kinds of people",
"bigDescription": "A mysterious and taciturn bounty hunter, searching for buried gold in a grave somewhere in the westernmost chamber of the Gungeon.\n\nCompassionate, though unyielding, many men and Gundead have been felled by the draw of his revolver."
}

View File

@ -0,0 +1 @@
{"roomTypeRestriction":-1,"topLeftIndices":{"indices":[230],"indexWeights":[1.0]},"topIndices":{"indices":[231],"indexWeights":[1.0]},"topRightIndices":{"indices":[232],"indexWeights":[1.0]},"leftIndices":{"indices":[252],"indexWeights":[1.0]},"centerIndices":{"indices":[253],"indexWeights":[0.10000000149011612]},"rightIndices":{"indices":[254],"indexWeights":[1.0]},"bottomLeftIndices":{"indices":[274],"indexWeights":[1.0]},"bottomIndices":{"indices":[275],"indexWeights":[1.0]},"bottomRightIndices":{"indices":[276],"indexWeights":[1.0]},"horizontalIndices":{"indices":[-1],"indexWeights":[1.0]},"verticalIndices":{"indices":[-1],"indexWeights":[1.0]},"topCapIndices":{"indices":[-1],"indexWeights":[1.0]},"rightCapIndices":{"indices":[-1],"indexWeights":[1.0]},"bottomCapIndices":{"indices":[-1],"indexWeights":[1.0]},"leftCapIndices":{"indices":[-1],"indexWeights":[1.0]},"allSidesIndices":{"indices":[-1],"indexWeights":[1.0]},"topLeftNubIndices":{"indices":[278],"indexWeights":[1.0]},"topRightNubIndices":{"indices":[277],"indexWeights":[1.0]},"bottomLeftNubIndices":{"indices":[256],"indexWeights":[1.0]},"bottomRightNubIndices":{"indices":[255],"indexWeights":[1.0]},"extendedSet":false,"topCenterLeftIndices":{"indices":[-1],"indexWeights":[1.0]},"topCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"topCenterRightIndices":{"indices":[-1],"indexWeights":[1.0]},"thirdTopRowLeftIndices":{"indices":[-1],"indexWeights":[1.0]},"thirdTopRowCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"thirdTopRowRightIndices":{"indices":[-1],"indexWeights":[1.0]},"internalBottomLeftCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"internalBottomCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"internalBottomRightCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"borderTopNubLeftIndices":{"indices":[-1],"indexWeights":[1.0]},"borderTopNubRightIndices":{"indices":[-1],"indexWeights":[1.0]},"borderTopNubBothIndices":{"indices":[-1],"indexWeights":[1.0]},"borderRightNubTopIndices":{"indices":[-1],"indexWeights":[1.0]},"borderRightNubBottomIndices":{"indices":[-1],"indexWeights":[1.0]},"borderRightNubBothIndices":{"indices":[-1],"indexWeights":[1.0]},"borderBottomNubLeftIndices":{"indices":[-1],"indexWeights":[1.0]},"borderBottomNubRightIndices":{"indices":[-1],"indexWeights":[1.0]},"borderBottomNubBothIndices":{"indices":[-1],"indexWeights":[1.0]},"borderLeftNubTopIndices":{"indices":[-1],"indexWeights":[1.0]},"borderLeftNubBottomIndices":{"indices":[-1],"indexWeights":[1.0]},"borderLeftNubBothIndices":{"indices":[-1],"indexWeights":[1.0]},"diagonalNubsTopLeftBottomRight":{"indices":[-1],"indexWeights":[1.0]},"diagonalNubsTopRightBottomLeft":{"indices":[-1],"indexWeights":[1.0]},"doubleNubsTop":{"indices":[-1],"indexWeights":[1.0]},"doubleNubsRight":{"indices":[-1],"indexWeights":[1.0]},"doubleNubsBottom":{"indices":[-1],"indexWeights":[1.0]},"doubleNubsLeft":{"indices":[-1],"indexWeights":[1.0]},"quadNubs":{"indices":[-1],"indexWeights":[1.0]},"topRightWithNub":{"indices":[-1],"indexWeights":[1.0]},"topLeftWithNub":{"indices":[-1],"indexWeights":[1.0]},"bottomRightWithNub":{"indices":[-1],"indexWeights":[1.0]},"bottomLeftWithNub":{"indices":[-1],"indexWeights":[1.0]},"diagonalBorderNE":{"indices":[-1],"indexWeights":[1.0]},"diagonalBorderSE":{"indices":[-1],"indexWeights":[1.0]},"diagonalBorderSW":{"indices":[-1],"indexWeights":[1.0]},"diagonalBorderNW":{"indices":[-1],"indexWeights":[1.0]},"diagonalCeilingNE":{"indices":[-1],"indexWeights":[1.0]},"diagonalCeilingSE":{"indices":[-1],"indexWeights":[1.0]},"diagonalCeilingSW":{"indices":[-1],"indexWeights":[1.0]},"diagonalCeilingNW":{"indices":[-1],"indexWeights":[1.0]},"CenterCheckerboard":false,"CheckerboardDimension":1,"CenterIndicesAreStrata":false,"PitInternalSquareGrids":[],"PitInternalSquareOptions":{"PitSquareChance":0.10000000149011612,"CanBeFlushLeft":false,"CanBeFlushRight":false,"CanBeFlushBottom":false},"PitBorderIsInternal":false,"PitBorderOverridesFloorTile":false,"CeilingBorderUsesDistancedCenters":false,"PathFacewallStamp":{"m_FileID":0,"m_PathID":0},"PathSidewallStamp":{"m_FileID":0,"m_PathID":0},"PathPitPosts":{"indices":[],"indexWeights":[]},"PathPitPostsBL":{"indices":[],"indexWeights":[]},"PathPitPostsBR":{"indices":[],"indexWeights":[]},"PathStubNorth":{"m_FileID":0,"m_PathID":0},"PathStubEast":{"m_FileID":0,"m_PathID":0},"PathStubSouth":{"m_FileID":0,"m_PathID":0},"PathStubWest":{"m_FileID":0,"m_PathID":0}}

File diff suppressed because one or more lines are too long

View File

@ -701,4 +701,4 @@ lit cutout perp
lit cutout perp lit cutout perp
lit cutout perp lit cutout perp
lit cutout perp lit cutout perp
lit cutout perp lit cutout perp

View File

@ -0,0 +1 @@
{"roomTypeRestriction":-1,"topLeftIndices":{"indices":[230],"indexWeights":[1.0]},"topIndices":{"indices":[231],"indexWeights":[1.0]},"topRightIndices":{"indices":[232],"indexWeights":[1.0]},"leftIndices":{"indices":[252],"indexWeights":[1.0]},"centerIndices":{"indices":[253],"indexWeights":[0.10000000149011612]},"rightIndices":{"indices":[254],"indexWeights":[1.0]},"bottomLeftIndices":{"indices":[274],"indexWeights":[1.0]},"bottomIndices":{"indices":[275],"indexWeights":[1.0]},"bottomRightIndices":{"indices":[276],"indexWeights":[1.0]},"horizontalIndices":{"indices":[-1],"indexWeights":[1.0]},"verticalIndices":{"indices":[-1],"indexWeights":[1.0]},"topCapIndices":{"indices":[-1],"indexWeights":[1.0]},"rightCapIndices":{"indices":[-1],"indexWeights":[1.0]},"bottomCapIndices":{"indices":[-1],"indexWeights":[1.0]},"leftCapIndices":{"indices":[-1],"indexWeights":[1.0]},"allSidesIndices":{"indices":[-1],"indexWeights":[1.0]},"topLeftNubIndices":{"indices":[278],"indexWeights":[1.0]},"topRightNubIndices":{"indices":[277],"indexWeights":[1.0]},"bottomLeftNubIndices":{"indices":[256],"indexWeights":[1.0]},"bottomRightNubIndices":{"indices":[255],"indexWeights":[1.0]},"extendedSet":false,"topCenterLeftIndices":{"indices":[-1],"indexWeights":[1.0]},"topCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"topCenterRightIndices":{"indices":[-1],"indexWeights":[1.0]},"thirdTopRowLeftIndices":{"indices":[-1],"indexWeights":[1.0]},"thirdTopRowCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"thirdTopRowRightIndices":{"indices":[-1],"indexWeights":[1.0]},"internalBottomLeftCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"internalBottomCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"internalBottomRightCenterIndices":{"indices":[-1],"indexWeights":[1.0]},"borderTopNubLeftIndices":{"indices":[-1],"indexWeights":[1.0]},"borderTopNubRightIndices":{"indices":[-1],"indexWeights":[1.0]},"borderTopNubBothIndices":{"indices":[-1],"indexWeights":[1.0]},"borderRightNubTopIndices":{"indices":[-1],"indexWeights":[1.0]},"borderRightNubBottomIndices":{"indices":[-1],"indexWeights":[1.0]},"borderRightNubBothIndices":{"indices":[-1],"indexWeights":[1.0]},"borderBottomNubLeftIndices":{"indices":[-1],"indexWeights":[1.0]},"borderBottomNubRightIndices":{"indices":[-1],"indexWeights":[1.0]},"borderBottomNubBothIndices":{"indices":[-1],"indexWeights":[1.0]},"borderLeftNubTopIndices":{"indices":[-1],"indexWeights":[1.0]},"borderLeftNubBottomIndices":{"indices":[-1],"indexWeights":[1.0]},"borderLeftNubBothIndices":{"indices":[-1],"indexWeights":[1.0]},"diagonalNubsTopLeftBottomRight":{"indices":[-1],"indexWeights":[1.0]},"diagonalNubsTopRightBottomLeft":{"indices":[-1],"indexWeights":[1.0]},"doubleNubsTop":{"indices":[-1],"indexWeights":[1.0]},"doubleNubsRight":{"indices":[-1],"indexWeights":[1.0]},"doubleNubsBottom":{"indices":[-1],"indexWeights":[1.0]},"doubleNubsLeft":{"indices":[-1],"indexWeights":[1.0]},"quadNubs":{"indices":[-1],"indexWeights":[1.0]},"topRightWithNub":{"indices":[-1],"indexWeights":[1.0]},"topLeftWithNub":{"indices":[-1],"indexWeights":[1.0]},"bottomRightWithNub":{"indices":[-1],"indexWeights":[1.0]},"bottomLeftWithNub":{"indices":[-1],"indexWeights":[1.0]},"diagonalBorderNE":{"indices":[-1],"indexWeights":[1.0]},"diagonalBorderSE":{"indices":[-1],"indexWeights":[1.0]},"diagonalBorderSW":{"indices":[-1],"indexWeights":[1.0]},"diagonalBorderNW":{"indices":[-1],"indexWeights":[1.0]},"diagonalCeilingNE":{"indices":[-1],"indexWeights":[1.0]},"diagonalCeilingSE":{"indices":[-1],"indexWeights":[1.0]},"diagonalCeilingSW":{"indices":[-1],"indexWeights":[1.0]},"diagonalCeilingNW":{"indices":[-1],"indexWeights":[1.0]},"CenterCheckerboard":false,"CheckerboardDimension":1,"CenterIndicesAreStrata":false,"PitInternalSquareGrids":[],"PitInternalSquareOptions":{"PitSquareChance":0.10000000149011612,"CanBeFlushLeft":false,"CanBeFlushRight":false,"CanBeFlushBottom":false},"PitBorderIsInternal":false,"PitBorderOverridesFloorTile":false,"CeilingBorderUsesDistancedCenters":false,"PathFacewallStamp":{"m_FileID":0,"m_PathID":0},"PathSidewallStamp":{"m_FileID":0,"m_PathID":0},"PathPitPosts":{"indices":[],"indexWeights":[]},"PathPitPostsBL":{"indices":[],"indexWeights":[]},"PathPitPostsBR":{"indices":[],"indexWeights":[]},"PathStubNorth":{"m_FileID":0,"m_PathID":0},"PathStubEast":{"m_FileID":0,"m_PathID":0},"PathStubSouth":{"m_FileID":0,"m_PathID":0},"PathStubWest":{"m_FileID":0,"m_PathID":0}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 56 KiB

View File

@ -0,0 +1,17 @@
using UnityEngine;
namespace ExpandTheGungeon.ExpandComponents {
public class ExpandPlaySoundOnSpawn : BraveBehaviour {
[SerializeField]
public string SoundEvent;
public void Start() { }
public void Update() { }
protected override void OnDestroy() { base.OnDestroy(); }
}
}

View File

@ -0,0 +1,48 @@
using System;
using System.Collections;
using UnityEngine;
namespace ExpandTheGungeon.ExpandComponents {
public class ExpandSpriteFadeOnSpawn : BraveBehaviour {
[SerializeField]
public float FadeTime;
[SerializeField]
public float FadeStartAlpha;
[SerializeField]
public Color FadeColor;
[NonSerialized]
private Renderer m_Renderer;
public ExpandSpriteFadeOnSpawn() {
FadeTime = 0.2f;
FadeStartAlpha = 0.5f;
FadeColor = Color.black;
}
public void Start() {
m_Renderer = renderer;
StartCoroutine(HandleOverrideColorFade(FadeColor, FadeTime, FadeStartAlpha));
}
private IEnumerator HandleOverrideColorFade(Color targetColor, float duration, float startAlpha = 0f) {
if (!m_Renderer) { yield break; }
Color startColor = new Color(targetColor.r, targetColor.g, targetColor.b, startAlpha);
float elapsed = 0f;
while (elapsed < duration) {
elapsed += BraveTime.DeltaTime;
float t = Mathf.SmoothStep(0f, 1f, Mathf.Clamp01(elapsed / duration));
Color current = Color.Lerp(startColor, targetColor, t);
m_Renderer.material.SetColor("_OverrideColor", current);
yield return null;
}
m_Renderer.material.SetColor("_OverrideColor", targetColor);
yield break;
}
protected override void OnDestroy() { base.OnDestroy(); }
}
}

View File

@ -60,8 +60,10 @@
<Compile Include="Assets\Scripts\ExpandComponents\ExpandInteractableDoor.cs" /> <Compile Include="Assets\Scripts\ExpandComponents\ExpandInteractableDoor.cs" />
<Compile Include="Assets\Scripts\ExpandComponents\ExpandInteractableLock.cs" /> <Compile Include="Assets\Scripts\ExpandComponents\ExpandInteractableLock.cs" />
<Compile Include="Assets\Scripts\ExpandComponents\ExpandNoteDoer.cs" /> <Compile Include="Assets\Scripts\ExpandComponents\ExpandNoteDoer.cs" />
<Compile Include="Assets\Scripts\ExpandComponents\ExpandPlaySoundOnSpawn.cs" />
<Compile Include="Assets\Scripts\ExpandComponents\ExpandPunchoutArcadeController.cs" /> <Compile Include="Assets\Scripts\ExpandComponents\ExpandPunchoutArcadeController.cs" />
<Compile Include="Assets\Scripts\ExpandComponents\ExpandScreenFXController.cs" /> <Compile Include="Assets\Scripts\ExpandComponents\ExpandScreenFXController.cs" />
<Compile Include="Assets\Scripts\ExpandComponents\ExpandSpriteFadeOnSpawn.cs" />
<Compile Include="Assets\Scripts\ExpandComponents\ExpandThunderStormPlacable.cs" /> <Compile Include="Assets\Scripts\ExpandComponents\ExpandThunderStormPlacable.cs" />
<Compile Include="Assets\Scripts\ExpandComponents\ExpandWarpManager.cs" /> <Compile Include="Assets\Scripts\ExpandComponents\ExpandWarpManager.cs" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\roomCeilingBorderGrid.txt" />
@ -70,18 +72,22 @@
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_1.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_1.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\carpetGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\carpetGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\Canyon\lavaGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\Canyon\lavaGrid.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\BootlegBullat_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Gold\carpetGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Gold\carpetGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\facewallGrids_2.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\facewallGrids_2.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\lavaGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\lavaGrid.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXLargeMonsterCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\EXLargeMonsterCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Gold\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Gold\roomCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\BootlegShotgunManRed_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\SecretElevatorExitTilesetCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\SecretElevatorExitTilesetCollection.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\ClownKin_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\carpetGrids_1.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\carpetGrids_1.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\lavaGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\lavaGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\facewallGrids_2_grid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\facewallGrids_2_grid.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\BootlegBulletManCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\BootlegBulletManCollection.txt" />
<None Include="Assets\ExpandPrefabs\Shaders\ExpandScanlines.shader" /> <None Include="Assets\ExpandPrefabs\Shaders\ExpandScanlines.shader" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\roomFloorBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\roomFloorBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\Cronenberg_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Belly\pitBorderFlatGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Belly\pitBorderFlatGrid.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\BootlegShotgunManBlueCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\BootlegShotgunManBlueCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\ENV_Tileset_West.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\ENV_Tileset_West.txt" />
@ -93,6 +99,7 @@
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXMonsterCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\EXMonsterCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\lavaGrids.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\lavaGrids.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\RedInterior\lavaGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\RedInterior\lavaGrid.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\WestBrosTuc_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\ENV_Tileset_Phobos_MaterialTable.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\ENV_Tileset_Phobos_MaterialTable.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Belly\ENV_Tileset_Belly.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Belly\ENV_Tileset_Belly.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\RedInterior\exteriorFacadeBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\RedInterior\exteriorFacadeBorderGrid.txt" />
@ -103,12 +110,14 @@
<None Include="Assets\ExpandSerializedData\SpriteCollections\CronenbergTallCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\CronenbergTallCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\outerCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\outerCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\RedInterior\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\RedInterior\roomCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\Dopplegunner_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\facewallGrids_0.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\facewallGrids_0.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\Canyon\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\Canyon\roomCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\Canyon\carpetGrid1.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\Canyon\carpetGrid1.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXBalloonCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\EXBalloonCollection.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXTrapCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\EXTrapCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\roomFloorBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\roomFloorBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\Skusketling_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Belly\pitLayoutGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Belly\pitLayoutGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\RedInterior\carpetGrid1.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\RedInterior\carpetGrid1.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\BootlegBullatCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\BootlegBullatCollection.txt" />
@ -120,13 +129,16 @@
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\carpetGrids_0.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\carpetGrids_0.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_0_grid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_0_grid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Gold\roomFloorBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Gold\roomFloorBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\WestBrosNome_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\carpetGrids_1.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\carpetGrids_1.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Blue\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Blue\roomCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_1_grid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_1_grid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_2.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_2.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\pitLayoutGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\pitLayoutGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\carpetGrid2.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\facewallGrids_2_grid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\facewallGrids_2_grid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Belly\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Belly\roomCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\facewallGrids_0_grid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\Canyon\floorGrid1.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\Canyon\floorGrid1.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\carpetGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\carpetGrid.txt" />
<None Include="Assets\ExpandPrefabs\Shaders\ExpandCRT.shader" /> <None Include="Assets\ExpandPrefabs\Shaders\ExpandCRT.shader" />
@ -134,6 +146,7 @@
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\ENV_Tileset_Jungle_MaterialTable.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\ENV_Tileset_Jungle_MaterialTable.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Belly\lavaGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Belly\lavaGrid.txt" />
<None Include="Assets\ExpandPrefabs\Shaders\ExpandGlitchScreen.shader" /> <None Include="Assets\ExpandPrefabs\Shaders\ExpandGlitchScreen.shader" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\HotShotShotgunKin_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\WoodInterior\facadeTopGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\WoodInterior\facadeTopGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Grey\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Grey\roomCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\ENV_Tileset_Nakatomi_MaterialTable.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\ENV_Tileset_Nakatomi_MaterialTable.txt" />
@ -141,12 +154,15 @@
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXBootlegRoomCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\EXBootlegRoomCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\roomCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\WoodInterior\floorGrid1.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\WoodInterior\floorGrid1.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\BootlegShotgunManBlue_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\facewallGrids_0_grid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\facewallGrids_0_grid.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXSpaceCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\EXSpaceCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\ENV_Tileset_Jungle.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\ENV_Tileset_Jungle.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Blue\carpetGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Blue\carpetGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\facewallGrids_2.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\facewallGrids_2.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\ENV_Tileset_Nakatomi.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\ENV_Tileset_Nakatomi.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\CronenbergAngry_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\carpetGrid2.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXFoyerCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\EXFoyerCollection.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXItemCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\EXItemCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Belly\faceWallGrid1.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Belly\faceWallGrid1.txt" />
@ -159,21 +175,24 @@
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\pitLayoutGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\pitLayoutGrid.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\ClownkinCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\ClownkinCollection.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\CultistCompanionCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\CultistCompanionCollection.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\BootlegBulletKin_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\pitLayoutGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\pitLayoutGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Gold\floorSquares.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Gold\floorSquares.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\WoodInterior\carpetGrid1.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\WoodInterior\carpetGrid1.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\HotShotCultist_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\outerCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\outerCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Belly\ENV_Tileset_Belly_MaterialTable.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Belly\ENV_Tileset_Belly_MaterialTable.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\facewallGrids_1_grid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\facewallGrids_1_grid.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\SonicCompanionCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\SonicCompanionCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_0.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_0.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\Chameleon_AmmonomiconData.txt" />
<None Include="Assets\ExpandTheGungeon.asmdef" /> <None Include="Assets\ExpandTheGungeon.asmdef" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\WestBrosAngel_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXOfficeCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\EXOfficeCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\WoodInterior\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\WoodInterior\roomCeilingBorderGrid.txt" />
<None Include="Assets\ExpandPrefabs\Shaders\ExpandGlitchBasic.shader" /> <None Include="Assets\ExpandPrefabs\Shaders\ExpandGlitchBasic.shader" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\roomCeilingBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\roomCeilingBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\facewallGrids_0_grid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\facewallGrids_0_grid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\facewallGrids_0__grid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Grey\roomFloorBorderGrid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Grey\roomFloorBorderGrid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\facewallGrids_1_grid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\facewallGrids_1_grid.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_2_grid.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Blue\facewallGrids_2_grid.txt" />
@ -182,6 +201,7 @@
<None Include="Assets\ExpandSerializedData\SpriteCollections\GungeoneerMimicCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\GungeoneerMimicCollection.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\facewallGrids_0.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Nakatomi\Nakatomi_Purple\facewallGrids_0.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Grey\floorSquares.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\Phobos\Phobos_Grey\floorSquares.txt" />
<None Include="Assets\ExpandSerializedData\AmmonomiconData\HotShotBulletKin_AmmonomiconData.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\WestBrosCollection.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\WestBrosCollection.txt" />
<None Include="Assets\ExpandSerializedData\SpriteCollections\StoneCubeCollection_West.txt" /> <None Include="Assets\ExpandSerializedData\SpriteCollections\StoneCubeCollection_West.txt" />
<None Include="Assets\ExpandSerializedData\TilesetData\West\ENV_Tileset_West_MaterialTable.txt" /> <None Include="Assets\ExpandSerializedData\TilesetData\West\ENV_Tileset_West_MaterialTable.txt" />

View File

@ -155,7 +155,7 @@ public class ExpandCorruptedEnemyEngageDoer : CustomEngageDoer {
GameObject newEnemy = null; GameObject newEnemy = null;
try { try {
newEnemy = ExpandGlitchedEnemies.Instance.SpawnRandomGlitchEnemy(currentRoom, cachedPosition, true); newEnemy = ExpandEnemyCorruptor.Instance.SpawnRandomGlitchEnemy(currentRoom, cachedPosition, true);
} catch (Exception) { } catch (Exception) {
// If something broke, destroy broken Enemy (if it exist) to prevent possible softlocks. // If something broke, destroy broken Enemy (if it exist) to prevent possible softlocks.
if (newEnemy) { if (newEnemy) {

View File

@ -0,0 +1,22 @@
using UnityEngine;
namespace ExpandTheGungeon.ExpandComponents {
public class ExpandPlaySoundOnSpawn : BraveBehaviour {
[SerializeField]
public string SoundEvent;
public void Start() {
if (!string.IsNullOrEmpty(SoundEvent)) {
AkSoundEngine.PostEvent(SoundEvent, gameObject);
Destroy(this);
}
}
public void Update() { }
protected override void OnDestroy() { base.OnDestroy(); }
}
}

View File

@ -108,7 +108,7 @@ public enum SpawnPosition { InsideCollider, ScreenEdge, InsideRadius = 20 }
if (transform.position.GetAbsoluteRoom() != null) { if (transform.position.GetAbsoluteRoom() != null) {
RoomHandler CurrentRoom = transform.position.GetAbsoluteRoom(); RoomHandler CurrentRoom = transform.position.GetAbsoluteRoom();
IntVector2 actorPosition = specRigidbody.UnitCenter.ToIntVector2(VectorConversions.Floor) - CurrentRoom.area.basePosition; IntVector2 actorPosition = specRigidbody.UnitCenter.ToIntVector2(VectorConversions.Floor) - CurrentRoom.area.basePosition;
ExpandGlitchedEnemies.Instance.SpawnGlitchedSuperReaper(CurrentRoom, actorPosition); ExpandEnemyCorruptor.Instance.SpawnGlitchedSuperReaper(CurrentRoom, actorPosition);
return; return;
} }
} else { } else {
@ -120,7 +120,7 @@ public enum SpawnPosition { InsideCollider, ScreenEdge, InsideRadius = 20 }
bool spawnsGlitchedObjectOnDeath = false; bool spawnsGlitchedObjectOnDeath = false;
if (UnityEngine.Random.value <= 0.25f) { ExplodesOnDeath = true; } if (UnityEngine.Random.value <= 0.25f) { ExplodesOnDeath = true; }
if (UnityEngine.Random.value <= 0.15f) { spawnsGlitchedObjectOnDeath = true; } if (UnityEngine.Random.value <= 0.15f) { spawnsGlitchedObjectOnDeath = true; }
aiactor = AIActor.Spawn(ExpandGlitchedEnemies.Instance.GenerateGlitchedActorPrefab(CachedTargetActorObject, ActorOverrideSource, ExplodesOnDeath, spawnsGlitchedObjectOnDeath), specRigidbody.UnitCenter.ToIntVector2(VectorConversions.Floor), roomFromPosition, true, AnimationType, true); aiactor = AIActor.Spawn(ExpandEnemyCorruptor.Instance.GenerateGlitchedActorPrefab(CachedTargetActorObject, ActorOverrideSource, ExplodesOnDeath, spawnsGlitchedObjectOnDeath), specRigidbody.UnitCenter.ToIntVector2(VectorConversions.Floor), roomFromPosition, true, AnimationType, true);
if (aiactor == null) { return; } if (aiactor == null) { return; }
if (aiActor.IsBlackPhantom) { aiactor.BecomeBlackPhantom(); } if (aiActor.IsBlackPhantom) { aiactor.BecomeBlackPhantom(); }
if (aiactor) { if (aiactor) {

View File

@ -0,0 +1,48 @@
using System;
using System.Collections;
using UnityEngine;
namespace ExpandTheGungeon.ExpandComponents {
public class ExpandSpriteFadeOnSpawn : BraveBehaviour {
[SerializeField]
public float FadeTime;
[SerializeField]
public float FadeStartAlpha;
[SerializeField]
public Color FadeColor;
[NonSerialized]
private Renderer m_Renderer;
public ExpandSpriteFadeOnSpawn() {
FadeTime = 0.2f;
FadeStartAlpha = 0.5f;
FadeColor = Color.black;
}
public void Start() {
m_Renderer = renderer;
StartCoroutine(HandleOverrideColorFade(FadeColor, FadeTime, FadeStartAlpha));
}
private IEnumerator HandleOverrideColorFade(Color targetColor, float duration, float startAlpha = 0f) {
if (!m_Renderer) { yield break; }
Color startColor = new Color(targetColor.r, targetColor.g, targetColor.b, startAlpha);
float elapsed = 0f;
while (elapsed < duration) {
elapsed += BraveTime.DeltaTime;
float t = Mathf.SmoothStep(0f, 1f, Mathf.Clamp01(elapsed / duration));
Color current = Color.Lerp(startColor, targetColor, t);
m_Renderer.material.SetColor("_OverrideColor", current);
yield return null;
}
m_Renderer.material.SetColor("_OverrideColor", targetColor);
yield break;
}
protected override void OnDestroy() { base.OnDestroy(); }
}
}

View File

@ -633,7 +633,7 @@ public class ExpandDungeonFlow {
ProceduralFlowModifierData.FlowModifierPlacementType.END_OF_CHAIN ProceduralFlowModifierData.FlowModifierPlacementType.END_OF_CHAIN
}, },
roomTable = null, roomTable = null,
exactRoom = ExpandPrefabs.gungeon_rewardroom_1, exactRoom = ExpandRoomPrefabs.Expand_Jungle_RewardRoom,
IsWarpWing = false, IsWarpWing = false,
RequiresMasteryToken = false, RequiresMasteryToken = false,
chanceToLock = 0, chanceToLock = 0,

View File

@ -16,6 +16,7 @@ public class ExpandFloorDecorator {
public static void PlaceFloorDecoration(Dungeon dungeon, List<RoomHandler> roomListOverride = null, bool ignoreTilesetType = false) { public static void PlaceFloorDecoration(Dungeon dungeon, List<RoomHandler> roomListOverride = null, bool ignoreTilesetType = false) {
List<GlobalDungeonData.ValidTilesets> ValidTilesets = new List<GlobalDungeonData.ValidTilesets>() { List<GlobalDungeonData.ValidTilesets> ValidTilesets = new List<GlobalDungeonData.ValidTilesets>() {
GlobalDungeonData.ValidTilesets.JUNGLEGEON,
GlobalDungeonData.ValidTilesets.BELLYGEON, GlobalDungeonData.ValidTilesets.BELLYGEON,
GlobalDungeonData.ValidTilesets.WESTGEON, GlobalDungeonData.ValidTilesets.WESTGEON,
GlobalDungeonData.ValidTilesets.MINEGEON, GlobalDungeonData.ValidTilesets.MINEGEON,
@ -30,69 +31,14 @@ public class ExpandFloorDecorator {
if (roomListOverride != null) { DungeonRooms = roomListOverride; } if (roomListOverride != null) { DungeonRooms = roomListOverride; }
if (dungeon.gameObject.name.ToLower().StartsWith("base_office")) { if (dungeon.gameObject.name.ToLower().StartsWith("base_office")) { ReplaceTables(); }
FlippableCover[] AllTables = Object.FindObjectsOfType<FlippableCover>();
if (AllTables != null && AllTables.Length > 0) {
for (int i = 0; i < AllTables.Length; i++) {
Vector3 CachedTablePosition = AllTables[i].gameObject.transform.position;
List<GameObject> m_surfaceObjects = new List<GameObject>();
bool ReplaceThisTable = false;
bool IsVerticalTable = false;
bool TableHadDecoration = false;
bool TableWasDecorated = false;
float ChanceToDecorate = 1;
GameObject Table = null;
RoomHandler parentRoom = AllTables[i].transform.position.GetAbsoluteRoom();
if (AllTables[i].gameObject.name.ToLower().Contains("table_vertical") | AllTables[i].gameObject.name.ToLower().Contains("coffin_vertical")) {
ReplaceThisTable = true;
IsVerticalTable = true;
} else if (AllTables[i].gameObject.name.ToLower().Contains("table_horizontal") | AllTables[i].gameObject.name.ToLower().Contains("coffin_horizontal")) {
ReplaceThisTable = true;
}
if (ReplaceThisTable) {
SurfaceDecorator m_TableDecorator = AllTables[i].gameObject.GetComponent<SurfaceDecorator>();
if (m_TableDecorator) {
m_surfaceObjects = ReflectionHelpers.ReflectGetField<List<GameObject>>(typeof(SurfaceDecorator), "m_surfaceObjects", m_TableDecorator);
if (m_surfaceObjects != null && m_surfaceObjects.Count > 0) {
TableWasDecorated = true;
for (int I = 0; I < m_surfaceObjects.Count; I++) { Object.Destroy(m_surfaceObjects[I]); }
}
ChanceToDecorate = m_TableDecorator.chanceToDecorate;
TableHadDecoration = true;
}
parentRoom.DeregisterInteractable(AllTables[i]);
Object.Destroy(AllTables[i].gameObject);
if (IsVerticalTable) {
Table = Object.Instantiate(ExpandObjectDatabase.TableVerticalSteel, CachedTablePosition, Quaternion.identity);
} else {
Table = Object.Instantiate(ExpandObjectDatabase.TableHorizontalSteel, CachedTablePosition, Quaternion.identity);
}
if (Table) {
FlippableCover NewTable = Table.GetComponent<FlippableCover>();
Table.transform.parent = parentRoom.hierarchyParent;
NewTable.ConfigureOnPlacement(parentRoom);
if (TableHadDecoration) {
SurfaceDecorator newDecorator = Table.GetComponent<SurfaceDecorator>();
if (newDecorator) {
if (TableWasDecorated) {
newDecorator.chanceToDecorate = 1;
} else {
newDecorator.chanceToDecorate = ChanceToDecorate;
}
newDecorator.Decorate(parentRoom);
}
}
parentRoom.RegisterInteractable(NewTable);
}
}
}
}
}
foreach (RoomHandler currentRoom in DungeonRooms) { foreach (RoomHandler currentRoom in DungeonRooms) {
try { try {
switch (dungeon.tileIndices.tilesetId) { switch (dungeon.tileIndices.tilesetId) {
case GlobalDungeonData.ValidTilesets.JUNGLEGEON:
PlaceRandomTrees(dungeon, currentRoom);
break;
case GlobalDungeonData.ValidTilesets.WESTGEON: case GlobalDungeonData.ValidTilesets.WESTGEON:
PlaceRandomCacti(dungeon, currentRoom); PlaceRandomCacti(dungeon, currentRoom);
break; break;
@ -123,12 +69,102 @@ public class ExpandFloorDecorator {
ETGModConsole.Log("[DEBUG] Number of floor decoration objects skipped: " + RandomObjectsSkipped, DebugMode); ETGModConsole.Log("[DEBUG] Number of floor decoration objects skipped: " + RandomObjectsSkipped, DebugMode);
if (RandomObjectsPlaced <= 0) { ETGModConsole.Log("[DEBUG] Warning: No decoration objects have been placed!", DebugMode); } if (RandomObjectsPlaced <= 0) { ETGModConsole.Log("[DEBUG] Warning: No decoration objects have been placed!", DebugMode); }
} }
RandomObjectsPlaced = 0; RandomObjectsPlaced = 0;
RandomObjectsSkipped = 0; RandomObjectsSkipped = 0;
return; return;
} }
private static void PlaceRandomTrees(Dungeon dungeon, RoomHandler currentRoom) {
if (currentRoom.area == null) { return; }
PrototypeDungeonRoom.RoomCategory roomCategory = currentRoom.area.PrototypeRoomCategory;
if (currentRoom == null | roomCategory == PrototypeDungeonRoom.RoomCategory.REWARD | currentRoom.IsMaintenanceRoom() |
string.IsNullOrEmpty(currentRoom.GetRoomName()) | currentRoom.GetRoomName().StartsWith("Boss Foyer") |
!currentRoom.HasActiveEnemies(RoomHandler.ActiveEnemyType.RoomClear) | currentRoom.PrecludeTilemapDrawing |
roomCategory == PrototypeDungeonRoom.RoomCategory.BOSS | roomCategory == PrototypeDungeonRoom.RoomCategory.ENTRANCE |
roomCategory == PrototypeDungeonRoom.RoomCategory.EXIT)
{
return;
}
if (Random.value < 0.2f) { return; }
List<IntVector2> ValidLocations = ExpandUtility.FindAllValidLocations(dungeon, currentRoom, 3, 9, true);
List<FlippableCover> Tables = new List<FlippableCover>();
if (ValidLocations.Count <= 0) { return; }
ValidLocations = ValidLocations.Shuffle();
if (currentRoom.hierarchyParent) {
for (int i = 0; i < currentRoom.hierarchyParent.childCount; i++) {
if (currentRoom.hierarchyParent.GetChild(i).gameObject && currentRoom.hierarchyParent.GetChild(i).gameObject.GetComponent<FlippableCover>()) {
Tables.Add(currentRoom.hierarchyParent.GetChild(i).gameObject.GetComponent<FlippableCover>());
}
}
}
List<GameObject> TreeList = new List<GameObject>() { ExpandPrefabs.ExpandJungleTree_Medium, ExpandPrefabs.ExpandJungleTree_Small };
TreeList = TreeList.Shuffle();
int MinTreeCount = 2;
int MaxTreeCount = 5;
int X = currentRoom.area.dimensions.x;
int Y = currentRoom.area.dimensions.y;
if (X < 10 | Y < 10 | (X * Y) < 225) {
MinTreeCount = 1;
MaxTreeCount = 3;
} else if ((X * Y) >= 800 & X > 15 & Y > 15) {
MinTreeCount = 4;
MaxTreeCount = 7;
}
int TreeCount = Random.Range(MinTreeCount, MaxTreeCount);
for (int i = 0; i < TreeCount; i++) {
if (ValidLocations.Count > 0) {
IntVector2 RandomVector = BraveUtility.RandomElement(ValidLocations);
ValidLocations.Remove(RandomVector);
GameObject Tree = Object.Instantiate(BraveUtility.RandomElement(TreeList), RandomVector.ToVector3(), Quaternion.identity);
MajorBreakable m_TreeBreakable = Tree.GetComponent<MajorBreakable>();
Tree.transform.parent = currentRoom.hierarchyParent;
if (Random.value < 0.35f) {
m_TreeBreakable.SpawnItemOnBreak = true;
if (Random.value > 0.3f) {
m_TreeBreakable.ItemIdToSpawnOnBreak = 70;
} else {
m_TreeBreakable.ItemIdToSpawnOnBreak = 73;
}
}
RandomObjectsPlaced++;
if (ValidLocations.Count > 1) { ValidLocations = ValidLocations.Shuffle(); }
if (Tables.Count > 0) {
for (int I = 0; I < Tables.Count; I++) {
FlippableCover currentTable = Tables[I];
if (Vector2.Distance(currentTable.specRigidbody.UnitCenter, m_TreeBreakable.specRigidbody.UnitCenter) < 4) {
Tables.Remove(currentTable);
currentRoom.DeregisterInteractable(currentTable.gameObject.GetComponent<FlippableCover>());
RemoveTableDecorations(currentTable, currentRoom);
Object.Destroy(currentTable.gameObject);
}
}
}
if (currentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All).Count > 0) {
foreach (AIActor enemy in currentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All)) {
if (Vector2.Distance(enemy.specRigidbody.UnitCenter, m_TreeBreakable.specRigidbody.UnitCenter) < 3) {
PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(enemy.specRigidbody);
}
}
}
} else {
RandomObjectsSkipped++;
}
}
}
private static void PlaceRandomCorpses(Dungeon dungeon, RoomHandler currentRoom) { private static void PlaceRandomCorpses(Dungeon dungeon, RoomHandler currentRoom) {
PrototypeDungeonRoom.RoomCategory roomCategory = currentRoom.area.PrototypeRoomCategory; PrototypeDungeonRoom.RoomCategory roomCategory = currentRoom.area.PrototypeRoomCategory;
@ -139,7 +175,14 @@ public class ExpandFloorDecorator {
{ {
if (Random.value <= 0.6f && roomCategory != PrototypeDungeonRoom.RoomCategory.ENTRANCE && roomCategory != PrototypeDungeonRoom.RoomCategory.REWARD) { if (Random.value <= 0.6f && roomCategory != PrototypeDungeonRoom.RoomCategory.ENTRANCE && roomCategory != PrototypeDungeonRoom.RoomCategory.REWARD) {
List<IntVector2> m_CachedPositions = new List<IntVector2>(); List<IntVector2> m_CachedPositions = ExpandUtility.FindAllValidLocations(dungeon, currentRoom, 2);
if (m_CachedPositions.Count <= 0) {
return;
} else if (m_CachedPositions.Count > 1) {
m_CachedPositions = m_CachedPositions.Shuffle();
}
int MaxCorpseCount = MaxObjectsPerRoom; int MaxCorpseCount = MaxObjectsPerRoom;
if (Random.value <= 0.3f){ if (Random.value <= 0.3f){
MaxCorpseCount = 20; MaxCorpseCount = 20;
@ -150,22 +193,22 @@ public class ExpandFloorDecorator {
int CorpseCount = Random.Range(6, MaxObjectsPerRoom); int CorpseCount = Random.Range(6, MaxObjectsPerRoom);
for (int i = 0; i < CorpseCount; i++) { for (int i = 0; i < CorpseCount; i++) {
IntVector2? RandomVector = GetRandomAvailableCell(dungeon, currentRoom, m_CachedPositions); if (m_CachedPositions.Count > 0) {
IntVector2 RandomVector = BraveUtility.RandomElement(m_CachedPositions);
if (RandomVector.HasValue) { m_CachedPositions.Remove(RandomVector);
if (m_CachedPositions.Count > 1) { m_CachedPositions = m_CachedPositions.Shuffle(); }
if (Random.value <= 0.08f) { if (Random.value <= 0.08f) {
GameObject SkeletonCorpse = Object.Instantiate(ExpandPrefabs.Sarco_Skeleton, RandomVector.Value.ToVector3(), Quaternion.identity); GameObject SkeletonCorpse = Object.Instantiate(ExpandPrefabs.Sarco_Skeleton, RandomVector.ToVector3(), Quaternion.identity);
SkeletonCorpse.GetComponent<tk2dSprite>().HeightOffGround = -1; SkeletonCorpse.GetComponent<tk2dSprite>().HeightOffGround = -1;
SkeletonCorpse.GetComponent<tk2dSprite>().UpdateZDepth(); SkeletonCorpse.GetComponent<tk2dSprite>().UpdateZDepth();
if (BraveUtility.RandomBool()) { SkeletonCorpse.GetComponent<tk2dSprite>().FlipX = true; } if (BraveUtility.RandomBool()) { SkeletonCorpse.GetComponent<tk2dSprite>().FlipX = true; }
SkeletonCorpse.transform.parent = currentRoom.hierarchyParent; SkeletonCorpse.transform.parent = currentRoom.hierarchyParent;
RandomObjectsPlaced++; RandomObjectsPlaced++;
} else { } else {
GameObject WrithingBulletManCorpse = ExpandObjectDatabase.WrithingBulletman.InstantiateObject(currentRoom, (RandomVector.Value - currentRoom.area.basePosition)); GameObject WrithingBulletManCorpse = ExpandObjectDatabase.WrithingBulletman.InstantiateObject(currentRoom, (RandomVector - currentRoom.area.basePosition));
WrithingBulletManCorpse.transform.parent = currentRoom.hierarchyParent; WrithingBulletManCorpse.transform.parent = currentRoom.hierarchyParent;
RandomObjectsPlaced++; RandomObjectsPlaced++;
} }
if (m_CachedPositions.Count <= 0) { break; }
} else { } else {
RandomObjectsSkipped++; RandomObjectsSkipped++;
} }
@ -184,9 +227,48 @@ public class ExpandFloorDecorator {
{ {
return; return;
} }
List<GameObject> CactiList = new List<GameObject>() { ExpandPrefabs.Cactus_A, ExpandPrefabs.Cactus_B };
CactiList = CactiList.Shuffle();
if (Random.value <= 0.8f | currentRoom.GetRoomName().ToLower().StartsWith("expand_west_entrance")) { if (Random.value <= 0.8f | currentRoom.GetRoomName().ToLower().StartsWith("expand_west_entrance")) {
List<IntVector2> m_CachedPositions = new List<IntVector2>(); List<IntVector2> m_CachedPositions = new List<IntVector2>() {
new IntVector2(34, 49),
new IntVector2(29, 43),
new IntVector2(16, 43),
new IntVector2(2, 19),
new IntVector2(49, 17),
new IntVector2(9, 23),
new IntVector2(40, 23),
new IntVector2(30, 20),
new IntVector2(22, 29),
new IntVector2(31, 31),
new IntVector2(14, 14),
new IntVector2(14, 37),
new IntVector2(37, 14),
new IntVector2(37, 37),
new IntVector2(33, 2),
new IntVector2(33, 10),
new IntVector2(3, 17),
new IntVector2(2, 34),
new IntVector2(14, 20),
new IntVector2(16, 39),
new IntVector2(31, 38),
new IntVector2(49, 34),
new IntVector2(38, 29),
new IntVector2(21, 21),
new IntVector2(20, 32),
new IntVector2(31, 22),
};
if (!currentRoom.GetRoomName().ToLower().StartsWith("expand_west_entrance")) {
m_CachedPositions = ExpandUtility.FindAllValidLocations(dungeon, currentRoom, 2, 4, true);
}
if (!currentRoom.GetRoomName().ToLower().StartsWith("expand_west_entrance") && m_CachedPositions.Count <= 0) { return; }
if (m_CachedPositions.Count > 1) { m_CachedPositions = m_CachedPositions.Shuffle(); }
int MaxCactiCount = 12; int MaxCactiCount = 12;
int MinCactiCount = 6; int MinCactiCount = 6;
int X = currentRoom.area.dimensions.x; int X = currentRoom.area.dimensions.x;
@ -205,64 +287,33 @@ public class ExpandFloorDecorator {
} }
int CactusCount = Random.Range(MinCactiCount, MaxCactiCount); int CactusCount = Random.Range(MinCactiCount, MaxCactiCount);
if (!currentRoom.GetRoomName().ToLower().StartsWith("expand_west_entrance")) { if (!currentRoom.GetRoomName().ToLower().StartsWith("expand_west_entrance")) {
for (int i = 0; i < CactusCount; i++) { for (int i = 0; i < CactusCount; i++) {
IntVector2? RandomVector = GetRandomAvailableCell(dungeon, currentRoom, m_CachedPositions, ExitClearence: 4, avoidExits: true); if (m_CachedPositions.Count > 0) {
IntVector2 RandomVector = BraveUtility.RandomElement(m_CachedPositions);
List<GameObject> CactiList = new List<GameObject>() { ExpandPrefabs.Cactus_A, ExpandPrefabs.Cactus_B }; m_CachedPositions.Remove(RandomVector);
CactiList = CactiList.Shuffle(); if (m_CachedPositions.Count > 1) { m_CachedPositions = m_CachedPositions.Shuffle(); }
GameObject Cactus = Object.Instantiate(BraveUtility.RandomElement(CactiList), RandomVector.ToVector3(), Quaternion.identity);
if (RandomVector.HasValue) {
GameObject Cactus = Object.Instantiate(BraveUtility.RandomElement(CactiList), RandomVector.Value.ToVector3(), Quaternion.identity);
Cactus.transform.parent = currentRoom.hierarchyParent; Cactus.transform.parent = currentRoom.hierarchyParent;
RandomObjectsPlaced++; RandomObjectsPlaced++;
if (m_CachedPositions.Count <= 0) { break; } } else {
RandomObjectsSkipped++;
}
}
} else {
for (int i = 0; i < 14; i++) {
if (m_CachedPositions.Count > 0) {
IntVector2 selectedPosition = BraveUtility.RandomElement(m_CachedPositions);
m_CachedPositions.Remove(selectedPosition);
if (m_CachedPositions.Count > 0) { m_CachedPositions = m_CachedPositions.Shuffle(); }
GameObject Cactus = Object.Instantiate(BraveUtility.RandomElement(CactiList), (selectedPosition + currentRoom.area.basePosition).ToVector3(), Quaternion.identity);
Cactus.transform.SetParent(currentRoom.hierarchyParent);
RandomObjectsPlaced++;
} else { } else {
RandomObjectsSkipped++; RandomObjectsSkipped++;
} }
} }
} else {
List<GameObject> CactiList = new List<GameObject>() { ExpandPrefabs.Cactus_A, ExpandPrefabs.Cactus_B };
CactiList = CactiList.Shuffle();
m_CachedPositions = new List<IntVector2>() {
new IntVector2(34, 49),
new IntVector2(29, 43),
new IntVector2(16, 43),
new IntVector2(2, 19),
new IntVector2(49, 17),
new IntVector2(9, 23),
new IntVector2(40, 23),
new IntVector2(30, 20),
new IntVector2(22, 29),
new IntVector2(31, 31),
new IntVector2(14, 14),
new IntVector2(14, 37),
new IntVector2(37, 14),
new IntVector2(37, 37),
new IntVector2(33, 2),
new IntVector2(33, 10),
new IntVector2(3, 17),
new IntVector2(2, 34),
new IntVector2(14, 20),
new IntVector2(16, 39),
new IntVector2(31, 38),
new IntVector2(49, 34),
new IntVector2(38, 29),
new IntVector2(21, 21),
new IntVector2(20, 32),
new IntVector2(31, 22),
};
m_CachedPositions = m_CachedPositions.Shuffle();
for (int i = 0; i < 14; i++) {
IntVector2 selectedPosition = BraveUtility.RandomElement(m_CachedPositions);
m_CachedPositions.Remove(selectedPosition);
m_CachedPositions = m_CachedPositions.Shuffle();
GameObject Cactus = Object.Instantiate(BraveUtility.RandomElement(CactiList), (selectedPosition + currentRoom.area.basePosition).ToVector3(), Quaternion.identity);
Cactus.transform.SetParent(currentRoom.hierarchyParent);
RandomObjectsPlaced++;
}
} }
} }
} }
@ -281,8 +332,15 @@ public class ExpandFloorDecorator {
!currentRoom.GetRoomName().StartsWith("Boss Foyer")) !currentRoom.GetRoomName().StartsWith("Boss Foyer"))
{ {
if (Random.value <= 0.6f) { if (Random.value <= 0.6f) {
List<IntVector2> m_CachedPositions = new List<IntVector2>(); List<IntVector2> m_CachedPositions = ExpandUtility.FindAllValidLocations(dungeon, currentRoom, 2, 6, true, PositionRelativeToRoom: true);
if (m_CachedPositions.Count <= 0) {
return;
} else if (m_CachedPositions.Count > 1) {
m_CachedPositions = m_CachedPositions.Shuffle();
}
int MinMushroomCount = 4; int MinMushroomCount = 4;
int MaxMushroomCount = 8; int MaxMushroomCount = 8;
int X = currentRoom.area.dimensions.x; int X = currentRoom.area.dimensions.x;
@ -291,7 +349,7 @@ public class ExpandFloorDecorator {
if (X * Y <= 225) { if (X * Y <= 225) {
MinMushroomCount = 3; MinMushroomCount = 3;
MaxMushroomCount = 5; MaxMushroomCount = 5;
} else if (X * Y >= 400 && Random.value <= 0.3f) { } else if ((X * Y) >= 400 && Random.value <= 0.3f) {
MinMushroomCount = 8; MinMushroomCount = 8;
MaxMushroomCount = 18; MaxMushroomCount = 18;
} }
@ -299,15 +357,18 @@ public class ExpandFloorDecorator {
int MushroomCount = Random.Range(MinMushroomCount, MaxMushroomCount); int MushroomCount = Random.Range(MinMushroomCount, MaxMushroomCount);
for (int i = 0; i < MushroomCount; i++) { for (int i = 0; i < MushroomCount; i++) {
if (DebugMode) { Debug.Log("[ExpandTheGungeon] Test Mushroom Iteration: " + i.ToString()); } if (m_CachedPositions.Count > 0) {
if (DebugMode) { if (!string.IsNullOrEmpty(currentRoom.GetRoomName())) { ETGModConsole.Log("[ExpandTheGungeon] On Room: " + currentRoom.GetRoomName()); } } if (DebugMode) { Debug.Log("[ExpandTheGungeon] Test Mushroom Iteration: " + i.ToString()); }
if (DebugMode) { if (!string.IsNullOrEmpty(currentRoom.GetRoomName())) { ETGModConsole.Log("[ExpandTheGungeon] On Room: " + currentRoom.GetRoomName()); } }
IntVector2? RandomVector = GetRandomAvailableCell(dungeon, currentRoom, m_CachedPositions, 1, 6, avoidExits: true, PositionRelativeToRoom: true); IntVector2 RandomVector = BraveUtility.RandomElement(m_CachedPositions);
m_CachedPositions.Remove(RandomVector);
if (m_CachedPositions.Count > 1) { m_CachedPositions = m_CachedPositions.Shuffle(); }
if (RandomVector.HasValue) {
if (DebugMode) { ETGModConsole.Log("[ExpandTheGungeon] Valid Location found. Placing Mushroom..."); } if (DebugMode) { ETGModConsole.Log("[ExpandTheGungeon] Valid Location found. Placing Mushroom..."); }
try { try {
GameObject alarmMushroomObject = ExpandPrefabs.EXAlarmMushroom.GetComponent<ExpandAlarmMushroomPlacable>().InstantiateObject(currentRoom, RandomVector.Value, true); GameObject alarmMushroomObject = ExpandPrefabs.EXAlarmMushroom.GetComponent<ExpandAlarmMushroomPlacable>().InstantiateObject(currentRoom, RandomVector, true);
alarmMushroomObject.transform.parent = currentRoom.hierarchyParent; alarmMushroomObject.transform.parent = currentRoom.hierarchyParent;
ExpandAlarmMushroomPlacable m_AlarmMushRoomPlacable = ExpandPrefabs.EXAlarmMushroom.GetComponent<ExpandAlarmMushroomPlacable>(); ExpandAlarmMushroomPlacable m_AlarmMushRoomPlacable = ExpandPrefabs.EXAlarmMushroom.GetComponent<ExpandAlarmMushroomPlacable>();
m_AlarmMushRoomPlacable.ConfigureOnPlacement(currentRoom); m_AlarmMushRoomPlacable.ConfigureOnPlacement(currentRoom);
@ -319,9 +380,8 @@ public class ExpandFloorDecorator {
} }
RandomObjectsPlaced++; RandomObjectsPlaced++;
if (DebugMode) { Debug.Log("[ExpandTheGungeon] Mushroom successfully placed!"); } if (DebugMode) { Debug.Log("[ExpandTheGungeon] Mushroom successfully placed!"); }
if (m_CachedPositions.Count <= 0) { break; }
} else { } else {
if (DebugMode) { Debug.Log("[ExpandTheGungeon] No valid cells found. Mushroom skipped!"); } if (DebugMode) { Debug.Log("[ExpandTheGungeon] No more valid cells found. Mushroom skipped!"); }
RandomObjectsSkipped++; RandomObjectsSkipped++;
} }
} }
@ -331,23 +391,6 @@ public class ExpandFloorDecorator {
private static void PlaceRandomOfficeSupplies(Dungeon dungeon, RoomHandler currentRoom) { private static void PlaceRandomOfficeSupplies(Dungeon dungeon, RoomHandler currentRoom) {
PrototypeDungeonRoom.RoomCategory roomCategory = currentRoom.area.PrototypeRoomCategory; PrototypeDungeonRoom.RoomCategory roomCategory = currentRoom.area.PrototypeRoomCategory;
Dungeon NakatomiPrefab = ExpandDungeonPrefabs.LoadOfficialDungeonPrefab("Base_Nakatomi");
List<GameObject> m_ObjectList = new List<GameObject>();
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[6].objectReference);
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[9].objectReference);
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[10].objectReference);
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[11].objectReference);
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[12].objectReference);
m_ObjectList.Add(ExpandObjectDatabase.KitchenChair_Front);
m_ObjectList.Add(ExpandObjectDatabase.KitchenChair_Left);
m_ObjectList.Add(ExpandObjectDatabase.KitchenChair_Right);
m_ObjectList.Add(ExpandObjectDatabase.KitchenCounter);
m_ObjectList = m_ObjectList.Shuffle();
NakatomiPrefab = null;
int MaxObjectsPerRoom = 8; int MaxObjectsPerRoom = 8;
@ -355,7 +398,27 @@ public class ExpandFloorDecorator {
!currentRoom.IsMaintenanceRoom() && !currentRoom.GetRoomName().StartsWith("Boss Foyer") && !currentRoom.PrecludeTilemapDrawing && !currentRoom.IsMaintenanceRoom() && !currentRoom.GetRoomName().StartsWith("Boss Foyer") && !currentRoom.PrecludeTilemapDrawing &&
roomCategory != PrototypeDungeonRoom.RoomCategory.REWARD && Random.value <= 0.6f) roomCategory != PrototypeDungeonRoom.RoomCategory.REWARD && Random.value <= 0.6f)
{ {
List<IntVector2> m_CachedPositions = new List<IntVector2>(); List<IntVector2> m_CachedPositions = ExpandUtility.FindAllValidLocations(dungeon, currentRoom, 2);
if (m_CachedPositions.Count <= 0) {
return;
} else if (m_CachedPositions.Count > 1) {
m_CachedPositions = m_CachedPositions.Shuffle();
}
Dungeon NakatomiPrefab = ExpandDungeonPrefabs.LoadOfficialDungeonPrefab("Base_Nakatomi");
List<GameObject> m_ObjectList = new List<GameObject>();
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[6].objectReference);
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[9].objectReference);
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[10].objectReference);
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[11].objectReference);
m_ObjectList.Add(NakatomiPrefab.stampData.objectStamps[12].objectReference);
m_ObjectList.Add(ExpandObjectDatabase.KitchenChair_Front);
m_ObjectList.Add(ExpandObjectDatabase.KitchenChair_Left);
m_ObjectList.Add(ExpandObjectDatabase.KitchenChair_Right);
m_ObjectList.Add(ExpandObjectDatabase.KitchenCounter);
m_ObjectList = m_ObjectList.Shuffle();
NakatomiPrefab = null;
int MaxObjectCount = MaxObjectsPerRoom; int MaxObjectCount = MaxObjectsPerRoom;
if (Random.value <= 0.3f){ if (Random.value <= 0.3f){
MaxObjectCount = 16; MaxObjectCount = 16;
@ -366,13 +429,13 @@ public class ExpandFloorDecorator {
int ObjectCount = Random.Range(6, MaxObjectsPerRoom); int ObjectCount = Random.Range(6, MaxObjectsPerRoom);
for (int i = 0; i < ObjectCount; i++) { for (int i = 0; i < ObjectCount; i++) {
IntVector2? RandomVector = GetRandomAvailableCell(dungeon, currentRoom, m_CachedPositions); if (m_CachedPositions.Count > 0) {
IntVector2 RandomVector = BraveUtility.RandomElement(m_CachedPositions);
if (RandomVector.HasValue) { m_CachedPositions.Remove(RandomVector);
GameObject selectedObject = Object.Instantiate(BraveUtility.RandomElement(m_ObjectList), RandomVector.Value.ToVector3(), Quaternion.identity); if (m_CachedPositions.Count > 1) { m_CachedPositions = m_CachedPositions.Shuffle(); }
GameObject selectedObject = Object.Instantiate(BraveUtility.RandomElement(m_ObjectList), RandomVector.ToVector3(), Quaternion.identity);
selectedObject.transform.parent = currentRoom.hierarchyParent; selectedObject.transform.parent = currentRoom.hierarchyParent;
RandomObjectsPlaced++; RandomObjectsPlaced++;
if (m_CachedPositions.Count <= 0) { break; }
} else { } else {
RandomObjectsSkipped++; RandomObjectsSkipped++;
} }
@ -380,56 +443,76 @@ public class ExpandFloorDecorator {
} }
} }
private static IntVector2? GetRandomAvailableCell(Dungeon dungeon, RoomHandler currentRoom, List<IntVector2> validCellsCached, int Clearence = 1, int ExitClearence = 10, bool avoidExits = false, bool avoidPits = true, bool PositionRelativeToRoom = false, bool isCactusDecoration = false) { private static void ReplaceTables() {
if (dungeon == null | currentRoom == null | validCellsCached == null) { return null; } FlippableCover[] AllTables = Object.FindObjectsOfType<FlippableCover>();
try { if (AllTables != null && AllTables.Length > 0) {
if (validCellsCached.Count == 0) { for (int i = 0; i < AllTables.Length; i++) {
for (int X = 0; X < currentRoom.area.dimensions.x; X++) { Vector3 CachedTablePosition = AllTables[i].gameObject.transform.position;
for (int Y = 0; Y < currentRoom.area.dimensions.y; Y++) { List<GameObject> m_surfaceObjects = new List<GameObject>();
bool isInvalid = false; bool ReplaceThisTable = false;
IntVector2 TargetPosition = new IntVector2(currentRoom.area.basePosition.x + X, currentRoom.area.basePosition.y + Y); bool IsVerticalTable = false;
if (!validCellsCached.Contains(TargetPosition)) { bool TableHadDecoration = false;
RoomHandler ActualRoom = dungeon.data.GetAbsoluteRoomFromPosition(TargetPosition); bool TableWasDecorated = false;
for (int x = 0; x < Clearence; x++) { float ChanceToDecorate = 1;
for (int y = 0; y < Clearence; y++) { GameObject Table = null;
IntVector2 intVector = (TargetPosition + new IntVector2(x, y)); RoomHandler parentRoom = AllTables[i].transform.position.GetAbsoluteRoom();
if (dungeon.data.CheckInBoundsAndValid(intVector)) { if (AllTables[i].gameObject.name.ToLower().Contains("table_vertical") | AllTables[i].gameObject.name.ToLower().Contains("coffin_vertical")) {
CellData cellData = dungeon.data[intVector]; ReplaceThisTable = true;
if (cellData.parentRoom == null | cellData.type != CellType.FLOOR | cellData.isOccupied | !cellData.IsPassable ) { isInvalid = true; } IsVerticalTable = true;
if (ActualRoom != currentRoom | cellData.HasPitNeighbor(dungeon.data)) { isInvalid = true; } } else if (AllTables[i].gameObject.name.ToLower().Contains("table_horizontal") | AllTables[i].gameObject.name.ToLower().Contains("coffin_horizontal")) {
if (cellData.cellVisualData.floorType == CellVisualData.CellFloorType.Water/*| cellData.cellVisualData.floorTileOverridden*/) { isInvalid = true; } ReplaceThisTable = true;
if (cellData.HasWallNeighbor()) { isInvalid = true; } }
} else { if (ReplaceThisTable) {
isInvalid = true; SurfaceDecorator m_TableDecorator = AllTables[i].gameObject.GetComponent<SurfaceDecorator>();
} if (m_TableDecorator) {
} m_surfaceObjects = ReflectionHelpers.ReflectGetField<List<GameObject>>(typeof(SurfaceDecorator), "m_surfaceObjects", m_TableDecorator);
} if (m_surfaceObjects != null && m_surfaceObjects.Count > 0) {
if (!isInvalid && avoidExits) { TableWasDecorated = true;
for (int x = 0; x < ExitClearence; x++) { for (int I = 0; I < m_surfaceObjects.Count; I++) { Object.Destroy(m_surfaceObjects[I]); }
for (int y = 0; y < ExitClearence; y++) {
IntVector2 intVector = (TargetPosition + new IntVector2(x, y));
if (dungeon.data.CheckInBoundsAndValid(intVector)) {
CellData cellData = dungeon.data[intVector];
if (cellData.isExitCell) { isInvalid = true; }
}
}
}
}
if (!isInvalid) { validCellsCached.Add(TargetPosition); }
} }
ChanceToDecorate = m_TableDecorator.chanceToDecorate;
TableHadDecoration = true;
}
parentRoom.DeregisterInteractable(AllTables[i]);
Object.Destroy(AllTables[i].gameObject);
if (IsVerticalTable) {
Table = Object.Instantiate(ExpandObjectDatabase.TableVerticalSteel, CachedTablePosition, Quaternion.identity);
} else {
Table = Object.Instantiate(ExpandObjectDatabase.TableHorizontalSteel, CachedTablePosition, Quaternion.identity);
}
if (Table) {
FlippableCover NewTable = Table.GetComponent<FlippableCover>();
Table.transform.parent = parentRoom.hierarchyParent;
NewTable.ConfigureOnPlacement(parentRoom);
if (TableHadDecoration) {
SurfaceDecorator newDecorator = Table.GetComponent<SurfaceDecorator>();
if (newDecorator) {
if (TableWasDecorated) {
newDecorator.chanceToDecorate = 1;
} else {
newDecorator.chanceToDecorate = ChanceToDecorate;
}
newDecorator.Decorate(parentRoom);
}
}
parentRoom.RegisterInteractable(NewTable);
} }
} }
} }
} catch (System.Exception){
if (DebugMode) { Debug.Log("GetRandomAvailableCell Exception while looking for valid cells in current room."); }
} }
if (validCellsCached.Count > 0) { }
IntVector2 SelectedCell = BraveUtility.RandomElement(validCellsCached);
validCellsCached.Remove(SelectedCell); private static void RemoveTableDecorations(FlippableCover table, RoomHandler currentRoom) {
if (PositionRelativeToRoom) { SelectedCell -= currentRoom.area.basePosition; } for (int i = 0; i < StaticReferenceManager.AllMinorBreakables.Count; i++) {
return SelectedCell; if (!StaticReferenceManager.AllMinorBreakables[i].IsBroken && !StaticReferenceManager.AllMinorBreakables[i].debris && StaticReferenceManager.AllMinorBreakables[i].transform.position.GetAbsoluteRoom() == currentRoom) {
} else { SpeculativeRigidbody specRigidbody = StaticReferenceManager.AllMinorBreakables[i].specRigidbody;
return null; if (specRigidbody && table.specRigidbody) {
if (BraveMathCollege.DistBetweenRectangles(specRigidbody.UnitBottomLeft, specRigidbody.UnitDimensions, table.specRigidbody.UnitBottomLeft, table.specRigidbody.UnitDimensions) < 0.5f) {
StaticReferenceManager.AllMinorBreakables.Remove(StaticReferenceManager.AllMinorBreakables[i]);
Object.Destroy(StaticReferenceManager.AllMinorBreakables[i].gameObject);
}
}
}
} }
} }
} }

View File

@ -49,9 +49,9 @@ public class ExpandJunkEnemySpawneer {
if (RandomGlitchEnemyVector.HasValue) { if (RandomGlitchEnemyVector.HasValue) {
if (Random.value <= 0.5f) { if (Random.value <= 0.5f) {
ExpandGlitchedEnemies.Instance.SpawnGlitchedRaccoon(currentRoom, RandomGlitchEnemyVector.Value, false, AIActor.AwakenAnimationType.Spawn, true); ExpandEnemyCorruptor.Instance.SpawnGlitchedRaccoon(currentRoom, RandomGlitchEnemyVector.Value, false, AIActor.AwakenAnimationType.Spawn, true);
} else { } else {
ExpandGlitchedEnemies.Instance.SpawnGlitchedTurkey(currentRoom, RandomGlitchEnemyVector.Value, false, AIActor.AwakenAnimationType.Spawn, true); ExpandEnemyCorruptor.Instance.SpawnGlitchedTurkey(currentRoom, RandomGlitchEnemyVector.Value, false, AIActor.AwakenAnimationType.Spawn, true);
} }
} else { RandomEnemiesSkipped++; } } else { RandomEnemiesSkipped++; }

View File

@ -61,22 +61,22 @@ public class ExpandPlaceGlitchedEnemies {
if (RandomGlitchEnemyVector.HasValue) { if (RandomGlitchEnemyVector.HasValue) {
ExpandGlitchedEnemies.Instance.SpawnRandomGlitchEnemy(currentRoom, RandomGlitchEnemyVector.Value, false, AIActor.AwakenAnimationType.Spawn); ExpandEnemyCorruptor.Instance.SpawnRandomGlitchEnemy(currentRoom, RandomGlitchEnemyVector.Value, false, AIActor.AwakenAnimationType.Spawn);
} else { RandomEnemiesSkipped++; } } else { RandomEnemiesSkipped++; }
if (RandomGlitchEnemyVector2.HasValue && Random.value <= BonusGlitchEnemyOdds) { if (RandomGlitchEnemyVector2.HasValue && Random.value <= BonusGlitchEnemyOdds) {
ExpandGlitchedEnemies.Instance.SpawnRandomGlitchEnemy(currentRoom, RandomGlitchEnemyVector2.Value, false, AIActor.AwakenAnimationType.Spawn); ExpandEnemyCorruptor.Instance.SpawnRandomGlitchEnemy(currentRoom, RandomGlitchEnemyVector2.Value, false, AIActor.AwakenAnimationType.Spawn);
} else { RandomEnemiesSkipped++; } } else { RandomEnemiesSkipped++; }
if (RandomGlitchEnemyVector3.HasValue && Random.value <= GlitchedBossOdds) { if (RandomGlitchEnemyVector3.HasValue && Random.value <= GlitchedBossOdds) {
ExpandGlitchedEnemies.Instance.SpawnRandomGlitchBoss(currentRoom, RandomGlitchEnemyVector3.Value, false, AIActor.AwakenAnimationType.Spawn); ExpandEnemyCorruptor.Instance.SpawnRandomGlitchBoss(currentRoom, RandomGlitchEnemyVector3.Value, false, AIActor.AwakenAnimationType.Spawn);
} }
if (RandomGlitchEnemyVector4.HasValue && Random.value <= GlitchedBossOdds) { if (RandomGlitchEnemyVector4.HasValue && Random.value <= GlitchedBossOdds) {
if (Random.value <= 0.65f) { if (Random.value <= 0.65f) {
ExpandGlitchedEnemies.Instance.SpawnGlitchedObjectAsEnemy(currentRoom, RandomGlitchEnemyVector4.Value, false, AIActor.AwakenAnimationType.Spawn); ExpandEnemyCorruptor.Instance.SpawnGlitchedObjectAsEnemy(currentRoom, RandomGlitchEnemyVector4.Value, false, AIActor.AwakenAnimationType.Spawn);
} else { } else {
ExpandGlitchedEnemies.Instance.SpawnGlitchedPlayerAsEnemy(currentRoom, RandomGlitchEnemyVector4.Value, false, AIActor.AwakenAnimationType.Spawn); ExpandEnemyCorruptor.Instance.SpawnGlitchedPlayerAsEnemy(currentRoom, RandomGlitchEnemyVector4.Value, false, AIActor.AwakenAnimationType.Spawn);
} }
} }

View File

@ -561,7 +561,7 @@ public class ExpandPlaceWallMimic {
if (targetActor.GetComponent<ExpandSpawnGlitchObjectOnDeath>() == null) { if (targetActor.GetComponent<ExpandSpawnGlitchObjectOnDeath>() == null) {
if (UnityEngine.Random.value <= 0.25) { targetActor.gameObject.AddComponent<ExpandSpawnGlitchObjectOnDeath>(); } if (UnityEngine.Random.value <= 0.25) { targetActor.gameObject.AddComponent<ExpandSpawnGlitchObjectOnDeath>(); }
} }
ExpandGlitchedEnemies.GlitchExistingEnemy(targetActor); ExpandEnemyCorruptor.GlitchExistingEnemy(targetActor);
if (UnityEngine.Random.value <= 0.1f && targetActor.EnemyGuid != "4d37ce3d666b4ddda8039929225b7ede" && targetActor.EnemyGuid != "19b420dec96d4e9ea4aebc3398c0ba7a" && targetActor.GetComponent<ExplodeOnDeath>() == null && targetActor.GetComponent<ExpandSpawnGlitchObjectOnDeath>() == null && targetActor.GetComponent<ExpandSpawnGlitchEnemyOnDeath>() == null) { if (UnityEngine.Random.value <= 0.1f && targetActor.EnemyGuid != "4d37ce3d666b4ddda8039929225b7ede" && targetActor.EnemyGuid != "19b420dec96d4e9ea4aebc3398c0ba7a" && targetActor.GetComponent<ExplodeOnDeath>() == null && targetActor.GetComponent<ExpandSpawnGlitchObjectOnDeath>() == null && targetActor.GetComponent<ExpandSpawnGlitchEnemyOnDeath>() == null) {
try { targetActor.gameObject.AddComponent<ExpandExplodeOnDeath>(); } catch (Exception) { } try { targetActor.gameObject.AddComponent<ExpandExplodeOnDeath>(); } catch (Exception) { }

View File

@ -14,6 +14,7 @@
using ExpandTheGungeon.ExpandUtilities; using ExpandTheGungeon.ExpandUtilities;
using ExpandTheGungeon.ExpandDungeonFlows; using ExpandTheGungeon.ExpandDungeonFlows;
using static ExpandTheGungeon.ExpandUtilities.ReflectionHelpers; using static ExpandTheGungeon.ExpandUtilities.ReflectionHelpers;
using tk2dRuntime.TileMap;
// using Pathfinding; // using Pathfinding;
namespace ExpandTheGungeon.ExpandMain { namespace ExpandTheGungeon.ExpandMain {
@ -390,6 +391,7 @@ public class ExpandSharedHooks {
typeof(ExpandSharedHooks).GetMethod(nameof(PixelatorStartHook), BindingFlags.NonPublic | BindingFlags.Instance), typeof(ExpandSharedHooks).GetMethod(nameof(PixelatorStartHook), BindingFlags.NonPublic | BindingFlags.Instance),
typeof(Pixelator) typeof(Pixelator)
);*/ );*/
return; return;
} }
@ -1191,53 +1193,30 @@ public class ExpandSharedHooks {
} }
private bool IsValidJungleBorderCell(CellData current, Dungeon d, int ix, int iy) { private bool IsValidJungleBorderCell(CellData current, Dungeon d, int ix, int iy) {
bool isValid = false; return !current.cellVisualData.ceilingHasBeenProcessed && !IsCardinalBorder(current, d, ix, iy) && current.type == CellType.WALL && (iy < 2 || !d.data.isFaceWallLower(ix, iy)) && !d.data.isTopDiagonalWall(ix, iy);
try {
isValid = !current.cellVisualData.ceilingHasBeenProcessed && !IsCardinalBorder(current, d, ix, iy) && current.type == CellType.WALL && (iy < 2 || !d.data.isFaceWallLower(ix, iy)) && !d.data.isTopDiagonalWall(ix, iy);
} catch (Exception ex) {
if (ExpandSettings.debugMode) {
Debug.Log("[ExpandTheGungeon] Excpetion caught in TK2DDungeonAssembler.IsValidJungleBorderCell!");
Debug.LogException(ex);
}
return false;
}
return isValid;
} }
private bool IsValidJungleOcclusionCell(TK2DDungeonAssembler assembler, CellData current, Dungeon d, int ix, int iy) { private bool IsValidJungleOcclusionCell(TK2DDungeonAssembler assembler, CellData current, Dungeon d, int ix, int iy) {
bool isValid = false; return assembler.BCheck(d, ix, iy, 1) && (!current.cellVisualData.ceilingHasBeenProcessed && !current.cellVisualData.occlusionHasBeenProcessed) && (current.type != CellType.WALL || IsCardinalBorder(current, d, ix, iy) || (iy > 2 && (d.data.isFaceWallLower(ix, iy) || d.data.isFaceWallHigher(ix, iy))));
try {
isValid = assembler.BCheck(d, ix, iy, 1) && (!current.cellVisualData.ceilingHasBeenProcessed && !current.cellVisualData.occlusionHasBeenProcessed) && (current.type != CellType.WALL || IsCardinalBorder(current, d, ix, iy) || (iy > 2 && (d.data.isFaceWallLower(ix, iy) || d.data.isFaceWallHigher(ix, iy))));
} catch (Exception ex) {
if (ExpandSettings.debugMode) {
Debug.Log("[ExpandTheGungeon] Excpetion caught in TK2DDungeonAssembler.IsValidJungleOcclusionCell!");
Debug.LogException(ex);
}
return false;
}
return isValid;
} }
private bool IsCardinalBorder(CellData current, Dungeon d, int ix, int iy) { private bool IsCardinalBorder(CellData current, Dungeon d, int ix, int iy) {
try { // Something changed in AG&D floor generation. Some of these border cells are null on Jungle for unknown reasons.
bool flag = d.data.isTopWall(ix, iy); // Returning true if any are null avoids future exceptions in IsValidJungleBorderCell!
flag = (flag && !d.data[ix, iy + 1].cellVisualData.shouldIgnoreBorders); // Seems to impact hidden tree top ceiling sprites at the edge of the tilemap.
bool flag2 = (!d.data.isWallRight(ix, iy) && !d.data.isRightTopWall(ix, iy)) || d.data.isFaceWallHigher(ix + 1, iy) || d.data.isFaceWallLower(ix + 1, iy); // The visual difference is subtle and impossible for the player to even see if the occlusion system is active.
flag2 = (flag2 && !d.data[ix + 1, iy].cellVisualData.shouldIgnoreBorders); if (d.data[ix, iy + 1] == null | d.data[ix + 1, iy] == null | d.data[ix, iy - 1] == null | d.data[ix - 1, iy] == null) { return true; }
bool flag3 = iy > 3 && d.data.isFaceWallHigher(ix, iy - 1); bool Cell1 = d.data.isTopWall(ix, iy);
flag3 = (flag3 && !d.data[ix, iy - 1].cellVisualData.shouldIgnoreBorders); bool Cell2 = (!d.data.isWallRight(ix, iy) && !d.data.isRightTopWall(ix, iy)) || d.data.isFaceWallHigher(ix + 1, iy) || d.data.isFaceWallLower(ix + 1, iy);
bool flag4 = (!d.data.isWallLeft(ix, iy) && !d.data.isLeftTopWall(ix, iy)) || d.data.isFaceWallHigher(ix - 1, iy) || d.data.isFaceWallLower(ix - 1, iy); bool Cell3 = iy > 3 && d.data.isFaceWallHigher(ix, iy - 1);
flag4 = (flag4 && !d.data[ix - 1, iy].cellVisualData.shouldIgnoreBorders); bool Cell4 = (!d.data.isWallLeft(ix, iy) && !d.data.isLeftTopWall(ix, iy)) || d.data.isFaceWallHigher(ix - 1, iy) || d.data.isFaceWallLower(ix - 1, iy);
return flag || flag2 || flag3 || flag4; Cell1 = (Cell1 && !d.data[ix, iy + 1].cellVisualData.shouldIgnoreBorders);
} catch (Exception ex) { Cell2 = (Cell2 && !d.data[ix + 1, iy].cellVisualData.shouldIgnoreBorders);
if (ExpandSettings.debugMode) { Cell3 = (Cell3 && !d.data[ix, iy - 1].cellVisualData.shouldIgnoreBorders);
Debug.Log("[ExpandTheGungeon] Excpetion caught in TK2DDungeonAssembler.IsCardinalBorder!"); Cell4 = (Cell4 && !d.data[ix - 1, iy].cellVisualData.shouldIgnoreBorders);
Debug.LogException(ex); return Cell1 || Cell2 || Cell3 || Cell4;
}
return false;
}
} }
private TileIndexGrid GetTypeBorderGridForBorderIndexHook(TK2DDungeonAssembler self, CellData current, Dungeon d, out int usedVisualType) { private TileIndexGrid GetTypeBorderGridForBorderIndexHook(TK2DDungeonAssembler self, CellData current, Dungeon d, out int usedVisualType) {
TileIndexGrid roomCeilingBorderGrid; TileIndexGrid roomCeilingBorderGrid;
@ -1831,7 +1810,7 @@ public class ExpandSharedHooks {
m_activeTraps.Clear(); m_activeTraps.Clear();
} }
} }
/*private void PixelatorStartHook(Action<Pixelator>orig, Pixelator self) { /*private void PixelatorStartHook(Action<Pixelator>orig, Pixelator self) {
if (GameManager.Instance.Dungeon.tileIndices.tilesetId == GlobalDungeonData.ValidTilesets.JUNGLEGEON) { if (GameManager.Instance.Dungeon.tileIndices.tilesetId == GlobalDungeonData.ValidTilesets.JUNGLEGEON) {
// self.UseTexturedOcclusion = true; // self.UseTexturedOcclusion = true;

View File

@ -91,7 +91,7 @@ public class ExpandObjectMods {
if (!ExpandLists.DontGlitchMeList.Contains(enemy.EnemyGuid) && enemy.GetAbsoluteParentRoom() != null && !string.IsNullOrEmpty(enemy.GetAbsoluteParentRoom().GetRoomName()) && enemy.GetAbsoluteParentRoom().GetRoomName().ToLower().StartsWith("corrupted")) { if (!ExpandLists.DontGlitchMeList.Contains(enemy.EnemyGuid) && enemy.GetAbsoluteParentRoom() != null && !string.IsNullOrEmpty(enemy.GetAbsoluteParentRoom().GetRoomName()) && enemy.GetAbsoluteParentRoom().GetRoomName().ToLower().StartsWith("corrupted")) {
if (Random.value <= 0.6f) { if (Random.value <= 0.6f) {
ExpandShaders.Instance.BecomeGlitched(enemy, 0.04f, 0.07f, 0.05f, 0.07f, 0.05f); ExpandShaders.Instance.BecomeGlitched(enemy, 0.04f, 0.07f, 0.05f, 0.07f, 0.05f);
ExpandGlitchedEnemies.GlitchExistingEnemy(enemy); ExpandEnemyCorruptor.GlitchExistingEnemy(enemy);
} }
if (Random.value <= 0.25f && !ExpandLists.blobsAndCritters.Contains(enemy.EnemyGuid) && enemy.GetComponent<ExpandSpawnGlitchObjectOnDeath>() == null) { if (Random.value <= 0.25f && !ExpandLists.blobsAndCritters.Contains(enemy.EnemyGuid) && enemy.GetComponent<ExpandSpawnGlitchObjectOnDeath>() == null) {
enemy.gameObject.AddComponent<ExpandSpawnGlitchObjectOnDeath>(); enemy.gameObject.AddComponent<ExpandSpawnGlitchObjectOnDeath>();
@ -124,7 +124,7 @@ public class ExpandObjectMods {
if (!ExpandLists.DontGlitchMeList.Contains(enemy.EnemyGuid)) { if (!ExpandLists.DontGlitchMeList.Contains(enemy.EnemyGuid)) {
if (Random.value <= 0.6f) { if (Random.value <= 0.6f) {
ExpandShaders.Instance.BecomeGlitched(enemy, RandomIntervalFloat, RandomDispFloat, RandomDispIntensityFloat, RandomColorProbFloat, RandomColorIntensityFloat); ExpandShaders.Instance.BecomeGlitched(enemy, RandomIntervalFloat, RandomDispFloat, RandomDispIntensityFloat, RandomColorProbFloat, RandomColorIntensityFloat);
ExpandGlitchedEnemies.GlitchExistingEnemy(enemy); ExpandEnemyCorruptor.GlitchExistingEnemy(enemy);
} }
if (Random.value <= 0.25f && !ExpandLists.blobsAndCritters.Contains(enemy.EnemyGuid) && enemy.GetComponent<ExpandSpawnGlitchObjectOnDeath>() == null) { if (Random.value <= 0.25f && !ExpandLists.blobsAndCritters.Contains(enemy.EnemyGuid) && enemy.GetComponent<ExpandSpawnGlitchObjectOnDeath>() == null) {
enemy.gameObject.AddComponent<ExpandSpawnGlitchObjectOnDeath>(); enemy.gameObject.AddComponent<ExpandSpawnGlitchObjectOnDeath>();

View File

@ -0,0 +1,56 @@
using UnityEngine;
namespace ExpandTheGungeon.ExpandPrefab {
public class ExpandAmmonomiconDatabase {
public struct EnemyEntryData {
public int ForcedPositionInAmmonomicon;
public bool IsNormalEnemy;
public bool IsInBossTab;
public bool TabSpriteIsTexture;
public DungeonPlaceableBehaviour.PlaceableDifficulty EnemyDifficulty;
public string TabSprite;
public string FullArtSprite;
public string EnemyName;
public string smallDescription;
public string bigDescription;
}
public static EnemyEntryData BootlegBullat;
public static EnemyEntryData BootlegBulletKin;
public static EnemyEntryData BootlegShotgunKinRed;
public static EnemyEntryData BootlegShotgunKinBlue;
public static EnemyEntryData HotShotBulletKin;
public static EnemyEntryData HotShotShotgunKin;
public static EnemyEntryData HotShotCultist;
public static EnemyEntryData Cronenberg;
public static EnemyEntryData CronenbergAngry;
public static EnemyEntryData ClownKin;
public static EnemyEntryData Chameleon;
public static EnemyEntryData Skusketling;
public static EnemyEntryData WestBrosAngel;
public static EnemyEntryData WestBrosNome;
public static EnemyEntryData WestBrosTuc;
public static void Init(AssetBundle expandSharedAssets1) {
BootlegBullat = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("BootlegBullat_AmmonomiconData").text);
BootlegBulletKin = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("BootlegBulletKin_AmmonomiconData").text);
BootlegShotgunKinRed = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("BootlegShotgunManRed_AmmonomiconData").text);
BootlegShotgunKinBlue = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("BootlegShotgunManBlue_AmmonomiconData").text);
HotShotBulletKin = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("HotShotBulletKin_AmmonomiconData").text);
HotShotShotgunKin = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("HotShotShotgunKin_AmmonomiconData").text);
HotShotCultist = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("HotShotCultist_AmmonomiconData").text);
Cronenberg = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("Cronenberg_AmmonomiconData").text);
CronenbergAngry = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("CronenbergAngry_AmmonomiconData").text);
ClownKin = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("ClownKin_AmmonomiconData").text);
Chameleon = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("Chameleon_AmmonomiconData").text);
Skusketling = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("Skusketling_AmmonomiconData").text);
WestBrosAngel = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("WestBrosAngel_AmmonomiconData").text);
WestBrosNome = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("WestBrosNome_AmmonomiconData").text);
WestBrosTuc = JsonUtility.FromJson<EnemyEntryData>(expandSharedAssets1.LoadAsset<TextAsset>("WestBrosTuc_AmmonomiconData").text);
}
}
}

View File

@ -1,218 +0,0 @@
using System.Collections.Generic;
using UnityEngine;
namespace ExpandTheGungeon.ExpandPrefab {
public class ExpandDungeonCollections {
public static tk2dSpriteCollectionData ENV_Tileset_Jungle(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/Jungle/ENV_Tileset_Jungle"), m_NewDungeonCollection);
Material m_LitCutoutPerp = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
m_LitCutoutPerp.mainTexture = tileSetTexture;
m_LitCutoutPerp.SetFloat("_Cutoff", 0.5f);
m_LitCutoutPerp.SetFloat("_MaxValue", 1);
m_LitCutoutPerp.SetFloat("_Perpendicular", 1);
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
m_NewDungeonCollection.materials = new Material[] { m_LitCutoutPerp, m_LitBlend };
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
string[] m_MaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/Jungle/ENV_Tileset_Jungle_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_MaterialTable[i].Contains("lit cutout perp")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutoutPerp;
} else if (m_MaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutoutPerp;
}
}
return m_NewDungeonCollection;
}
public static tk2dSpriteCollectionData ENV_Tileset_Belly(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
Material m_LitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
m_LitCutout.mainTexture = tileSetTexture;
m_LitCutout.SetFloat("_Cutoff", 0.5f);
m_LitCutout.SetFloat("_MaxValue", 1);
m_LitCutout.SetFloat("_Perpendicular", 1);
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
Material m_UnlitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveUnlitCutout"));
m_UnlitCutout.mainTexture = tileSetTexture;
m_UnlitCutout.SetFloat("_Cutoff", 0.5f);
m_UnlitCutout.SetFloat("_Perpendicular", 1);
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/Belly/ENV_Tileset_Belly"), m_NewDungeonCollection);
string[] m_BellyMaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/Belly/ENV_Tileset_Belly_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_BellyMaterialTable[i].Contains("lit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
} else if (m_BellyMaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else if (m_BellyMaterialTable[i].Contains("unlit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_UnlitCutout;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
}
}
m_NewDungeonCollection.materials = new Material[] { m_LitCutout, m_LitBlend, m_UnlitCutout };
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
sharedAssets = null;
return m_NewDungeonCollection;
}
public static tk2dSpriteCollectionData ENV_Tileset_West(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/West/ENV_Tileset_West"), m_NewDungeonCollection);
Material m_LitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
Material m_UnlitTransparent = new Material(sharedAssets.LoadAsset<Shader>("BraveUnlitCutout"));
m_LitCutout.mainTexture = tileSetTexture;
m_LitCutout.SetFloat("_Cutoff", 0.5f);
m_LitCutout.SetFloat("_MaxValue", 1);
m_LitCutout.SetFloat("_Perpendicular", 1);
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
m_UnlitTransparent.mainTexture = tileSetTexture;
m_UnlitTransparent.SetFloat("_Cutoff", 0.5f);
m_UnlitTransparent.SetFloat("_Perpendicular", 1);
string[] m_WestMaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/West/ENV_Tileset_West_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_WestMaterialTable[i].Contains("lit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
} else if (m_WestMaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else if (m_WestMaterialTable[i].Contains("unlit transparent")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_UnlitTransparent;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
}
}
m_NewDungeonCollection.materials = new Material[] { m_LitCutout, m_LitBlend, m_UnlitTransparent };
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
sharedAssets = null;
return m_NewDungeonCollection;
}
public static tk2dSpriteCollectionData ENV_Tileset_Phobos(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/Phobos/ENV_Tileset_Phobos"), m_NewDungeonCollection);
Material m_LitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
Material m_Unlit = new Material(sharedAssets.LoadAsset<Shader>("BraveUnlitCutout"));
m_LitCutout.mainTexture = tileSetTexture;
m_LitCutout.SetFloat("_Cutoff", 0.5f);
m_LitCutout.SetFloat("_MaxValue", 1);
m_LitCutout.SetFloat("_Perpendicular", 1);
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
m_Unlit.mainTexture = tileSetTexture;
m_Unlit.SetFloat("_Cutoff", 0.5f);
m_Unlit.SetFloat("_Perpendicular", 1);
string[] m_WestMaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/Phobos/ENV_Tileset_Phobos_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_WestMaterialTable[i].Contains("lit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
} else if (m_WestMaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else if (m_WestMaterialTable[i].Contains("unlit")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_Unlit;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
}
}
m_NewDungeonCollection.materials = new Material[] { m_LitCutout, m_LitBlend, m_Unlit};
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
sharedAssets = null;
return m_NewDungeonCollection;
}
public static tk2dSpriteCollectionData ENV_Tileset_Office(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/Nakatomi/ENV_Tileset_Nakatomi"), m_NewDungeonCollection);
Material m_LitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
Material m_Unlit = new Material(sharedAssets.LoadAsset<Shader>("BraveUnlitCutout"));
m_LitCutout.mainTexture = tileSetTexture;
m_LitCutout.SetFloat("_Cutoff", 0.5f);
m_LitCutout.SetFloat("_MaxValue", 1);
m_LitCutout.SetFloat("_Perpendicular", 1);
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
m_Unlit.mainTexture = tileSetTexture;
m_Unlit.SetFloat("_Cutoff", 0.5f);
m_Unlit.SetFloat("_Perpendicular", 1);
string[] m_WestMaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/Nakatomi/ENV_Tileset_Nakatomi_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_WestMaterialTable[i].Contains("lit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
} else if (m_WestMaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else if (m_WestMaterialTable[i].Contains("unlit")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_Unlit;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
}
}
m_NewDungeonCollection.materials = new Material[] { m_LitCutout, m_LitBlend, m_Unlit};
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
sharedAssets = null;
return m_NewDungeonCollection;
}
}
}

View File

@ -19,6 +19,218 @@ public class ExpandDungeonPrefabs {
public static GameObject Base_Phobos; public static GameObject Base_Phobos;
public static GameObject Base_Office; public static GameObject Base_Office;
public static Hook getOrLoadByName_Hook;
public static Hook dungeonStartHook;
public static tk2dSpriteCollectionData ENV_Tileset_Jungle(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/Jungle/ENV_Tileset_Jungle"), m_NewDungeonCollection);
Material m_LitCutoutPerp = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
m_LitCutoutPerp.mainTexture = tileSetTexture;
m_LitCutoutPerp.SetFloat("_Cutoff", 0.5f);
m_LitCutoutPerp.SetFloat("_MaxValue", 1);
m_LitCutoutPerp.SetFloat("_Perpendicular", 1);
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
m_NewDungeonCollection.materials = new Material[] { m_LitCutoutPerp, m_LitBlend };
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
string[] m_MaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/Jungle/ENV_Tileset_Jungle_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_MaterialTable[i].Contains("lit cutout perp")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutoutPerp;
} else if (m_MaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutoutPerp;
}
}
return m_NewDungeonCollection;
}
public static tk2dSpriteCollectionData ENV_Tileset_Belly(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
Material m_LitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
m_LitCutout.mainTexture = tileSetTexture;
m_LitCutout.SetFloat("_Cutoff", 0.5f);
m_LitCutout.SetFloat("_MaxValue", 1);
m_LitCutout.SetFloat("_Perpendicular", 1);
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
Material m_UnlitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveUnlitCutout"));
m_UnlitCutout.mainTexture = tileSetTexture;
m_UnlitCutout.SetFloat("_Cutoff", 0.5f);
m_UnlitCutout.SetFloat("_Perpendicular", 1);
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/Belly/ENV_Tileset_Belly"), m_NewDungeonCollection);
string[] m_BellyMaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/Belly/ENV_Tileset_Belly_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_BellyMaterialTable[i].Contains("lit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
} else if (m_BellyMaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else if (m_BellyMaterialTable[i].Contains("unlit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_UnlitCutout;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
}
}
m_NewDungeonCollection.materials = new Material[] { m_LitCutout, m_LitBlend, m_UnlitCutout };
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
sharedAssets = null;
return m_NewDungeonCollection;
}
public static tk2dSpriteCollectionData ENV_Tileset_West(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/West/ENV_Tileset_West"), m_NewDungeonCollection);
Material m_LitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
Material m_UnlitTransparent = new Material(sharedAssets.LoadAsset<Shader>("BraveUnlitCutout"));
m_LitCutout.mainTexture = tileSetTexture;
m_LitCutout.SetFloat("_Cutoff", 0.5f);
m_LitCutout.SetFloat("_MaxValue", 1);
m_LitCutout.SetFloat("_Perpendicular", 1);
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
m_UnlitTransparent.mainTexture = tileSetTexture;
m_UnlitTransparent.SetFloat("_Cutoff", 0.5f);
m_UnlitTransparent.SetFloat("_Perpendicular", 1);
string[] m_WestMaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/West/ENV_Tileset_West_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_WestMaterialTable[i].Contains("lit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
} else if (m_WestMaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else if (m_WestMaterialTable[i].Contains("unlit transparent")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_UnlitTransparent;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
}
}
m_NewDungeonCollection.materials = new Material[] { m_LitCutout, m_LitBlend, m_UnlitTransparent };
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
sharedAssets = null;
return m_NewDungeonCollection;
}
public static tk2dSpriteCollectionData ENV_Tileset_Phobos(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/Phobos/ENV_Tileset_Phobos"), m_NewDungeonCollection);
Material m_LitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
Material m_Unlit = new Material(sharedAssets.LoadAsset<Shader>("BraveUnlitCutout"));
m_LitCutout.mainTexture = tileSetTexture;
m_LitCutout.SetFloat("_Cutoff", 0.5f);
m_LitCutout.SetFloat("_MaxValue", 1);
m_LitCutout.SetFloat("_Perpendicular", 1);
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
m_Unlit.mainTexture = tileSetTexture;
m_Unlit.SetFloat("_Cutoff", 0.5f);
m_Unlit.SetFloat("_Perpendicular", 1);
string[] m_WestMaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/Phobos/ENV_Tileset_Phobos_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_WestMaterialTable[i].Contains("lit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
} else if (m_WestMaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else if (m_WestMaterialTable[i].Contains("unlit")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_Unlit;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
}
}
m_NewDungeonCollection.materials = new Material[] { m_LitCutout, m_LitBlend, m_Unlit};
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
sharedAssets = null;
return m_NewDungeonCollection;
}
public static tk2dSpriteCollectionData ENV_Tileset_Office(GameObject TargetObject, Texture2D tileSetTexture, AssetBundle sharedAssets, AssetBundle expandSharedAssets1) {
tk2dSpriteCollectionData m_NewDungeonCollection = TargetObject.AddComponent<tk2dSpriteCollectionData>();
JsonUtility.FromJsonOverwrite(ExpandAssets.DeserializeJSONDataFromAssetBundle(expandSharedAssets1, "TilesetData/Nakatomi/ENV_Tileset_Nakatomi"), m_NewDungeonCollection);
Material m_LitCutout = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTk2dCustomFalloffCutout"));
Material m_LitBlend = new Material(sharedAssets.LoadAsset<Shader>("BraveLitTK2dCustomFalloff"));
Material m_Unlit = new Material(sharedAssets.LoadAsset<Shader>("BraveUnlitCutout"));
m_LitCutout.mainTexture = tileSetTexture;
m_LitCutout.SetFloat("_Cutoff", 0.5f);
m_LitCutout.SetFloat("_MaxValue", 1);
m_LitCutout.SetFloat("_Perpendicular", 1);
m_LitBlend.mainTexture = tileSetTexture;
m_LitBlend.SetFloat("_Cutoff", 0.5f);
m_LitBlend.SetFloat("_Perpendicular", 1);
m_Unlit.mainTexture = tileSetTexture;
m_Unlit.SetFloat("_Cutoff", 0.5f);
m_Unlit.SetFloat("_Perpendicular", 1);
string[] m_WestMaterialTable = ExpandAssets.GetLinesFromAssetBundle(expandSharedAssets1, "ExpandSerializedData/TilesetData/Nakatomi/ENV_Tileset_Nakatomi_MaterialTable");
for (int i = 0; i < m_NewDungeonCollection.spriteDefinitions.Length; i++) {
if (m_WestMaterialTable[i].Contains("lit cutout")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
} else if (m_WestMaterialTable[i].Contains("lit blend")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitBlend;
} else if (m_WestMaterialTable[i].Contains("unlit")) {
m_NewDungeonCollection.spriteDefinitions[i].material = m_Unlit;
} else {
Debug.Log("[ExpandTheGungeon] ERROR: sprite id " + i + " did not have a matching material name in lookup table!");
m_NewDungeonCollection.spriteDefinitions[i].material = m_LitCutout;
}
}
m_NewDungeonCollection.materials = new Material[] { m_LitCutout, m_LitBlend, m_Unlit};
m_NewDungeonCollection.textures = new Texture[] { tileSetTexture };
sharedAssets = null;
return m_NewDungeonCollection;
}
public static Dungeon GetOrLoadByNameHook(Func<string, Dungeon>orig, string name) { public static Dungeon GetOrLoadByNameHook(Func<string, Dungeon>orig, string name) {
switch (name.ToLower()) { switch (name.ToLower()) {
case "base_space": case "base_space":
@ -59,9 +271,6 @@ public class ExpandDungeonPrefabs {
return component; return component;
} }
public static Hook getOrLoadByName_Hook;
public static Hook dungeonStartHook;
public static void InitDungoenPrefabs(AssetBundle expandSharedAuto1, AssetBundle sharedAssets1, AssetBundle sharedAssets2, AssetBundle braveResources) { public static void InitDungoenPrefabs(AssetBundle expandSharedAuto1, AssetBundle sharedAssets1, AssetBundle sharedAssets2, AssetBundle braveResources) {
Base_Space = expandSharedAuto1.LoadAsset<GameObject>("Base_Space"); Base_Space = expandSharedAuto1.LoadAsset<GameObject>("Base_Space");
Base_Jungle = expandSharedAuto1.LoadAsset<GameObject>("Base_Jungle"); Base_Jungle = expandSharedAuto1.LoadAsset<GameObject>("Base_Jungle");
@ -71,7 +280,7 @@ public class ExpandDungeonPrefabs {
Base_Office = expandSharedAuto1.LoadAsset<GameObject>("Base_Office"); Base_Office = expandSharedAuto1.LoadAsset<GameObject>("Base_Office");
InitSpaceDungeon(Base_Space, LoadOfficialDungeonPrefab("Base_ResourcefulRat")); InitSpaceDungeon(Base_Space, LoadOfficialDungeonPrefab("Base_ResourcefulRat"));
InitJungleDungeon(expandSharedAuto1, braveResources, Base_Jungle, LoadOfficialDungeonPrefab("Base_ResourcefulRat")); InitJungleDungeon(expandSharedAuto1, braveResources, sharedAssets2, Base_Jungle, LoadOfficialDungeonPrefab("Base_ResourcefulRat"));
InitBellyDungeon(expandSharedAuto1, sharedAssets1, sharedAssets2, Base_Belly, LoadOfficialDungeonPrefab("Base_ResourcefulRat")); InitBellyDungeon(expandSharedAuto1, sharedAssets1, sharedAssets2, Base_Belly, LoadOfficialDungeonPrefab("Base_ResourcefulRat"));
InitWestDungeon(expandSharedAuto1, sharedAssets2, Base_West, LoadOfficialDungeonPrefab("Base_Gungeon")); InitWestDungeon(expandSharedAuto1, sharedAssets2, Base_West, LoadOfficialDungeonPrefab("Base_Gungeon"));
InitPhobosDungeon(expandSharedAuto1, sharedAssets2, Base_Phobos, LoadOfficialDungeonPrefab("Base_Gungeon")); InitPhobosDungeon(expandSharedAuto1, sharedAssets2, Base_Phobos, LoadOfficialDungeonPrefab("Base_Gungeon"));
@ -494,7 +703,7 @@ public class ExpandDungeonPrefabs {
MinesDungeonPrefab = null; MinesDungeonPrefab = null;
} }
public static void InitJungleDungeon(AssetBundle expandSharedAuto1, AssetBundle braveResources, GameObject targetObject, Dungeon dungeonTemplate) { public static void InitJungleDungeon(AssetBundle expandSharedAuto1, AssetBundle braveResources, AssetBundle sharedAssets2, GameObject targetObject, Dungeon dungeonTemplate) {
Dungeon MinesDungeonPrefab = LoadOfficialDungeonPrefab("Base_Mines"); Dungeon MinesDungeonPrefab = LoadOfficialDungeonPrefab("Base_Mines");
Dungeon GungeonPrefab = LoadOfficialDungeonPrefab("Base_Gungeon"); Dungeon GungeonPrefab = LoadOfficialDungeonPrefab("Base_Gungeon");
Dungeon SewersPrefab = LoadOfficialDungeonPrefab("Base_Sewer"); Dungeon SewersPrefab = LoadOfficialDungeonPrefab("Base_Sewer");
@ -525,7 +734,8 @@ public class ExpandDungeonPrefabs {
Jungle_Woods.supportsUpholstery = false; Jungle_Woods.supportsUpholstery = false;
Jungle_Woods.carpetIsMainFloor = false; Jungle_Woods.carpetIsMainFloor = false;
Jungle_Woods.carpetGrids = new TileIndexGrid[] { Jungle_Woods.carpetGrids = new TileIndexGrid[] {
ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/carpetGrid") ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/carpetGrid"),
// ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/carpetGrid2")
}; };
Jungle_Woods.supportsChannels = false; Jungle_Woods.supportsChannels = false;
Jungle_Woods.minChannelPools = 0; Jungle_Woods.minChannelPools = 0;
@ -549,9 +759,11 @@ public class ExpandDungeonPrefabs {
Jungle_Woods.facewallGrids = new FacewallIndexGridDefinition[] { Jungle_Woods.facewallGrids = new FacewallIndexGridDefinition[] {
ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_0"), ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_0"),
ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_1"), ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_1"),
ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_2"),
}; };
Jungle_Woods.facewallGrids[0].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_1_grid"); Jungle_Woods.facewallGrids[0].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_0_grid");
Jungle_Woods.facewallGrids[1].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_2_grid"); Jungle_Woods.facewallGrids[1].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_1_grid");
Jungle_Woods.facewallGrids[2].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_2_grid");
Jungle_Woods.usesInternalMaterialTransitions = false; Jungle_Woods.usesInternalMaterialTransitions = false;
Jungle_Woods.usesProceduralMaterialTransitions = false; Jungle_Woods.usesProceduralMaterialTransitions = false;
Jungle_Woods.internalMaterialTransitions = new RoomInternalMaterialTransition[0]; Jungle_Woods.internalMaterialTransitions = new RoomInternalMaterialTransition[0];
@ -608,7 +820,8 @@ public class ExpandDungeonPrefabs {
Jungle_Bamboo.supportsUpholstery = false; Jungle_Bamboo.supportsUpholstery = false;
Jungle_Bamboo.carpetIsMainFloor = false; Jungle_Bamboo.carpetIsMainFloor = false;
Jungle_Bamboo.carpetGrids = new TileIndexGrid[] { Jungle_Bamboo.carpetGrids = new TileIndexGrid[] {
ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/carpetGrid") ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/carpetGrid"),
// ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/carpetGrid2"),
}; };
Jungle_Bamboo.supportsChannels = false; Jungle_Bamboo.supportsChannels = false;
Jungle_Bamboo.minChannelPools = 0; Jungle_Bamboo.minChannelPools = 0;
@ -632,9 +845,11 @@ public class ExpandDungeonPrefabs {
Jungle_Bamboo.facewallGrids = new FacewallIndexGridDefinition[] { Jungle_Bamboo.facewallGrids = new FacewallIndexGridDefinition[] {
ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_0"), ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_0"),
ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_1"), ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_1"),
ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_2"),
}; };
Jungle_Bamboo.facewallGrids[0].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_1_grid"); Jungle_Bamboo.facewallGrids[0].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_0_grid");
Jungle_Bamboo.facewallGrids[1].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_2_grid"); Jungle_Bamboo.facewallGrids[1].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_1_grid");
Jungle_Bamboo.facewallGrids[2].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_2_grid");
Jungle_Bamboo.usesInternalMaterialTransitions = false; Jungle_Bamboo.usesInternalMaterialTransitions = false;
Jungle_Bamboo.usesProceduralMaterialTransitions = false; Jungle_Bamboo.usesProceduralMaterialTransitions = false;
Jungle_Bamboo.internalMaterialTransitions = new RoomInternalMaterialTransition[0]; Jungle_Bamboo.internalMaterialTransitions = new RoomInternalMaterialTransition[0];
@ -776,7 +991,6 @@ public class ExpandDungeonPrefabs {
dungeon.tileIndices = new TileIndices() { dungeon.tileIndices = new TileIndices() {
tilesetId = GlobalDungeonData.ValidTilesets.JUNGLEGEON, tilesetId = GlobalDungeonData.ValidTilesets.JUNGLEGEON,
// dungeonCollection = braveResources.LoadAsset<GameObject>("TallGrassStrip").GetComponent<tk2dTiledSprite>().Collection,
dungeonCollection = ExpandPrefabs.ENV_Tileset_Jungle.GetComponent<tk2dSpriteCollectionData>(), dungeonCollection = ExpandPrefabs.ENV_Tileset_Jungle.GetComponent<tk2dSpriteCollectionData>(),
dungeonCollectionSupportsDiagonalWalls = false, dungeonCollectionSupportsDiagonalWalls = false,
aoTileIndices = new AOTileIndices() { aoTileIndices = new AOTileIndices() {
@ -825,9 +1039,17 @@ public class ExpandDungeonPrefabs {
edgeDecorationTiles = null edgeDecorationTiles = null
}; };
dungeon.roomMaterialDefinitions = new DungeonMaterial[] { Jungle_Woods, Jungle_Bamboo, Jungle_Woods, Jungle_Woods, Jungle_Woods }; dungeon.roomMaterialDefinitions = new DungeonMaterial[] {
Jungle_Woods,
Jungle_Bamboo,
Jungle_Woods,
Jungle_Woods,
Jungle_Woods,
sharedAssets2.LoadAsset<DungeonMaterial>("Boss_Cathedral_StainedGlass_Lights")
};
dungeon.dungeonWingDefinitions = new DungeonWingDefinition[0]; dungeon.dungeonWingDefinitions = new DungeonWingDefinition[0];
dungeon.pathGridDefinitions = new List<TileIndexGrid>() { MinesDungeonPrefab.pathGridDefinitions[0] }; // dungeon.pathGridDefinitions = new List<TileIndexGrid>() { MinesDungeonPrefab.pathGridDefinitions[0] };
dungeon.pathGridDefinitions = new List<TileIndexGrid>(0);
dungeon.dungeonDustups = new DustUpVFX() { dungeon.dungeonDustups = new DustUpVFX() {
runDustup = GungeonPrefab.dungeonDustups.runDustup, runDustup = GungeonPrefab.dungeonDustups.runDustup,
waterDustup = GungeonPrefab.dungeonDustups.waterDustup, waterDustup = GungeonPrefab.dungeonDustups.waterDustup,

View File

@ -8,19 +8,19 @@
namespace ExpandTheGungeon.ExpandPrefab { namespace ExpandTheGungeon.ExpandPrefab {
public class ExpandGlitchedEnemies { public class ExpandEnemyCorruptor {
public static ExpandGlitchedEnemies Instance { public static ExpandEnemyCorruptor Instance {
get { get {
if (m_instance == null) { m_instance = new ExpandGlitchedEnemies(); } if (m_instance == null) { m_instance = new ExpandEnemyCorruptor(); }
return m_instance; return m_instance;
} }
} }
private static ExpandGlitchedEnemies m_instance; private static ExpandEnemyCorruptor m_instance;
public ExpandGlitchedEnemies() { public ExpandEnemyCorruptor() {
GrenadeGuyPrefab = EnemyDatabase.GetOrLoadByGuid("4d37ce3d666b4ddda8039929225b7ede").gameObject; GrenadeGuyPrefab = EnemyDatabase.GetOrLoadByGuid("4d37ce3d666b4ddda8039929225b7ede").gameObject;
IceCubeGuyPrefab = EnemyDatabase.GetOrLoadByGuid("f155fd2759764f4a9217db29dd21b7eb").gameObject; IceCubeGuyPrefab = EnemyDatabase.GetOrLoadByGuid("f155fd2759764f4a9217db29dd21b7eb").gameObject;
KeybulletManPrefab = EnemyDatabase.GetOrLoadByGuid("699cd24270af4cd183d671090d8323a1").gameObject; KeybulletManPrefab = EnemyDatabase.GetOrLoadByGuid("699cd24270af4cd183d671090d8323a1").gameObject;

View File

@ -208,9 +208,10 @@ public static class ExpandEnemyDatabase {
BuildMetalCubeGuyWestPrefab(expandSharedAssets1, out MetalCubeGuyWestPrefab); BuildMetalCubeGuyWestPrefab(expandSharedAssets1, out MetalCubeGuyWestPrefab);
BuildParasiteBossPrefab(out MonsterParasitePrefab); BuildParasiteBossPrefab(out MonsterParasitePrefab);
BuildJungleBossPrefab(out com4nd0BossPrefab); BuildJungleBossPrefab(out com4nd0BossPrefab);
// Add R&G enemies to MTG spawn command because Zatherz hasn't done it. :P // Add some existing enemies to Ammonomicon
// UpdateMTGSpawnPool(); AddEnemyToAmmonomicon(GetOfficialEnemyByGuid("c2f902b7cbe745efb3db4399927eab34"), ExpandAmmonomiconDatabase.Skusketling);
AddEnemyToAmmonomicon(GetOfficialEnemyByGuid("80ab6cd15bfc46668a8844b2975c6c26"), ExpandAmmonomiconDatabase.Chameleon);
} }
public static AIActor GetOrLoadByGuidHook(Func<string, AIActor> orig, string guid) { public static AIActor GetOrLoadByGuidHook(Func<string, AIActor> orig, string guid) {
@ -220,49 +221,6 @@ public static class ExpandEnemyDatabase {
public static AIActor GetOfficialEnemyByGuid(string guid) { return EnemyDatabase.Instance.InternalGetByGuid(guid); } public static AIActor GetOfficialEnemyByGuid(string guid) { return EnemyDatabase.Instance.InternalGetByGuid(guid); }
public static void UpdateMTGSpawnPool() {
// This entry doesn't work. Forge hammers do not have AIActor components.
if (Game.Enemies.ContainsID("hammer")) { Game.Enemies.Remove("hammer"); }
List<Tuple<string, string>> FTAEnemyPool = new List<Tuple<string, string>>() {
new Tuple<string, string>("226fd90be3a64958a5b13cb0a4f43e97", "musket_kin"),
new Tuple<string, string>("df4e9fedb8764b5a876517431ca67b86", "bullet_kin_gal_titan_boss"),
new Tuple<string, string>("1f290ea06a4c416cabc52d6b3cf47266", "bullet_kin_titan_boss"),
new Tuple<string, string>("c4cf0620f71c4678bb8d77929fd4feff", "bullet_kin_titan"),
new Tuple<string, string>("6f818f482a5c47fd8f38cce101f6566c", "bullet_kin_pirate"),
new Tuple<string, string>("143be8c9bbb84e3fb3ab98bcd4cf5e5b", "bullet_kin_fish"),
new Tuple<string, string>("06f5623a351c4f28bc8c6cda56004b80", "bullet_kin_fish_blue"),
new Tuple<string, string>("ff4f54ce606e4604bf8d467c1279be3e", "bullet_kin_broccoli"),
new Tuple<string, string>("39e6f47a16ab4c86bec4b12984aece4c", "bullet_kin_knight"),
new Tuple<string, string>("f020570a42164e2699dcf57cac8a495c", "bullet_kin_kaliber"),
new Tuple<string, string>("37de0df92697431baa47894a075ba7e9", "bullet_kin_candle"),
new Tuple<string, string>("5861e5a077244905a8c25c2b7b4d6ebb", "bullet_kin_cowboy"),
new Tuple<string, string>("906d71ccc1934c02a6f4ff2e9c07c9ec", "bullet_kin_officetie"),
new Tuple<string, string>("9eba44a0ea6c4ea386ff02286dd0e6bd", "bullet_kin_officesuit"),
new Tuple<string, string>("2b6854c0849b4b8fb98eb15519d7db1c", "bullet_kin_mech"),
new Tuple<string, string>("05cb719e0178478685dc610f8b3e8bfc", "bullet_kin_vest"),
new Tuple<string, string>("5f15093e6f684f4fb09d3e7e697216b4", "dynamite_kin_office"),
new Tuple<string, string>("d4f4405e0ff34ab483966fd177f2ece3", "cylinder"),
new Tuple<string, string>("534f1159e7cf4f6aa00aeea92459065e", "cylinder_red"),
new Tuple<string, string>("80ab6cd15bfc46668a8844b2975c6c26", "gunzookie_office"),
new Tuple<string, string>("981d358ffc69419bac918ca1bdf0c7f7", "bullat_gargoyle"),
new Tuple<string, string>("e861e59012954ab2b9b6977da85cb83c", "snake_office"),
new Tuple<string, string>("41ee1c8538e8474a82a74c4aff99c712", "agunim_helicopter"),
new Tuple<string, string>("3b0bd258b4c9432db3339665cc61c356", "cactus_kin"),
new Tuple<string, string>("4b21a913e8c54056bc05cafecf9da880", "gigi_parrot"),
new Tuple<string, string>("78e0951b097b46d89356f004dda27c42", "tablet_bookllet"),
new Tuple<string, string>("216fd3dfb9da439d9bd7ba53e1c76462", "necronomicon_bookllet"),
new Tuple<string, string>("ddf12a4881eb43cfba04f36dd6377abb", "cowboy_shotgun_kin"),
new Tuple<string, string>("86dfc13486ee4f559189de53cfb84107", "pirate_shotgun_kin"),
new Tuple<string, string>("9215d1a221904c7386b481a171e52859", "lead_maiden_fridge"),
new Tuple<string, string>("3f40178e10dc4094a1565cd4fdc4af56", "baby_shelleton")
};
foreach (Tuple<string, string> tuple in FTAEnemyPool) {
if (!Game.Enemies.ContainsID(tuple.Second)) { Game.Enemies.Add(tuple.Second, GetOfficialEnemyByGuid(tuple.First)); }
}
}
public static void PaletteFixEnemies(AssetBundle expandSharedAssets1) { public static void PaletteFixEnemies(AssetBundle expandSharedAssets1) {
RedShotGunMan = EnemyDatabase.GetOrLoadByGuid("128db2f0781141bcb505d8f00f9e4d47").gameObject; RedShotGunMan = EnemyDatabase.GetOrLoadByGuid("128db2f0781141bcb505d8f00f9e4d47").gameObject;
@ -341,7 +299,146 @@ public static class ExpandEnemyDatabase {
if (!Game.Enemies.ContainsID(EnemyName)) { Game.Enemies.Add(EnemyName, EnemyPrefab.GetComponent<AIActor>()); } if (!Game.Enemies.ContainsID(EnemyName)) { Game.Enemies.Add(EnemyName, EnemyPrefab.GetComponent<AIActor>()); }
} }
} }
public static void AddEnemyToDatabaseAndAmmonomicon(AIActor targetEnemy, string EnemyGUID, ExpandAmmonomiconDatabase.EnemyEntryData enemyEntryData, bool AddToMTGSpawnPool = true) {
if (!targetEnemy) { return; }
if (enemyEntryData.TabSpriteIsTexture) {
SpriteBuilder.AddToAmmonomicon(ExpandAssets.LoadAsset<Texture2D>(enemyEntryData.TabSprite));
} else if (targetEnemy.sprite.Collection.GetSpriteDefinition(enemyEntryData.TabSprite) != null) {
SpriteBuilder.AddToAmmonomicon(targetEnemy.sprite.Collection.GetSpriteDefinition(enemyEntryData.TabSprite));
}
// if (targetEnemy.GetComponent<EncounterTrackable>()) { UnityEngine.Object.Destroy(targetEnemy.GetComponent<EncounterTrackable>()); }
string m_EnemyNameCode = string.Empty;
if (!string.IsNullOrEmpty(targetEnemy.ActorName)) { m_EnemyNameCode = targetEnemy.ActorName.Replace(" ", "_").Replace("(", "_").Replace(")", string.Empty).ToLower(); }
targetEnemy.encounterTrackable = targetEnemy.gameObject.GetOrAddComponent<EncounterTrackable>();
targetEnemy.encounterTrackable.EncounterGuid = EnemyGUID;
targetEnemy.encounterTrackable.prerequisites = new DungeonPrerequisite[0];
targetEnemy.encounterTrackable.ProxyEncounterGuid = string.Empty;
targetEnemy.encounterTrackable.journalData = new JournalEntry() {
AmmonomiconSprite = enemyEntryData.TabSprite,
enemyPortraitSprite = ExpandAssets.LoadAsset<Texture2D>(enemyEntryData.FullArtSprite),
PrimaryDisplayName = "#THE_" + m_EnemyNameCode,
NotificationPanelDescription = "#THE_" + m_EnemyNameCode + "_SHORTDESC",
AmmonomiconFullEntry = "#THE_" + m_EnemyNameCode + "_LONGDESC",
SpecialIdentifier = JournalEntry.CustomJournalEntryType.NONE,
SuppressKnownState = false,
SuppressInAmmonomicon = false,
IsEnemy = true,
DisplayOnLoadingScreen = false,
RequiresLightBackgroundInLoadingScreen = false
};
ExpandTheGungeon.Strings.Enemies.Set("#THE_" + m_EnemyNameCode, enemyEntryData.EnemyName);
ExpandTheGungeon.Strings.Enemies.Set("#THE_" + m_EnemyNameCode + "_SHORTDESC", enemyEntryData.smallDescription);
ExpandTheGungeon.Strings.Enemies.Set("#THE_" + m_EnemyNameCode + "_LONGDESC", enemyEntryData.bigDescription);
EnemyDatabaseEntry item = new EnemyDatabaseEntry {
path = EnemyGUID,
encounterGuid = EnemyGUID,
difficulty = enemyEntryData.EnemyDifficulty,
myGuid = EnemyGUID,
placeableWidth = 2,
placeableHeight = 2,
isNormalEnemy = enemyEntryData.IsNormalEnemy,
ForcedPositionInAmmonomicon = enemyEntryData.ForcedPositionInAmmonomicon,
isInBossTab = enemyEntryData.IsInBossTab,
};
EnemyDatabase.Instance.Entries.Add(item);
enemyPrefabDictionary.Add(EnemyGUID, targetEnemy);
EncounterDatabaseEntry item2 = new EncounterDatabaseEntry(targetEnemy.encounterTrackable) {
path = EnemyGUID,
myGuid = targetEnemy.encounterTrackable.EncounterGuid,
};
EncounterDatabase.Instance.Entries.Add(item2);
if (AddToMTGSpawnPool && !string.IsNullOrEmpty(m_EnemyNameCode)) {
if (!Game.Enemies.ContainsID(m_EnemyNameCode)) { Game.Enemies.Add(m_EnemyNameCode, targetEnemy); }
}
}
public static void AddEnemyToAmmonomicon(AIActor targetEnemy, ExpandAmmonomiconDatabase.EnemyEntryData enemyEntryData) {
if (!targetEnemy) { return; }
if (enemyEntryData.TabSpriteIsTexture) {
SpriteBuilder.AddToAmmonomicon(ExpandAssets.LoadAsset<Texture2D>(enemyEntryData.TabSprite));
} else if (targetEnemy.sprite.Collection.GetSpriteDefinition(enemyEntryData.TabSprite) != null) {
SpriteBuilder.AddToAmmonomicon(targetEnemy.sprite.Collection.GetSpriteDefinition(enemyEntryData.TabSprite));
}
string m_EnemyNameCode = string.Empty;
if (!string.IsNullOrEmpty(targetEnemy.ActorName)) { m_EnemyNameCode = targetEnemy.ActorName.Replace(" ", "_").Replace("(", "_").Replace(")", string.Empty).ToLower(); }
bool AlreadyHasEncounterTrackable = true;
bool AlreadyHasJournalData = true;
if (!targetEnemy.gameObject.GetComponent<EncounterTrackable>()) {
AlreadyHasEncounterTrackable = false;
targetEnemy.gameObject.AddComponent<EncounterTrackable>();
targetEnemy.encounterTrackable.EncounterGuid = targetEnemy.EnemyGuid;
targetEnemy.encounterTrackable.prerequisites = new DungeonPrerequisite[0];
targetEnemy.encounterTrackable.ProxyEncounterGuid = string.Empty;
}
if (targetEnemy.encounterTrackable.journalData == null) {
AlreadyHasJournalData = false;
targetEnemy.encounterTrackable.journalData = new JournalEntry() {
PrimaryDisplayName = "#THE_" + m_EnemyNameCode,
NotificationPanelDescription = "#THE_" + m_EnemyNameCode + "_SHORTDESC",
AmmonomiconFullEntry = "#THE_" + m_EnemyNameCode + "_LONGDESC",
SpecialIdentifier = JournalEntry.CustomJournalEntryType.NONE,
SuppressKnownState = false,
SuppressInAmmonomicon = false,
IsEnemy = true,
DisplayOnLoadingScreen = false,
RequiresLightBackgroundInLoadingScreen = false
};
}
targetEnemy.encounterTrackable.journalData.AmmonomiconSprite = enemyEntryData.TabSprite;
targetEnemy.encounterTrackable.journalData.enemyPortraitSprite = ExpandAssets.LoadAsset<Texture2D>(enemyEntryData.FullArtSprite);
targetEnemy.encounterTrackable.journalData.SuppressKnownState = false;
targetEnemy.encounterTrackable.journalData.SuppressInAmmonomicon = false;
if (!AlreadyHasJournalData) {
targetEnemy.encounterTrackable.journalData.PrimaryDisplayName = "#THE_" + m_EnemyNameCode;
targetEnemy.encounterTrackable.journalData.NotificationPanelDescription = "#THE_" + m_EnemyNameCode + "_SHORTDESC";
targetEnemy.encounterTrackable.journalData.AmmonomiconFullEntry = "#THE_" + m_EnemyNameCode + "_LONGDESC";
}
if (!AlreadyHasEncounterTrackable) {
ExpandTheGungeon.Strings.Enemies.Set("#THE_" + m_EnemyNameCode, enemyEntryData.EnemyName);
ExpandTheGungeon.Strings.Enemies.Set("#THE_" + m_EnemyNameCode + "_SHORTDESC", enemyEntryData.smallDescription);
ExpandTheGungeon.Strings.Enemies.Set("#THE_" + m_EnemyNameCode + "_LONGDESC", enemyEntryData.bigDescription);
}
EnemyDatabaseEntry existingEntry = EnemyDatabase.GetEntry(targetEnemy.EnemyGuid);
if (existingEntry != null) {
existingEntry.difficulty = enemyEntryData.EnemyDifficulty;
existingEntry.isNormalEnemy = enemyEntryData.IsNormalEnemy;
existingEntry.ForcedPositionInAmmonomicon = enemyEntryData.ForcedPositionInAmmonomicon;
existingEntry.isInBossTab = enemyEntryData.IsInBossTab;
}
if (EncounterDatabase.GetEntry(targetEnemy.encounterTrackable.EncounterGuid) == null) {
EncounterDatabase.Instance.Entries.Add(
new EncounterDatabaseEntry(targetEnemy.encounterTrackable) {
path = targetEnemy.EnemyGuid,
myGuid = targetEnemy.encounterTrackable.EncounterGuid
}
);
}
}
public static void BuildHotShotCultistPrefab(AssetBundle expandSharedAssets1, out GameObject m_CachedTargetObject) { public static void BuildHotShotCultistPrefab(AssetBundle expandSharedAssets1, out GameObject m_CachedTargetObject) {
AIActor m_CachedEnemyActor = GetOfficialEnemyByGuid("57255ed50ee24794b7aac1ac3cfb8a95"); AIActor m_CachedEnemyActor = GetOfficialEnemyByGuid("57255ed50ee24794b7aac1ac3cfb8a95");
@ -629,7 +726,7 @@ public static class ExpandEnemyDatabase {
m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" }; m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" };
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0); m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
AddEnemyToDatabase(m_CachedTargetObject, HotShotCultistGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, HotShotCultistGUID, ExpandAmmonomiconDatabase.HotShotCultist);
m_CachedEnemyActor = null; m_CachedEnemyActor = null;
return; return;
@ -827,7 +924,7 @@ public static class ExpandEnemyDatabase {
m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" }; m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" };
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0); m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
AddEnemyToDatabase(m_CachedTargetObject, HotShotShotgunKinGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, HotShotShotgunKinGUID, ExpandAmmonomiconDatabase.HotShotShotgunKin);
m_CachedEnemyActor = null; m_CachedEnemyActor = null;
return; return;
@ -1007,7 +1104,7 @@ public static class ExpandEnemyDatabase {
m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" }; m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" };
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0); m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
AddEnemyToDatabase(m_CachedTargetObject, HotShotBulletKinGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, HotShotBulletKinGUID, ExpandAmmonomiconDatabase.HotShotBulletKin);
m_CachedEnemyActor = null; m_CachedEnemyActor = null;
return; return;
@ -1405,7 +1502,7 @@ public static class ExpandEnemyDatabase {
// Loading a custom script from text file in place of one from an existing prefab.. // Loading a custom script from text file in place of one from an existing prefab..
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0); m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
AddEnemyToDatabase(m_CachedTargetObject, BootlegBullatGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, BootlegBullatGUID, ExpandAmmonomiconDatabase.BootlegBullat);
return; return;
} }
@ -1837,8 +1934,8 @@ public static class ExpandEnemyDatabase {
m_TargetBehaviorSpeculatorSerialized.SerializedObjectReferences = new List<UnityEngine.Object>(0); m_TargetBehaviorSpeculatorSerialized.SerializedObjectReferences = new List<UnityEngine.Object>(0);
m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" }; m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" };
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0); m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
AddEnemyToDatabase(m_CachedTargetObject, BootlegBulletManGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, BootlegBulletManGUID, ExpandAmmonomiconDatabase.BootlegBulletKin);
m_CachedEnemyActor = null; m_CachedEnemyActor = null;
return; return;
@ -2602,8 +2699,8 @@ public static class ExpandEnemyDatabase {
// Loading a custom script from text file in place of one from an existing prefab.. // Loading a custom script from text file in place of one from an existing prefab..
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0); m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
AddEnemyToDatabase(m_CachedTargetObject, BootlegShotgunManRedGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, BootlegShotgunManRedGUID, ExpandAmmonomiconDatabase.BootlegShotgunKinRed);
m_CachedEnemyActor = null; m_CachedEnemyActor = null;
return; return;
} }
@ -2951,7 +3048,7 @@ public static class ExpandEnemyDatabase {
// Loading a custom script from text file in place of one from an existing prefab.. // Loading a custom script from text file in place of one from an existing prefab..
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0); m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
AddEnemyToDatabase(m_CachedTargetObject, BootlegShotgunManBlueGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, BootlegShotgunManBlueGUID, ExpandAmmonomiconDatabase.BootlegShotgunKinBlue);
m_CachedEnemyActor = null; m_CachedEnemyActor = null;
return; return;
} }
@ -3223,8 +3320,8 @@ public static class ExpandEnemyDatabase {
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0); m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
CronenbergBullets.m_CachedCronenbergBulletsItem.TransmogTargetGuid = CronenbergGUID; CronenbergBullets.m_CachedCronenbergBulletsItem.TransmogTargetGuid = CronenbergGUID;
AddEnemyToDatabase(m_CachedTargetObject, CronenbergGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, CronenbergGUID, ExpandAmmonomiconDatabase.Cronenberg);
return; return;
} }
@ -3559,7 +3656,7 @@ public static class ExpandEnemyDatabase {
// Loading a custom script from text file in place of one from an existing prefab.. // Loading a custom script from text file in place of one from an existing prefab..
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0); m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
AddEnemyToDatabase(m_CachedTargetObject, AggressiveCronenbergGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, AggressiveCronenbergGUID, ExpandAmmonomiconDatabase.CronenbergAngry);
return; return;
} }
@ -4657,7 +4754,7 @@ public static class ExpandEnemyDatabase {
m_WigTosser.helmetForce = 5; m_WigTosser.helmetForce = 5;
AddEnemyToDatabase(m_CachedTargetObject, ClownkinGUID, true); AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, ClownkinGUID, ExpandAmmonomiconDatabase.ClownKin);
m_CachedEnemyActor = null; m_CachedEnemyActor = null;
return; return;

View File

@ -1,364 +0,0 @@
using System.Collections.Generic;
using UnityEngine;
using Dungeonator;
using ExpandTheGungeon.ExpandUtilities;
using ExpandTheGungeon.SpriteAPI;
namespace ExpandTheGungeon.ExpandPrefab {
public class ExpandMorePrefabs : ExpandPrefabs {
public static void InitMoreCustomPrefabs(AssetBundle expandSharedAssets1, AssetBundle sharedAssets, AssetBundle sharedAssets2, AssetBundle braveResources, AssetBundle enemiesBase) {
Dungeon ratDungeon = DungeonDatabase.GetOrLoadByName("base_resourcefulrat");
EXFoyerWarpDoor = expandSharedAssets1.LoadAsset<GameObject>("EXFoyerWarpDoor");
tk2dSprite m_EXFoyerWarpDoorSprite = SpriteSerializer.AddSpriteToObject(EXFoyerWarpDoor, EXFoyerCollection, "foyerdoor_open_01");
m_EXFoyerWarpDoorSprite.HeightOffGround = -2.25f;
tk2dSpriteAnimator m_FoyerWarpDoorAnimator = ExpandUtility.GenerateSpriteAnimator(EXFoyerWarpDoor);
List<string> m_FoyerDoorOpen = new List<string>() {
"foyerdoor_open_01",
"foyerdoor_open_02",
"foyerdoor_open_03",
"foyerdoor_open_04",
"foyerdoor_open_05",
"foyerdoor_open_06",
"foyerdoor_open_07",
"foyerdoor_open_08",
"foyerdoor_open_09",
"foyerdoor_open_10",
"foyerdoor_open_11",
"foyerdoor_open_12",
"foyerdoor_open_13",
};
List<string> m_FoyerDoorClose = new List<string>() {
"foyerdoor_open_13",
"foyerdoor_open_12",
"foyerdoor_open_11",
"foyerdoor_open_10",
"foyerdoor_open_09",
"foyerdoor_open_08",
"foyerdoor_open_07",
"foyerdoor_open_06",
"foyerdoor_open_05",
"foyerdoor_open_04",
"foyerdoor_open_03",
"foyerdoor_open_02",
"foyerdoor_open_01",
};
ExpandUtility.AddAnimation(m_FoyerWarpDoorAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_FoyerDoorOpen, "open", frameRate: 12);
ExpandUtility.AddAnimation(m_FoyerWarpDoorAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_FoyerDoorClose, "close", frameRate: 12);
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(17, 24));
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(17, 24), offset: new IntVector2(48, 0));
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(16, 8), offset: new IntVector2(0, 24));
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(16, 8), offset: new IntVector2(48, 24));
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.Trap, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(31, 13), offset: new IntVector2(17, 18));
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().HasTriggerCollisions = true;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[4].IsTrigger = true;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[0].Enabled = false;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[1].Enabled = false;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[2].Enabled = false;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[3].Enabled = false;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[4].Enabled = false;
EXFoyerTrigger = expandSharedAssets1.LoadAsset<GameObject>("EXFoyerTrigger");
tk2dSprite m_FoyerTriggerSprite = SpriteSerializer.AddSpriteToObject(EXFoyerTrigger, EXFoyerCollection, "floortrigger_idle_01", tk2dBaseSprite.PerpendicularState.FLAT);
m_FoyerTriggerSprite.HeightOffGround = -1.74f;
// EXFoyerTrigger.AddComponent<ExpandCasinoWarpTrigger>();
EXCasinoHub = expandSharedAssets1.LoadAsset<GameObject>("EXCasino_Hub");
EXPunchoutArcadeCoin = expandSharedAssets1.LoadAsset<GameObject>("EXPunchoutArcadeCoin");
EXCasino_HatRack = expandSharedAssets1.LoadAsset<GameObject>("EXCasino_HatRack");
EXCasino_Litter_Cans = expandSharedAssets1.LoadAsset<GameObject>("EXCasino_Litter_Cans");
EXCasino_Litter_Paper = expandSharedAssets1.LoadAsset<GameObject>("EXCasino_Litter_Paper");
GameObject m_EXCasinoHubRoomPrefab = EXCasinoHub.transform.Find("Room_Prefab").gameObject;
GameObject m_CasinoFloor = m_EXCasinoHubRoomPrefab.transform.Find("casino_hub_floor").gameObject;
GameObject m_CasinoWalls = m_EXCasinoHubRoomPrefab.transform.Find("casino_hub_backwall").gameObject;
GameObject m_CasinoBorder = m_EXCasinoHubRoomPrefab.transform.Find("casino_hub_border").gameObject;
GameObject m_CasinoPokerTable_01 = EXCasinoHub.transform.Find("casino_poker_table_01").gameObject;
GameObject m_CasinoPokerTable_02 = EXCasinoHub.transform.Find("casino_poker_table_02").gameObject;
GameObject m_CasinoPokerTableProps = m_CasinoPokerTable_01.transform.Find("tableprops").gameObject;
GameObject m_CasinoPokerTableProps2 = m_CasinoPokerTable_02.transform.Find("tableprops").gameObject;
GameObject m_CasinoPokerTableShadow = m_CasinoPokerTable_01.transform.Find("shadow").gameObject;
GameObject m_CasinoPokerTableShadow2 = m_CasinoPokerTable_02.transform.Find("shadow").gameObject;
GameObject m_CasinoCarpet1 = EXCasinoHub.transform.Find("casino_carpet_01").gameObject;
GameObject m_CasinoCarpet2 = EXCasinoHub.transform.Find("casino_carpet_02").gameObject;
SpriteSerializer.AddSpriteToObject(EXPunchoutArcadeCoin, EXFoyerCollection, "punchout_coin_left");
ExpandUtility.DuplicateComponent(EXPunchoutArcadeCoin.AddComponent<PunchoutDroppedItem>(), MetalGearRatPrefab.GetComponent<MetalGearRatDeathController>().PunchoutMinigamePrefab.GetComponent<PunchoutController>().Opponent.DroppedItemPrefab.GetComponent<PunchoutDroppedItem>());
tk2dSprite m_CasinoFloorSprite = SpriteSerializer.AddSpriteToObject(m_CasinoFloor, EXFoyerCollection, "casino_hub_floor_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_CasinoFloorSprite.HeightOffGround = -1.75f;
tk2dSprite m_CasinoWallsSprite = SpriteSerializer.AddSpriteToObject(m_CasinoWalls, EXFoyerCollection, "casino_hub_backwall_001");
m_CasinoWallsSprite.HeightOffGround = -1.73f;
tk2dSprite m_CasinoBorderSprite = SpriteSerializer.AddSpriteToObject(m_CasinoBorder, EXFoyerCollection, "casino_hub_border_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_CasinoBorderSprite.HeightOffGround = 4;
tk2dSprite m_CasinoCarpet1Sprite = SpriteSerializer.AddSpriteToObject(m_CasinoCarpet1, EXFoyerCollection, "casino_carpet_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoCarpet2Sprite = SpriteSerializer.AddSpriteToObject(m_CasinoCarpet2, EXFoyerCollection, "casino_carpet_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_CasinoCarpet1Sprite.HeightOffGround = -1.74f;
m_CasinoCarpet2Sprite.HeightOffGround = -1.74f;
tk2dSprite m_CasinoPokerTableSprite = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTable_01, EXFoyerCollection, "casino_poker_table_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTableSprite2 = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTable_02, EXFoyerCollection, "casino_poker_table_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTablePropsSprite = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTableProps, EXFoyerCollection, "casino_poker_table_props_002", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTableProps2Sprite = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTableProps2, EXFoyerCollection, "casino_poker_table_props_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTableShadowSprite = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTableShadow, EXFoyerCollection, "casino_poker_table_shadow", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTableShadowSprite2 = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTableShadow2, EXFoyerCollection, "casino_poker_table_shadow", tk2dBaseSprite.PerpendicularState.FLAT);
m_CasinoPokerTableSprite.HeightOffGround = 0;
m_CasinoPokerTableSprite2.HeightOffGround = 0;
m_CasinoPokerTablePropsSprite.HeightOffGround = 0.2f;
m_CasinoPokerTableProps2Sprite.HeightOffGround = 0.2f;
m_CasinoPokerTableShadowSprite.HeightOffGround = -1.73f;
m_CasinoPokerTableShadowSprite2.HeightOffGround = -1.73f;
m_CasinoPokerTableShadowSprite.usesOverrideMaterial = true;
m_CasinoPokerTableShadowSprite2.usesOverrideMaterial = true;
m_CasinoPokerTableShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
m_CasinoPokerTableShadowSprite2.renderer.material.shader = m_CasinoPokerTableShadowSprite.renderer.material.shader;
tk2dSprite m_EXCasino_HatRackSprite = SpriteSerializer.AddSpriteToObject(EXCasino_HatRack, EXFoyerCollection, "casino_hatrack_001");
tk2dSprite m_EXCasino_LitterCansSprite = SpriteSerializer.AddSpriteToObject(EXCasino_Litter_Cans, EXFoyerCollection, "casino_litter_cans_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_EXCasino_LitterPaperSprite = SpriteSerializer.AddSpriteToObject(EXCasino_Litter_Paper, EXFoyerCollection, "casino_litter_paper_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXCasino_HatRackSprite.HeightOffGround = -1.25f;
m_EXCasino_LitterCansSprite.HeightOffGround = -1.7f;
m_EXCasino_LitterPaperSprite.HeightOffGround = -1.7f;
m_EXCasino_HatRackSprite.usesOverrideMaterial = true;
m_EXCasino_HatRackSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
m_EXCasino_LitterCansSprite.usesOverrideMaterial = true;
m_EXCasino_LitterCansSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
m_EXCasino_LitterPaperSprite.usesOverrideMaterial = true;
m_EXCasino_LitterPaperSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(16, 304), offset: new IntVector2(-10, -32));
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(16, 304), offset: new IntVector2(262, -32));
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(111, 48), offset: new IntVector2(151, -32));
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(111, 48), offset: new IntVector2(6, -32));
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(256, 16), offset: new IntVector2(6, 256));
ExpandUtility.GenerateOrAddToRigidBody(EXCasino_HatRack, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(12, 13), offset: new IntVector2(5, 2));
ExpandUtility.GenerateOrAddToRigidBody(EXCasino_HatRack, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(12, 9), offset: new IntVector2(5, 15));
ExpandUtility.GenerateOrAddToRigidBody(m_CasinoPokerTable_01, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(41, 45), offset: new IntVector2(2, 0));
ExpandUtility.GenerateOrAddToRigidBody(m_CasinoPokerTable_02, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(41, 45), offset: new IntVector2(2, 0));
GameObject m_EXCasinoGame_Punchout = EXCasinoHub.transform.Find("casinogame_punchout").gameObject;
tk2dSprite m_EXCasinoGamePunchoutSprite = SpriteSerializer.AddSpriteToObject(m_EXCasinoGame_Punchout, EXFoyerCollection, "cabinet_covered_001");
m_EXCasinoGamePunchoutSprite.HeightOffGround = -1.65f;
GameObject m_EXCasinoGame_PunchoutShadow = m_EXCasinoGame_Punchout.transform.Find("shadow").gameObject;
tk2dSprite m_EXCasinoGamePunchoutShadowSprite = SpriteSerializer.AddSpriteToObject(m_EXCasinoGame_PunchoutShadow, EXFoyerCollection, "cabinet_shadow_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXCasinoGamePunchoutShadowSprite.HeightOffGround = -1.7f;
m_EXCasinoGamePunchoutShadowSprite.usesOverrideMaterial = true;
m_EXCasinoGamePunchoutShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(m_EXCasinoGame_Punchout, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 15), offset: new IntVector2(4, 0));
ExpandUtility.GenerateOrAddToRigidBody(m_EXCasinoGame_Punchout, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(23, 9), offset: new IntVector2(6, 15));
List<string> m_PunchoutArcade_Idle = new List<string>() {
"cabinet_idle_001",
"cabinet_idle_002",
"cabinet_idle_003",
"cabinet_idle_004",
"cabinet_idle_005",
"cabinet_idle_006",
"cabinet_idle_007",
"cabinet_idle_008",
"cabinet_idle_009",
"cabinet_idle_010",
"cabinet_idle_011",
"cabinet_idle_012",
};
List<string> m_PunchoutArcade_Sleep = new List<string>() {
"cabinet_sleep_001",
"cabinet_sleep_002",
"cabinet_sleep_003",
"cabinet_sleep_004",
"cabinet_sleep_005",
"cabinet_sleep_006",
"cabinet_sleep_007",
"cabinet_sleep_008",
"cabinet_sleep_009",
"cabinet_sleep_010",
"cabinet_sleep_011",
"cabinet_sleep_012",
"cabinet_sleep_013",
"cabinet_sleep_014",
};
List<string> m_PunchoutArcade_Interact = new List<string>() {
"cabinet_interact_001",
"cabinet_interact_002",
"cabinet_interact_003",
"cabinet_interact_004",
};
List<string> m_PunchoutArcade_Fight = new List<string>() {
"cabinet_fight_001",
"cabinet_fight_002",
"cabinet_fight_003",
"cabinet_fight_004",
"cabinet_fight_005",
"cabinet_fight_006",
"cabinet_fight_007",
"cabinet_fight_008",
"cabinet_fight_009",
"cabinet_fight_010",
"cabinet_fight_011",
"cabinet_fight_012",
"cabinet_fight_013",
"cabinet_fight_014"
};
List<string> m_PunchoutArcade_FightIdle = new List<string>() { "cabinet_fight_014", "cabinet_fight_014", };
tk2dSpriteAnimator m_EXCasinoArcadeGameAnimator = ExpandUtility.GenerateSpriteAnimator(m_EXCasinoGame_Punchout, playAutomatically: true);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_Idle, "idle", tk2dSpriteAnimationClip.WrapMode.Loop, 10);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_Interact, "interact", tk2dSpriteAnimationClip.WrapMode.Once, 6);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_Fight, "fight", tk2dSpriteAnimationClip.WrapMode.Once, 10);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_FightIdle, "idle2", tk2dSpriteAnimationClip.WrapMode.Loop, 1);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_Sleep, "sleep", tk2dSpriteAnimationClip.WrapMode.Loop, 10);
EXArcadeGame_Prop = expandSharedAssets1.LoadAsset<GameObject>("EXArcadeGame_Prop");
GameObject m_EXArcadeGamePropShadow = EXArcadeGame_Prop.transform.Find("shadow").gameObject;
tk2dSprite m_EXArcadeGamePropSprite = SpriteSerializer.AddSpriteToObject(EXArcadeGame_Prop, EXFoyerCollection, "cabinet_decorative_001");
tk2dSprite m_EXArcadeGamePropShadowSprite = SpriteSerializer.AddSpriteToObject(m_EXArcadeGamePropShadow, EXFoyerCollection, "cabinet_shadow_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXArcadeGamePropSprite.HeightOffGround = -1.65f;
m_EXArcadeGamePropShadowSprite.HeightOffGround = -1.7f;
m_EXArcadeGamePropShadowSprite.usesOverrideMaterial = true;
m_EXArcadeGamePropShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(EXArcadeGame_Prop, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 15), offset: new IntVector2(4, 0));
ExpandUtility.GenerateOrAddToRigidBody(EXArcadeGame_Prop, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(23, 9), offset: new IntVector2(6, 15));
EXArcadeGame_Prop_Depressed = expandSharedAssets1.LoadAsset<GameObject>("EXArcadeGame_Prop_Depressed");
GameObject m_EXArcadeGamePropDepressedShadow = EXArcadeGame_Prop.transform.Find("shadow").gameObject;
tk2dSprite m_EXArcadeGamePropDepressedSprite = SpriteSerializer.AddSpriteToObject(EXArcadeGame_Prop_Depressed, EXFoyerCollection, "cabinet_decorative_001");
tk2dSprite m_EXArcadeGamePropDepressedShadowSprite = SpriteSerializer.AddSpriteToObject(m_EXArcadeGamePropDepressedShadow, EXFoyerCollection, "cabinet_shadow_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXArcadeGamePropDepressedSprite.HeightOffGround = -1.65f;
m_EXArcadeGamePropDepressedShadowSprite.HeightOffGround = -1.7f;
m_EXArcadeGamePropDepressedShadowSprite.usesOverrideMaterial = true;
m_EXArcadeGamePropDepressedShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(EXArcadeGame_Prop_Depressed, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 15), offset: new IntVector2(4, 0));
ExpandUtility.GenerateOrAddToRigidBody(EXArcadeGame_Prop_Depressed, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(23, 9), offset: new IntVector2(6, 15));
List<string> m_Cabinet_Blink = new List<string>() { "depressedcabinet_blink_001" , "depressedcabinet_blink_002", "depressedcabinet_blink_003" };
List<string> m_Cabinet_Idle = new List<string>() { "depressedcabinet_idle_001", "depressedcabinet_idle_001" };
List<string> m_Cabinet_Sigh = new List<string>() {
"depressedcabinet_sigh_001",
"depressedcabinet_sigh_002",
"depressedcabinet_sigh_003",
"depressedcabinet_sigh_004",
"depressedcabinet_sigh_005",
"depressedcabinet_sigh_006",
"depressedcabinet_sigh_007",
};
tk2dSpriteAnimator m_EXArcadeGamePropDepressedAnimator = ExpandUtility.GenerateSpriteAnimator(EXArcadeGame_Prop_Depressed, playAutomatically: true);
ExpandUtility.AddAnimation(m_EXArcadeGamePropDepressedAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Cabinet_Idle, "idle", tk2dSpriteAnimationClip.WrapMode.Loop, 1);
ExpandUtility.AddAnimation(m_EXArcadeGamePropDepressedAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Cabinet_Blink, "blink", tk2dSpriteAnimationClip.WrapMode.Once, 8);
ExpandUtility.AddAnimation(m_EXArcadeGamePropDepressedAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Cabinet_Sigh, "sigh", tk2dSpriteAnimationClip.WrapMode.Once, 10);
GameObject m_EXCasinoGame_Gunball = EXCasinoHub.transform.Find("casinogame_gunball").gameObject;
tk2dSprite m_EXCasinoGameGunballSprite = SpriteSerializer.AddSpriteToObject(m_EXCasinoGame_Gunball, EXFoyerCollection, "gunball_idle_001");
m_EXCasinoGameGunballSprite.HeightOffGround = -1.6f;
GameObject m_EXCasinoGame_GunballShadow = m_EXCasinoGame_Gunball.transform.Find("shadow").gameObject;
tk2dSprite m_EXCasinoGame_GunballShadowSprite = SpriteSerializer.AddSpriteToObject(m_EXCasinoGame_GunballShadow, EXFoyerCollection, "gunball_shadow_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXCasinoGame_GunballShadowSprite.HeightOffGround = -1.7f;
m_EXCasinoGame_GunballShadowSprite.usesOverrideMaterial = true;
m_EXCasinoGame_GunballShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(m_EXCasinoGame_Gunball, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 17), offset: new IntVector2(2, 0));
ExpandUtility.GenerateOrAddToRigidBody(m_EXCasinoGame_Gunball, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 13), offset: new IntVector2(2, 17));
List<string> m_Gunball_Idle = new List<string>() { "gunball_idle_001", "gunball_idle_002", "gunball_idle_003", "gunball_idle_004" };
List<string> m_Gunball_Interact = new List<string>() {
"gunball_interact_001",
"gunball_interact_002",
"gunball_interact_003",
"gunball_interact_004",
"gunball_interact_005",
"gunball_interact_006"
};
List<string> m_Gunball_Spin = new List<string>() {
"gunball_use_001",
"gunball_use_002",
"gunball_use_003",
"gunball_use_004",
"gunball_use_005",
"gunball_use_006",
"gunball_use_007",
"gunball_use_008",
"gunball_use_009",
"gunball_use_010",
"gunball_use_011",
"gunball_use_012",
"gunball_use_013",
"gunball_use_014",
"gunball_use_015",
"gunball_use_016",
"gunball_use_017",
"gunball_use_018",
"gunball_use_019",
"gunball_use_020",
"gunball_use_021",
"gunball_use_022",
"gunball_use_023",
"gunball_use_024",
"gunball_use_025",
"gunball_use_026",
"gunball_use_027",
"gunball_use_028",
};
tk2dSpriteAnimator m_EXCasinoGameGunBallAnimator = ExpandUtility.GenerateSpriteAnimator(m_EXCasinoGame_Gunball, playAutomatically: true);
ExpandUtility.AddAnimation(m_EXCasinoGameGunBallAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Gunball_Idle, "idle", tk2dSpriteAnimationClip.WrapMode.Loop, 10);
ExpandUtility.AddAnimation(m_EXCasinoGameGunBallAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Gunball_Interact, "interact", tk2dSpriteAnimationClip.WrapMode.Once, 6);
tk2dSpriteAnimationClip m_GunBallUseAnimation = ExpandUtility.AddAnimation(m_EXCasinoGameGunBallAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Gunball_Spin, "spin", tk2dSpriteAnimationClip.WrapMode.Once, 10);
m_GunBallUseAnimation.frames[23].triggerEvent = true;
m_GunBallUseAnimation.frames[23].eventInfo = "itempop";
EXRatDoor_4xLocks = expandSharedAssets1.LoadAsset<GameObject>("EXRatJailDoor4x");
tk2dSprite EXRatDoor4xLocksSprite = SpriteSerializer.AddSpriteToObject(EXRatDoor_4xLocks, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.GetComponent<tk2dSprite>().Collection, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.GetComponent<tk2dSprite>().spriteId, tk2dBaseSprite.PerpendicularState.PERPENDICULAR);
EXRatDoor4xLocksSprite.HeightOffGround = -1.5f;
ExpandUtility.GenerateSpriteAnimator(EXRatDoor_4xLocks, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.GetComponent<tk2dSpriteAnimator>().Library, 143);
SpeculativeRigidbody m_EXRatDoor4xLocksRigidBody = EXRatDoor_4xLocks.AddComponent<SpeculativeRigidbody>();
ExpandUtility.DuplicateComponent(m_EXRatDoor4xLocksRigidBody, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.GetComponent<SpeculativeRigidbody>());
m_EXRatDoor4xLocksRigidBody.PixelColliders = new List<PixelCollider>();
ExpandUtility.GenerateOrAddToRigidBody(EXRatDoor_4xLocks, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, true, true, false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 16), offset: IntVector2.Zero);
ExpandUtility.GenerateOrAddToRigidBody(EXRatDoor_4xLocks, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, true, true, false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 16), offset: new IntVector2(0, 16));
for (int i = 0; i < 4; i++) {
GameObject m_ChildLock = EXRatDoor_4xLocks.transform.Find("Lock" + i).gameObject;
tk2dSprite m_ChildLockSprite = SpriteSerializer.AddSpriteToObject(m_ChildLock, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.transform.Find("Lock").gameObject.GetComponent<tk2dSprite>().Collection, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.transform.Find("Lock").gameObject.GetComponent<tk2dSprite>().spriteId, tk2dBaseSprite.PerpendicularState.PERPENDICULAR);
if (i == 0 | i == 2) {
m_ChildLockSprite.HeightOffGround = 1;
} else {
m_ChildLockSprite.HeightOffGround = -1.5f;
}
ExpandUtility.GenerateSpriteAnimator(m_ChildLock, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.transform.Find("Lock").gameObject.GetComponent<tk2dSpriteAnimator>().Library, 53, playAutomatically: true);
}
ratDungeon = null;
}
}
}

View File

@ -306,7 +306,21 @@ public class ExpandPrefabs {
public static GameObject EXSpaceFloorPitBorder_50x50; public static GameObject EXSpaceFloorPitBorder_50x50;
public static GameObject DoorOneWay_Vertical_Office; public static GameObject DoorOneWay_Vertical_Office;
public static GameObject DoorOneWay_Horizontal_Office; public static GameObject DoorOneWay_Horizontal_Office;
// Custom Objects for Jungle
public static GameObject ExpandJungleTree_Medium;
public static GameObject ExpandJungleTree_Small;
public static GameObject ExpandJungleTreeMedium_Stump;
public static GameObject ExpandJungleTreeSmall_Stump;
public static GameObject ExpandJungleTree_Shard_01;
public static GameObject ExpandJungleTree_Shard_02;
public static GameObject ExpandJungleTree_Shard_03;
// Sarcophagus Objects with Kaliber sprites set. // Sarcophagus Objects with Kaliber sprites set.
public static GameObject Sarcophagus_ShotgunBook_Kaliber; public static GameObject Sarcophagus_ShotgunBook_Kaliber;
public static GameObject Sarcophagus_ShotgunMace_Kaliber; public static GameObject Sarcophagus_ShotgunMace_Kaliber;
@ -417,11 +431,11 @@ public class ExpandPrefabs {
ENV_Tileset_West = expandSharedAssets1.LoadAsset<GameObject>("ENV_Tileset_West"); ENV_Tileset_West = expandSharedAssets1.LoadAsset<GameObject>("ENV_Tileset_West");
ENV_Tileset_Phobos = expandSharedAssets1.LoadAsset<GameObject>("ENV_Tileset_Phobos"); ENV_Tileset_Phobos = expandSharedAssets1.LoadAsset<GameObject>("ENV_Tileset_Phobos");
ENV_Tileset_Office = expandSharedAssets1.LoadAsset<GameObject>("ENV_Tileset_Office"); ENV_Tileset_Office = expandSharedAssets1.LoadAsset<GameObject>("ENV_Tileset_Office");
ExpandDungeonCollections.ENV_Tileset_Jungle(ENV_Tileset_Jungle, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Jungle"), sharedAssets, expandSharedAssets1); ExpandDungeonPrefabs.ENV_Tileset_Jungle(ENV_Tileset_Jungle, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Jungle"), sharedAssets, expandSharedAssets1);
ExpandDungeonCollections.ENV_Tileset_Belly(ENV_Tileset_Belly, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Belly"), sharedAssets, expandSharedAssets1); ExpandDungeonPrefabs.ENV_Tileset_Belly(ENV_Tileset_Belly, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Belly"), sharedAssets, expandSharedAssets1);
ExpandDungeonCollections.ENV_Tileset_Phobos(ENV_Tileset_Phobos, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Phobos"), sharedAssets, expandSharedAssets1); ExpandDungeonPrefabs.ENV_Tileset_Phobos(ENV_Tileset_Phobos, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Phobos"), sharedAssets, expandSharedAssets1);
ExpandDungeonCollections.ENV_Tileset_West(ENV_Tileset_West, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_West"), sharedAssets, expandSharedAssets1); ExpandDungeonPrefabs.ENV_Tileset_West(ENV_Tileset_West, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_West"), sharedAssets, expandSharedAssets1);
ExpandDungeonCollections.ENV_Tileset_Office(ENV_Tileset_Office, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Nakatomi"), sharedAssets, expandSharedAssets1); ExpandDungeonPrefabs.ENV_Tileset_Office(ENV_Tileset_Office, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Nakatomi"), sharedAssets, expandSharedAssets1);
EXItemCollection = SpriteSerializer.DeserializeSpriteCollectionFromAssetBundle(expandSharedAssets1, "EXItemCollection", "EXItem_Collection", "EXItemCollection"); EXItemCollection = SpriteSerializer.DeserializeSpriteCollectionFromAssetBundle(expandSharedAssets1, "EXItemCollection", "EXItem_Collection", "EXItemCollection");
EXGunCollection = SpriteSerializer.DeserializeSpriteCollectionFromAssetBundle(expandSharedAssets1, "EXGunCollection", "EXGun_Collection", "EXGunCollection"); EXGunCollection = SpriteSerializer.DeserializeSpriteCollectionFromAssetBundle(expandSharedAssets1, "EXGunCollection", "EXGun_Collection", "EXGunCollection");
@ -444,7 +458,7 @@ public class ExpandPrefabs {
gunCollection.DefineProjectileCollision("bootleg_pistol_projectile_001", 8, 8, 4, 4, 0, 0); gunCollection.DefineProjectileCollision("bootleg_pistol_projectile_001", 8, 8, 4, 4, 0, 0);
} }
public static void InitCustomPrefabs(AssetBundle expandSharedAssets1, AssetBundle sharedAssets, AssetBundle sharedAssets2, AssetBundle braveResources, AssetBundle enemiesBase) { public static void InitPrefabs(AssetBundle expandSharedAssets1, AssetBundle sharedAssets, AssetBundle sharedAssets2, AssetBundle braveResources, AssetBundle enemiesBase) {
Dungeon TutorialDungeonPrefab = DungeonDatabase.GetOrLoadByName("Base_Tutorial"); Dungeon TutorialDungeonPrefab = DungeonDatabase.GetOrLoadByName("Base_Tutorial");
Dungeon CastleDungeonPrefab = DungeonDatabase.GetOrLoadByName("Base_Castle"); Dungeon CastleDungeonPrefab = DungeonDatabase.GetOrLoadByName("Base_Castle");
@ -3077,12 +3091,383 @@ public class ExpandPrefabs {
ExpandUtility.BuildNewCustomSign(Jungle_BlobLostSign, Teleporter_Info_Sign, "Lost Blob Note", "This poor fella got lost on his way home."); ExpandUtility.BuildNewCustomSign(Jungle_BlobLostSign, Teleporter_Info_Sign, "Lost Blob Note", "This poor fella got lost on his way home.");
Jungle_ItemStump = expandSharedAssets1.LoadAsset<GameObject>("ExpandJungle_ItemStump"); Jungle_ItemStump = expandSharedAssets1.LoadAsset<GameObject>("ExpandJungle_ItemStump");
tk2dSprite m_jungleItemStumpSprite = SpriteSerializer.AddSpriteToObject(Jungle_ItemStump, EXJungleCollection, "Jungle_TreeStump"); tk2dSprite m_jungleItemStumpSprite = SpriteSerializer.AddSpriteToObject(Jungle_ItemStump, EXJungleCollection, "Jungle_TreeStump", HeightOffGround: -1f);
ExpandUtility.GenerateOrAddToRigidBody(Jungle_ItemStump, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(3, 2), dimensions: new IntVector2(26, 24)); ExpandUtility.GenerateOrAddToRigidBody(Jungle_ItemStump, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(3, 2), dimensions: new IntVector2(26, 24));
ExpandUtility.GenerateOrAddToRigidBody(Jungle_ItemStump, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(3, 2), dimensions: new IntVector2(26, 24)); ExpandUtility.GenerateOrAddToRigidBody(Jungle_ItemStump, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(3, 2), dimensions: new IntVector2(26, 24));
ExpandJungleTreeStumpItemPedestal StumpPedestal = Jungle_ItemStump.AddComponent<ExpandJungleTreeStumpItemPedestal>(); ExpandJungleTreeStumpItemPedestal StumpPedestal = Jungle_ItemStump.AddComponent<ExpandJungleTreeStumpItemPedestal>();
StumpPedestal.ItemID = WoodenCrest.WoodCrestID; StumpPedestal.ItemID = WoodenCrest.WoodCrestID;
ExpandJungleTree_Shard_01 = expandSharedAssets1.LoadAsset<GameObject>("ExpandJungleTree_Shard_01");
ExpandJungleTree_Shard_02 = expandSharedAssets1.LoadAsset<GameObject>("ExpandJungleTree_Shard_02");
ExpandJungleTree_Shard_03 = expandSharedAssets1.LoadAsset<GameObject>("ExpandJungleTree_Shard_03");
SpriteSerializer.AddSpriteToObject(ExpandJungleTree_Shard_01, EXJungleCollection, "Jungle_Tree_Debris_01", tk2dBaseSprite.PerpendicularState.FLAT, -1);
SpriteSerializer.AddSpriteToObject(ExpandJungleTree_Shard_02, EXJungleCollection, "Jungle_Tree_Debris_02", tk2dBaseSprite.PerpendicularState.FLAT, -1);
SpriteSerializer.AddSpriteToObject(ExpandJungleTree_Shard_03, EXJungleCollection, "Jungle_Tree_Debris_03", tk2dBaseSprite.PerpendicularState.FLAT, -1);
ExpandJungleTree_Shard_01.AddComponent<DebrisObject>();
ExpandJungleTree_Shard_02.AddComponent<DebrisObject>();
ExpandJungleTree_Shard_03.AddComponent<DebrisObject>();
DebrisObject ExpandJungleTreeChard1Debris = ExpandJungleTree_Shard_01.GetComponent<DebrisObject>();
ExpandJungleTreeChard1Debris.Priority = EphemeralObject.EphemeralPriority.Minor;
ExpandJungleTreeChard1Debris.audioEventName = string.Empty;
ExpandJungleTreeChard1Debris.playAnimationOnTrigger = false;
ExpandJungleTreeChard1Debris.usesDirectionalFallAnimations = false;
ExpandJungleTreeChard1Debris.directionalAnimationData = new DebrisDirectionalAnimationInfo() {
fallUp = string.Empty,
fallRight = string.Empty,
fallDown = string.Empty,
fallLeft = string.Empty
};
ExpandJungleTreeChard1Debris.breaksOnFall = true;
ExpandJungleTreeChard1Debris.breakOnFallChance = 1;
ExpandJungleTreeChard1Debris.changesCollisionLayer = false;
ExpandJungleTreeChard1Debris.groundedCollisionLayer = CollisionLayer.LowObstacle;
ExpandJungleTreeChard1Debris.followupBehavior = DebrisObject.DebrisFollowupAction.None;
ExpandJungleTreeChard1Debris.collisionStopsBullets = false;
ExpandJungleTreeChard1Debris.animatePitFall = false;
ExpandJungleTreeChard1Debris.pitFallSplash = false;
ExpandJungleTreeChard1Debris.inertialMass = 1;
ExpandJungleTreeChard1Debris.motionMultiplier = 1;
ExpandJungleTreeChard1Debris.canRotate = true;
ExpandJungleTreeChard1Debris.angularVelocity = 1080;
ExpandJungleTreeChard1Debris.angularVelocityVariance = 0;
ExpandJungleTreeChard1Debris.bounceCount = 1;
ExpandJungleTreeChard1Debris.additionalBounceEnglish = 0;
ExpandJungleTreeChard1Debris.decayOnBounce = 0.5f;
ExpandJungleTreeChard1Debris.killTranslationOnBounce = false;
ExpandJungleTreeChard1Debris.usesLifespan = false;
ExpandJungleTreeChard1Debris.lifespanMin = 1;
ExpandJungleTreeChard1Debris.lifespanMax = 1;
ExpandJungleTreeChard1Debris.shouldUseSRBMotion = false;
ExpandJungleTreeChard1Debris.placementOptions = new DebrisObject.DebrisPlacementOptions() {
canBeRotated = false,
canBeFlippedHorizontally = false,
canBeFlippedVertically = false
};
ExpandJungleTreeChard1Debris.DoesGoopOnRest = false;
ExpandJungleTreeChard1Debris.GoopRadius = 1;
ExpandJungleTreeChard1Debris.additionalHeightBoost = 0;
ExpandJungleTreeChard1Debris.AssignFinalWorldDepth(-1.5f);
DebrisObject ExpandJungleTreeChard2Debris = ExpandJungleTree_Shard_02.GetComponent<DebrisObject>();
ExpandJungleTreeChard2Debris.Priority = EphemeralObject.EphemeralPriority.Minor;
ExpandJungleTreeChard2Debris.audioEventName = string.Empty;
ExpandJungleTreeChard2Debris.playAnimationOnTrigger = false;
ExpandJungleTreeChard2Debris.usesDirectionalFallAnimations = false;
ExpandJungleTreeChard2Debris.directionalAnimationData = new DebrisDirectionalAnimationInfo() {
fallUp = string.Empty,
fallRight = string.Empty,
fallDown = string.Empty,
fallLeft = string.Empty
};
ExpandJungleTreeChard2Debris.breaksOnFall = true;
ExpandJungleTreeChard2Debris.breakOnFallChance = 1;
ExpandJungleTreeChard2Debris.changesCollisionLayer = false;
ExpandJungleTreeChard2Debris.groundedCollisionLayer = CollisionLayer.LowObstacle;
ExpandJungleTreeChard2Debris.followupBehavior = DebrisObject.DebrisFollowupAction.None;
ExpandJungleTreeChard2Debris.collisionStopsBullets = false;
ExpandJungleTreeChard2Debris.animatePitFall = false;
ExpandJungleTreeChard2Debris.pitFallSplash = false;
ExpandJungleTreeChard2Debris.inertialMass = 1;
ExpandJungleTreeChard2Debris.motionMultiplier = 1;
ExpandJungleTreeChard2Debris.canRotate = true;
ExpandJungleTreeChard2Debris.angularVelocity = 1080;
ExpandJungleTreeChard2Debris.angularVelocityVariance = 0;
ExpandJungleTreeChard2Debris.bounceCount = 1;
ExpandJungleTreeChard2Debris.additionalBounceEnglish = 0;
ExpandJungleTreeChard2Debris.decayOnBounce = 0.5f;
ExpandJungleTreeChard2Debris.killTranslationOnBounce = false;
ExpandJungleTreeChard2Debris.usesLifespan = false;
ExpandJungleTreeChard2Debris.lifespanMin = 1;
ExpandJungleTreeChard2Debris.lifespanMax = 1;
ExpandJungleTreeChard2Debris.shouldUseSRBMotion = false;
ExpandJungleTreeChard2Debris.placementOptions = new DebrisObject.DebrisPlacementOptions() {
canBeRotated = false,
canBeFlippedHorizontally = false,
canBeFlippedVertically = false
};
ExpandJungleTreeChard2Debris.DoesGoopOnRest = false;
ExpandJungleTreeChard2Debris.GoopRadius = 1;
ExpandJungleTreeChard2Debris.additionalHeightBoost = 0;
ExpandJungleTreeChard2Debris.AssignFinalWorldDepth(-1.5f);
DebrisObject ExpandJungleTreeChard3Debris = ExpandJungleTree_Shard_03.GetComponent<DebrisObject>();
ExpandJungleTreeChard3Debris.Priority = EphemeralObject.EphemeralPriority.Minor;
ExpandJungleTreeChard3Debris.audioEventName = string.Empty;
ExpandJungleTreeChard3Debris.playAnimationOnTrigger = false;
ExpandJungleTreeChard3Debris.usesDirectionalFallAnimations = false;
ExpandJungleTreeChard3Debris.directionalAnimationData = new DebrisDirectionalAnimationInfo() {
fallUp = string.Empty,
fallRight = string.Empty,
fallDown = string.Empty,
fallLeft = string.Empty
};
ExpandJungleTreeChard3Debris.breaksOnFall = true;
ExpandJungleTreeChard3Debris.breakOnFallChance = 1;
ExpandJungleTreeChard3Debris.changesCollisionLayer = false;
ExpandJungleTreeChard3Debris.groundedCollisionLayer = CollisionLayer.LowObstacle;
ExpandJungleTreeChard3Debris.followupBehavior = DebrisObject.DebrisFollowupAction.None;
ExpandJungleTreeChard3Debris.collisionStopsBullets = false;
ExpandJungleTreeChard3Debris.animatePitFall = false;
ExpandJungleTreeChard3Debris.pitFallSplash = false;
ExpandJungleTreeChard3Debris.inertialMass = 1;
ExpandJungleTreeChard3Debris.motionMultiplier = 1;
ExpandJungleTreeChard3Debris.canRotate = true;
ExpandJungleTreeChard3Debris.angularVelocity = 1080;
ExpandJungleTreeChard3Debris.angularVelocityVariance = 0;
ExpandJungleTreeChard3Debris.bounceCount = 1;
ExpandJungleTreeChard3Debris.additionalBounceEnglish = 0;
ExpandJungleTreeChard3Debris.decayOnBounce = 0.5f;
ExpandJungleTreeChard3Debris.killTranslationOnBounce = false;
ExpandJungleTreeChard3Debris.usesLifespan = false;
ExpandJungleTreeChard3Debris.lifespanMin = 1;
ExpandJungleTreeChard3Debris.lifespanMax = 1;
ExpandJungleTreeChard3Debris.shouldUseSRBMotion = false;
ExpandJungleTreeChard3Debris.placementOptions = new DebrisObject.DebrisPlacementOptions() {
canBeRotated = false,
canBeFlippedHorizontally = false,
canBeFlippedVertically = false
};
ExpandJungleTreeChard3Debris.DoesGoopOnRest = false;
ExpandJungleTreeChard3Debris.GoopRadius = 1;
ExpandJungleTreeChard3Debris.additionalHeightBoost = 0;
ExpandJungleTreeChard3Debris.AssignFinalWorldDepth(-1.5f);
ExpandJungleTreeMedium_Stump = expandSharedAssets1.LoadAsset<GameObject>("ExpandJungleTreeMedium_Stump");
ExpandJungleTreeSmall_Stump = expandSharedAssets1.LoadAsset<GameObject>("ExpandJungleTreeSmall_Stump");
SpriteSerializer.AddSpriteToObject(ExpandJungleTreeMedium_Stump.transform.Find("stump").gameObject, EXJungleCollection, "Jungle_Tree_Medium_Stump", tk2dBaseSprite.PerpendicularState.FLAT, -1.65f);
SpriteSerializer.AddSpriteToObject(ExpandJungleTreeSmall_Stump.transform.Find("stump").gameObject, EXJungleCollection, "Jungle_Tree_Medium_Stump", tk2dBaseSprite.PerpendicularState.FLAT, -1.65f);
GameObject m_exJungleTreeMediumStump_Shadow = ExpandJungleTreeMedium_Stump.transform.Find("shadow").gameObject;
GameObject m_exJungleTreeSmallStump_Shadow = ExpandJungleTreeSmall_Stump.transform.Find("shadow").gameObject;
tk2dSprite m_exJungleTreeMediumStump_ShadowSprite = SpriteSerializer.AddSpriteToObject(m_exJungleTreeMediumStump_Shadow, EXJungleCollection, "Jungle_Tree_Medium_Stump_Shadow", tk2dBaseSprite.PerpendicularState.FLAT, -1.7f);
m_exJungleTreeMediumStump_ShadowSprite.usesOverrideMaterial = true;
m_exJungleTreeMediumStump_ShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
tk2dSprite m_exJungleTreeSmallStump_ShadowSprite = SpriteSerializer.AddSpriteToObject(m_exJungleTreeSmallStump_Shadow, EXJungleCollection, "Jungle_Tree_Medium_Stump_Shadow", tk2dBaseSprite.PerpendicularState.FLAT, -1.7f);
m_exJungleTreeSmallStump_ShadowSprite.usesOverrideMaterial = true;
m_exJungleTreeSmallStump_ShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandJungleTree_Medium = expandSharedAssets1.LoadAsset<GameObject>("ExpandJungleTree_Medium");
SpriteSerializer.AddSpriteToObject(ExpandJungleTree_Medium, EXJungleCollection, "Jungle_Tree_Medium", HeightOffGround: -1);
GameObject m_exJungleTreeMedium_Shadow = ExpandJungleTree_Medium.transform.Find("shadow").gameObject;
tk2dSprite m_exJungleTreeMedium_ShadowSprite = SpriteSerializer.AddSpriteToObject(m_exJungleTreeMedium_Shadow, EXJungleCollection, "Jungle_Tree_Medium_Shadow", tk2dBaseSprite.PerpendicularState.FLAT, -1.7f);
m_exJungleTreeMedium_ShadowSprite.usesOverrideMaterial = true;
m_exJungleTreeMedium_ShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandJungleTree_Small = expandSharedAssets1.LoadAsset<GameObject>("ExpandJungleTree_Small");
SpriteSerializer.AddSpriteToObject(ExpandJungleTree_Small, EXJungleCollection, "Jungle_Tree_Small", HeightOffGround: -1);
GameObject m_exJungleTreeSmall_Shadow = ExpandJungleTree_Small.transform.Find("shadow").gameObject;
tk2dSprite m_exJungleTreeSmall_ShadowSprite = SpriteSerializer.AddSpriteToObject(m_exJungleTreeSmall_Shadow, EXJungleCollection, "Jungle_Tree_Small_Shadow", tk2dBaseSprite.PerpendicularState.FLAT, -1.7f);
m_exJungleTreeSmall_ShadowSprite.usesOverrideMaterial = true;
m_exJungleTreeSmall_ShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(ExpandJungleTree_Medium, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(17, 2), dimensions: new IntVector2(12, 10));
ExpandUtility.GenerateOrAddToRigidBody(ExpandJungleTree_Medium, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(17, 12), dimensions: new IntVector2(12, 23));
ExpandUtility.GenerateOrAddToRigidBody(ExpandJungleTree_Small, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(9, 2), dimensions: new IntVector2(13, 8));
ExpandUtility.GenerateOrAddToRigidBody(ExpandJungleTree_Small, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(9, 10), dimensions: new IntVector2(13, 13));
MajorBreakable ExpandJungleTree_MediumBreakable = ExpandJungleTree_Medium.AddComponent<MajorBreakable>();
ExpandJungleTree_MediumBreakable.HitPoints = 40;
ExpandJungleTree_MediumBreakable.MinHits = 2;
ExpandJungleTree_MediumBreakable.EnemyDamageOverride = -1;
ExpandJungleTree_MediumBreakable.ImmuneToBeastMode = false;
ExpandJungleTree_MediumBreakable.ScaleWithEnemyHealth = false;
ExpandJungleTree_MediumBreakable.OnlyExplosions = false;
ExpandJungleTree_MediumBreakable.IgnoreExplosions = false;
ExpandJungleTree_MediumBreakable.GameActorMotionBreaks = false;
ExpandJungleTree_MediumBreakable.PlayerRollingBreaks = false;
ExpandJungleTree_MediumBreakable.spawnShards = true;
ExpandJungleTree_MediumBreakable.distributeShards = true;
ExpandJungleTree_MediumBreakable.shardClusters = new ShardCluster[] {
new ShardCluster() {
minFromCluster = 2,
maxFromCluster = 4,
forceMultiplier = 1f,
rotationMultiplier = 1,
forceAxialMultiplier = Vector3.one,
clusterObjects = new DebrisObject[] {
ExpandObjectDatabase.Bush.variantTiers[0].nonDatabasePlaceable.transform.Find("default bush").gameObject.GetComponent<MinorBreakable>().shardClusters[0].clusterObjects[0],
ExpandJungleTreeChard1Debris,
ExpandJungleTreeChard2Debris,
ExpandJungleTreeChard3Debris
}
},
new ShardCluster() {
minFromCluster = 3,
maxFromCluster = 6,
forceMultiplier = 1f,
rotationMultiplier = 1,
forceAxialMultiplier = Vector3.one,
clusterObjects = new DebrisObject[] {
ExpandObjectDatabase.Bush.variantTiers[0].nonDatabasePlaceable.transform.Find("default bush").gameObject.GetComponent<MinorBreakable>().shardClusters[0].clusterObjects[0]
}
},
new ShardCluster() {
minFromCluster = 3,
maxFromCluster = 6,
forceMultiplier = 1f,
forceAxialMultiplier = Vector3.one,
rotationMultiplier = 1,
clusterObjects = new DebrisObject[] {
ExpandObjectDatabase.Bush.variantTiers[0].nonDatabasePlaceable.transform.Find("default bush").gameObject.GetComponent<MinorBreakable>().shardClusters[1].clusterObjects[0]
}
}
};
ExpandJungleTree_MediumBreakable.minShardPercentSpeed = 0.01f;
ExpandJungleTree_MediumBreakable.maxShardPercentSpeed = 0.03f;
ExpandJungleTree_MediumBreakable.shardBreakStyle = MinorBreakable.BreakStyle.BURST;
ExpandJungleTree_MediumBreakable.usesTemporaryZeroHitPointsState = false;
ExpandJungleTree_MediumBreakable.spriteNameToUseAtZeroHP = string.Empty;
ExpandJungleTree_MediumBreakable.destroyedOnBreak = true;
ExpandJungleTree_MediumBreakable.childrenToDestroy = new List<GameObject>(0);
ExpandJungleTree_MediumBreakable.playsAnimationOnNotBroken = false;
ExpandJungleTree_MediumBreakable.notBreakAnimation = string.Empty;
ExpandJungleTree_MediumBreakable.handlesOwnBreakAnimation = false;
ExpandJungleTree_MediumBreakable.breakAnimation = string.Empty;
ExpandJungleTree_MediumBreakable.handlesOwnPrebreakFrames = false;
ExpandJungleTree_MediumBreakable.prebreakFrames = new BreakFrame[0];
ExpandJungleTree_MediumBreakable.damageVfx = new VFXPool() { type = VFXPoolType.None, effects = new VFXComplex[0] };
ExpandJungleTree_MediumBreakable.damageVfxMinTimeBetween = 0.2f;
ExpandJungleTree_MediumBreakable.breakVfx = new VFXPool() {
type = VFXPoolType.Single,
effects = new VFXComplex[] {
new VFXComplex() {
effects = new VFXObject[] {
new VFXObject() {
effect = ExpandJungleTreeMedium_Stump,
alignment = VFXAlignment.Fixed,
attached = true,
destructible = false,
orphaned = true,
persistsOnDeath = true,
usesZHeight = true,
zHeight = -1f
},
new VFXObject() {
effect = sharedAssets.LoadAsset<GameObject>("VFX_Big_Dust_Poof"),
alignment = VFXAlignment.Fixed,
attached = false,
destructible = false,
orphaned = true,
persistsOnDeath = false,
usesZHeight = false,
zHeight = 1
}
},
}
}
};
ExpandJungleTree_MediumBreakable.delayDamageVfx = false;
ExpandJungleTree_MediumBreakable.SpawnItemOnBreak = false;
ExpandJungleTree_MediumBreakable.HandlePathBlocking = false;
MajorBreakable ExpandJungleTree_SmallBreakable = ExpandJungleTree_Small.AddComponent<MajorBreakable>();
ExpandJungleTree_SmallBreakable.HitPoints = 35;
ExpandJungleTree_SmallBreakable.MinHits = 2;
ExpandJungleTree_SmallBreakable.EnemyDamageOverride = -1;
ExpandJungleTree_SmallBreakable.ImmuneToBeastMode = false;
ExpandJungleTree_SmallBreakable.ScaleWithEnemyHealth = false;
ExpandJungleTree_SmallBreakable.OnlyExplosions = false;
ExpandJungleTree_SmallBreakable.IgnoreExplosions = false;
ExpandJungleTree_SmallBreakable.GameActorMotionBreaks = false;
ExpandJungleTree_SmallBreakable.PlayerRollingBreaks = false;
ExpandJungleTree_SmallBreakable.spawnShards = true;
ExpandJungleTree_SmallBreakable.distributeShards = true;
ExpandJungleTree_SmallBreakable.shardClusters = new ShardCluster[] {
new ShardCluster() {
minFromCluster = 1,
maxFromCluster = 3,
forceMultiplier = 1f,
rotationMultiplier = 1,
forceAxialMultiplier = Vector3.one,
clusterObjects = new DebrisObject[] {
ExpandObjectDatabase.Bush.variantTiers[0].nonDatabasePlaceable.transform.Find("default bush").gameObject.GetComponent<MinorBreakable>().shardClusters[0].clusterObjects[0],
ExpandJungleTreeChard1Debris,
ExpandJungleTreeChard2Debris,
ExpandJungleTreeChard3Debris
}
},
new ShardCluster() {
minFromCluster = 2,
maxFromCluster = 5,
forceMultiplier = 1f,
rotationMultiplier = 1,
forceAxialMultiplier = Vector3.one,
clusterObjects = new DebrisObject[] {
ExpandObjectDatabase.Bush.variantTiers[0].nonDatabasePlaceable.transform.Find("default bush").gameObject.GetComponent<MinorBreakable>().shardClusters[0].clusterObjects[0]
}
},
new ShardCluster() {
minFromCluster = 2,
maxFromCluster = 5,
forceMultiplier = 1f,
forceAxialMultiplier = Vector3.one,
rotationMultiplier = 1,
clusterObjects = new DebrisObject[] {
ExpandObjectDatabase.Bush.variantTiers[0].nonDatabasePlaceable.transform.Find("default bush").gameObject.GetComponent<MinorBreakable>().shardClusters[1].clusterObjects[0]
}
}
};
ExpandJungleTree_SmallBreakable.minShardPercentSpeed = 0.01f;
ExpandJungleTree_SmallBreakable.maxShardPercentSpeed = 0.03f;
ExpandJungleTree_SmallBreakable.shardBreakStyle = MinorBreakable.BreakStyle.BURST;
ExpandJungleTree_SmallBreakable.usesTemporaryZeroHitPointsState = false;
ExpandJungleTree_SmallBreakable.spriteNameToUseAtZeroHP = string.Empty;
ExpandJungleTree_SmallBreakable.destroyedOnBreak = true;
ExpandJungleTree_SmallBreakable.childrenToDestroy = new List<GameObject>(0);
ExpandJungleTree_SmallBreakable.playsAnimationOnNotBroken = false;
ExpandJungleTree_SmallBreakable.notBreakAnimation = string.Empty;
ExpandJungleTree_SmallBreakable.handlesOwnBreakAnimation = false;
ExpandJungleTree_SmallBreakable.breakAnimation = string.Empty;
ExpandJungleTree_SmallBreakable.handlesOwnPrebreakFrames = false;
ExpandJungleTree_SmallBreakable.prebreakFrames = new BreakFrame[0];
ExpandJungleTree_SmallBreakable.damageVfx = new VFXPool() { type = VFXPoolType.None, effects = new VFXComplex[0] };
ExpandJungleTree_SmallBreakable.damageVfxMinTimeBetween = 0.2f;
ExpandJungleTree_SmallBreakable.breakVfx = new VFXPool() {
type = VFXPoolType.Single,
effects = new VFXComplex[] {
new VFXComplex() {
effects = new VFXObject[] {
new VFXObject() {
effect = ExpandJungleTreeSmall_Stump,
alignment = VFXAlignment.Fixed,
attached = true,
destructible = false,
orphaned = true,
persistsOnDeath = true,
usesZHeight = true,
zHeight = -1f
},
new VFXObject() {
effect = sharedAssets.LoadAsset<GameObject>("VFX_Big_Dust_Poof"),
alignment = VFXAlignment.Fixed,
attached = false,
destructible = false,
orphaned = true,
persistsOnDeath = false,
usesZHeight = false,
zHeight = 1
}
},
}
}
};
ExpandJungleTree_SmallBreakable.delayDamageVfx = false;
ExpandJungleTree_SmallBreakable.SpawnItemOnBreak = false;
ExpandJungleTree_SmallBreakable.HandlePathBlocking = false;
Door_Horizontal_Belly = UnityEngine.Object.Instantiate(NakatomiDungeonPrefab.doorObjects.variantTiers[0].nonDatabasePlaceable); Door_Horizontal_Belly = UnityEngine.Object.Instantiate(NakatomiDungeonPrefab.doorObjects.variantTiers[0].nonDatabasePlaceable);
Door_Vertical_Belly = UnityEngine.Object.Instantiate(NakatomiDungeonPrefab.doorObjects.variantTiers[1].nonDatabasePlaceable); Door_Vertical_Belly = UnityEngine.Object.Instantiate(NakatomiDungeonPrefab.doorObjects.variantTiers[1].nonDatabasePlaceable);
@ -4620,10 +5005,351 @@ public class ExpandPrefabs {
UnityEngine.Object.Destroy(ChamberGun.gameObject.GetComponent<ChamberGunProcessor>()); UnityEngine.Object.Destroy(ChamberGun.gameObject.GetComponent<ChamberGunProcessor>());
ChamberGun.gameObject.AddComponent<ExpandChamberGunProcessor>(); ChamberGun.gameObject.AddComponent<ExpandChamberGunProcessor>();
} }
// Foyer Prefabs
EXFoyerWarpDoor = expandSharedAssets1.LoadAsset<GameObject>("EXFoyerWarpDoor");
tk2dSprite m_EXFoyerWarpDoorSprite = SpriteSerializer.AddSpriteToObject(EXFoyerWarpDoor, EXFoyerCollection, "foyerdoor_open_01");
m_EXFoyerWarpDoorSprite.HeightOffGround = -2.25f;
tk2dSpriteAnimator m_FoyerWarpDoorAnimator = ExpandUtility.GenerateSpriteAnimator(EXFoyerWarpDoor);
List<string> m_FoyerDoorOpen = new List<string>() {
"foyerdoor_open_01",
"foyerdoor_open_02",
"foyerdoor_open_03",
"foyerdoor_open_04",
"foyerdoor_open_05",
"foyerdoor_open_06",
"foyerdoor_open_07",
"foyerdoor_open_08",
"foyerdoor_open_09",
"foyerdoor_open_10",
"foyerdoor_open_11",
"foyerdoor_open_12",
"foyerdoor_open_13",
};
List<string> m_FoyerDoorClose = new List<string>() {
"foyerdoor_open_13",
"foyerdoor_open_12",
"foyerdoor_open_11",
"foyerdoor_open_10",
"foyerdoor_open_09",
"foyerdoor_open_08",
"foyerdoor_open_07",
"foyerdoor_open_06",
"foyerdoor_open_05",
"foyerdoor_open_04",
"foyerdoor_open_03",
"foyerdoor_open_02",
"foyerdoor_open_01",
};
ExpandUtility.AddAnimation(m_FoyerWarpDoorAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_FoyerDoorOpen, "open", frameRate: 12);
ExpandUtility.AddAnimation(m_FoyerWarpDoorAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_FoyerDoorClose, "close", frameRate: 12);
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(17, 24));
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(17, 24), offset: new IntVector2(48, 0));
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(16, 8), offset: new IntVector2(0, 24));
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(16, 8), offset: new IntVector2(48, 24));
ExpandUtility.GenerateOrAddToRigidBody(EXFoyerWarpDoor, CollisionLayer.Trap, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(31, 13), offset: new IntVector2(17, 18));
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().HasTriggerCollisions = true;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[4].IsTrigger = true;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[0].Enabled = false;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[1].Enabled = false;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[2].Enabled = false;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[3].Enabled = false;
EXFoyerWarpDoor.GetComponent<SpeculativeRigidbody>().PixelColliders[4].Enabled = false;
EXFoyerTrigger = expandSharedAssets1.LoadAsset<GameObject>("EXFoyerTrigger");
tk2dSprite m_FoyerTriggerSprite = SpriteSerializer.AddSpriteToObject(EXFoyerTrigger, EXFoyerCollection, "floortrigger_idle_01", tk2dBaseSprite.PerpendicularState.FLAT);
m_FoyerTriggerSprite.HeightOffGround = -1.74f;
// EXFoyerTrigger.AddComponent<ExpandCasinoWarpTrigger>();
EXCasinoHub = expandSharedAssets1.LoadAsset<GameObject>("EXCasino_Hub");
EXPunchoutArcadeCoin = expandSharedAssets1.LoadAsset<GameObject>("EXPunchoutArcadeCoin");
EXCasino_HatRack = expandSharedAssets1.LoadAsset<GameObject>("EXCasino_HatRack");
EXCasino_Litter_Cans = expandSharedAssets1.LoadAsset<GameObject>("EXCasino_Litter_Cans");
EXCasino_Litter_Paper = expandSharedAssets1.LoadAsset<GameObject>("EXCasino_Litter_Paper");
GameObject m_EXCasinoHubRoomPrefab = EXCasinoHub.transform.Find("Room_Prefab").gameObject;
GameObject m_CasinoFloor = m_EXCasinoHubRoomPrefab.transform.Find("casino_hub_floor").gameObject;
GameObject m_CasinoWalls = m_EXCasinoHubRoomPrefab.transform.Find("casino_hub_backwall").gameObject;
GameObject m_CasinoBorder = m_EXCasinoHubRoomPrefab.transform.Find("casino_hub_border").gameObject;
GameObject m_CasinoPokerTable_01 = EXCasinoHub.transform.Find("casino_poker_table_01").gameObject;
GameObject m_CasinoPokerTable_02 = EXCasinoHub.transform.Find("casino_poker_table_02").gameObject;
GameObject m_CasinoPokerTableProps = m_CasinoPokerTable_01.transform.Find("tableprops").gameObject;
GameObject m_CasinoPokerTableProps2 = m_CasinoPokerTable_02.transform.Find("tableprops").gameObject;
GameObject m_CasinoPokerTableShadow = m_CasinoPokerTable_01.transform.Find("shadow").gameObject;
GameObject m_CasinoPokerTableShadow2 = m_CasinoPokerTable_02.transform.Find("shadow").gameObject;
GameObject m_CasinoCarpet1 = EXCasinoHub.transform.Find("casino_carpet_01").gameObject;
GameObject m_CasinoCarpet2 = EXCasinoHub.transform.Find("casino_carpet_02").gameObject;
SpriteSerializer.AddSpriteToObject(EXPunchoutArcadeCoin, EXFoyerCollection, "punchout_coin_left");
ExpandUtility.DuplicateComponent(EXPunchoutArcadeCoin.AddComponent<PunchoutDroppedItem>(), MetalGearRatPrefab.GetComponent<MetalGearRatDeathController>().PunchoutMinigamePrefab.GetComponent<PunchoutController>().Opponent.DroppedItemPrefab.GetComponent<PunchoutDroppedItem>());
tk2dSprite m_CasinoFloorSprite = SpriteSerializer.AddSpriteToObject(m_CasinoFloor, EXFoyerCollection, "casino_hub_floor_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_CasinoFloorSprite.HeightOffGround = -1.75f;
tk2dSprite m_CasinoWallsSprite = SpriteSerializer.AddSpriteToObject(m_CasinoWalls, EXFoyerCollection, "casino_hub_backwall_001");
m_CasinoWallsSprite.HeightOffGround = -1.73f;
tk2dSprite m_CasinoBorderSprite = SpriteSerializer.AddSpriteToObject(m_CasinoBorder, EXFoyerCollection, "casino_hub_border_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_CasinoBorderSprite.HeightOffGround = 4;
tk2dSprite m_CasinoCarpet1Sprite = SpriteSerializer.AddSpriteToObject(m_CasinoCarpet1, EXFoyerCollection, "casino_carpet_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoCarpet2Sprite = SpriteSerializer.AddSpriteToObject(m_CasinoCarpet2, EXFoyerCollection, "casino_carpet_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_CasinoCarpet1Sprite.HeightOffGround = -1.74f;
m_CasinoCarpet2Sprite.HeightOffGround = -1.74f;
tk2dSprite m_CasinoPokerTableSprite = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTable_01, EXFoyerCollection, "casino_poker_table_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTableSprite2 = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTable_02, EXFoyerCollection, "casino_poker_table_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTablePropsSprite = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTableProps, EXFoyerCollection, "casino_poker_table_props_002", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTableProps2Sprite = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTableProps2, EXFoyerCollection, "casino_poker_table_props_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTableShadowSprite = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTableShadow, EXFoyerCollection, "casino_poker_table_shadow", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_CasinoPokerTableShadowSprite2 = SpriteSerializer.AddSpriteToObject(m_CasinoPokerTableShadow2, EXFoyerCollection, "casino_poker_table_shadow", tk2dBaseSprite.PerpendicularState.FLAT);
m_CasinoPokerTableSprite.HeightOffGround = 0;
m_CasinoPokerTableSprite2.HeightOffGround = 0;
m_CasinoPokerTablePropsSprite.HeightOffGround = 0.2f;
m_CasinoPokerTableProps2Sprite.HeightOffGround = 0.2f;
m_CasinoPokerTableShadowSprite.HeightOffGround = -1.73f;
m_CasinoPokerTableShadowSprite2.HeightOffGround = -1.73f;
m_CasinoPokerTableShadowSprite.usesOverrideMaterial = true;
m_CasinoPokerTableShadowSprite2.usesOverrideMaterial = true;
m_CasinoPokerTableShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
m_CasinoPokerTableShadowSprite2.renderer.material.shader = m_CasinoPokerTableShadowSprite.renderer.material.shader;
tk2dSprite m_EXCasino_HatRackSprite = SpriteSerializer.AddSpriteToObject(EXCasino_HatRack, EXFoyerCollection, "casino_hatrack_001");
tk2dSprite m_EXCasino_LitterCansSprite = SpriteSerializer.AddSpriteToObject(EXCasino_Litter_Cans, EXFoyerCollection, "casino_litter_cans_001", tk2dBaseSprite.PerpendicularState.FLAT);
tk2dSprite m_EXCasino_LitterPaperSprite = SpriteSerializer.AddSpriteToObject(EXCasino_Litter_Paper, EXFoyerCollection, "casino_litter_paper_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXCasino_HatRackSprite.HeightOffGround = -1.25f;
m_EXCasino_LitterCansSprite.HeightOffGround = -1.7f;
m_EXCasino_LitterPaperSprite.HeightOffGround = -1.7f;
m_EXCasino_HatRackSprite.usesOverrideMaterial = true;
m_EXCasino_HatRackSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
m_EXCasino_LitterCansSprite.usesOverrideMaterial = true;
m_EXCasino_LitterCansSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
m_EXCasino_LitterPaperSprite.usesOverrideMaterial = true;
m_EXCasino_LitterPaperSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(16, 304), offset: new IntVector2(-10, -32));
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(16, 304), offset: new IntVector2(262, -32));
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(111, 48), offset: new IntVector2(151, -32));
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(111, 48), offset: new IntVector2(6, -32));
ExpandUtility.GenerateOrAddToRigidBody(EXCasinoHub, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(256, 16), offset: new IntVector2(6, 256));
ExpandUtility.GenerateOrAddToRigidBody(EXCasino_HatRack, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(12, 13), offset: new IntVector2(5, 2));
ExpandUtility.GenerateOrAddToRigidBody(EXCasino_HatRack, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(12, 9), offset: new IntVector2(5, 15));
ExpandUtility.GenerateOrAddToRigidBody(m_CasinoPokerTable_01, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(41, 45), offset: new IntVector2(2, 0));
ExpandUtility.GenerateOrAddToRigidBody(m_CasinoPokerTable_02, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(41, 45), offset: new IntVector2(2, 0));
GameObject m_EXCasinoGame_Punchout = EXCasinoHub.transform.Find("casinogame_punchout").gameObject;
tk2dSprite m_EXCasinoGamePunchoutSprite = SpriteSerializer.AddSpriteToObject(m_EXCasinoGame_Punchout, EXFoyerCollection, "cabinet_covered_001");
m_EXCasinoGamePunchoutSprite.HeightOffGround = -1.65f;
GameObject m_EXCasinoGame_PunchoutShadow = m_EXCasinoGame_Punchout.transform.Find("shadow").gameObject;
tk2dSprite m_EXCasinoGamePunchoutShadowSprite = SpriteSerializer.AddSpriteToObject(m_EXCasinoGame_PunchoutShadow, EXFoyerCollection, "cabinet_shadow_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXCasinoGamePunchoutShadowSprite.HeightOffGround = -1.7f;
m_EXCasinoGamePunchoutShadowSprite.usesOverrideMaterial = true;
m_EXCasinoGamePunchoutShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(m_EXCasinoGame_Punchout, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 15), offset: new IntVector2(4, 0));
ExpandUtility.GenerateOrAddToRigidBody(m_EXCasinoGame_Punchout, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(23, 9), offset: new IntVector2(6, 15));
List<string> m_PunchoutArcade_Idle = new List<string>() {
"cabinet_idle_001",
"cabinet_idle_002",
"cabinet_idle_003",
"cabinet_idle_004",
"cabinet_idle_005",
"cabinet_idle_006",
"cabinet_idle_007",
"cabinet_idle_008",
"cabinet_idle_009",
"cabinet_idle_010",
"cabinet_idle_011",
"cabinet_idle_012",
};
List<string> m_PunchoutArcade_Sleep = new List<string>() {
"cabinet_sleep_001",
"cabinet_sleep_002",
"cabinet_sleep_003",
"cabinet_sleep_004",
"cabinet_sleep_005",
"cabinet_sleep_006",
"cabinet_sleep_007",
"cabinet_sleep_008",
"cabinet_sleep_009",
"cabinet_sleep_010",
"cabinet_sleep_011",
"cabinet_sleep_012",
"cabinet_sleep_013",
"cabinet_sleep_014",
};
List<string> m_PunchoutArcade_Interact = new List<string>() {
"cabinet_interact_001",
"cabinet_interact_002",
"cabinet_interact_003",
"cabinet_interact_004",
};
List<string> m_PunchoutArcade_Fight = new List<string>() {
"cabinet_fight_001",
"cabinet_fight_002",
"cabinet_fight_003",
"cabinet_fight_004",
"cabinet_fight_005",
"cabinet_fight_006",
"cabinet_fight_007",
"cabinet_fight_008",
"cabinet_fight_009",
"cabinet_fight_010",
"cabinet_fight_011",
"cabinet_fight_012",
"cabinet_fight_013",
"cabinet_fight_014"
};
List<string> m_PunchoutArcade_FightIdle = new List<string>() { "cabinet_fight_014", "cabinet_fight_014", };
tk2dSpriteAnimator m_EXCasinoArcadeGameAnimator = ExpandUtility.GenerateSpriteAnimator(m_EXCasinoGame_Punchout, playAutomatically: true);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_Idle, "idle", tk2dSpriteAnimationClip.WrapMode.Loop, 10);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_Interact, "interact", tk2dSpriteAnimationClip.WrapMode.Once, 6);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_Fight, "fight", tk2dSpriteAnimationClip.WrapMode.Once, 10);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_FightIdle, "idle2", tk2dSpriteAnimationClip.WrapMode.Loop, 1);
ExpandUtility.AddAnimation(m_EXCasinoArcadeGameAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_PunchoutArcade_Sleep, "sleep", tk2dSpriteAnimationClip.WrapMode.Loop, 10);
/*ExpandLists.CustomChests.Add(RickRollChestObject); EXArcadeGame_Prop = expandSharedAssets1.LoadAsset<GameObject>("EXArcadeGame_Prop");
ExpandLists.CustomChests.Add(SurpriseChestObject); GameObject m_EXArcadeGamePropShadow = EXArcadeGame_Prop.transform.Find("shadow").gameObject;
ExpandLists.CustomChestsWithoutRickRoll.Add(SurpriseChestObject);*/ tk2dSprite m_EXArcadeGamePropSprite = SpriteSerializer.AddSpriteToObject(EXArcadeGame_Prop, EXFoyerCollection, "cabinet_decorative_001");
tk2dSprite m_EXArcadeGamePropShadowSprite = SpriteSerializer.AddSpriteToObject(m_EXArcadeGamePropShadow, EXFoyerCollection, "cabinet_shadow_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXArcadeGamePropSprite.HeightOffGround = -1.65f;
m_EXArcadeGamePropShadowSprite.HeightOffGround = -1.7f;
m_EXArcadeGamePropShadowSprite.usesOverrideMaterial = true;
m_EXArcadeGamePropShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(EXArcadeGame_Prop, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 15), offset: new IntVector2(4, 0));
ExpandUtility.GenerateOrAddToRigidBody(EXArcadeGame_Prop, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(23, 9), offset: new IntVector2(6, 15));
EXArcadeGame_Prop_Depressed = expandSharedAssets1.LoadAsset<GameObject>("EXArcadeGame_Prop_Depressed");
GameObject m_EXArcadeGamePropDepressedShadow = EXArcadeGame_Prop.transform.Find("shadow").gameObject;
tk2dSprite m_EXArcadeGamePropDepressedSprite = SpriteSerializer.AddSpriteToObject(EXArcadeGame_Prop_Depressed, EXFoyerCollection, "cabinet_decorative_001");
tk2dSprite m_EXArcadeGamePropDepressedShadowSprite = SpriteSerializer.AddSpriteToObject(m_EXArcadeGamePropDepressedShadow, EXFoyerCollection, "cabinet_shadow_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXArcadeGamePropDepressedSprite.HeightOffGround = -1.65f;
m_EXArcadeGamePropDepressedShadowSprite.HeightOffGround = -1.7f;
m_EXArcadeGamePropDepressedShadowSprite.usesOverrideMaterial = true;
m_EXArcadeGamePropDepressedShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(EXArcadeGame_Prop_Depressed, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 15), offset: new IntVector2(4, 0));
ExpandUtility.GenerateOrAddToRigidBody(EXArcadeGame_Prop_Depressed, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(23, 9), offset: new IntVector2(6, 15));
List<string> m_Cabinet_Blink = new List<string>() { "depressedcabinet_blink_001" , "depressedcabinet_blink_002", "depressedcabinet_blink_003" };
List<string> m_Cabinet_Idle = new List<string>() { "depressedcabinet_idle_001", "depressedcabinet_idle_001" };
List<string> m_Cabinet_Sigh = new List<string>() {
"depressedcabinet_sigh_001",
"depressedcabinet_sigh_002",
"depressedcabinet_sigh_003",
"depressedcabinet_sigh_004",
"depressedcabinet_sigh_005",
"depressedcabinet_sigh_006",
"depressedcabinet_sigh_007",
};
tk2dSpriteAnimator m_EXArcadeGamePropDepressedAnimator = ExpandUtility.GenerateSpriteAnimator(EXArcadeGame_Prop_Depressed, playAutomatically: true);
ExpandUtility.AddAnimation(m_EXArcadeGamePropDepressedAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Cabinet_Idle, "idle", tk2dSpriteAnimationClip.WrapMode.Loop, 1);
ExpandUtility.AddAnimation(m_EXArcadeGamePropDepressedAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Cabinet_Blink, "blink", tk2dSpriteAnimationClip.WrapMode.Once, 8);
ExpandUtility.AddAnimation(m_EXArcadeGamePropDepressedAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Cabinet_Sigh, "sigh", tk2dSpriteAnimationClip.WrapMode.Once, 10);
GameObject m_EXCasinoGame_Gunball = EXCasinoHub.transform.Find("casinogame_gunball").gameObject;
tk2dSprite m_EXCasinoGameGunballSprite = SpriteSerializer.AddSpriteToObject(m_EXCasinoGame_Gunball, EXFoyerCollection, "gunball_idle_001");
m_EXCasinoGameGunballSprite.HeightOffGround = -1.6f;
GameObject m_EXCasinoGame_GunballShadow = m_EXCasinoGame_Gunball.transform.Find("shadow").gameObject;
tk2dSprite m_EXCasinoGame_GunballShadowSprite = SpriteSerializer.AddSpriteToObject(m_EXCasinoGame_GunballShadow, EXFoyerCollection, "gunball_shadow_001", tk2dBaseSprite.PerpendicularState.FLAT);
m_EXCasinoGame_GunballShadowSprite.HeightOffGround = -1.7f;
m_EXCasinoGame_GunballShadowSprite.usesOverrideMaterial = true;
m_EXCasinoGame_GunballShadowSprite.renderer.material.shader = GameManager.Instance.RewardManager.A_Chest.gameObject.transform.Find("Shadow").gameObject.GetComponent<tk2dSprite>().renderer.material.shader;
ExpandUtility.GenerateOrAddToRigidBody(m_EXCasinoGame_Gunball, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 17), offset: new IntVector2(2, 0));
ExpandUtility.GenerateOrAddToRigidBody(m_EXCasinoGame_Gunball, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(27, 13), offset: new IntVector2(2, 17));
List<string> m_Gunball_Idle = new List<string>() { "gunball_idle_001", "gunball_idle_002", "gunball_idle_003", "gunball_idle_004" };
List<string> m_Gunball_Interact = new List<string>() {
"gunball_interact_001",
"gunball_interact_002",
"gunball_interact_003",
"gunball_interact_004",
"gunball_interact_005",
"gunball_interact_006"
};
List<string> m_Gunball_Spin = new List<string>() {
"gunball_use_001",
"gunball_use_002",
"gunball_use_003",
"gunball_use_004",
"gunball_use_005",
"gunball_use_006",
"gunball_use_007",
"gunball_use_008",
"gunball_use_009",
"gunball_use_010",
"gunball_use_011",
"gunball_use_012",
"gunball_use_013",
"gunball_use_014",
"gunball_use_015",
"gunball_use_016",
"gunball_use_017",
"gunball_use_018",
"gunball_use_019",
"gunball_use_020",
"gunball_use_021",
"gunball_use_022",
"gunball_use_023",
"gunball_use_024",
"gunball_use_025",
"gunball_use_026",
"gunball_use_027",
"gunball_use_028",
};
tk2dSpriteAnimator m_EXCasinoGameGunBallAnimator = ExpandUtility.GenerateSpriteAnimator(m_EXCasinoGame_Gunball, playAutomatically: true);
ExpandUtility.AddAnimation(m_EXCasinoGameGunBallAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Gunball_Idle, "idle", tk2dSpriteAnimationClip.WrapMode.Loop, 10);
ExpandUtility.AddAnimation(m_EXCasinoGameGunBallAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Gunball_Interact, "interact", tk2dSpriteAnimationClip.WrapMode.Once, 6);
tk2dSpriteAnimationClip m_GunBallUseAnimation = ExpandUtility.AddAnimation(m_EXCasinoGameGunBallAnimator, EXFoyerCollection.GetComponent<tk2dSpriteCollectionData>(), m_Gunball_Spin, "spin", tk2dSpriteAnimationClip.WrapMode.Once, 10);
m_GunBallUseAnimation.frames[23].triggerEvent = true;
m_GunBallUseAnimation.frames[23].eventInfo = "itempop";
EXRatDoor_4xLocks = expandSharedAssets1.LoadAsset<GameObject>("EXRatJailDoor4x");
tk2dSprite EXRatDoor4xLocksSprite = SpriteSerializer.AddSpriteToObject(EXRatDoor_4xLocks, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.GetComponent<tk2dSprite>().Collection, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.GetComponent<tk2dSprite>().spriteId, tk2dBaseSprite.PerpendicularState.PERPENDICULAR);
EXRatDoor4xLocksSprite.HeightOffGround = -1.5f;
ExpandUtility.GenerateSpriteAnimator(EXRatDoor_4xLocks, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.GetComponent<tk2dSpriteAnimator>().Library, 143);
SpeculativeRigidbody m_EXRatDoor4xLocksRigidBody = EXRatDoor_4xLocks.AddComponent<SpeculativeRigidbody>();
ExpandUtility.DuplicateComponent(m_EXRatDoor4xLocksRigidBody, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.GetComponent<SpeculativeRigidbody>());
m_EXRatDoor4xLocksRigidBody.PixelColliders = new List<PixelCollider>();
ExpandUtility.GenerateOrAddToRigidBody(EXRatDoor_4xLocks, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, true, true, false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 16), offset: IntVector2.Zero);
ExpandUtility.GenerateOrAddToRigidBody(EXRatDoor_4xLocks, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, true, true, false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 16), offset: new IntVector2(0, 16));
for (int i = 0; i < 4; i++) {
GameObject m_ChildLock = EXRatDoor_4xLocks.transform.Find("Lock" + i).gameObject;
tk2dSprite m_ChildLockSprite = SpriteSerializer.AddSpriteToObject(m_ChildLock, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.transform.Find("Lock").gameObject.GetComponent<tk2dSprite>().Collection, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.transform.Find("Lock").gameObject.GetComponent<tk2dSprite>().spriteId, tk2dBaseSprite.PerpendicularState.PERPENDICULAR);
if (i == 0 | i == 2) {
m_ChildLockSprite.HeightOffGround = 1;
} else {
m_ChildLockSprite.HeightOffGround = -1.5f;
}
ExpandUtility.GenerateSpriteAnimator(m_ChildLock, ratDungeon.PatternSettings.flows[0].AllNodes[13].overrideExactRoom.placedObjects[1].nonenemyBehaviour.gameObject.transform.Find("Lock").gameObject.GetComponent<tk2dSpriteAnimator>().Library, 53, playAutomatically: true);
}
m_gungeon_rewardroom_1 = null; m_gungeon_rewardroom_1 = null;
// Null any Dungeon prefabs you call up when done else you'll break level generation for that prefab on future level loads! // Null any Dungeon prefabs you call up when done else you'll break level generation for that prefab on future level loads!
@ -4638,8 +5364,6 @@ public class ExpandPrefabs {
ForgeDungeonPrefab = null; ForgeDungeonPrefab = null;
CatacombsDungeonPrefab = null; CatacombsDungeonPrefab = null;
NakatomiDungeonPrefab = null; NakatomiDungeonPrefab = null;
ExpandMorePrefabs.InitMoreCustomPrefabs(expandSharedAssets1, sharedAssets, sharedAssets2, braveResources, enemiesBase);
} }
} }
} }

View File

@ -399,6 +399,7 @@ public class ExpandRoomPrefabs {
public static PrototypeDungeonRoom Expand_Jungle_Exit; public static PrototypeDungeonRoom Expand_Jungle_Exit;
public static PrototypeDungeonRoom Expand_Jungle_SecretDragun; public static PrototypeDungeonRoom Expand_Jungle_SecretDragun;
public static PrototypeDungeonRoom Expand_Jungle_Boss; public static PrototypeDungeonRoom Expand_Jungle_Boss;
public static PrototypeDungeonRoom Expand_Jungle_RewardRoom;
// All jungle rooms except special ones will be stored here // All jungle rooms except special ones will be stored here
public static PrototypeDungeonRoom[] Expand_Jungle_Rooms; public static PrototypeDungeonRoom[] Expand_Jungle_Rooms;
public static List<string> Expand_Jungle_RoomList; public static List<string> Expand_Jungle_RoomList;
@ -915,8 +916,16 @@ public class ExpandRoomPrefabs {
Expand_Jungle_OldCrest.associatedMinimapIcon = ExpandPrefabs.EXJungleCrest_MinimapIcon; Expand_Jungle_OldCrest.associatedMinimapIcon = ExpandPrefabs.EXJungleCrest_MinimapIcon;
RoomBuilder.AddObjectToRoom(Expand_Jungle_OldCrest, new Vector2(5, 7), ExpandObjectDatabase.GodRays); RoomBuilder.AddObjectToRoom(Expand_Jungle_OldCrest, new Vector2(5, 7), ExpandObjectDatabase.GodRays);
RoomBuilder.AddObjectToRoom(Expand_Jungle_OldCrest, new Vector2(7, 8), ExpandUtility.GenerateDungeonPlacable(ExpandPrefabs.Jungle_ItemStump, useExternalPrefab: true), xOffset: 6); RoomBuilder.AddObjectToRoom(Expand_Jungle_OldCrest, new Vector2(7, 8), ExpandUtility.GenerateDungeonPlacable(ExpandPrefabs.Jungle_ItemStump, useExternalPrefab: true), xOffset: 6);
Expand_Jungle_RewardRoom = RoomFactory.BuildFromAssetBundle(AssetBundles, "Expand_Jungle_RewardRoom", true, false, true);
RoomBuilder.AddObjectToRoom(Expand_Jungle_RewardRoom, new Vector2(4, 7), ExpandObjectDatabase.GodRays);
RoomBuilder.AddObjectToRoom(Expand_Jungle_RewardRoom, new Vector2(4, 6), ExpandPrefabs.ExpandJungleTree_Medium);
RoomBuilder.AddObjectToRoom(Expand_Jungle_RewardRoom, new Vector2(4, 11), ExpandPrefabs.ExpandJungleTree_Medium);
RoomBuilder.AddObjectToRoom(Expand_Jungle_RewardRoom, new Vector2(9, 6), ExpandPrefabs.ExpandJungleTree_Medium);
RoomBuilder.AddObjectToRoom(Expand_Jungle_RewardRoom, new Vector2(9, 11), ExpandPrefabs.ExpandJungleTree_Medium);
Expand_Jungle_Exit = RoomFactory.BuildFromAssetBundle(AssetBundles, "Expand_Jungle_Exit", true); Expand_Jungle_Exit = RoomFactory.BuildFromAssetBundle(AssetBundles, "Expand_Jungle_Exit", true);
Expand_Jungle_Exit.associatedMinimapIcon = ExpandPrefabs.exit_room_basic.associatedMinimapIcon; Expand_Jungle_Exit.associatedMinimapIcon = ExpandPrefabs.exit_room_basic.associatedMinimapIcon;
RoomBuilder.AddObjectToRoom(Expand_Jungle_Exit, new Vector2(4, 7), ExpandUtility.GenerateDungeonPlacable(ExpandPrefabs.Jungle_ExitLadder, useExternalPrefab: true), xOffset: 8, yOffset: 13); RoomBuilder.AddObjectToRoom(Expand_Jungle_Exit, new Vector2(4, 7), ExpandUtility.GenerateDungeonPlacable(ExpandPrefabs.Jungle_ExitLadder, useExternalPrefab: true), xOffset: 8, yOffset: 13);

View File

@ -481,8 +481,19 @@ private static void BuildWestBrosBossPrefab(AssetBundle assetBundle, out GameObj
actor.healthHaver.SetHealthMaximum(600); actor.healthHaver.SetHealthMaximum(600);
actor.RegenerateCache(); actor.RegenerateCache();
ExpandEnemyDatabase.AddEnemyToDatabase(outObject, actor.EnemyGuid, true); switch (whichBro)
{
case WestBros.Angel:
ExpandEnemyDatabase.AddEnemyToDatabaseAndAmmonomicon(actor, actor.EnemyGuid, ExpandAmmonomiconDatabase.WestBrosAngel);
break;
case WestBros.Nome:
ExpandEnemyDatabase.AddEnemyToDatabaseAndAmmonomicon(actor, actor.EnemyGuid, ExpandAmmonomiconDatabase.WestBrosNome);
break;
case WestBros.Tuc:
ExpandEnemyDatabase.AddEnemyToDatabaseAndAmmonomicon(actor, actor.EnemyGuid, ExpandAmmonomiconDatabase.WestBrosTuc);
break;
}
FakePrefab.MarkAsFakePrefab(outObject); FakePrefab.MarkAsFakePrefab(outObject);
UnityEngine.Object.DontDestroyOnLoad(outObject); UnityEngine.Object.DontDestroyOnLoad(outObject);
} }

View File

@ -42,7 +42,8 @@ public class ExpandTheGungeon : BaseUnityPlugin {
public const string ModSoundBankName = "EX_SFX"; public const string ModSoundBankName = "EX_SFX";
public const string ConsoleCommandName = "expand"; public const string ConsoleCommandName = "expand";
public static AdvancedStringDB Strings;
private static List<string> itemList; private static List<string> itemList;
private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow }; private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
@ -117,6 +118,8 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
public void GMStart(GameManager gameManager) { public void GMStart(GameManager gameManager) {
try { try {
Strings = new AdvancedStringDB();
ExpandSharedHooks.InstallMidGameSaveHooks(); ExpandSharedHooks.InstallMidGameSaveHooks();
if (ExpandSettings.EnableLogo) { if (ExpandSettings.EnableLogo) {
MainMenuFoyerUpdateHook = new Hook( MainMenuFoyerUpdateHook = new Hook(
@ -166,7 +169,9 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
try { try {
// Init Prefab Databases // Init Prefab Databases
ExpandPrefabs.InitCustomPrefabs(expandSharedAssets1, sharedAssets, sharedAssets2, braveResources, enemiesBase); ExpandPrefabs.InitPrefabs(expandSharedAssets1, sharedAssets, sharedAssets2, braveResources, enemiesBase);
// Init Custom Enemy Ammonomicon Data
ExpandAmmonomiconDatabase.Init(expandSharedAssets1);
// Init Custom Enemy Prefabs // Init Custom Enemy Prefabs
ExpandEnemyDatabase.InitPrefabs(expandSharedAssets1); ExpandEnemyDatabase.InitPrefabs(expandSharedAssets1);
// Init Custom Room Prefabs // Init Custom Room Prefabs
@ -284,6 +289,15 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
return; return;
} }
/*private void ExpandTestCommand(string[] consoleText) {
// Tools.ExportTexture((GameManager.Instance.PrimaryPlayer.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.RoomClear)[0].sprite.Collection.materials[0].mainTexture as Texture2D).GetRW());
// Tools.DumpSpecificSpriteCollection(ExpandWesternBrosPrefabBuilder.Collection);
GameObject NewChestTest = Instantiate(ExpandObjectDatabase.EndTimesChest, (GameManager.Instance.PrimaryPlayer.transform.position + new Vector3(0, 2, 0)), Quaternion.identity);
GameManager.Instance.PrimaryPlayer.CurrentRoom.RegisterInteractable(NewChestTest.GetComponent<ArkController>());
}*/
private void ExpandConsoleInfo(string[] consoleText) { private void ExpandConsoleInfo(string[] consoleText) {
if (ETGModConsole.Commands.GetGroup(ConsoleCommandName) != null && ETGModConsole.Commands.GetGroup(ConsoleCommandName).GetAllUnitNames() != null) { if (ETGModConsole.Commands.GetGroup(ConsoleCommandName) != null && ETGModConsole.Commands.GetGroup(ConsoleCommandName).GetAllUnitNames() != null) {
List<string> m_CommandList = new List<string>(); List<string> m_CommandList = new List<string>();
@ -307,14 +321,14 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
} }
private void ExpandDebug(string[] consoleText) { private void ExpandDebug(string[] consoleText) {
string validSubCommands = "toggledebugstats\nclearroom\nunsealroom\nfixplayerinput"; string validSubCommands = "stats\nclearroom\nunsealroom\nfixplayerinput";
if (!m_IsCommandValid(consoleText, validSubCommands, "debug")) { return; } if (!m_IsCommandValid(consoleText, validSubCommands, "debug")) { return; }
RoomHandler currentRoom = GameManager.Instance.PrimaryPlayer.CurrentRoom; RoomHandler currentRoom = GameManager.Instance.PrimaryPlayer.CurrentRoom;
switch (consoleText[0].ToLower()) { switch (consoleText[0].ToLower()) {
case "toggledebugstats": case "stats":
if (!ExpandSettings.debugMode) { if (!ExpandSettings.debugMode) {
ExpandSettings.debugMode = true; ExpandSettings.debugMode = true;
ETGModConsole.Log("[ExpandTheGungeon] Installing RoomHandler.OnEntered Hook...."); ETGModConsole.Log("[ExpandTheGungeon] Installing RoomHandler.OnEntered Hook....");
@ -503,13 +517,6 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
SpriteSerializer.SerializeSpriteCollection(CollectionName, SpriteList, X, Y, OverridePath); SpriteSerializer.SerializeSpriteCollection(CollectionName, SpriteList, X, Y, OverridePath);
ETGModConsole.Log("[ExpandTheGungeon] Sprite collection successfully built and exported!"); ETGModConsole.Log("[ExpandTheGungeon] Sprite collection successfully built and exported!");
} }
/*private void ExpandTestCommand(string[] consoleText) {
// Tools.ExportTexture((GameManager.Instance.PrimaryPlayer.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.RoomClear)[0].sprite.Collection.materials[0].mainTexture as Texture2D).GetRW());
GameObject NewChestTest = Instantiate(ExpandObjectDatabase.EndTimesChest, (GameManager.Instance.PrimaryPlayer.transform.position + new Vector3(0,2,0)), Quaternion.identity);
GameManager.Instance.PrimaryPlayer.CurrentRoom.RegisterInteractable(NewChestTest.GetComponent<ArkController>());
}*/
} }
} }

View File

@ -114,10 +114,12 @@
<Compile Include="ExpandComponents\ExpandInteractableDoor.cs" /> <Compile Include="ExpandComponents\ExpandInteractableDoor.cs" />
<Compile Include="ExpandComponents\ExpandInteractableLock.cs" /> <Compile Include="ExpandComponents\ExpandInteractableLock.cs" />
<Compile Include="ExpandComponents\ExpandNewElevatorController.cs" /> <Compile Include="ExpandComponents\ExpandNewElevatorController.cs" />
<Compile Include="ExpandComponents\ExpandPlaySoundOnSpawn.cs" />
<Compile Include="ExpandComponents\ExpandPunchoutArcadeController.cs" /> <Compile Include="ExpandComponents\ExpandPunchoutArcadeController.cs" />
<Compile Include="ExpandComponents\ExpandRandomVarGenerator.cs" /> <Compile Include="ExpandComponents\ExpandRandomVarGenerator.cs" />
<Compile Include="ExpandComponents\ExpandReticleRiserEffect.cs" /> <Compile Include="ExpandComponents\ExpandReticleRiserEffect.cs" />
<Compile Include="ExpandComponents\ExpandSpawnBowlerNoteOnDeath.cs" /> <Compile Include="ExpandComponents\ExpandSpawnBowlerNoteOnDeath.cs" />
<Compile Include="ExpandComponents\ExpandSpriteFadeOnSpawn.cs" />
<Compile Include="ExpandComponents\ExpandTK2DDungeonAssembler.cs" /> <Compile Include="ExpandComponents\ExpandTK2DDungeonAssembler.cs" />
<Compile Include="ExpandComponents\ExpandChargeBehavior.cs" /> <Compile Include="ExpandComponents\ExpandChargeBehavior.cs" />
<Compile Include="ExpandComponents\ExpandCompanionManager.cs" /> <Compile Include="ExpandComponents\ExpandCompanionManager.cs" />
@ -173,18 +175,18 @@
<Compile Include="ExpandDungeonFlows\DungeonFlows\f2b_belly_flow_01.cs" /> <Compile Include="ExpandDungeonFlows\DungeonFlows\f2b_belly_flow_01.cs" />
<Compile Include="ExpandDungeonFlows\DungeonFlows\f4c_west_flow_01.cs" /> <Compile Include="ExpandDungeonFlows\DungeonFlows\f4c_west_flow_01.cs" />
<Compile Include="ExpandFoyer.cs" /> <Compile Include="ExpandFoyer.cs" />
<Compile Include="ExpandUtilities\AdvancedStringDB.cs" />
<Compile Include="ExpandMain\ExpandDungeonDoorManager.cs" /> <Compile Include="ExpandMain\ExpandDungeonDoorManager.cs" />
<Compile Include="ExpandMain\ExpandDungeonMusicAPI.cs" /> <Compile Include="ExpandMain\ExpandDungeonMusicAPI.cs" />
<Compile Include="ExpandMain\ExpandFloorDecorator.cs" /> <Compile Include="ExpandMain\ExpandFloorDecorator.cs" />
<Compile Include="ExpandMain\ExpandStaticReferenceManager.cs" /> <Compile Include="ExpandMain\ExpandStaticReferenceManager.cs" />
<Compile Include="ExpandMain\ExpandSynergies.cs" /> <Compile Include="ExpandMain\ExpandSynergies.cs" />
<Compile Include="ExpandPrefab\ExpandAlarmMushroomPlacable.cs" /> <Compile Include="ExpandPrefab\ExpandAlarmMushroomPlacable.cs" />
<Compile Include="ExpandPrefab\ExpandAmmonomiconDatabase.cs" />
<Compile Include="ExpandPrefab\ExpandBootlegRoomPlaceable.cs" /> <Compile Include="ExpandPrefab\ExpandBootlegRoomPlaceable.cs" />
<Compile Include="ExpandPrefab\ExpandEnemyDatabase.cs" /> <Compile Include="ExpandPrefab\ExpandEnemyDatabase.cs" />
<Compile Include="ExpandPrefab\ExpandDungeonPrefabs.cs" /> <Compile Include="ExpandPrefab\ExpandDungeonPrefabs.cs" />
<Compile Include="ExpandPrefab\ExpandDungeonCollections.cs" />
<Compile Include="ExpandPrefab\ExpandGungeoneerMimicBossPlacable.cs" /> <Compile Include="ExpandPrefab\ExpandGungeoneerMimicBossPlacable.cs" />
<Compile Include="ExpandPrefab\ExpandMorePrefabs.cs" />
<Compile Include="ExpandPrefab\ExpandSawBladeTrapPlaceable.cs" /> <Compile Include="ExpandPrefab\ExpandSawBladeTrapPlaceable.cs" />
<Compile Include="ExpandPrefab\ExpandSecretDoorPlacable.cs" /> <Compile Include="ExpandPrefab\ExpandSecretDoorPlacable.cs" />
<Compile Include="ExpandPrefab\ExpandWesternBrosPrefabBuilder.cs" /> <Compile Include="ExpandPrefab\ExpandWesternBrosPrefabBuilder.cs" />
@ -242,7 +244,7 @@
<Compile Include="ExpandComponents\ExpandSpawnGlitchedObjectOnDeath.cs" /> <Compile Include="ExpandComponents\ExpandSpawnGlitchedObjectOnDeath.cs" />
<Compile Include="ExpandComponents\ExpandWeatherController.cs" /> <Compile Include="ExpandComponents\ExpandWeatherController.cs" />
<Compile Include="ExpandComponents\ExpandExplodeOnDeath.cs" /> <Compile Include="ExpandComponents\ExpandExplodeOnDeath.cs" />
<Compile Include="ExpandPrefab\ExpandGlitchedEnemies.cs" /> <Compile Include="ExpandPrefab\ExpandEnemyCorruptor.cs" />
<Compile Include="ExpandMain\ExpandPlaceGlitchedEnemies.cs" /> <Compile Include="ExpandMain\ExpandPlaceGlitchedEnemies.cs" />
<Compile Include="ExpandSettings.cs" /> <Compile Include="ExpandSettings.cs" />
<Compile Include="ExpandPrefab\ExpandLists.cs" /> <Compile Include="ExpandPrefab\ExpandLists.cs" />

View File

@ -0,0 +1,157 @@
using System;
using System.Collections.Generic;
using System.Reflection;
namespace ExpandTheGungeon.ExpandUtilities {
public class AdvancedStringDB {
public readonly AdvancedStringDBTable Core;
public readonly AdvancedStringDBTable Items;
public readonly AdvancedStringDBTable Enemies;
public readonly AdvancedStringDBTable Intro;
public readonly AdvancedStringDBTable Synergies;
public static FieldInfo m_synergyTable = typeof(StringTableManager).GetField("m_synergyTable", BindingFlags.Static | BindingFlags.NonPublic);
public Action<StringTableManager.GungeonSupportedLanguages> OnLanguageChanged;
public StringTableManager.GungeonSupportedLanguages CurrentLanguage {
get { return GameManager.Options.CurrentLanguage; }
set { StringTableManager.SetNewLanguage(value, true); }
}
public AdvancedStringDB() {
StringDB strings = ETGMod.Databases.Strings;
strings.OnLanguageChanged = (Action<StringTableManager.GungeonSupportedLanguages>)Delegate.Combine(strings.OnLanguageChanged, new Action<StringTableManager.GungeonSupportedLanguages>(this.LanguageChanged));
Core = new AdvancedStringDBTable(() => StringTableManager.CoreTable);
Items = new AdvancedStringDBTable(() => StringTableManager.ItemTable);
Enemies = new AdvancedStringDBTable(() => StringTableManager.EnemyTable);
Intro = new AdvancedStringDBTable(() => StringTableManager.IntroTable);
Synergies = new AdvancedStringDBTable(() => AdvancedStringDB.SynergyTable);
}
public void LanguageChanged(StringTableManager.GungeonSupportedLanguages newLang) {
Core.LanguageChanged();
Items.LanguageChanged();
Enemies.LanguageChanged();
Intro.LanguageChanged();
Synergies.LanguageChanged();
Action<StringTableManager.GungeonSupportedLanguages> onLanguageChanged = this.OnLanguageChanged;
bool flag = onLanguageChanged == null;
bool flag2 = !flag;
if (flag2) { onLanguageChanged(newLang); }
}
public static Dictionary<string, StringTableManager.StringCollection> SynergyTable {
get {
StringTableManager.GetSynergyString("ThisExistsOnlyToLoadTables", -1);
return (Dictionary<string, StringTableManager.StringCollection>)m_synergyTable.GetValue(null);
}
}
}
public sealed class AdvancedStringDBTable {
private readonly Func<Dictionary<string, StringTableManager.StringCollection>> _GetTable;
private Dictionary<string, StringTableManager.StringCollection> _CachedTable;
private readonly List<string> _ChangeKeys;
private readonly List<StringTableManager.StringCollection> _ChangeValues;
public Dictionary<string, StringTableManager.StringCollection> Table {
get {
Dictionary<string, StringTableManager.StringCollection> result;
bool flag = (result = _CachedTable) == null;
if (flag) {
return (_CachedTable = _GetTable());
} else {
return result;
}
}
}
public StringTableManager.StringCollection this[string key] {
get { return Table[key]; }
set {
Table[key] = value;
int num = _ChangeKeys.IndexOf(key);;
if (num > 0) {
_ChangeValues[num] = value;
} else {
_ChangeKeys.Add(key);
_ChangeValues.Add(value);
}
JournalEntry.ReloadDataSemaphore++;
}
}
public AdvancedStringDBTable(Func<Dictionary<string, StringTableManager.StringCollection>> _getTable) {
_ChangeKeys = new List<string>();
_ChangeValues = new List<StringTableManager.StringCollection>();
_GetTable = _getTable;
}
public bool ContainsKey(string key) { return Table.ContainsKey(key); }
public void Set(string key, string value) {
StringTableManager.StringCollection stringCollection = new StringTableManager.SimpleStringCollection();
stringCollection.AddString(value, 1f);
bool flag = Table.ContainsKey(key);
if (flag) { Table[key] = stringCollection; } else { Table.Add(key, stringCollection); }
int num = _ChangeKeys.IndexOf(key);
bool flag2 = num > 0;
if (flag2) {
_ChangeValues[num] = stringCollection;
} else {
_ChangeKeys.Add(key);
_ChangeValues.Add(stringCollection);
}
JournalEntry.ReloadDataSemaphore++;
}
public void SetComplex(string key, params string[] values) {
StringTableManager.StringCollection stringCollection = new StringTableManager.ComplexStringCollection();
foreach (string text in values) { stringCollection.AddString(text, 1f); }
Table[key] = stringCollection;
int num = _ChangeKeys.IndexOf(key);
bool flag = num > 0;
if (flag) {
_ChangeValues[num] = stringCollection;
} else {
_ChangeKeys.Add(key);
_ChangeValues.Add(stringCollection);
}
JournalEntry.ReloadDataSemaphore++;
}
public void SetComplex(string key, List<string> values, List<float> weights) {
StringTableManager.StringCollection stringCollection = new StringTableManager.ComplexStringCollection();
for (int i = 0; i < values.Count; i++) {
string text = values[i];
float num = weights[i];
stringCollection.AddString(text, num);
}
Table[key] = stringCollection;
int num2 = _ChangeKeys.IndexOf(key);
bool flag = num2 > 0;
if (flag) {
_ChangeValues[num2] = stringCollection;
} else {
_ChangeKeys.Add(key);
_ChangeValues.Add(stringCollection);
}
JournalEntry.ReloadDataSemaphore++;
}
public string Get(string key) { return StringTableManager.GetString(key); }
public void LanguageChanged() {
_CachedTable = null;
Dictionary<string, StringTableManager.StringCollection> table = Table;
for (int i = 0; i < _ChangeKeys.Count; i++) { table[_ChangeKeys[i]] = _ChangeValues[i]; }
}
}
}

View File

@ -17,6 +17,72 @@ namespace ExpandTheGungeon.ExpandUtilities {
public class ExpandUtility { public class ExpandUtility {
public static List<IntVector2> FindAllValidLocations(Dungeon dungeon, RoomHandler currentRoom, int Clearence = 1, int ExitClearence = 10, bool avoidExits = false, bool avoidPits = true, bool PositionRelativeToRoom = false) {
List<IntVector2> m_ValidCellsCached = new List<IntVector2>();
if (dungeon == null | currentRoom == null) { return m_ValidCellsCached; }
for (int X = 0; X < currentRoom.area.dimensions.x; X++) {
for (int Y = 0; Y < currentRoom.area.dimensions.y; Y++) {
try {
bool isInvalid = false;
IntVector2 TargetPosition = new IntVector2(currentRoom.area.basePosition.x + X, currentRoom.area.basePosition.y + Y);
if (!m_ValidCellsCached.Contains(TargetPosition)) {
RoomHandler ActualRoom = dungeon.data.GetAbsoluteRoomFromPosition(TargetPosition);
for (int x = 0; x < Clearence; x++) {
for (int y = 0; y < Clearence; y++) {
IntVector2 intVector = (TargetPosition + new IntVector2(x, y));
if (dungeon.data.CheckInBoundsAndValid(intVector)) {
CellData cellData = dungeon.data[intVector];
if (cellData.parentRoom == null | cellData.type != CellType.FLOOR | cellData.isOccupied | !cellData.IsPassable) { isInvalid = true; }
if (ActualRoom != currentRoom | cellData.HasPitNeighbor(dungeon.data)) { isInvalid = true; }
if (cellData.cellVisualData.floorType == CellVisualData.CellFloorType.Water) { isInvalid = true; }
if (cellData.HasWallNeighbor()) { isInvalid = true; }
} else {
isInvalid = true;
}
}
}
if (!isInvalid && avoidExits) {
for (int x = 0; x < ExitClearence; x++) {
for (int y = 0; y < ExitClearence; y++) {
IntVector2 intVector = (TargetPosition + new IntVector2(x, y));
if (dungeon.data.CheckInBoundsAndValid(intVector)) {
CellData cellData = dungeon.data[intVector];
if (cellData.isExitCell) { isInvalid = true; }
}
}
}
}
if (!isInvalid) {
if (PositionRelativeToRoom) {
m_ValidCellsCached.Add(new IntVector2(X, Y));
} else {
m_ValidCellsCached.Add(TargetPosition);
}
}
}
} catch (Exception EX) {
if (ExpandSettings.debugMode) {
Debug.Log("[ExpandFloorDecorator.FindAllValidLocations] Exception while looking for valid cells in current room.");
Debug.LogException(EX);
}
}
}
}
if (m_ValidCellsCached.Count > 1) {
for (int I = 0; I < m_ValidCellsCached.Count; I++) {
Vector2 m_Position1 = m_ValidCellsCached[I].ToVector2();
for (int I2 = (I + 1); I2 < m_ValidCellsCached.Count; I2++) {
Vector2 m_Position2 = m_ValidCellsCached[I2].ToVector2();
if (Vector2.Distance(m_Position1, m_Position2) < Clearence) {
m_ValidCellsCached.Remove(m_ValidCellsCached[I2]);
}
}
}
}
return m_ValidCellsCached;
}
public static DungeonPlaceable DuplicateDungoenPlaceable(DungeonPlaceable sourcePlaceable) { public static DungeonPlaceable DuplicateDungoenPlaceable(DungeonPlaceable sourcePlaceable) {
DungeonPlaceable m_cachedPlaceable = ScriptableObject.CreateInstance<DungeonPlaceable>(); DungeonPlaceable m_cachedPlaceable = ScriptableObject.CreateInstance<DungeonPlaceable>();
m_cachedPlaceable.width = sourcePlaceable.width; m_cachedPlaceable.width = sourcePlaceable.width;

View File

@ -725,7 +725,7 @@ public class CorruptionBomb : PlayerItem {
} }
if (enemy.EnemyGuid == "0239c0680f9f467dbe5c4aab7dd1eca6" | enemy.EnemyGuid == "e61cab252cfb435db9172adc96ded75f" | enemy.EnemyGuid == "1a4872dafdb34fd29fe8ac90bd2cea67") { if (enemy.EnemyGuid == "0239c0680f9f467dbe5c4aab7dd1eca6" | enemy.EnemyGuid == "e61cab252cfb435db9172adc96ded75f" | enemy.EnemyGuid == "1a4872dafdb34fd29fe8ac90bd2cea67") {
ExpandGlitchedEnemies.GlitchExistingEnemy(enemy); ExpandEnemyCorruptor.GlitchExistingEnemy(enemy);
} else { } else {
if (enemy.gameObject.GetComponent<SpawnEnemyOnDeath>() != null) { Destroy(enemy.gameObject.GetComponent<SpawnEnemyOnDeath>()); } if (enemy.gameObject.GetComponent<SpawnEnemyOnDeath>() != null) { Destroy(enemy.gameObject.GetComponent<SpawnEnemyOnDeath>()); }

View File

@ -56,6 +56,10 @@ public static class SpriteBuilder {
return AddSpriteToCollection(spriteDefinition, ammonomiconCollection); return AddSpriteToCollection(spriteDefinition, ammonomiconCollection);
} }
public static int AddToAmmonomicon(Texture2D spriteTexture) {
return AddSpriteToCollection(spriteTexture, ammonomiconCollection);
}
public static int AddToAmmonomicon(tk2dSpriteDefinition spriteDefinition, Material overrideMaterial) { public static int AddToAmmonomicon(tk2dSpriteDefinition spriteDefinition, Material overrideMaterial) {
int m_spriteDefinition = AddSpriteToCollection(spriteDefinition, ammonomiconCollection); int m_spriteDefinition = AddSpriteToCollection(spriteDefinition, ammonomiconCollection);
ammonomiconCollection.GetSpriteDefinition(spriteDefinition.name).material = overrideMaterial; ammonomiconCollection.GetSpriteDefinition(spriteDefinition.name).material = overrideMaterial;

View File

@ -92,11 +92,12 @@ public static class SpriteSerializer {
} }
// Use this to add a sprite to your object instead of the one from ItemBuilder/SpriteBuilder! // Use this to add a sprite to your object instead of the one from ItemBuilder/SpriteBuilder!
public static tk2dSprite AddSpriteToObject(GameObject obj, GameObject existingSpriteCollectionObject, string mainSpriteDefinitionName, tk2dBaseSprite.PerpendicularState spriteAlignment = tk2dBaseSprite.PerpendicularState.UNDEFINED) { public static tk2dSprite AddSpriteToObject(GameObject obj, GameObject existingSpriteCollectionObject, string mainSpriteDefinitionName, tk2dBaseSprite.PerpendicularState spriteAlignment = tk2dBaseSprite.PerpendicularState.UNDEFINED, float HeightOffGround = 1) {
tk2dSprite m_tk2dSprite = obj.AddComponent<tk2dSprite>(); tk2dSprite m_tk2dSprite = obj.AddComponent<tk2dSprite>();
m_tk2dSprite.SetSprite(existingSpriteCollectionObject.GetComponent<tk2dSpriteCollectionData>(), mainSpriteDefinitionName); m_tk2dSprite.SetSprite(existingSpriteCollectionObject.GetComponent<tk2dSpriteCollectionData>(), mainSpriteDefinitionName);
m_tk2dSprite.SortingOrder = 0; m_tk2dSprite.SortingOrder = 0;
if (spriteAlignment != tk2dBaseSprite.PerpendicularState.UNDEFINED) { m_tk2dSprite.CachedPerpState = spriteAlignment; } if (spriteAlignment != tk2dBaseSprite.PerpendicularState.UNDEFINED) { m_tk2dSprite.CachedPerpState = spriteAlignment; }
if (HeightOffGround != 1) { m_tk2dSprite.HeightOffGround = HeightOffGround; }
obj.GetComponent<BraveBehaviour>().sprite = m_tk2dSprite; obj.GetComponent<BraveBehaviour>().sprite = m_tk2dSprite;
return m_tk2dSprite; return m_tk2dSprite;
} }