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.
@ -1,5 +1,5 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 3602897831
|
||||
CRC: 177801858
|
||||
AssetBundleManifest:
|
||||
AssetBundleInfos:
|
||||
Info_0:
|
||||
|
@ -1,12 +1,12 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 3937097182
|
||||
CRC: 2023508650
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: 48c1897f0032b2a33fbef7c72666f38d
|
||||
Hash: 75a0642d52778f3f56fd3e7d286054b8
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 2241b0dac22d22b9de2222ad79842819
|
||||
Hash: f4241535d4e8d4e11acb786dda0ad105
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
@ -33,6 +33,8 @@ ClassTypes:
|
||||
Script: {instanceID: 0}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 77e01a6014b97064fa53925969f884ae, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: dcb4fda0513fcf24a93207e0ed520ae2, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 85a95b2198074e1459671337ed25c270, type: 3}
|
||||
- Class: 114
|
||||
@ -49,6 +51,8 @@ ClassTypes:
|
||||
Script: {fileID: 11500000, guid: 0159916ecce839b46a8148e75dacab83, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: 1492b7fe0995e1f4b861785c3d23f832, type: 3}
|
||||
- Class: 114
|
||||
Script: {fileID: 11500000, guid: c59f4fb058392d745a690e85b4feba5d, type: 3}
|
||||
- Class: 115
|
||||
Script: {instanceID: 0}
|
||||
- Class: 198
|
||||
@ -68,6 +72,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon1_TinyPassage1.bytes
|
||||
- Assets/ExpandPrefabs/Misc/EX_Chest_West.prefab
|
||||
- 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/Expand_Proper_Regular32.bytes
|
||||
- Assets/ExpandPrefabs/AIActors/EXCorruptedEnemy.prefab
|
||||
@ -83,10 +88,12 @@ Assets:
|
||||
- Assets/ExpandSerializedData/TilesetData/Nakatomi/Nakatomi_Blue/facewallGrids_1.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter12.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/West/Expand_West_Canyon_Weird1.bytes
|
||||
- Assets/ExpandPrefabs/Items/Portable Elevator.prefab
|
||||
- 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_Jungle_Exit.bytes
|
||||
- Assets/ExpandPrefabs/Misc/EXSecretRoomGlitchFX.prefab
|
||||
@ -101,6 +108,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_smol1.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera5.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/Jungle/Expand_Forest_Animals6.bytes
|
||||
- Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Gold/carpetGrid.txt
|
||||
@ -128,16 +136,19 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomBuilderData/Mines/Neighborino_Pit_Layout.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Jungle_SecretDragun.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Owl10.bytes
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/clownkin_ammonomicon.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate2.bytes
|
||||
- Assets/ExpandRooms/RoomBuilderData/Mines/Neighborino_Hopscoth_Layout.png
|
||||
- Assets/ExpandPrefabs/Misc/EXSpaceFloorPitBorder_50x50.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera24.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal27.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/West/Expand_West_Interior1_Teleport1.bytes
|
||||
- Assets/ExpandPrefabs/TilesetPrefabs/ExpandSarco_Pedestal.prefab
|
||||
- Assets/ExpandPrefabs/AIActors/DoppelGunner/DopplegunnerHand.prefab
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/chameleon_ammonomicon.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed17.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal22.bytes
|
||||
- Assets/ExpandRooms/RoomBuilderData/TrapRooms/Expand_Thwomp_Crossing_Vertical_Layout.png
|
||||
@ -148,6 +159,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular50.bytes
|
||||
- Assets/ExpandPrefabs/Misc/BootlegRoomBorder_West.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Undead4.bytes
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/ClownKin_AmmonomiconData.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera7.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular4.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/BulletHell/BHell_TheReunion.bytes
|
||||
- Assets/ExpandRooms/RoomBuilderData/Creepy_Glitched_Room_Layout.png
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/Cronenberg_AmmonomiconData.txt
|
||||
- Assets/ExpandPrefabs/Items/EXThirdEye.prefab
|
||||
- Assets/ExpandPrefabs/AIActors/Cultist Companion.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/ExpandPrefabs/TilesetPrefabs/Jungle Tree Frame.prefab
|
||||
- Assets/ExpandPrefabs/AIActors/HotShotCultist.prefab
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/cronenberg_tall_ammonomicon.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Squareish4.bytes
|
||||
- Assets/ExpandPrefabs/Foyer/EXArcadeGameScanlineFX.prefab
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/bootlegbulletman_ammonomicon.png
|
||||
- Assets/ExpandPrefabs/SpriteCollections/Misc/EXTrapCollection.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter18.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/Expand_Secret_Witch6.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Spiralbomb.bytes
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/WestBrosTuc_AmmonomiconData.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/P_Expand_MasterRound2.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/F_Expand_Obsidian_Shell_Casing.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/Belly/Expand_Belly_Mixed8.bytes
|
||||
- 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/K_Expand_MasterRound1.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_BoomLine1.bytes
|
||||
@ -435,6 +452,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Trap_Expand_Turtlemelon.bytes
|
||||
- Assets/ExpandPrefabs/SpriteCollections/Misc/BabyGoodHammerCollection.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/MH_Expand_Achievement_Challenger.bytes
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/Skusketling_AmmonomiconData.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera4.bytes
|
||||
- Assets/ExpandPrefabs/Foyer/EXArcadeGame_Prop.prefab
|
||||
- Assets/ExpandPrefabs/Misc/EX_ParadropAnchor.prefab
|
||||
@ -470,6 +488,7 @@ Assets:
|
||||
- Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Blue/pitBorderFlatGrid.txt
|
||||
- Assets/ExpandSerializedData/TilesetData/West/RedInterior/floorGrid1.txt
|
||||
- Assets/ExpandSerializedData/TilesetData/Phobos/Phobos_Gold/pitBorderFlatGrid.txt
|
||||
- Assets/ExpandPrefabs/Breakables/ExpandJungleTree_Medium.prefab
|
||||
- Assets/ExpandPrefabs/Misc/CronenbergCorpseFragment_03.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch8.bytes
|
||||
- Assets/ExpandSerializedData/TilesetData/Belly/carpetGrid1.txt
|
||||
@ -511,6 +530,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_ZookieShroom.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/KP_Expand_Achievement_Historian.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/K_Expand_BigBird.bytes
|
||||
- Assets/ExpandTextures/BossCards/MimicInMirror_BossCardBackground.png
|
||||
@ -527,6 +547,7 @@ Assets:
|
||||
- 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_AP_West.bytes
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/WestBrosNome_AmmonomiconData.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals17.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_LongOdd1.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_Mixed9.bytes
|
||||
- Assets/ExpandSerializedData/TilesetData/Nakatomi/Nakatomi_Purple/carpetGrids_1.txt
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/bootlegshotgunman_ammonomicon.png
|
||||
- Assets/ExpandPrefabs/Dungeons/Base_Belly.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Animals27.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Teleport2_3.bytes
|
||||
- Assets/ExpandPrefabs/SpriteCollections/Misc/EXJungleCollection.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed7.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/ExpandTextures/SpriteCollections/AIActors/HotShotShotgunMan.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera14.bytes
|
||||
@ -608,6 +631,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular27.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Squareish2.bytes
|
||||
- Assets/ExpandRooms/RoomBuilderData/GungeonProper/Expand_Neighborino_Basic_Layout.png
|
||||
- Assets/ExpandSerializedData/TilesetData/Jungle/Bamboo/carpetGrid2.txt
|
||||
- Assets/ExpandPrefabs/TilesetPrefabs/ENV_Tileset_West.prefab
|
||||
- Assets/ExpandSerializedData/TilesetData/Jungle/Woods/facewallGrids_2_grid.txt
|
||||
- Assets/ExpandTextures/SpriteCollections/Misc/EXTrap_Collection.png
|
||||
@ -618,6 +642,7 @@ Assets:
|
||||
- Assets/ExpandSerializedData/TilesetData/Belly/roomCeilingBorderGrid.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed16.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/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Teleport3.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular14.bytes
|
||||
@ -659,10 +684,12 @@ Assets:
|
||||
- Assets/ExpandTextures/SpriteCollections/AIActors/BulletMan_Monochrome.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate24.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Roundabout.bytes
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/HotShotShotgunKin_AmmonomiconData.txt
|
||||
- Assets/ExpandPrefabs/Breakables/ExpandCactus_Shard_002.prefab
|
||||
- Assets/ExpandSerializedData/TilesetData/West/WoodInterior/facadeTopGrid.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_SniperTotemBuff.bytes
|
||||
- Assets/ExpandPrefabs/SpriteCollections/Misc/EXBalloonCollection.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Jungle_RewardRoom.bytes
|
||||
- Assets/ExpandPrefabs/Items/Projectiles/WestBrosGoldenRevolverProjectile.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/MHF_Expand_Achievement_Great_Hall.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman7.bytes
|
||||
@ -675,6 +702,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman6.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Fight2.bytes
|
||||
- Assets/ExpandSerializedData/TilesetData/Nakatomi/ENV_Tileset_Nakatomi_MaterialTable.txt
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/boss_icon_Western_Bros_Angel.png
|
||||
- Assets/ExpandTextures/BossCards/WesternBrosBossCard.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular36.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed10.bytes
|
||||
@ -685,6 +713,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomBuilderData/TrapRooms/Expand_Apache_SpikeAndPits_Layout.png
|
||||
- Assets/ExpandSerializedData/SpriteCollections/BootlegBulletManBandanaCollection.txt
|
||||
- Assets/ExpandPrefabs/Items/EXSonicBox.prefab
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/hotshotshotgunkin_ammonomicon.png
|
||||
- Assets/ExpandSerializedData/SpriteCollections/EXBootlegRoomCollection.txt
|
||||
- Assets/ExpandPrefabs/Foyer/EXCasino_Hub.prefab
|
||||
- Assets/ExpandPrefabs/Foyer/EXPunchoutArcadeCoin.prefab
|
||||
@ -699,6 +728,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_RegularSnakeParrot.bytes
|
||||
- Assets/ExpandPrefabs/TilesetPrefabs/EXOldWestWarp.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera15.bytes
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/BootlegShotgunManBlue_AmmonomiconData.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular20.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_ArrowCat.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_Fight5.bytes
|
||||
@ -713,6 +743,7 @@ Assets:
|
||||
- Assets/ExpandPrefabs/SpriteCollections/GunsAndItems/EXItemCollection.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed5.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/TilesetData/Jungle/ENV_Tileset_Jungle.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Thin4.bytes
|
||||
@ -734,6 +765,7 @@ Assets:
|
||||
- Assets/ExpandPrefabs/Items/EX_ItemParadrop.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate25.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/PMH_Expand_Kyle.bytes
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/boss_icon_Western_Bros_Tuc.png
|
||||
- Assets/ExpandPrefabs/Misc/EX_ExplodyBarrelDummy.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular32.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman5.bytes
|
||||
@ -766,6 +798,7 @@ Assets:
|
||||
- Assets/ExpandPrefabs/Misc/EXElevator_Arrival_Placable.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate3.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Keep_JungleElevatorRoom.bytes
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/CronenbergAngry_AmmonomiconData.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/H_Expand_MasterRound4.bytes
|
||||
- Assets/ExpandRooms/RoomBuilderData/TrapRooms/Expand_Thwomp_Crossing_Horizontal_Layout.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/PM_Expand_bubblebuddy.bytes
|
||||
@ -774,6 +807,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular21.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_HunterSporge.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera1.bytes
|
||||
- Assets/ExpandSerializedData/TilesetData/Jungle/Woods/carpetGrid2.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular10.bytes
|
||||
- Assets/ExpandPrefabs/Misc/EXLeadKeyGlitchScreenFX.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera_EyeDiagram.bytes
|
||||
@ -801,6 +835,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_4wave.bytes
|
||||
- Assets/ExpandSerializedData/TilesetData/Belly/faceWallGrid1.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal18.bytes
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/hotshotbulletkin_ammonomicon.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular23.bytes
|
||||
- Assets/ExpandPrefabs/Misc/BootlegRoomBorder_North.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_CornerBomb1.bytes
|
||||
@ -866,6 +901,7 @@ Assets:
|
||||
- Assets/ExpandSerializedData/TilesetData/Jungle/Bamboo/pitLayoutGrid.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Mixed4.bytes
|
||||
- Assets/ExpandPrefabs/TilesetPrefabs/Belly_PitVFX2.prefab
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/hotshotcultist_ammonomicon.png
|
||||
- Assets/ExpandPrefabs/Items/Wooden Crest.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/PM_Expand_Achievement_Case_Closed.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/Belly/Expand_Belly_Viscera11.bytes
|
||||
- Assets/ExpandSerializedData/SpriteCollections/CultistCompanionCollection.txt
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/BootlegBulletKin_AmmonomiconData.txt
|
||||
- Assets/ExpandPrefabs/Misc/EXPortableElevator_Departure.prefab
|
||||
- Assets/ExpandPrefabs/AIActors/WestBros/WestBrosHat_Angel.prefab
|
||||
- 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_Canyon1_Tiny16.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Hunter4.bytes
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/HotShotCultist_AmmonomiconData.txt
|
||||
- Assets/ExpandPrefabs/Misc/EXReward_Pedestal_CorruptionBomb.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_LongOdd2.bytes
|
||||
- Assets/ExpandPrefabs/SpriteCollections/Misc/EXBootlegRoomCollection.prefab
|
||||
@ -964,6 +1002,7 @@ Assets:
|
||||
- Assets/ExpandPrefabs/Misc/EX_Secret_Door.prefab
|
||||
- Assets/ExpandPrefabs/AIActors/WestBros/WestBrosAnimations_Tuc.prefab
|
||||
- Assets/ExpandPrefabs/AIActors/SonicCompanion.prefab
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/Chameleon_AmmonomiconData.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal13.bytes
|
||||
- Assets/ExpandPrefabs/Foyer/EXFoyerWarpDoor.prefab
|
||||
- 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/RoomFactoryData/Belly/Expand_Belly_Pirate20.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular49.bytes
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/hotshotbulletkin_icon.png
|
||||
- Assets/ExpandPrefabs/Items/Pow Block.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular6.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/Belly/Expand_Belly_Connector_06.bytes
|
||||
- Assets/ExpandTextures/SpriteCollections/AIActors/SonicCompanion_Collection.png
|
||||
- Assets/ExpandSerializedData/AmmonomiconData/WestBrosAngel_AmmonomiconData.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate27.bytes
|
||||
- Assets/ExpandSerializedData/SpriteCollections/EXOfficeCollection.txt
|
||||
- Assets/ExpandPrefabs/Breakables/ExpandJungleTree_Shard_03.prefab
|
||||
- Assets/ExpandPrefabs/Misc/BootlegRoomDoorBlocker_South.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera17.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_Mixed7.bytes
|
||||
- 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/ExpandPrefabs/Items/Projectiles/EXBootlegShotgunProjectile.prefab
|
||||
- Assets/ExpandPrefabs/SpriteCollections/AIActors/BootlegBulletManCollection.prefab
|
||||
@ -1025,11 +1069,11 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Viscera18.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_BIRDS.bytes
|
||||
- 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/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_AnimalsFairy.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Mixed19.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/ExpandSerializedData/TilesetData/Phobos/Phobos_Grey/roomFloorBorderGrid.txt
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Brother9.bytes
|
||||
@ -1039,6 +1083,7 @@ Assets:
|
||||
- Assets/ExpandTextures/SpriteCollections/AIActors/BootlegBullat_Collection.png
|
||||
- Assets/ExpandSerializedData/TilesetData/Jungle/Woods/facewallGrids_1_grid.txt
|
||||
- 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/Jungle/Expand_Forest_AnimalSpider.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch4.bytes
|
||||
@ -1057,6 +1102,7 @@ Assets:
|
||||
- Assets/ExpandSerializedData/SpriteCollections/EXSecretDoorCollection.txt
|
||||
- Assets/ExpandSerializedData/SpriteCollections/GungeoneerMimicCollection.txt
|
||||
- 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/Expand_Secret_Owl6.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/RoomFactoryData/Jungle/Expand_Forest_ConfirmedSnakes.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/TrapRooms/Expand_PitTraps.bytes
|
||||
- Assets/ExpandPrefabs/Breakables/ExpandJungleTree_Small.prefab
|
||||
- Assets/ExpandTextures/SpriteCollections/GunsAndItems/EXGun_Collection.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman10.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Canyon_CornerBomb4.bytes
|
||||
@ -1101,6 +1148,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Oldman4.bytes
|
||||
- Assets/ExpandPrefabs/SpriteCollections/AIActors/CronenbergTallCollection.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Skeletal7.bytes
|
||||
- Assets/ExpandTextures/AmmonomiconTextures/hotshotshotgunkin_icon.png
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Secret_Witch3.bytes
|
||||
- Assets/ExpandPrefabs/SpriteCollections/GunsAndItems/EXGunCollection.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal3.bytes
|
||||
@ -1109,6 +1157,7 @@ Assets:
|
||||
- Assets/ExpandRooms/RoomFactoryData/Belly/Expand_Belly_Pirate30.bytes
|
||||
- Assets/ExpandRooms/RoomBuilderData/Secret_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/ExpandTextures/SpriteCollections/AIActors/GungeoneerMimic_Collection.png
|
||||
- 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/Expand_Secret_Brother8.bytes
|
||||
- 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/M_Expand_ratkey.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Jungle/Expand_Forest_Tribal28.bytes
|
||||
@ -1196,6 +1246,7 @@ Assets:
|
||||
- Assets/ExpandPrefabs/Foyer/EXCasino_HatRack.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Proper_Regular17.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/West/Expand_West_Interior1_Thin1.bytes
|
||||
- Assets/ExpandPrefabs/Breakables/ExpandJungleTreeSmall_Stump.prefab
|
||||
- Assets/ExpandPrefabs/TilesetPrefabs/ExpandJungle_ExitLadder.prefab
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_BootlegRoom.bytes
|
||||
- Assets/ExpandRooms/RoomFactoryData/Expand_Mines_Regular15.bytes
|
||||
|
@ -1,9 +1,9 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 1620197715
|
||||
CRC: 740429855
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: 0a024bbee988145ff8a96ef6a1b60a56
|
||||
Hash: 98f8a042d84c2e85107dd650e77dfed5
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: c73412a662fd4e4f36af34cbdf078b85
|
||||
|
@ -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}
|
@ -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
|
@ -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}
|
@ -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}
|
@ -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}
|
@ -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}
|
@ -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}
|
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 196 B |
@ -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"
|
||||
}
|
@ -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"
|
||||
}
|
@ -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"
|
||||
}
|
@ -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"
|
||||
}
|
@ -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."
|
||||
}
|
@ -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."
|
||||
}
|
@ -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."
|
||||
}
|
@ -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."
|
||||
}
|
@ -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"
|
||||
}
|
@ -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."
|
||||
}
|
@ -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."
|
||||
}
|
@ -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."
|
||||
}
|
@ -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."
|
||||
}
|
@ -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."
|
||||
}
|
@ -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."
|
||||
}
|
@ -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."
|
||||
}
|
@ -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}}
|
@ -701,4 +701,4 @@ lit cutout perp
|
||||
lit cutout perp
|
||||
lit cutout perp
|
||||
lit cutout perp
|
||||
lit cutout perp
|
||||
lit cutout perp
|
||||
|
@ -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}}
|
Before Width: | Height: | Size: 285 B After Width: | Height: | Size: 281 B |
Before Width: | Height: | Size: 314 B After Width: | Height: | Size: 300 B |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 217 B |
After Width: | Height: | Size: 236 B |
After Width: | Height: | Size: 211 B |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 478 B |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 505 B |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 483 B |
After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 56 KiB |
@ -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(); }
|
||||
}
|
||||
}
|
||||
|
@ -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(); }
|
||||
}
|
||||
}
|
||||
|
@ -60,8 +60,10 @@
|
||||
<Compile Include="Assets\Scripts\ExpandComponents\ExpandInteractableDoor.cs" />
|
||||
<Compile Include="Assets\Scripts\ExpandComponents\ExpandInteractableLock.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\ExpandScreenFXController.cs" />
|
||||
<Compile Include="Assets\Scripts\ExpandComponents\ExpandSpriteFadeOnSpawn.cs" />
|
||||
<Compile Include="Assets\Scripts\ExpandComponents\ExpandThunderStormPlacable.cs" />
|
||||
<Compile Include="Assets\Scripts\ExpandComponents\ExpandWarpManager.cs" />
|
||||
<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\Jungle\Woods\carpetGrid.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\Jungle\Bamboo\facewallGrids_2.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Woods\lavaGrid.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXLargeMonsterCollection.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\AmmonomiconData\ClownKin_AmmonomiconData.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\Nakatomi\Nakatomi_Purple\facewallGrids_2_grid.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\SpriteCollections\BootlegBulletManCollection.txt" />
|
||||
<None Include="Assets\ExpandPrefabs\Shaders\ExpandScanlines.shader" />
|
||||
<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\SpriteCollections\BootlegShotgunManBlueCollection.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\TilesetData\Nakatomi\Nakatomi_Blue\lavaGrids.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\Belly\ENV_Tileset_Belly.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\TilesetData\Jungle\Bamboo\outerCeilingBorderGrid.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\West\Canyon\roomCeilingBorderGrid.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\TilesetData\West\Canyon\carpetGrid1.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXBalloonCollection.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXTrapCollection.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\West\RedInterior\carpetGrid1.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_Blue\facewallGrids_0_grid.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\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_2.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\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\Jungle\Bamboo\carpetGrid.txt" />
|
||||
<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\Belly\lavaGrid.txt" />
|
||||
<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\Phobos\Phobos_Grey\roomCeilingBorderGrid.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\TilesetData\Nakatomi\Nakatomi_Blue\roomCeilingBorderGrid.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\SpriteCollections\EXSpaceCollection.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\Jungle\Woods\facewallGrids_2.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\EXItemCollection.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\SpriteCollections\ClownkinCollection.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\Phobos\Phobos_Gold\floorSquares.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\Belly\ENV_Tileset_Belly_MaterialTable.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\TilesetData\Jungle\Bamboo\facewallGrids_1_grid.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\SpriteCollections\SonicCompanionCollection.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\ExpandSerializedData\AmmonomiconData\WestBrosAngel_AmmonomiconData.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\SpriteCollections\EXOfficeCollection.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\TilesetData\West\WoodInterior\roomCeilingBorderGrid.txt" />
|
||||
<None Include="Assets\ExpandPrefabs\Shaders\ExpandGlitchBasic.shader" />
|
||||
<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\Woods\facewallGrids_0__grid.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\Nakatomi\Nakatomi_Blue\facewallGrids_2_grid.txt" />
|
||||
@ -182,6 +201,7 @@
|
||||
<None Include="Assets\ExpandSerializedData\SpriteCollections\GungeoneerMimicCollection.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\AmmonomiconData\HotShotBulletKin_AmmonomiconData.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\SpriteCollections\WestBrosCollection.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\SpriteCollections\StoneCubeCollection_West.txt" />
|
||||
<None Include="Assets\ExpandSerializedData\TilesetData\West\ENV_Tileset_West_MaterialTable.txt" />
|
||||
|
@ -155,7 +155,7 @@ public class ExpandCorruptedEnemyEngageDoer : CustomEngageDoer {
|
||||
GameObject newEnemy = null;
|
||||
|
||||
try {
|
||||
newEnemy = ExpandGlitchedEnemies.Instance.SpawnRandomGlitchEnemy(currentRoom, cachedPosition, true);
|
||||
newEnemy = ExpandEnemyCorruptor.Instance.SpawnRandomGlitchEnemy(currentRoom, cachedPosition, true);
|
||||
} catch (Exception) {
|
||||
// If something broke, destroy broken Enemy (if it exist) to prevent possible softlocks.
|
||||
if (newEnemy) {
|
||||
|
22
ExpandTheGungeon/ExpandComponents/ExpandPlaySoundOnSpawn.cs
Normal 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(); }
|
||||
}
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ public enum SpawnPosition { InsideCollider, ScreenEdge, InsideRadius = 20 }
|
||||
if (transform.position.GetAbsoluteRoom() != null) {
|
||||
RoomHandler CurrentRoom = transform.position.GetAbsoluteRoom();
|
||||
IntVector2 actorPosition = specRigidbody.UnitCenter.ToIntVector2(VectorConversions.Floor) - CurrentRoom.area.basePosition;
|
||||
ExpandGlitchedEnemies.Instance.SpawnGlitchedSuperReaper(CurrentRoom, actorPosition);
|
||||
ExpandEnemyCorruptor.Instance.SpawnGlitchedSuperReaper(CurrentRoom, actorPosition);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
@ -120,7 +120,7 @@ public enum SpawnPosition { InsideCollider, ScreenEdge, InsideRadius = 20 }
|
||||
bool spawnsGlitchedObjectOnDeath = false;
|
||||
if (UnityEngine.Random.value <= 0.25f) { ExplodesOnDeath = 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.IsBlackPhantom) { aiactor.BecomeBlackPhantom(); }
|
||||
if (aiactor) {
|
||||
|
48
ExpandTheGungeon/ExpandComponents/ExpandSpriteFadeOnSpawn.cs
Normal 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(); }
|
||||
}
|
||||
}
|
||||
|
@ -633,7 +633,7 @@ public class ExpandDungeonFlow {
|
||||
ProceduralFlowModifierData.FlowModifierPlacementType.END_OF_CHAIN
|
||||
},
|
||||
roomTable = null,
|
||||
exactRoom = ExpandPrefabs.gungeon_rewardroom_1,
|
||||
exactRoom = ExpandRoomPrefabs.Expand_Jungle_RewardRoom,
|
||||
IsWarpWing = false,
|
||||
RequiresMasteryToken = false,
|
||||
chanceToLock = 0,
|
||||
|
@ -16,6 +16,7 @@ public class ExpandFloorDecorator {
|
||||
public static void PlaceFloorDecoration(Dungeon dungeon, List<RoomHandler> roomListOverride = null, bool ignoreTilesetType = false) {
|
||||
|
||||
List<GlobalDungeonData.ValidTilesets> ValidTilesets = new List<GlobalDungeonData.ValidTilesets>() {
|
||||
GlobalDungeonData.ValidTilesets.JUNGLEGEON,
|
||||
GlobalDungeonData.ValidTilesets.BELLYGEON,
|
||||
GlobalDungeonData.ValidTilesets.WESTGEON,
|
||||
GlobalDungeonData.ValidTilesets.MINEGEON,
|
||||
@ -30,69 +31,14 @@ public class ExpandFloorDecorator {
|
||||
|
||||
if (roomListOverride != null) { DungeonRooms = roomListOverride; }
|
||||
|
||||
if (dungeon.gameObject.name.ToLower().StartsWith("base_office")) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (dungeon.gameObject.name.ToLower().StartsWith("base_office")) { ReplaceTables(); }
|
||||
|
||||
foreach (RoomHandler currentRoom in DungeonRooms) {
|
||||
try {
|
||||
switch (dungeon.tileIndices.tilesetId) {
|
||||
case GlobalDungeonData.ValidTilesets.JUNGLEGEON:
|
||||
PlaceRandomTrees(dungeon, currentRoom);
|
||||
break;
|
||||
case GlobalDungeonData.ValidTilesets.WESTGEON:
|
||||
PlaceRandomCacti(dungeon, currentRoom);
|
||||
break;
|
||||
@ -123,12 +69,102 @@ public class ExpandFloorDecorator {
|
||||
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); }
|
||||
}
|
||||
|
||||
RandomObjectsPlaced = 0;
|
||||
RandomObjectsSkipped = 0;
|
||||
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) {
|
||||
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) {
|
||||
|
||||
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;
|
||||
if (Random.value <= 0.3f){
|
||||
MaxCorpseCount = 20;
|
||||
@ -150,22 +193,22 @@ public class ExpandFloorDecorator {
|
||||
int CorpseCount = Random.Range(6, MaxObjectsPerRoom);
|
||||
|
||||
for (int i = 0; i < CorpseCount; i++) {
|
||||
IntVector2? RandomVector = GetRandomAvailableCell(dungeon, currentRoom, m_CachedPositions);
|
||||
|
||||
if (RandomVector.HasValue) {
|
||||
if (m_CachedPositions.Count > 0) {
|
||||
IntVector2 RandomVector = BraveUtility.RandomElement(m_CachedPositions);
|
||||
m_CachedPositions.Remove(RandomVector);
|
||||
if (m_CachedPositions.Count > 1) { m_CachedPositions = m_CachedPositions.Shuffle(); }
|
||||
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>().UpdateZDepth();
|
||||
if (BraveUtility.RandomBool()) { SkeletonCorpse.GetComponent<tk2dSprite>().FlipX = true; }
|
||||
SkeletonCorpse.transform.parent = currentRoom.hierarchyParent;
|
||||
RandomObjectsPlaced++;
|
||||
} 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;
|
||||
RandomObjectsPlaced++;
|
||||
}
|
||||
if (m_CachedPositions.Count <= 0) { break; }
|
||||
} else {
|
||||
RandomObjectsSkipped++;
|
||||
}
|
||||
@ -184,9 +227,48 @@ public class ExpandFloorDecorator {
|
||||
{
|
||||
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")) {
|
||||
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 MinCactiCount = 6;
|
||||
int X = currentRoom.area.dimensions.x;
|
||||
@ -205,64 +287,33 @@ public class ExpandFloorDecorator {
|
||||
}
|
||||
|
||||
int CactusCount = Random.Range(MinCactiCount, MaxCactiCount);
|
||||
|
||||
|
||||
if (!currentRoom.GetRoomName().ToLower().StartsWith("expand_west_entrance")) {
|
||||
for (int i = 0; i < CactusCount; i++) {
|
||||
IntVector2? RandomVector = GetRandomAvailableCell(dungeon, currentRoom, m_CachedPositions, ExitClearence: 4, avoidExits: true);
|
||||
|
||||
List<GameObject> CactiList = new List<GameObject>() { ExpandPrefabs.Cactus_A, ExpandPrefabs.Cactus_B };
|
||||
CactiList = CactiList.Shuffle();
|
||||
|
||||
if (RandomVector.HasValue) {
|
||||
GameObject Cactus = Object.Instantiate(BraveUtility.RandomElement(CactiList), RandomVector.Value.ToVector3(), Quaternion.identity);
|
||||
if (m_CachedPositions.Count > 0) {
|
||||
IntVector2 RandomVector = BraveUtility.RandomElement(m_CachedPositions);
|
||||
m_CachedPositions.Remove(RandomVector);
|
||||
if (m_CachedPositions.Count > 1) { m_CachedPositions = m_CachedPositions.Shuffle(); }
|
||||
GameObject Cactus = Object.Instantiate(BraveUtility.RandomElement(CactiList), RandomVector.ToVector3(), Quaternion.identity);
|
||||
Cactus.transform.parent = currentRoom.hierarchyParent;
|
||||
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 {
|
||||
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"))
|
||||
{
|
||||
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 MaxMushroomCount = 8;
|
||||
int X = currentRoom.area.dimensions.x;
|
||||
@ -291,7 +349,7 @@ public class ExpandFloorDecorator {
|
||||
if (X * Y <= 225) {
|
||||
MinMushroomCount = 3;
|
||||
MaxMushroomCount = 5;
|
||||
} else if (X * Y >= 400 && Random.value <= 0.3f) {
|
||||
} else if ((X * Y) >= 400 && Random.value <= 0.3f) {
|
||||
MinMushroomCount = 8;
|
||||
MaxMushroomCount = 18;
|
||||
}
|
||||
@ -299,15 +357,18 @@ public class ExpandFloorDecorator {
|
||||
int MushroomCount = Random.Range(MinMushroomCount, MaxMushroomCount);
|
||||
|
||||
for (int i = 0; i < MushroomCount; i++) {
|
||||
if (DebugMode) { Debug.Log("[ExpandTheGungeon] Test Mushroom Iteration: " + i.ToString()); }
|
||||
if (DebugMode) { if (!string.IsNullOrEmpty(currentRoom.GetRoomName())) { ETGModConsole.Log("[ExpandTheGungeon] On Room: " + currentRoom.GetRoomName()); } }
|
||||
if (m_CachedPositions.Count > 0) {
|
||||
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..."); }
|
||||
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;
|
||||
ExpandAlarmMushroomPlacable m_AlarmMushRoomPlacable = ExpandPrefabs.EXAlarmMushroom.GetComponent<ExpandAlarmMushroomPlacable>();
|
||||
m_AlarmMushRoomPlacable.ConfigureOnPlacement(currentRoom);
|
||||
@ -319,9 +380,8 @@ public class ExpandFloorDecorator {
|
||||
}
|
||||
RandomObjectsPlaced++;
|
||||
if (DebugMode) { Debug.Log("[ExpandTheGungeon] Mushroom successfully placed!"); }
|
||||
if (m_CachedPositions.Count <= 0) { break; }
|
||||
} 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++;
|
||||
}
|
||||
}
|
||||
@ -331,23 +391,6 @@ public class ExpandFloorDecorator {
|
||||
|
||||
private static void PlaceRandomOfficeSupplies(Dungeon dungeon, RoomHandler currentRoom) {
|
||||
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;
|
||||
|
||||
@ -355,7 +398,27 @@ public class ExpandFloorDecorator {
|
||||
!currentRoom.IsMaintenanceRoom() && !currentRoom.GetRoomName().StartsWith("Boss Foyer") && !currentRoom.PrecludeTilemapDrawing &&
|
||||
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;
|
||||
if (Random.value <= 0.3f){
|
||||
MaxObjectCount = 16;
|
||||
@ -366,13 +429,13 @@ public class ExpandFloorDecorator {
|
||||
int ObjectCount = Random.Range(6, MaxObjectsPerRoom);
|
||||
|
||||
for (int i = 0; i < ObjectCount; i++) {
|
||||
IntVector2? RandomVector = GetRandomAvailableCell(dungeon, currentRoom, m_CachedPositions);
|
||||
|
||||
if (RandomVector.HasValue) {
|
||||
GameObject selectedObject = Object.Instantiate(BraveUtility.RandomElement(m_ObjectList), RandomVector.Value.ToVector3(), Quaternion.identity);
|
||||
if (m_CachedPositions.Count > 0) {
|
||||
IntVector2 RandomVector = BraveUtility.RandomElement(m_CachedPositions);
|
||||
m_CachedPositions.Remove(RandomVector);
|
||||
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;
|
||||
RandomObjectsPlaced++;
|
||||
if (m_CachedPositions.Count <= 0) { break; }
|
||||
} else {
|
||||
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) {
|
||||
if (dungeon == null | currentRoom == null | validCellsCached == null) { return null; }
|
||||
try {
|
||||
if (validCellsCached.Count == 0) {
|
||||
for (int X = 0; X < currentRoom.area.dimensions.x; X++) {
|
||||
for (int Y = 0; Y < currentRoom.area.dimensions.y; Y++) {
|
||||
bool isInvalid = false;
|
||||
IntVector2 TargetPosition = new IntVector2(currentRoom.area.basePosition.x + X, currentRoom.area.basePosition.y + Y);
|
||||
if (!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/*| cellData.cellVisualData.floorTileOverridden*/) { 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) { validCellsCached.Add(TargetPosition); }
|
||||
private static void 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
} 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);
|
||||
if (PositionRelativeToRoom) { SelectedCell -= currentRoom.area.basePosition; }
|
||||
return SelectedCell;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static void RemoveTableDecorations(FlippableCover table, RoomHandler currentRoom) {
|
||||
for (int i = 0; i < StaticReferenceManager.AllMinorBreakables.Count; i++) {
|
||||
if (!StaticReferenceManager.AllMinorBreakables[i].IsBroken && !StaticReferenceManager.AllMinorBreakables[i].debris && StaticReferenceManager.AllMinorBreakables[i].transform.position.GetAbsoluteRoom() == currentRoom) {
|
||||
SpeculativeRigidbody specRigidbody = StaticReferenceManager.AllMinorBreakables[i].specRigidbody;
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -49,9 +49,9 @@ public class ExpandJunkEnemySpawneer {
|
||||
|
||||
if (RandomGlitchEnemyVector.HasValue) {
|
||||
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 {
|
||||
ExpandGlitchedEnemies.Instance.SpawnGlitchedTurkey(currentRoom, RandomGlitchEnemyVector.Value, false, AIActor.AwakenAnimationType.Spawn, true);
|
||||
ExpandEnemyCorruptor.Instance.SpawnGlitchedTurkey(currentRoom, RandomGlitchEnemyVector.Value, false, AIActor.AwakenAnimationType.Spawn, true);
|
||||
}
|
||||
} else { RandomEnemiesSkipped++; }
|
||||
|
||||
|
@ -61,22 +61,22 @@ public class ExpandPlaceGlitchedEnemies {
|
||||
|
||||
|
||||
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++; }
|
||||
|
||||
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++; }
|
||||
|
||||
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 (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 {
|
||||
ExpandGlitchedEnemies.Instance.SpawnGlitchedPlayerAsEnemy(currentRoom, RandomGlitchEnemyVector4.Value, false, AIActor.AwakenAnimationType.Spawn);
|
||||
ExpandEnemyCorruptor.Instance.SpawnGlitchedPlayerAsEnemy(currentRoom, RandomGlitchEnemyVector4.Value, false, AIActor.AwakenAnimationType.Spawn);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -561,7 +561,7 @@ public class ExpandPlaceWallMimic {
|
||||
if (targetActor.GetComponent<ExpandSpawnGlitchObjectOnDeath>() == null) {
|
||||
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) {
|
||||
try { targetActor.gameObject.AddComponent<ExpandExplodeOnDeath>(); } catch (Exception) { }
|
||||
|
@ -14,6 +14,7 @@
|
||||
using ExpandTheGungeon.ExpandUtilities;
|
||||
using ExpandTheGungeon.ExpandDungeonFlows;
|
||||
using static ExpandTheGungeon.ExpandUtilities.ReflectionHelpers;
|
||||
using tk2dRuntime.TileMap;
|
||||
// using Pathfinding;
|
||||
|
||||
namespace ExpandTheGungeon.ExpandMain {
|
||||
@ -390,6 +391,7 @@ public class ExpandSharedHooks {
|
||||
typeof(ExpandSharedHooks).GetMethod(nameof(PixelatorStartHook), BindingFlags.NonPublic | BindingFlags.Instance),
|
||||
typeof(Pixelator)
|
||||
);*/
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1191,53 +1193,30 @@ public class ExpandSharedHooks {
|
||||
}
|
||||
|
||||
private bool IsValidJungleBorderCell(CellData current, Dungeon d, int ix, int iy) {
|
||||
bool isValid = false;
|
||||
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;
|
||||
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);
|
||||
}
|
||||
|
||||
private bool IsValidJungleOcclusionCell(TK2DDungeonAssembler assembler, CellData current, Dungeon d, int ix, int iy) {
|
||||
bool isValid = false;
|
||||
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;
|
||||
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))));
|
||||
}
|
||||
|
||||
private bool IsCardinalBorder(CellData current, Dungeon d, int ix, int iy) {
|
||||
try {
|
||||
bool flag = d.data.isTopWall(ix, iy);
|
||||
flag = (flag && !d.data[ix, iy + 1].cellVisualData.shouldIgnoreBorders);
|
||||
bool flag2 = (!d.data.isWallRight(ix, iy) && !d.data.isRightTopWall(ix, iy)) || d.data.isFaceWallHigher(ix + 1, iy) || d.data.isFaceWallLower(ix + 1, iy);
|
||||
flag2 = (flag2 && !d.data[ix + 1, iy].cellVisualData.shouldIgnoreBorders);
|
||||
bool flag3 = iy > 3 && d.data.isFaceWallHigher(ix, iy - 1);
|
||||
flag3 = (flag3 && !d.data[ix, iy - 1].cellVisualData.shouldIgnoreBorders);
|
||||
bool flag4 = (!d.data.isWallLeft(ix, iy) && !d.data.isLeftTopWall(ix, iy)) || d.data.isFaceWallHigher(ix - 1, iy) || d.data.isFaceWallLower(ix - 1, iy);
|
||||
flag4 = (flag4 && !d.data[ix - 1, iy].cellVisualData.shouldIgnoreBorders);
|
||||
return flag || flag2 || flag3 || flag4;
|
||||
} catch (Exception ex) {
|
||||
if (ExpandSettings.debugMode) {
|
||||
Debug.Log("[ExpandTheGungeon] Excpetion caught in TK2DDungeonAssembler.IsCardinalBorder!");
|
||||
Debug.LogException(ex);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// Something changed in AG&D floor generation. Some of these border cells are null on Jungle for unknown reasons.
|
||||
// Returning true if any are null avoids future exceptions in IsValidJungleBorderCell!
|
||||
// Seems to impact hidden tree top ceiling sprites at the edge of the tilemap.
|
||||
// The visual difference is subtle and impossible for the player to even see if the occlusion system is active.
|
||||
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 Cell1 = d.data.isTopWall(ix, iy);
|
||||
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 Cell3 = iy > 3 && d.data.isFaceWallHigher(ix, iy - 1);
|
||||
bool Cell4 = (!d.data.isWallLeft(ix, iy) && !d.data.isLeftTopWall(ix, iy)) || d.data.isFaceWallHigher(ix - 1, iy) || d.data.isFaceWallLower(ix - 1, iy);
|
||||
Cell1 = (Cell1 && !d.data[ix, iy + 1].cellVisualData.shouldIgnoreBorders);
|
||||
Cell2 = (Cell2 && !d.data[ix + 1, iy].cellVisualData.shouldIgnoreBorders);
|
||||
Cell3 = (Cell3 && !d.data[ix, iy - 1].cellVisualData.shouldIgnoreBorders);
|
||||
Cell4 = (Cell4 && !d.data[ix - 1, iy].cellVisualData.shouldIgnoreBorders);
|
||||
return Cell1 || Cell2 || Cell3 || Cell4;
|
||||
}
|
||||
|
||||
|
||||
private TileIndexGrid GetTypeBorderGridForBorderIndexHook(TK2DDungeonAssembler self, CellData current, Dungeon d, out int usedVisualType) {
|
||||
TileIndexGrid roomCeilingBorderGrid;
|
||||
|
||||
@ -1831,7 +1810,7 @@ public class ExpandSharedHooks {
|
||||
m_activeTraps.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*private void PixelatorStartHook(Action<Pixelator>orig, Pixelator self) {
|
||||
if (GameManager.Instance.Dungeon.tileIndices.tilesetId == GlobalDungeonData.ValidTilesets.JUNGLEGEON) {
|
||||
// self.UseTexturedOcclusion = true;
|
||||
|
@ -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 (Random.value <= 0.6f) {
|
||||
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) {
|
||||
enemy.gameObject.AddComponent<ExpandSpawnGlitchObjectOnDeath>();
|
||||
@ -124,7 +124,7 @@ public class ExpandObjectMods {
|
||||
if (!ExpandLists.DontGlitchMeList.Contains(enemy.EnemyGuid)) {
|
||||
if (Random.value <= 0.6f) {
|
||||
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) {
|
||||
enemy.gameObject.AddComponent<ExpandSpawnGlitchObjectOnDeath>();
|
||||
|
56
ExpandTheGungeon/ExpandPrefab/ExpandAmmonomiconDatabase.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,218 @@ public class ExpandDungeonPrefabs {
|
||||
public static GameObject Base_Phobos;
|
||||
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) {
|
||||
switch (name.ToLower()) {
|
||||
case "base_space":
|
||||
@ -59,9 +271,6 @@ public class ExpandDungeonPrefabs {
|
||||
return component;
|
||||
}
|
||||
|
||||
public static Hook getOrLoadByName_Hook;
|
||||
public static Hook dungeonStartHook;
|
||||
|
||||
public static void InitDungoenPrefabs(AssetBundle expandSharedAuto1, AssetBundle sharedAssets1, AssetBundle sharedAssets2, AssetBundle braveResources) {
|
||||
Base_Space = expandSharedAuto1.LoadAsset<GameObject>("Base_Space");
|
||||
Base_Jungle = expandSharedAuto1.LoadAsset<GameObject>("Base_Jungle");
|
||||
@ -71,7 +280,7 @@ public class ExpandDungeonPrefabs {
|
||||
Base_Office = expandSharedAuto1.LoadAsset<GameObject>("Base_Office");
|
||||
|
||||
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"));
|
||||
InitWestDungeon(expandSharedAuto1, sharedAssets2, Base_West, LoadOfficialDungeonPrefab("Base_Gungeon"));
|
||||
InitPhobosDungeon(expandSharedAuto1, sharedAssets2, Base_Phobos, LoadOfficialDungeonPrefab("Base_Gungeon"));
|
||||
@ -494,7 +703,7 @@ public class ExpandDungeonPrefabs {
|
||||
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 GungeonPrefab = LoadOfficialDungeonPrefab("Base_Gungeon");
|
||||
Dungeon SewersPrefab = LoadOfficialDungeonPrefab("Base_Sewer");
|
||||
@ -525,7 +734,8 @@ public class ExpandDungeonPrefabs {
|
||||
Jungle_Woods.supportsUpholstery = false;
|
||||
Jungle_Woods.carpetIsMainFloor = false;
|
||||
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.minChannelPools = 0;
|
||||
@ -549,9 +759,11 @@ public class ExpandDungeonPrefabs {
|
||||
Jungle_Woods.facewallGrids = new FacewallIndexGridDefinition[] {
|
||||
ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_0"),
|
||||
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[1].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_2_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_1_grid");
|
||||
Jungle_Woods.facewallGrids[2].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Woods/facewallGrids_2_grid");
|
||||
Jungle_Woods.usesInternalMaterialTransitions = false;
|
||||
Jungle_Woods.usesProceduralMaterialTransitions = false;
|
||||
Jungle_Woods.internalMaterialTransitions = new RoomInternalMaterialTransition[0];
|
||||
@ -608,7 +820,8 @@ public class ExpandDungeonPrefabs {
|
||||
Jungle_Bamboo.supportsUpholstery = false;
|
||||
Jungle_Bamboo.carpetIsMainFloor = false;
|
||||
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.minChannelPools = 0;
|
||||
@ -632,9 +845,11 @@ public class ExpandDungeonPrefabs {
|
||||
Jungle_Bamboo.facewallGrids = new FacewallIndexGridDefinition[] {
|
||||
ExpandAssets.DeserializeFacewallGridDefinitionFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_0"),
|
||||
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[1].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_2_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_1_grid");
|
||||
Jungle_Bamboo.facewallGrids[2].grid = ExpandAssets.DeserializeTileIndexGridFromAssetBundle(expandSharedAuto1, "Jungle/Bamboo/facewallGrids_2_grid");
|
||||
Jungle_Bamboo.usesInternalMaterialTransitions = false;
|
||||
Jungle_Bamboo.usesProceduralMaterialTransitions = false;
|
||||
Jungle_Bamboo.internalMaterialTransitions = new RoomInternalMaterialTransition[0];
|
||||
@ -776,7 +991,6 @@ public class ExpandDungeonPrefabs {
|
||||
|
||||
dungeon.tileIndices = new TileIndices() {
|
||||
tilesetId = GlobalDungeonData.ValidTilesets.JUNGLEGEON,
|
||||
// dungeonCollection = braveResources.LoadAsset<GameObject>("TallGrassStrip").GetComponent<tk2dTiledSprite>().Collection,
|
||||
dungeonCollection = ExpandPrefabs.ENV_Tileset_Jungle.GetComponent<tk2dSpriteCollectionData>(),
|
||||
dungeonCollectionSupportsDiagonalWalls = false,
|
||||
aoTileIndices = new AOTileIndices() {
|
||||
@ -825,9 +1039,17 @@ public class ExpandDungeonPrefabs {
|
||||
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.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() {
|
||||
runDustup = GungeonPrefab.dungeonDustups.runDustup,
|
||||
waterDustup = GungeonPrefab.dungeonDustups.waterDustup,
|
||||
|
@ -8,19 +8,19 @@
|
||||
|
||||
namespace ExpandTheGungeon.ExpandPrefab {
|
||||
|
||||
public class ExpandGlitchedEnemies {
|
||||
public class ExpandEnemyCorruptor {
|
||||
|
||||
public static ExpandGlitchedEnemies Instance {
|
||||
public static ExpandEnemyCorruptor Instance {
|
||||
get {
|
||||
if (m_instance == null) { m_instance = new ExpandGlitchedEnemies(); }
|
||||
if (m_instance == null) { m_instance = new ExpandEnemyCorruptor(); }
|
||||
return m_instance;
|
||||
}
|
||||
}
|
||||
|
||||
private static ExpandGlitchedEnemies m_instance;
|
||||
private static ExpandEnemyCorruptor m_instance;
|
||||
|
||||
|
||||
public ExpandGlitchedEnemies() {
|
||||
public ExpandEnemyCorruptor() {
|
||||
GrenadeGuyPrefab = EnemyDatabase.GetOrLoadByGuid("4d37ce3d666b4ddda8039929225b7ede").gameObject;
|
||||
IceCubeGuyPrefab = EnemyDatabase.GetOrLoadByGuid("f155fd2759764f4a9217db29dd21b7eb").gameObject;
|
||||
KeybulletManPrefab = EnemyDatabase.GetOrLoadByGuid("699cd24270af4cd183d671090d8323a1").gameObject;
|
@ -208,9 +208,10 @@ public static class ExpandEnemyDatabase {
|
||||
BuildMetalCubeGuyWestPrefab(expandSharedAssets1, out MetalCubeGuyWestPrefab);
|
||||
BuildParasiteBossPrefab(out MonsterParasitePrefab);
|
||||
BuildJungleBossPrefab(out com4nd0BossPrefab);
|
||||
|
||||
// Add R&G enemies to MTG spawn command because Zatherz hasn't done it. :P
|
||||
// UpdateMTGSpawnPool();
|
||||
|
||||
// Add some existing enemies to Ammonomicon
|
||||
AddEnemyToAmmonomicon(GetOfficialEnemyByGuid("c2f902b7cbe745efb3db4399927eab34"), ExpandAmmonomiconDatabase.Skusketling);
|
||||
AddEnemyToAmmonomicon(GetOfficialEnemyByGuid("80ab6cd15bfc46668a8844b2975c6c26"), ExpandAmmonomiconDatabase.Chameleon);
|
||||
}
|
||||
|
||||
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 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) {
|
||||
|
||||
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>()); }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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) {
|
||||
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.SerializedStateValues = new List<string>(0);
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, HotShotCultistGUID, true);
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, HotShotCultistGUID, ExpandAmmonomiconDatabase.HotShotCultist);
|
||||
|
||||
m_CachedEnemyActor = null;
|
||||
return;
|
||||
@ -827,7 +924,7 @@ public static class ExpandEnemyDatabase {
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" };
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, HotShotShotgunKinGUID, true);
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, HotShotShotgunKinGUID, ExpandAmmonomiconDatabase.HotShotShotgunKin);
|
||||
|
||||
m_CachedEnemyActor = null;
|
||||
return;
|
||||
@ -1007,7 +1104,7 @@ public static class ExpandEnemyDatabase {
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" };
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, HotShotBulletKinGUID, true);
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, HotShotBulletKinGUID, ExpandAmmonomiconDatabase.HotShotBulletKin);
|
||||
|
||||
m_CachedEnemyActor = null;
|
||||
return;
|
||||
@ -1405,7 +1502,7 @@ public static class ExpandEnemyDatabase {
|
||||
// Loading a custom script from text file in place of one from an existing prefab..
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, BootlegBullatGUID, true);
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, BootlegBullatGUID, ExpandAmmonomiconDatabase.BootlegBullat);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1837,8 +1934,8 @@ public static class ExpandEnemyDatabase {
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedObjectReferences = new List<UnityEngine.Object>(0);
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateKeys = new List<string>() { "OverrideBehaviors", "TargetBehaviors", "MovementBehaviors", "AttackBehaviors", "OtherBehaviors" };
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, BootlegBulletManGUID, true);
|
||||
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, BootlegBulletManGUID, ExpandAmmonomiconDatabase.BootlegBulletKin);
|
||||
|
||||
m_CachedEnemyActor = null;
|
||||
return;
|
||||
@ -2602,8 +2699,8 @@ public static class ExpandEnemyDatabase {
|
||||
// Loading a custom script from text file in place of one from an existing prefab..
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, BootlegShotgunManRedGUID, true);
|
||||
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, BootlegShotgunManRedGUID, ExpandAmmonomiconDatabase.BootlegShotgunKinRed);
|
||||
|
||||
m_CachedEnemyActor = null;
|
||||
return;
|
||||
}
|
||||
@ -2951,7 +3048,7 @@ public static class ExpandEnemyDatabase {
|
||||
// Loading a custom script from text file in place of one from an existing prefab..
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, BootlegShotgunManBlueGUID, true);
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, BootlegShotgunManBlueGUID, ExpandAmmonomiconDatabase.BootlegShotgunKinBlue);
|
||||
m_CachedEnemyActor = null;
|
||||
return;
|
||||
}
|
||||
@ -3223,8 +3320,8 @@ public static class ExpandEnemyDatabase {
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
|
||||
|
||||
CronenbergBullets.m_CachedCronenbergBulletsItem.TransmogTargetGuid = CronenbergGUID;
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, CronenbergGUID, true);
|
||||
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, CronenbergGUID, ExpandAmmonomiconDatabase.Cronenberg);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -3559,7 +3656,7 @@ public static class ExpandEnemyDatabase {
|
||||
// Loading a custom script from text file in place of one from an existing prefab..
|
||||
m_TargetBehaviorSpeculatorSerialized.SerializedStateValues = new List<string>(0);
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, AggressiveCronenbergGUID, true);
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, AggressiveCronenbergGUID, ExpandAmmonomiconDatabase.CronenbergAngry);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -4657,7 +4754,7 @@ public static class ExpandEnemyDatabase {
|
||||
m_WigTosser.helmetForce = 5;
|
||||
|
||||
|
||||
AddEnemyToDatabase(m_CachedTargetObject, ClownkinGUID, true);
|
||||
AddEnemyToDatabaseAndAmmonomicon(m_CachedAIActor, ClownkinGUID, ExpandAmmonomiconDatabase.ClownKin);
|
||||
m_CachedEnemyActor = null;
|
||||
|
||||
return;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -306,7 +306,21 @@ public class ExpandPrefabs {
|
||||
public static GameObject EXSpaceFloorPitBorder_50x50;
|
||||
public static GameObject DoorOneWay_Vertical_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.
|
||||
public static GameObject Sarcophagus_ShotgunBook_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_Phobos = expandSharedAssets1.LoadAsset<GameObject>("ENV_Tileset_Phobos");
|
||||
ENV_Tileset_Office = expandSharedAssets1.LoadAsset<GameObject>("ENV_Tileset_Office");
|
||||
ExpandDungeonCollections.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);
|
||||
ExpandDungeonCollections.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);
|
||||
ExpandDungeonCollections.ENV_Tileset_Office(ENV_Tileset_Office, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Nakatomi"), sharedAssets, expandSharedAssets1);
|
||||
ExpandDungeonPrefabs.ENV_Tileset_Jungle(ENV_Tileset_Jungle, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Jungle"), sharedAssets, expandSharedAssets1);
|
||||
ExpandDungeonPrefabs.ENV_Tileset_Belly(ENV_Tileset_Belly, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Belly"), sharedAssets, expandSharedAssets1);
|
||||
ExpandDungeonPrefabs.ENV_Tileset_Phobos(ENV_Tileset_Phobos, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_Phobos"), sharedAssets, expandSharedAssets1);
|
||||
ExpandDungeonPrefabs.ENV_Tileset_West(ENV_Tileset_West, expandSharedAssets1.LoadAsset<Texture2D>("ENV_Tileset_West"), 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");
|
||||
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);
|
||||
}
|
||||
|
||||
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 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.");
|
||||
|
||||
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.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(3, 2), dimensions: new IntVector2(26, 24));
|
||||
ExpandJungleTreeStumpItemPedestal StumpPedestal = Jungle_ItemStump.AddComponent<ExpandJungleTreeStumpItemPedestal>();
|
||||
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_Vertical_Belly = UnityEngine.Object.Instantiate(NakatomiDungeonPrefab.doorObjects.variantTiers[1].nonDatabasePlaceable);
|
||||
@ -4620,10 +5005,351 @@ public class ExpandPrefabs {
|
||||
UnityEngine.Object.Destroy(ChamberGun.gameObject.GetComponent<ChamberGunProcessor>());
|
||||
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);
|
||||
ExpandLists.CustomChests.Add(SurpriseChestObject);
|
||||
ExpandLists.CustomChestsWithoutRickRoll.Add(SurpriseChestObject);*/
|
||||
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);
|
||||
}
|
||||
|
||||
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!
|
||||
@ -4638,8 +5364,6 @@ public class ExpandPrefabs {
|
||||
ForgeDungeonPrefab = null;
|
||||
CatacombsDungeonPrefab = null;
|
||||
NakatomiDungeonPrefab = null;
|
||||
|
||||
ExpandMorePrefabs.InitMoreCustomPrefabs(expandSharedAssets1, sharedAssets, sharedAssets2, braveResources, enemiesBase);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -399,6 +399,7 @@ public class ExpandRoomPrefabs {
|
||||
public static PrototypeDungeonRoom Expand_Jungle_Exit;
|
||||
public static PrototypeDungeonRoom Expand_Jungle_SecretDragun;
|
||||
public static PrototypeDungeonRoom Expand_Jungle_Boss;
|
||||
public static PrototypeDungeonRoom Expand_Jungle_RewardRoom;
|
||||
// All jungle rooms except special ones will be stored here
|
||||
public static PrototypeDungeonRoom[] Expand_Jungle_Rooms;
|
||||
public static List<string> Expand_Jungle_RoomList;
|
||||
@ -915,8 +916,16 @@ public class ExpandRoomPrefabs {
|
||||
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(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.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);
|
||||
|
@ -481,8 +481,19 @@ private static void BuildWestBrosBossPrefab(AssetBundle assetBundle, out GameObj
|
||||
actor.healthHaver.SetHealthMaximum(600);
|
||||
|
||||
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);
|
||||
UnityEngine.Object.DontDestroyOnLoad(outObject);
|
||||
}
|
||||
|
@ -42,7 +42,8 @@ public class ExpandTheGungeon : BaseUnityPlugin {
|
||||
public const string ModSoundBankName = "EX_SFX";
|
||||
public const string ConsoleCommandName = "expand";
|
||||
|
||||
|
||||
public static AdvancedStringDB Strings;
|
||||
|
||||
private static List<string> itemList;
|
||||
|
||||
private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
|
||||
@ -117,6 +118,8 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
|
||||
|
||||
public void GMStart(GameManager gameManager) {
|
||||
try {
|
||||
Strings = new AdvancedStringDB();
|
||||
|
||||
ExpandSharedHooks.InstallMidGameSaveHooks();
|
||||
if (ExpandSettings.EnableLogo) {
|
||||
MainMenuFoyerUpdateHook = new Hook(
|
||||
@ -166,7 +169,9 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
|
||||
|
||||
try {
|
||||
// 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
|
||||
ExpandEnemyDatabase.InitPrefabs(expandSharedAssets1);
|
||||
// Init Custom Room Prefabs
|
||||
@ -284,6 +289,15 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
|
||||
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) {
|
||||
if (ETGModConsole.Commands.GetGroup(ConsoleCommandName) != null && ETGModConsole.Commands.GetGroup(ConsoleCommandName).GetAllUnitNames() != null) {
|
||||
List<string> m_CommandList = new List<string>();
|
||||
@ -307,14 +321,14 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
|
||||
}
|
||||
|
||||
private void ExpandDebug(string[] consoleText) {
|
||||
string validSubCommands = "toggledebugstats\nclearroom\nunsealroom\nfixplayerinput";
|
||||
string validSubCommands = "stats\nclearroom\nunsealroom\nfixplayerinput";
|
||||
|
||||
if (!m_IsCommandValid(consoleText, validSubCommands, "debug")) { return; }
|
||||
|
||||
RoomHandler currentRoom = GameManager.Instance.PrimaryPlayer.CurrentRoom;
|
||||
|
||||
switch (consoleText[0].ToLower()) {
|
||||
case "toggledebugstats":
|
||||
case "stats":
|
||||
if (!ExpandSettings.debugMode) {
|
||||
ExpandSettings.debugMode = true;
|
||||
ETGModConsole.Log("[ExpandTheGungeon] Installing RoomHandler.OnEntered Hook....");
|
||||
@ -503,13 +517,6 @@ private enum WaitType { ShotgunSecret, LanguageFix, DebugFlow };
|
||||
SpriteSerializer.SerializeSpriteCollection(CollectionName, SpriteList, X, Y, OverridePath);
|
||||
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>());
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -114,10 +114,12 @@
|
||||
<Compile Include="ExpandComponents\ExpandInteractableDoor.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandInteractableLock.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandNewElevatorController.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandPlaySoundOnSpawn.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandPunchoutArcadeController.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandRandomVarGenerator.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandReticleRiserEffect.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandSpawnBowlerNoteOnDeath.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandSpriteFadeOnSpawn.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandTK2DDungeonAssembler.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandChargeBehavior.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandCompanionManager.cs" />
|
||||
@ -173,18 +175,18 @@
|
||||
<Compile Include="ExpandDungeonFlows\DungeonFlows\f2b_belly_flow_01.cs" />
|
||||
<Compile Include="ExpandDungeonFlows\DungeonFlows\f4c_west_flow_01.cs" />
|
||||
<Compile Include="ExpandFoyer.cs" />
|
||||
<Compile Include="ExpandUtilities\AdvancedStringDB.cs" />
|
||||
<Compile Include="ExpandMain\ExpandDungeonDoorManager.cs" />
|
||||
<Compile Include="ExpandMain\ExpandDungeonMusicAPI.cs" />
|
||||
<Compile Include="ExpandMain\ExpandFloorDecorator.cs" />
|
||||
<Compile Include="ExpandMain\ExpandStaticReferenceManager.cs" />
|
||||
<Compile Include="ExpandMain\ExpandSynergies.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandAlarmMushroomPlacable.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandAmmonomiconDatabase.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandBootlegRoomPlaceable.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandEnemyDatabase.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandDungeonPrefabs.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandDungeonCollections.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandGungeoneerMimicBossPlacable.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandMorePrefabs.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandSawBladeTrapPlaceable.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandSecretDoorPlacable.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandWesternBrosPrefabBuilder.cs" />
|
||||
@ -242,7 +244,7 @@
|
||||
<Compile Include="ExpandComponents\ExpandSpawnGlitchedObjectOnDeath.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandWeatherController.cs" />
|
||||
<Compile Include="ExpandComponents\ExpandExplodeOnDeath.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandGlitchedEnemies.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandEnemyCorruptor.cs" />
|
||||
<Compile Include="ExpandMain\ExpandPlaceGlitchedEnemies.cs" />
|
||||
<Compile Include="ExpandSettings.cs" />
|
||||
<Compile Include="ExpandPrefab\ExpandLists.cs" />
|
||||
|
157
ExpandTheGungeon/ExpandUtilities/AdvancedStringDB.cs
Normal 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]; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,72 @@ namespace ExpandTheGungeon.ExpandUtilities {
|
||||
|
||||
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) {
|
||||
DungeonPlaceable m_cachedPlaceable = ScriptableObject.CreateInstance<DungeonPlaceable>();
|
||||
m_cachedPlaceable.width = sourcePlaceable.width;
|
||||
|
@ -725,7 +725,7 @@ public class CorruptionBomb : PlayerItem {
|
||||
}
|
||||
|
||||
if (enemy.EnemyGuid == "0239c0680f9f467dbe5c4aab7dd1eca6" | enemy.EnemyGuid == "e61cab252cfb435db9172adc96ded75f" | enemy.EnemyGuid == "1a4872dafdb34fd29fe8ac90bd2cea67") {
|
||||
ExpandGlitchedEnemies.GlitchExistingEnemy(enemy);
|
||||
ExpandEnemyCorruptor.GlitchExistingEnemy(enemy);
|
||||
} else {
|
||||
if (enemy.gameObject.GetComponent<SpawnEnemyOnDeath>() != null) { Destroy(enemy.gameObject.GetComponent<SpawnEnemyOnDeath>()); }
|
||||
|
||||
|
@ -56,6 +56,10 @@ public static class SpriteBuilder {
|
||||
return AddSpriteToCollection(spriteDefinition, ammonomiconCollection);
|
||||
}
|
||||
|
||||
public static int AddToAmmonomicon(Texture2D spriteTexture) {
|
||||
return AddSpriteToCollection(spriteTexture, ammonomiconCollection);
|
||||
}
|
||||
|
||||
public static int AddToAmmonomicon(tk2dSpriteDefinition spriteDefinition, Material overrideMaterial) {
|
||||
int m_spriteDefinition = AddSpriteToCollection(spriteDefinition, ammonomiconCollection);
|
||||
ammonomiconCollection.GetSpriteDefinition(spriteDefinition.name).material = overrideMaterial;
|
||||
|
@ -92,11 +92,12 @@ public static class SpriteSerializer {
|
||||
}
|
||||
|
||||
// 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>();
|
||||
m_tk2dSprite.SetSprite(existingSpriteCollectionObject.GetComponent<tk2dSpriteCollectionData>(), mainSpriteDefinitionName);
|
||||
m_tk2dSprite.SortingOrder = 0;
|
||||
if (spriteAlignment != tk2dBaseSprite.PerpendicularState.UNDEFINED) { m_tk2dSprite.CachedPerpState = spriteAlignment; }
|
||||
if (HeightOffGround != 1) { m_tk2dSprite.HeightOffGround = HeightOffGround; }
|
||||
obj.GetComponent<BraveBehaviour>().sprite = m_tk2dSprite;
|
||||
return m_tk2dSprite;
|
||||
}
|
||||
|