public static void InitPrefabs(AssetBundle expandSharedAssets1) { EXSecretDoorAnimation = expandSharedAssets1.LoadAsset <GameObject>("EX_SecretDoor_Animation"); tk2dSpriteAnimation DoorSpriteAnimations = EXSecretDoorAnimation.AddComponent <tk2dSpriteAnimation>(); ExpandUtility.AddAnimation(DoorSpriteAnimations, ExpandPrefabs.EXSecretDoorCollection.GetComponent <tk2dSpriteCollectionData>(), m_DoorOpenSprites, "door_open", frameRate: 10); ExpandUtility.AddAnimation(DoorSpriteAnimations, ExpandPrefabs.EXSecretDoorCollection.GetComponent <tk2dSpriteCollectionData>(), m_DoorCloseSprites, "door_close", frameRate: 10); EXSecretDoorMinimapIcon = expandSharedAssets1.LoadAsset <GameObject>("EXSecretDoor_MinimapIcon"); SpriteSerializer.AddSpriteToObject(EXSecretDoorMinimapIcon, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_MinimapIcon"); EXSecretDoor_Hollow = expandSharedAssets1.LoadAsset <GameObject>("EX_Secret_Door_Hollow"); GameObject EXSecretDoorHollow_Frame_Top = EXSecretDoor_Hollow.transform.Find("FrameTop").gameObject; GameObject EXSecretDoorHollow_Frame_Bottom = EXSecretDoor_Hollow.transform.Find("FrameBottom").gameObject; GameObject EXSecretDoorHollow_Background = EXSecretDoor_Hollow.transform.Find("Background").gameObject; GameObject EXSecretDoorHollow_Light = EXSecretDoor_Hollow.transform.Find("Light").gameObject; GameObject EXSecretDoorHollow_Lock = EXSecretDoor_Hollow.transform.Find("Lock").gameObject; tk2dSprite m_DoorHollowSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoor_Hollow, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Open_00"); tk2dSprite m_DoorHollowBorderTopSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorHollow_Frame_Top, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Frame_Top"); tk2dSprite m_DoorHollowBorderBottomSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorHollow_Frame_Bottom, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Frame_Bottom"); tk2dSprite m_DoorHollowBackgroundSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorHollow_Background, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Background"); tk2dSprite m_DoorHollowLightSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorHollow_Light, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Light_Red"); m_DoorHollowBorderTopSprite.HeightOffGround = 3; m_DoorHollowBorderBottomSprite.HeightOffGround = -0.5f; m_DoorHollowSprite.HeightOffGround = -1.5f; m_DoorHollowBackgroundSprite.HeightOffGround = -2f; m_DoorHollowLightSprite.HeightOffGround = 3.5f; ExpandUtility.GenerateSpriteAnimator(EXSecretDoor_Hollow, DoorSpriteAnimations, ClipFps: 10); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor_Hollow, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 64), offset: new IntVector2(16, 0)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor_Hollow, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 14)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor_Hollow, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, IsTrigger: true, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 12)); ExpandSecretDoorPlacable m_SecretDoorHollowComponent = EXSecretDoor_Hollow.AddComponent <ExpandSecretDoorPlacable>(); m_SecretDoorHollowComponent.DoorTopBorderObject = EXSecretDoorHollow_Frame_Top; m_SecretDoorHollowComponent.DoorBottomBorderObject = EXSecretDoorHollow_Frame_Bottom; m_SecretDoorHollowComponent.DoorBackgroundObject = EXSecretDoorHollow_Background; m_SecretDoorHollowComponent.DoorLightObject = EXSecretDoorHollow_Light; GameObject m_RatLock = ExpandPrefabs.RatJailDoor.GetComponent <InteractableDoorController>().WorldLocks[0].gameObject; tk2dSprite EXLockSprite = EXSecretDoorHollow_Lock.AddComponent <tk2dSprite>(); ExpandUtility.DuplicateSprite(EXLockSprite, m_RatLock.GetComponent <tk2dSprite>()); ExpandUtility.DuplicateSpriteAnimator(EXSecretDoorHollow_Lock, m_RatLock.GetComponent <tk2dSpriteAnimator>()); EXLockSprite.HeightOffGround = -0.3f; InteractableLock m_EXLockHollow = EXSecretDoorHollow_Lock.AddComponent <InteractableLock>(); m_EXLockHollow.Suppress = m_RatLock.GetComponent <InteractableLock>().Suppress; m_EXLockHollow.lockMode = InteractableLock.InteractableLockMode.RESOURCEFUL_RAT; m_EXLockHollow.JailCellKeyId = m_RatLock.GetComponent <InteractableLock>().JailCellKeyId; m_EXLockHollow.IdleAnimName = m_RatLock.GetComponent <InteractableLock>().IdleAnimName; m_EXLockHollow.UnlockAnimName = m_RatLock.GetComponent <InteractableLock>().UnlockAnimName; m_EXLockHollow.NoKeyAnimName = m_RatLock.GetComponent <InteractableLock>().NoKeyAnimName; m_EXLockHollow.SpitAnimName = m_RatLock.GetComponent <InteractableLock>().SpitAnimName; m_EXLockHollow.BustedAnimName = m_RatLock.GetComponent <InteractableLock>().BustedAnimName; m_SecretDoorHollowComponent.Lock = m_EXLockHollow; EXSecretDoor_Hollow.SetLayerRecursively(LayerMask.NameToLayer("FG_Critical")); EXSecretDoor_Hollow_Unlocked = expandSharedAssets1.LoadAsset <GameObject>("EX_Secret_Door_Hollow_Unlocked"); GameObject EXSecretDoorHollowUnlocked_Frame_Top = EXSecretDoor_Hollow_Unlocked.transform.Find("FrameTop").gameObject; GameObject EXSecretDoorHollowUnlocked_Frame_Bottom = EXSecretDoor_Hollow_Unlocked.transform.Find("FrameBottom").gameObject; GameObject EXSecretDoorHollowUnlocked_Background = EXSecretDoor_Hollow_Unlocked.transform.Find("Background").gameObject; GameObject EXSecretDoorHollowUnlocked_Light = EXSecretDoor_Hollow_Unlocked.transform.Find("Light").gameObject; tk2dSprite m_DoorHollow_UnlockedSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoor_Hollow_Unlocked, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Open_00"); tk2dSprite m_DoorHollow_UnlockedBorderTopSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorHollowUnlocked_Frame_Top, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Frame_Top"); tk2dSprite m_DoorHollow_UnlockedBorderBottomSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorHollowUnlocked_Frame_Bottom, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Frame_Bottom"); tk2dSprite m_DoorHollow_UnlockedBackgroundSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorHollowUnlocked_Background, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Background"); tk2dSprite m_DoorHollow_UnlockedLightSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorHollowUnlocked_Light, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Light_Red"); m_DoorHollow_UnlockedBorderTopSprite.HeightOffGround = 3; m_DoorHollow_UnlockedBorderBottomSprite.HeightOffGround = -0.5f; m_DoorHollow_UnlockedSprite.HeightOffGround = -1.5f; m_DoorHollow_UnlockedBackgroundSprite.HeightOffGround = -2f; m_DoorHollow_UnlockedLightSprite.HeightOffGround = 3.5f; ExpandUtility.GenerateSpriteAnimator(EXSecretDoor_Hollow_Unlocked, DoorSpriteAnimations, ClipFps: 10); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor_Hollow_Unlocked, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 64), offset: new IntVector2(16, 0)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor_Hollow_Unlocked, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 14)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor_Hollow_Unlocked, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, IsTrigger: true, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 12)); ExpandSecretDoorPlacable m_SecretDoorHollow_UnlockedComponent = EXSecretDoor_Hollow_Unlocked.AddComponent <ExpandSecretDoorPlacable>(); m_SecretDoorHollow_UnlockedComponent.DoorTopBorderObject = EXSecretDoorHollowUnlocked_Frame_Top; m_SecretDoorHollow_UnlockedComponent.DoorBottomBorderObject = EXSecretDoorHollowUnlocked_Frame_Bottom; m_SecretDoorHollow_UnlockedComponent.DoorBackgroundObject = EXSecretDoorHollowUnlocked_Background; m_SecretDoorHollow_UnlockedComponent.DoorLightObject = EXSecretDoorHollowUnlocked_Light; EXSecretDoor_Hollow_Unlocked.SetLayerRecursively(LayerMask.NameToLayer("FG_Critical")); EXSecretDoor = expandSharedAssets1.LoadAsset <GameObject>("EX_Secret_Door"); GameObject EXSecretDoor_Frame_Top = EXSecretDoor.transform.Find("FrameTop").gameObject; GameObject EXSecretDoor_Frame_Bottom = EXSecretDoor.transform.Find("FrameBottom").gameObject; GameObject EXSecretDoor_Background = EXSecretDoor.transform.Find("Background").gameObject; GameObject EXSecretDoor_Light = EXSecretDoor.transform.Find("Light").gameObject; GameObject EXSecretDoor_Lock = EXSecretDoor.transform.Find("Lock").gameObject; tk2dSprite m_DoorSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoor, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Open_00"); tk2dSprite m_DoorBorderTopSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoor_Frame_Top, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Frame_NoDecal_Top"); tk2dSprite m_DoorBorderBottomSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoor_Frame_Bottom, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Frame_Bottom"); tk2dSprite m_DoorBackgroundSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoor_Background, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Background"); tk2dSprite m_DoorLightSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoor_Light, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Light_Red"); m_DoorBorderTopSprite.HeightOffGround = 3; m_DoorBorderBottomSprite.HeightOffGround = -0.5f; m_DoorSprite.HeightOffGround = -1.5f; m_DoorBackgroundSprite.HeightOffGround = -2f; m_DoorLightSprite.HeightOffGround = 3.5f; ExpandUtility.GenerateSpriteAnimator(EXSecretDoor, DoorSpriteAnimations, ClipFps: 10); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 64), offset: new IntVector2(16, 0)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 14)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, IsTrigger: true, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 12)); ExpandSecretDoorPlacable m_SecretDoorComponent = EXSecretDoor.AddComponent <ExpandSecretDoorPlacable>(); m_SecretDoorComponent.DoorTopBorderObject = EXSecretDoor_Frame_Top; m_SecretDoorComponent.DoorBottomBorderObject = EXSecretDoor_Frame_Bottom; m_SecretDoorComponent.DoorBackgroundObject = EXSecretDoor_Background; m_SecretDoorComponent.DoorLightObject = EXSecretDoor_Light; Dungeon Base_Castle = DungeonDatabase.GetOrLoadByName("Base_Castle"); GameObject m_NormalLock = (Base_Castle.PatternSettings.flows[0].sharedInjectionData[1].InjectionData[0].exactRoom.placedObjects[0].nonenemyBehaviour as SecretFloorInteractableController).WorldLocks[0].gameObject; tk2dSprite EXLockNormalSprite = EXSecretDoor_Lock.AddComponent <tk2dSprite>(); ExpandUtility.DuplicateSprite(EXLockNormalSprite, m_NormalLock.GetComponent <tk2dSprite>()); ExpandUtility.DuplicateSpriteAnimator(EXSecretDoor_Lock, m_NormalLock.GetComponent <tk2dSpriteAnimator>()); EXLockNormalSprite.HeightOffGround = 1.7f; InteractableLock m_EXLockNormal = EXSecretDoor_Lock.AddComponent <InteractableLock>(); m_EXLockNormal.Suppress = m_NormalLock.GetComponent <InteractableLock>().Suppress; m_EXLockNormal.lockMode = m_NormalLock.GetComponent <InteractableLock>().lockMode; m_EXLockNormal.JailCellKeyId = m_NormalLock.GetComponent <InteractableLock>().JailCellKeyId; m_EXLockNormal.IdleAnimName = m_NormalLock.GetComponent <InteractableLock>().IdleAnimName; m_EXLockNormal.UnlockAnimName = m_NormalLock.GetComponent <InteractableLock>().UnlockAnimName; m_EXLockNormal.NoKeyAnimName = m_NormalLock.GetComponent <InteractableLock>().NoKeyAnimName; m_EXLockNormal.SpitAnimName = m_NormalLock.GetComponent <InteractableLock>().SpitAnimName; m_EXLockNormal.BustedAnimName = m_NormalLock.GetComponent <InteractableLock>().BustedAnimName; m_SecretDoorComponent.Lock = m_EXLockNormal; EXSecretDoor.SetLayerRecursively(LayerMask.NameToLayer("FG_Critical")); Base_Castle = null; m_NormalLock = null; EXSecretDoor_Unlocked = expandSharedAssets1.LoadAsset <GameObject>("EX_Secret_Door_Unlocked"); GameObject EXSecretDoorUnlocked_Frame_Top = EXSecretDoor_Unlocked.transform.Find("FrameTop").gameObject; GameObject EXSecretDoorUnlocked_Frame_Bottom = EXSecretDoor_Unlocked.transform.Find("FrameBottom").gameObject; GameObject EXSecretDoorUnlocked_Background = EXSecretDoor_Unlocked.transform.Find("Background").gameObject; GameObject EXSecretDoorUnlocked_Light = EXSecretDoor_Unlocked.transform.Find("Light").gameObject; tk2dSprite m_Door_UnlockedSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoor_Unlocked, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Open_00"); tk2dSprite m_Door_UnlockedBorderTopSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorUnlocked_Frame_Top, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Frame_Top"); tk2dSprite m_Door_UnlockedBorderBottomSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorUnlocked_Frame_Bottom, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Frame_Bottom"); tk2dSprite m_Door_UnlockedBackgroundSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorUnlocked_Background, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Background"); tk2dSprite m_Door_UnlockedLightSprite = SpriteSerializer.AddSpriteToObject(EXSecretDoorUnlocked_Light, ExpandPrefabs.EXSecretDoorCollection, "EXSecretDoor_Light_Red"); m_Door_UnlockedBorderTopSprite.HeightOffGround = 3; m_Door_UnlockedBorderBottomSprite.HeightOffGround = -0.5f; m_Door_UnlockedSprite.HeightOffGround = -1.5f; m_Door_UnlockedBackgroundSprite.HeightOffGround = -2f; m_Door_UnlockedLightSprite.HeightOffGround = 3.5f; ExpandUtility.GenerateSpriteAnimator(EXSecretDoor_Unlocked, DoorSpriteAnimations, ClipFps: 10); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor_Unlocked, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 64), offset: new IntVector2(16, 0)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor_Unlocked, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 14)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor_Unlocked, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, IsTrigger: true, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 12)); ExpandSecretDoorPlacable m_SecretDoor_UnlockedComponent = EXSecretDoor_Unlocked.AddComponent <ExpandSecretDoorPlacable>(); m_SecretDoor_UnlockedComponent.DoorTopBorderObject = EXSecretDoorUnlocked_Frame_Top; m_SecretDoor_UnlockedComponent.DoorBottomBorderObject = EXSecretDoorUnlocked_Frame_Bottom; m_SecretDoor_UnlockedComponent.DoorBackgroundObject = EXSecretDoorUnlocked_Background; m_SecretDoor_UnlockedComponent.DoorLightObject = EXSecretDoorUnlocked_Light; EXSecretDoor_Unlocked.SetLayerRecursively(LayerMask.NameToLayer("FG_Critical")); }
public static void InitPrefabs(AssetBundle expandSharedAssets1) { List <string> m_DoorOpenSprites = new List <string>() { "EXSecretDoor_Open_00", "EXSecretDoor_Open_01", "EXSecretDoor_Open_02", "EXSecretDoor_Open_03", "EXSecretDoor_Open_04", "EXSecretDoor_Open_05", "EXSecretDoor_Open_06", "EXSecretDoor_Open_07" }; List <string> m_DoorCloseSprites = new List <string>() { "EXSecretDoor_Close_00", "EXSecretDoor_Close_01", "EXSecretDoor_Close_02", "EXSecretDoor_Close_03", "EXSecretDoor_Close_04", "EXSecretDoor_Close_05", "EXSecretDoor_Close_06", "EXSecretDoor_Close_07", }; EXSecretDoorMinimapIcon = expandSharedAssets1.LoadAsset <GameObject>("EXSecretDoor_MinimapIcon"); ItemBuilder.AddSpriteToObject(EXSecretDoorMinimapIcon, expandSharedAssets1.LoadAsset <Texture2D>("EXSecretDoor_MinimapIcon"), false, false); EXSecretDoor = expandSharedAssets1.LoadAsset <GameObject>("EX Secret Door Entrance"); EXSecretDoor_Frame_Top = EXSecretDoor.transform.Find("EX Secret Door Top").gameObject; EXSecretDoor_Frame_Bottom = EXSecretDoor.transform.Find("EX Secret Door Bottom").gameObject; EXSecretDoor_Background = EXSecretDoor.transform.Find("EX Secret Door Background").gameObject; EXSecretDoor_Light = EXSecretDoor.transform.Find("EX Secret Door Light").gameObject; EXSecretDoor_Frame_Top.layer = LayerMask.NameToLayer("FG_Critical"); EXSecretDoor_Frame_Bottom.layer = LayerMask.NameToLayer("FG_Critical"); EXSecretDoor_Background.layer = LayerMask.NameToLayer("FG_Critical"); EXSecretDoor_Light.layer = LayerMask.NameToLayer("FG_Critical"); EXSecretDoor_Frame_Top.transform.parent = EXSecretDoor.transform; EXSecretDoor_Frame_Bottom.transform.parent = EXSecretDoor.transform; EXSecretDoor_Background.transform.parent = EXSecretDoor.transform; EXSecretDoor_Light.transform.parent = EXSecretDoor.transform; ItemBuilder.AddSpriteToObject(EXSecretDoor, expandSharedAssets1.LoadAsset <Texture2D>("EXSecretDoor_Open_00"), false, false); ItemBuilder.AddSpriteToObject(EXSecretDoor_Frame_Top, expandSharedAssets1.LoadAsset <Texture2D>("EXSecretDoor_Frame_Top"), false, false); ItemBuilder.AddSpriteToObject(EXSecretDoor_Frame_Bottom, expandSharedAssets1.LoadAsset <Texture2D>("EXSecretDoor_Frame_Bottom"), false, false); ItemBuilder.AddSpriteToObject(EXSecretDoor_Background, expandSharedAssets1.LoadAsset <Texture2D>("EXSecretDoor_Background"), false, false); ItemBuilder.AddSpriteToObject(EXSecretDoor_Light, expandSharedAssets1.LoadAsset <Texture2D>("EXSecretDoor_Light_Red"), false, false); tk2dSprite m_DoorBorderTopSprite = EXSecretDoor_Frame_Top.GetComponent <tk2dSprite>(); m_DoorBorderTopSprite.HeightOffGround = 3; SpriteBuilder.AddSpriteToCollection(expandSharedAssets1.LoadAsset <Texture2D>("EXSecretDoor_Frame_NoDecal_Top"), m_DoorBorderTopSprite.Collection); tk2dSprite m_DoorBorderBottomSprite = EXSecretDoor_Frame_Bottom.GetComponent <tk2dSprite>(); m_DoorBorderBottomSprite.HeightOffGround = -0.5f; tk2dSprite m_DoorSprite = EXSecretDoor.GetComponent <tk2dSprite>(); m_DoorSprite.HeightOffGround = -1.5f; tk2dSprite m_DoorBackgroundSprite = EXSecretDoor_Background.GetComponent <tk2dSprite>(); m_DoorBackgroundSprite.HeightOffGround = -2f; tk2dSprite m_DoorLightSprite = EXSecretDoor_Light.GetComponent <tk2dSprite>(); m_DoorLightSprite.HeightOffGround = 3.5f; SpriteBuilder.AddSpriteToCollection(expandSharedAssets1.LoadAsset <Texture2D>("EXSecretDoor_Light_Green"), m_DoorLightSprite.Collection); foreach (string spriteName in m_DoorOpenSprites) { if (spriteName != "EXSecretDoor_Open_00") { SpriteBuilder.AddSpriteToCollection(expandSharedAssets1.LoadAsset <Texture2D>(spriteName), m_DoorSprite.Collection); } } foreach (string spriteName in m_DoorCloseSprites) { SpriteBuilder.AddSpriteToCollection(expandSharedAssets1.LoadAsset <Texture2D>(spriteName), m_DoorSprite.Collection); } ExpandUtility.GenerateSpriteAnimator(EXSecretDoor, ClipFps: 10); tk2dSpriteAnimator m_DoorAnimator = EXSecretDoor.GetComponent <tk2dSpriteAnimator>(); ExpandUtility.AddAnimation(m_DoorAnimator, m_DoorSprite.Collection, m_DoorOpenSprites, "door_open", frameRate: 10); ExpandUtility.AddAnimation(m_DoorAnimator, m_DoorSprite.Collection, m_DoorCloseSprites, "door_close", frameRate: 10); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 64), offset: new IntVector2(16, 0)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 14)); ExpandUtility.GenerateOrAddToRigidBody(EXSecretDoor, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, CanBeCarried: false, IsTrigger: true, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 32), offset: new IntVector2(16, 12)); ExpandSecretDoorPlacable m_SecretDoorComponent = EXSecretDoor.AddComponent <ExpandSecretDoorPlacable>(); m_SecretDoorComponent.DoorTopBorderObject = EXSecretDoor_Frame_Top; m_SecretDoorComponent.DoorBottomBorderObject = EXSecretDoor_Frame_Bottom; m_SecretDoorComponent.DoorBackgroundObject = EXSecretDoor_Background; m_SecretDoorComponent.DoorLightObject = EXSecretDoor_Light; GameObject m_RatLock = ExpandPrefabs.RatJailDoorPlacable.gameObject.GetComponent <InteractableDoorController>().WorldLocks[0].gameObject; EXSecretDoor_Lock = EXSecretDoor.transform.Find("EX Secret Door Lock").gameObject; tk2dSprite EXLockSprite = EXSecretDoor_Lock.AddComponent <tk2dSprite>(); ExpandUtility.DuplicateSprite(EXLockSprite, m_RatLock.GetComponent <tk2dSprite>()); EXLockSprite.HeightOffGround = -0.3f; tk2dSpriteAnimator m_EXLockAnimator = ExpandUtility.DuplicateSpriteAnimator(EXSecretDoor_Lock, m_RatLock.GetComponent <tk2dSpriteAnimator>(), true); InteractableLock m_EXLock = EXSecretDoor_Lock.AddComponent <InteractableLock>(); m_EXLock.Suppress = m_RatLock.GetComponent <InteractableLock>().Suppress; m_EXLock.lockMode = InteractableLock.InteractableLockMode.RESOURCEFUL_RAT; m_EXLock.JailCellKeyId = m_RatLock.GetComponent <InteractableLock>().JailCellKeyId; m_EXLock.IdleAnimName = m_RatLock.GetComponent <InteractableLock>().IdleAnimName; m_EXLock.UnlockAnimName = m_RatLock.GetComponent <InteractableLock>().UnlockAnimName; m_EXLock.NoKeyAnimName = m_RatLock.GetComponent <InteractableLock>().NoKeyAnimName; m_EXLock.SpitAnimName = m_RatLock.GetComponent <InteractableLock>().SpitAnimName; m_EXLock.BustedAnimName = m_RatLock.GetComponent <InteractableLock>().BustedAnimName; m_SecretDoorComponent.Lock = m_EXLock; EXSecretDoor_Lock.SetLayerRecursively(LayerMask.NameToLayer("FG_Critical")); EXSecretDoorDestination = UnityEngine.Object.Instantiate(EXSecretDoor); EXSecretDoorDestination.name = "EX Secret Door (Exit)"; ExpandSecretDoorExitPlacable m_ExitDoorComponent = EXSecretDoorDestination.AddComponent <ExpandSecretDoorExitPlacable>(); m_ExitDoorComponent.MinimapIcon = ExpandPrefabs.exit_room_basic.associatedMinimapIcon; m_ExitDoorComponent.DoorBackgroundObject = EXSecretDoorDestination.GetComponent <ExpandSecretDoorPlacable>().DoorBackgroundObject; m_ExitDoorComponent.DoorBottomBorderObject = EXSecretDoorDestination.GetComponent <ExpandSecretDoorPlacable>().DoorBottomBorderObject; m_ExitDoorComponent.DoorLightObject = EXSecretDoorDestination.GetComponent <ExpandSecretDoorPlacable>().DoorLightObject; m_ExitDoorComponent.DoorTopBorderObject = EXSecretDoorDestination.GetComponent <ExpandSecretDoorPlacable>().DoorTopBorderObject; UnityEngine.Object.Destroy(EXSecretDoorDestination.GetComponent <ExpandSecretDoorPlacable>().Lock.gameObject); UnityEngine.Object.Destroy(EXSecretDoorDestination.GetComponent <ExpandSecretDoorPlacable>()); Dungeon Base_Castle = DungeonDatabase.GetOrLoadByName("Base_Castle"); GameObject m_NormalLock = (Base_Castle.PatternSettings.flows[0].sharedInjectionData[1].InjectionData[0].exactRoom.placedObjects[0].nonenemyBehaviour as SecretFloorInteractableController).WorldLocks[0].gameObject; // Setup copy with no rat decal and normal lock instead of rat lock. A general purpose version of the Mini-Elevator. EXSecretDoor_Normal = UnityEngine.Object.Instantiate(EXSecretDoor); EXSecretDoor_Normal.name = "EX Secret Door 2 (Entrance)"; Vector3 Lock2PositionOffset = (EXSecretDoor_Normal.transform.position + new Vector3(1.22f, 0.34f)); ExpandSecretDoorPlacable m_SecretDoor2Component = EXSecretDoor_Normal.GetComponent <ExpandSecretDoorPlacable>(); m_SecretDoor2Component.isHollowsElevator = false; UnityEngine.Object.Destroy(m_SecretDoor2Component.Lock.gameObject); m_SecretDoor2Component.DoorTopBorderObject.GetComponent <tk2dSprite>().SetSprite("EXSecretDoor_Frame_NoDecal_Top"); GameObject m_LockObject2 = UnityEngine.Object.Instantiate(m_NormalLock, Lock2PositionOffset, Quaternion.identity); m_LockObject2.gameObject.SetLayerRecursively(LayerMask.NameToLayer("FG_Critical")); m_LockObject2.GetComponent <InteractableLock>().sprite.HeightOffGround = 1.7f; m_LockObject2.GetComponent <InteractableLock>().sprite.UpdateZDepth(); // m_LockObject2.SetActive(false); m_LockObject2.transform.SetParent(EXSecretDoor_Normal.transform, true); m_SecretDoor2Component.Lock = m_LockObject2.GetComponent <InteractableLock>(); /*m_ExitDoorComponent.DoorBackgroundObject.SetActive(false); * m_ExitDoorComponent.DoorBottomBorderObject.SetActive(false); * m_ExitDoorComponent.DoorLightObject.SetActive(false); * m_ExitDoorComponent.DoorTopBorderObject.SetActive(false);*/ EXSecretDoor_Normal.SetActive(false); EXSecretDoorDestination.SetActive(false); FakePrefab.MarkAsFakePrefab(EXSecretDoor_Normal); FakePrefab.MarkAsFakePrefab(EXSecretDoorDestination); UnityEngine.Object.DontDestroyOnLoad(EXSecretDoor_Normal); UnityEngine.Object.DontDestroyOnLoad(EXSecretDoorDestination); Base_Castle = null; m_NormalLock = null; }