private IEnumerator DelayedDoorOpen(GameObject targetObject) { yield return(new WaitForSeconds(0.5f)); targetObject.GetComponent <tk2dSpriteAnimator>().Play("Sarco_Door_Open"); AkSoundEngine.PostEvent("Play_OBJ_hugedoor_open_01", targetObject); while (targetObject.GetComponent <tk2dSpriteAnimator>().IsPlaying("Sarco_Door_Open")) { yield return(null); } if (targetObject.GetComponent <SpeculativeRigidbody>().PixelColliders.Count > 2) { targetObject.GetComponent <SpeculativeRigidbody>().PixelColliders[0].Enabled = false; targetObject.GetComponent <SpeculativeRigidbody>().PixelColliders[1].Enabled = false; } GameObject m_NewWarpWing = new GameObject("Belly Warp Wing Thing") { layer = 0 }; m_NewWarpWing.transform.position = m_TargetDoor.transform.position; ExpandUtility.GenerateOrAddToRigidBody(m_NewWarpWing, CollisionLayer.Trap, PixelCollider.PixelColliderGeneration.Manual, IsTrigger: true, UsesPixelsAsUnitSize: true, offset: new IntVector2(7, 12), dimensions: new IntVector2(38, 16)); ExpandWarpManager WarpWingDoor = m_NewWarpWing.AddComponent <ExpandWarpManager>(); WarpWingDoor.TargetRoom = m_TargetRoom; WarpWingDoor.IsOpenForTeleport = true; yield return(null); Destroy(this); yield break; }
private void OnFireStarted() { IntVector2 baseCellPosition = (transform.position.IntXY(VectorConversions.Floor) + new IntVector2(4, 2)); for (int X = -1; X < 2; X++) { for (int Y = -1; Y < 2; Y++) { IntVector2 PositionOffset = baseCellPosition + new IntVector2(X, Y); CellData cellData = GameManager.Instance.Dungeon.data[PositionOffset]; if (cellData != null) { cellData.OnCellGooped = (Action <CellData>)Delegate.Remove(cellData.OnCellGooped, new Action <CellData>(HandleGooped)); } } } specRigidbody.OnRigidbodyCollision = (SpeculativeRigidbody.OnRigidbodyCollisionDelegate)Delegate.Remove(specRigidbody.OnRigidbodyCollision, new SpeculativeRigidbody.OnRigidbodyCollisionDelegate(HandleCollision)); // specRigidbody.OnHitByBeam = (Action<BasicBeamController>)Delegate.Remove(specRigidbody.OnHitByBeam, new Action<BasicBeamController>(HandleBeamCollision)); GameObject PitManager = new GameObject("Jungle Pit Manager") { layer = 0 }; PitManager.transform.position = (transform.position + new Vector3(5, 2)); tk2dSprite PitDummySprite = PitManager.AddComponent <tk2dSprite>(); ExpandUtility.DuplicateSprite(PitDummySprite, ExpandSecretDoorPrefabs.EXSecretDoorMinimapIcon.GetComponent <tk2dSprite>()); tk2dSprite pitSprite = PitManager.GetComponent <tk2dSprite>(); pitSprite.renderer.enabled = false; ExpandUtility.GenerateOrAddToRigidBody(PitManager, CollisionLayer.Trap, PixelCollider.PixelColliderGeneration.Manual, IsTrigger: true, dimensions: new IntVector2(2, 2)); JungleTreePitController junglePitManager = PitManager.AddComponent <JungleTreePitController>(); junglePitManager.targetLevelName = targetLevelName; StartCoroutine(HandleDelayedFireDamage()); }
public void ConfigureOnPlacement(RoomHandler room) { m_ParentRoom = room; m_EntranceTriggerObject = new GameObject("BellyMonsterAwakenTrigger") { layer = 0 }; m_EntranceTriggerObject.transform.position = transform.position - new Vector3(14, 0); // m_EntranceTriggerObject.transform.parent = m_ParentRoom.hierarchyParent; ExpandUtility.GenerateOrAddToRigidBody(m_EntranceTriggerObject, CollisionLayer.Trap, PixelCollider.PixelColliderGeneration.Manual, IsTrigger: true, UsesPixelsAsUnitSize: true, offset: new IntVector2(0, -2), dimensions: new IntVector2(256, (m_ParentRoom.area.dimensions.y + 4 * 16))); ExpandBellyMonsterTriggerHandler EntranceTrigger = m_EntranceTriggerObject.AddComponent <ExpandBellyMonsterTriggerHandler>(); EntranceTrigger.ParentRoom = m_ParentRoom; EntranceTrigger.MonsterController = this; if (EntranceTrigger.specRigidbody) { EntranceTrigger.specRigidbody.OnTriggerCollision = (SpeculativeRigidbody.OnTriggerDelegate)Delegate.Combine(EntranceTrigger.specRigidbody.OnTriggerCollision, new SpeculativeRigidbody.OnTriggerDelegate(EntranceTrigger.HandleTriggerCollision)); } }
private void DoFireAtPosition(IntVector2 position, float timeToLive) { if (!m_GoopDefinition) { m_GoopDefinition = ExpandAssets.LoadOfficialAsset <GoopDefinition>("NapalmGoopThatWorks", ExpandAssets.AssetSource.SharedAuto1); } GameObject newFireGoopObject = new GameObject("Jungle Fire Object" + UnityEngine.Random.Range(0, 99999)); newFireGoopObject.transform.position = position.ToVector3(); // + new Vector3(0.5f, 0.5f); if (newFireGoopObject.transform.position.GetAbsoluteRoom() != null) { newFireGoopObject.transform.SetParent(newFireGoopObject.transform.position.GetAbsoluteRoom().hierarchyParent); } newFireGoopObject.SetActive(false); TimedObjectKiller objectKiller = newFireGoopObject.AddComponent <TimedObjectKiller>(); objectKiller.lifeTime = timeToLive; objectKiller.m_poolType = TimedObjectKiller.PoolType.NonPooled; ExpandUtility.GenerateOrAddToRigidBody(newFireGoopObject, CollisionLayer.Trap, PixelCollider.PixelColliderGeneration.Manual, IsTrigger: true, dimensions: new IntVector2(1, 1)); SpeculativeRigidbody rigidBody = newFireGoopObject.GetComponent <SpeculativeRigidbody>(); rigidBody.OnTriggerCollision = (SpeculativeRigidbody.OnTriggerDelegate)Delegate.Combine(rigidBody.OnTriggerCollision, new SpeculativeRigidbody.OnTriggerDelegate(HandleTriggerCollision)); newFireGoopObject.SetActive(true); }
public static void BuildPrefab(AssetBundle expandSharedAssets1) { ExpandPrefabs.EXBootlegRoomObject = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomPrefab"); ExpandPrefabs.EXBootlegRoomDoorTriggers = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorTriggers"); GameObject m_BorderObject_West = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomBorder_West"); GameObject m_BorderObject_East = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomBorder_East"); GameObject m_BorderObject_North = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomBorder_North"); GameObject m_BorderObject_South = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomBorder_South"); GameObject m_DoorFrameObject = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorFramesTop"); GameObject m_DoorObject = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorFrames"); GameObject m_DoorBlockObject_West = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorBlocker_West"); GameObject m_DoorBlockObject_East = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorBlocker_East"); GameObject m_DoorBlockObject_South = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorBlocker_South"); GameObject m_DoorBlockObject_North = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorBlocker_North"); m_BorderObject_West.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_BorderObject_East.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_BorderObject_North.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_BorderObject_South.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_DoorFrameObject.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_BorderObject_West.transform.localPosition -= new Vector3(3, 3); m_BorderObject_East.transform.localPosition -= new Vector3(3, 3); m_BorderObject_North.transform.localPosition -= new Vector3(3, 3); m_BorderObject_South.transform.localPosition -= new Vector3(3, 3); m_DoorObject.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); m_DoorBlockObject_West.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); m_DoorBlockObject_East.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); m_DoorBlockObject_South.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); m_DoorBlockObject_North.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); // ExpandPrefabs.EXBootlegRoomObject.SetActive(false); // ExpandPrefabs.EXBootlegRoomDoorTriggers.SetActive(false); ItemBuilder.AddSpriteToObject(ExpandPrefabs.EXBootlegRoomObject, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_BottomLayer"), false, false); ItemBuilder.AddSpriteToObject(m_BorderObject_West, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_ExitTiles_West.png"), false, false); ItemBuilder.AddSpriteToObject(m_BorderObject_East, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_ExitTiles_East.png"), false, false); ItemBuilder.AddSpriteToObject(m_BorderObject_North, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_ExitTiles_North.png"), false, false); ItemBuilder.AddSpriteToObject(m_BorderObject_South, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_ExitTiles_South.png"), false, false); ItemBuilder.AddSpriteToObject(m_DoorFrameObject, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_TopLayer"), false, false); ItemBuilder.AddSpriteToObject(m_DoorObject, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_Doors"), false, false); ItemBuilder.AddSpriteToObject(m_DoorBlockObject_West, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_DoorBlock_West"), false, false); ItemBuilder.AddSpriteToObject(m_DoorBlockObject_East, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_DoorBlock_East"), false, false); ItemBuilder.AddSpriteToObject(m_DoorBlockObject_South, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_DoorBlock_South"), false, false); ItemBuilder.AddSpriteToObject(m_DoorBlockObject_North, expandSharedAssets1.LoadAsset <Texture2D>("BootlegRoom_DoorBlock_North"), false, false); tk2dSprite m_BootlegRoomSprite = ExpandPrefabs.EXBootlegRoomObject.GetComponent <tk2dSprite>(); m_BootlegRoomSprite.HeightOffGround = -3f; m_BootlegRoomSprite.UpdateZDepth(); tk2dSprite m_BorderSprite_West = m_BorderObject_West.GetComponent <tk2dSprite>(); m_BorderSprite_West.HeightOffGround = -3f; m_BorderSprite_West.UpdateZDepth(); tk2dSprite m_BorderSprite_East = m_BorderObject_East.GetComponent <tk2dSprite>(); m_BorderSprite_East.HeightOffGround = -3f; m_BorderSprite_East.UpdateZDepth(); tk2dSprite m_BorderSprite_North = m_BorderObject_North.GetComponent <tk2dSprite>(); m_BorderSprite_North.HeightOffGround = -3f; m_BorderSprite_North.UpdateZDepth(); tk2dSprite m_BorderSprite_South = m_BorderObject_South.GetComponent <tk2dSprite>(); m_BorderSprite_South.HeightOffGround = -3f; m_BorderSprite_South.UpdateZDepth(); tk2dSprite m_DoorSprites = m_DoorObject.GetComponent <tk2dSprite>(); m_DoorSprites.HeightOffGround = -2.5f; m_DoorSprites.UpdateZDepth(); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(1, 6)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(1, 6), offset: new IntVector2(0, 8)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(1, 6), offset: new IntVector2(19, 0)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(1, 6), offset: new IntVector2(19, 8)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(8, 1), offset: new IntVector2(1, 0)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(8, 1), offset: new IntVector2(11, 0)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(8, 1), offset: new IntVector2(1, 13)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(8, 1), offset: new IntVector2(11, 13)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(16, 16)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(16, 128)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(296, 16)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(296, 128)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(24, 16)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(176, 16)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(24, 200)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(176, 200)); /*ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(16, 16)); * ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(16, 128)); * ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(296, 16)); * ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(296, 128)); * ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(24, 16)); * ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(176, 16)); * ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(24, 200)); * ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.EnemyBlocker, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(176, 200));*/ ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomDoorTriggers, CollisionLayer.Trap, PixelCollider.PixelColliderGeneration.Manual, IsTrigger: true, dimensions: new IntVector2(16, 10), offset: new IntVector2(2, 2)); ExpandBootlegRoomPlaceable m_BootlegRoomPlacable = ExpandPrefabs.EXBootlegRoomObject.AddComponent <ExpandBootlegRoomPlaceable>(); m_BootlegRoomPlacable.ExitTiles_West = m_BorderObject_West; m_BootlegRoomPlacable.ExitTiles_East = m_BorderObject_East; m_BootlegRoomPlacable.ExitTiles_North = m_BorderObject_North; m_BootlegRoomPlacable.ExitTiles_South = m_BorderObject_South; m_BootlegRoomPlacable.DoorFrames = m_DoorFrameObject; ExpandBootlegRoomDoorsPlacables m_BootlegDoorBlockersPlacable = ExpandPrefabs.EXBootlegRoomDoorTriggers.AddComponent <ExpandBootlegRoomDoorsPlacables>(); m_BootlegDoorBlockersPlacable.Doors = m_DoorObject; m_BootlegDoorBlockersPlacable.DoorBlocker_West = m_DoorBlockObject_West; m_BootlegDoorBlockersPlacable.DoorBlocker_East = m_DoorBlockObject_East; m_BootlegDoorBlockersPlacable.DoorBlocker_South = m_DoorBlockObject_South; m_BootlegDoorBlockersPlacable.DoorBlocker_North = m_DoorBlockObject_North; /*FakePrefab.MarkAsFakePrefab(ExpandPrefabs.EXBootlegRoomObject); * FakePrefab.MarkAsFakePrefab(ExpandPrefabs.EXBootlegRoomDoorTriggers); * DontDestroyOnLoad(ExpandPrefabs.EXBootlegRoomObject); * DontDestroyOnLoad(ExpandPrefabs.EXBootlegRoomDoorTriggers);*/ }
public void ConfigureOnPlacement(RoomHandler room) { m_ParentRoom = room; Doors.transform.parent = room.hierarchyParent; Doors.GetComponent <tk2dSprite>().HeightOffGround = -2f; Doors.GetComponent <tk2dSprite>().UpdateZDepth(); DoorBlocker_West.transform.parent = room.hierarchyParent; DoorBlocker_East.transform.parent = room.hierarchyParent; DoorBlocker_South.transform.parent = room.hierarchyParent; DoorBlocker_North.transform.parent = room.hierarchyParent; DoorBlocker_West.GetComponent <tk2dSprite>().HeightOffGround = -1f; DoorBlocker_West.GetComponent <tk2dSprite>().UpdateZDepth(); DoorBlocker_East.GetComponent <tk2dSprite>().HeightOffGround = -1f; DoorBlocker_East.GetComponent <tk2dSprite>().UpdateZDepth(); DoorBlocker_South.GetComponent <tk2dSprite>().HeightOffGround = -1f; DoorBlocker_South.GetComponent <tk2dSprite>().UpdateZDepth(); DoorBlocker_North.GetComponent <tk2dSprite>().HeightOffGround = -1f; DoorBlocker_North.GetComponent <tk2dSprite>().UpdateZDepth(); GameObject m_DoorBlockersObject = new GameObject("BootlegRoomPhantomDoorBlockerCollision"); m_DoorBlockersObject.transform.position = gameObject.transform.position; m_DoorBlockersObject.transform.parent = m_ParentRoom.hierarchyParent; ExpandUtility.GenerateOrAddToRigidBody(m_DoorBlockersObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, CollideWithOthers: true, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(24, 32), offset: new IntVector2(0, 96)); ExpandUtility.GenerateOrAddToRigidBody(m_DoorBlockersObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, CollideWithOthers: true, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(24, 32), offset: new IntVector2(296, 96)); ExpandUtility.GenerateOrAddToRigidBody(m_DoorBlockersObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, CollideWithOthers: true, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 24), offset: new IntVector2(144, 0)); ExpandUtility.GenerateOrAddToRigidBody(m_DoorBlockersObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, CollideWithOthers: true, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(32, 24), offset: new IntVector2(144, 200)); m_DoorBlockersRigidBody = m_DoorBlockersObject.GetComponent <SpeculativeRigidbody>(); if (room.area.instanceUsedExits != null && room.area.instanceUsedExits.Count > 0) { foreach (PrototypeRoomExit exit in room.area.instanceUsedExits) { if (exit.exitDirection == DungeonData.Direction.WEST) { m_DoorBlockersRigidBody.PixelColliders[0].Enabled = false; DoorBlocker_West.SetActive(false); } else if (exit.exitDirection == DungeonData.Direction.EAST) { m_DoorBlockersRigidBody.PixelColliders[1].Enabled = false; DoorBlocker_East.SetActive(false); } else if (exit.exitDirection == DungeonData.Direction.SOUTH) { m_DoorBlockersRigidBody.PixelColliders[2].Enabled = false; DoorBlocker_South.SetActive(false); } else if (exit.exitDirection == DungeonData.Direction.NORTH) { m_DoorBlockersRigidBody.PixelColliders[3].Enabled = false; DoorBlocker_North.SetActive(false); } } m_DoorBlockersRigidBody.Reinitialize(); } }
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; }
public static void BuildPrefab(AssetBundle expandSharedAssets1) { ExpandPrefabs.EXBootlegRoomObject = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomPrefab"); ExpandPrefabs.EXBootlegRoomDoorTriggers = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorTriggers"); GameObject m_BorderObject_West = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomBorder_West"); GameObject m_BorderObject_East = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomBorder_East"); GameObject m_BorderObject_North = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomBorder_North"); GameObject m_BorderObject_South = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomBorder_South"); GameObject m_DoorFrameObject = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorFramesTop"); GameObject m_DoorObject = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorFrames"); GameObject m_DoorBlockObject_West = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorBlocker_West"); GameObject m_DoorBlockObject_East = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorBlocker_East"); GameObject m_DoorBlockObject_South = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorBlocker_South"); GameObject m_DoorBlockObject_North = expandSharedAssets1.LoadAsset <GameObject>("BootlegRoomDoorBlocker_North"); m_BorderObject_West.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_BorderObject_East.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_BorderObject_North.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_BorderObject_South.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_DoorFrameObject.transform.SetParent(ExpandPrefabs.EXBootlegRoomObject.transform); m_BorderObject_West.transform.localPosition -= new Vector3(3, 3); m_BorderObject_East.transform.localPosition -= new Vector3(3, 3); m_BorderObject_North.transform.localPosition -= new Vector3(3, 3); m_BorderObject_South.transform.localPosition -= new Vector3(3, 3); m_DoorObject.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); m_DoorBlockObject_West.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); m_DoorBlockObject_East.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); m_DoorBlockObject_South.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); m_DoorBlockObject_North.transform.SetParent(ExpandPrefabs.EXBootlegRoomDoorTriggers.transform); SpriteSerializer.AddSpriteToObject(m_DoorFrameObject, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_TopLayer"); SpriteSerializer.AddSpriteToObject(m_DoorBlockObject_West, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_DoorBlock_West"); SpriteSerializer.AddSpriteToObject(m_DoorBlockObject_East, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_DoorBlock_East"); SpriteSerializer.AddSpriteToObject(m_DoorBlockObject_South, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_DoorBlock_South"); SpriteSerializer.AddSpriteToObject(m_DoorBlockObject_North, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_DoorBlock_North"); tk2dSprite m_BootlegRoomSprite = SpriteSerializer.AddSpriteToObject(ExpandPrefabs.EXBootlegRoomObject, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_BottomLayer"); m_BootlegRoomSprite.HeightOffGround = -3f; tk2dSprite m_BorderSprite_West = SpriteSerializer.AddSpriteToObject(m_BorderObject_West, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_ExitTiles_West"); m_BorderSprite_West.HeightOffGround = -3f; tk2dSprite m_BorderSprite_East = SpriteSerializer.AddSpriteToObject(m_BorderObject_East, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_ExitTiles_East"); m_BorderSprite_East.HeightOffGround = -3f; tk2dSprite m_BorderSprite_North = SpriteSerializer.AddSpriteToObject(m_BorderObject_North, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_ExitTiles_North"); m_BorderSprite_North.HeightOffGround = -3f; tk2dSprite m_BorderSprite_South = SpriteSerializer.AddSpriteToObject(m_BorderObject_South, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_ExitTiles_South"); m_BorderSprite_South.HeightOffGround = -3f; tk2dSprite m_DoorSprites = SpriteSerializer.AddSpriteToObject(m_DoorObject, ExpandPrefabs.EXBootlegRoomCollection, "BootlegRoom_Doors"); m_DoorSprites.HeightOffGround = -2.5f; ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(1, 6)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(1, 6), offset: new IntVector2(0, 8)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(1, 6), offset: new IntVector2(19, 0)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(1, 6), offset: new IntVector2(19, 8)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(8, 1), offset: new IntVector2(1, 0)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(8, 1), offset: new IntVector2(11, 0)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(8, 1), offset: new IntVector2(1, 13)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, dimensions: new IntVector2(8, 1), offset: new IntVector2(11, 13)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(16, 16)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(16, 128)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(296, 16)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(8, 80), offset: new IntVector2(296, 128)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(24, 16)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(176, 16)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(24, 200)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomObject, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, dimensions: new IntVector2(120, 8), offset: new IntVector2(176, 200)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXBootlegRoomDoorTriggers, CollisionLayer.Trap, PixelCollider.PixelColliderGeneration.Manual, IsTrigger: true, dimensions: new IntVector2(16, 10), offset: new IntVector2(2, 2)); ExpandBootlegRoomPlaceable m_BootlegRoomPlacable = ExpandPrefabs.EXBootlegRoomObject.AddComponent <ExpandBootlegRoomPlaceable>(); m_BootlegRoomPlacable.ExitTiles_West = m_BorderObject_West; m_BootlegRoomPlacable.ExitTiles_East = m_BorderObject_East; m_BootlegRoomPlacable.ExitTiles_North = m_BorderObject_North; m_BootlegRoomPlacable.ExitTiles_South = m_BorderObject_South; m_BootlegRoomPlacable.DoorFrames = m_DoorFrameObject; ExpandBootlegRoomDoorsPlacables m_BootlegDoorBlockersPlacable = ExpandPrefabs.EXBootlegRoomDoorTriggers.AddComponent <ExpandBootlegRoomDoorsPlacables>(); m_BootlegDoorBlockersPlacable.Doors = m_DoorObject; m_BootlegDoorBlockersPlacable.DoorBlocker_West = m_DoorBlockObject_West; m_BootlegDoorBlockersPlacable.DoorBlocker_East = m_DoorBlockObject_East; m_BootlegDoorBlockersPlacable.DoorBlocker_South = m_DoorBlockObject_South; m_BootlegDoorBlockersPlacable.DoorBlocker_North = m_DoorBlockObject_North; }
public static void BuildPrefab() { ExpandPrefabs.EXFriendlyForgeHammer = new GameObject("Friendly_Forge_Hammer") { layer = 22 }; GameObject m_HitEffectObject = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().HitEffectAnimator.gameObject); GameObject m_TargetAnimatorObject = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().TargetAnimator.gameObject); GameObject m_ShadowObject = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().ShadowAnimator.gameObject); GameObject m_ShootPointObject = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().ShootPoint.gameObject); m_ShootPointObject.name = ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().ShootPoint.gameObject.name; m_HitEffectObject.transform.parent = ExpandPrefabs.EXFriendlyForgeHammer.transform; m_TargetAnimatorObject.transform.parent = ExpandPrefabs.EXFriendlyForgeHammer.transform; m_ShadowObject.transform.parent = ExpandPrefabs.EXFriendlyForgeHammer.transform; m_ShootPointObject.transform.parent = ExpandPrefabs.EXFriendlyForgeHammer.transform; ExpandPrefabs.EXFriendlyForgeHammer.SetActive(false); m_ShadowObject.GetComponent <tk2dSpriteAnimator>().playAutomatically = false; m_ShadowObject.GetComponent <tk2dSpriteAnimator>().DefaultClipId = 28; tk2dSprite m_NewHammerSprite = ExpandPrefabs.EXFriendlyForgeHammer.AddComponent <tk2dSprite>(); ExpandUtility.DuplicateSprite(m_NewHammerSprite, ExpandPrefabs.ForgeHammer.GetComponent <tk2dSprite>()); tk2dSpriteAnimation m_SourceHammerAnimationLibrary = ExpandPrefabs.ForgeHammer.GetComponent <tk2dSpriteAnimator>().Library; tk2dSpriteAnimation m_HammerAnimationLibrary = ExpandPrefabs.EXFriendlyForgeHammer.AddComponent <tk2dSpriteAnimation>(); List <tk2dSpriteAnimationClip> m_Clips = new List <tk2dSpriteAnimationClip>(); foreach (tk2dSpriteAnimationClip clip in m_SourceHammerAnimationLibrary.clips) { if (!string.IsNullOrEmpty(clip.name)) { if (clip.name.ToLower().StartsWith("hammer_right_out")) { m_Clips.Add(ExpandUtility.DuplicateAnimationClip(clip)); } else if (clip.name.ToLower().StartsWith("hammer_left_out")) { m_Clips.Add(ExpandUtility.DuplicateAnimationClip(clip)); } else if (clip.name.ToLower().StartsWith("hammer_right_slam")) { m_Clips.Add(ExpandUtility.DuplicateAnimationClip(clip)); } else if (clip.name.ToLower().StartsWith("hammer_left_slam")) { m_Clips.Add(ExpandUtility.DuplicateAnimationClip(clip)); } } } if (m_Clips.Count > 0) { m_HammerAnimationLibrary.clips = m_Clips.ToArray(); } ExpandUtility.GenerateSpriteAnimator(ExpandPrefabs.EXFriendlyForgeHammer, m_HammerAnimationLibrary, 0, 0, false, false, false, false, false, false, 0, 0, false, false, false); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXFriendlyForgeHammer, CollisionLayer.HighObstacle, PixelCollider.PixelColliderGeneration.Manual, true, true, false, false, false, false, false, true, new IntVector2(30, 24), new IntVector2(16, 24)); ExpandUtility.GenerateOrAddToRigidBody(ExpandPrefabs.EXFriendlyForgeHammer, CollisionLayer.LowObstacle, PixelCollider.PixelColliderGeneration.Manual, true, true, false, false, false, false, false, true, new IntVector2(30, 8), new IntVector2(16, 16)); AIBulletBank m_HammerBulletBank = ExpandPrefabs.EXFriendlyForgeHammer.AddComponent <AIBulletBank>(); m_HammerBulletBank.useDefaultBulletIfMissing = true; m_HammerBulletBank.transforms = new List <Transform>(0); m_HammerBulletBank.Bullets = new List <AIBulletBank.Entry>() { new AIBulletBank.Entry() { Name = "default", BulletObject = ExpandPrefabs.EXFriendlyForgeHammerBullet, OverrideProjectile = false, PlayAudio = false, AudioSwitch = string.Empty, AudioEvent = string.Empty, AudioLimitOncePerFrame = false, AudioLimitOncePerAttack = false, MuzzleLimitOncePerFrame = false, MuzzleInheritsTransformDirection = false, SpawnShells = false, ShellForce = 1.75f, ShellForceVariance = 0.75f, DontRotateShell = false, ShellGroundOffset = 0, ShellsLimitOncePerFrame = false, rampBullets = false, rampStartHeight = 0, rampTime = 0, conditionalMinDegFromNorth = 0, forceCanHitEnemies = true, suppressHitEffectsIfOffscreen = false, preloadCount = 0, ProjectileData = new ProjectileData() { damage = 0, speed = 0, range = 0, damping = 0, UsesCustomAccelerationCurve = false, AccelerationCurve = new AnimationCurve(), CustomAccelerationCurveDuration = 0, onDestroyBulletScript = new BulletScriptSelector() { scriptTypeName = string.Empty } }, MuzzleFlashEffects = new VFXPool() { type = VFXPoolType.None, effects = new VFXComplex[0] } } }; GoopDefinition m_HammerGoopDefinition = Instantiate(ExpandPrefabs.ForgeHammer.GetComponent <ForgeHammerController>().GoopToDo); ExpandForgeHammerComponent EXFriendlyHammerController = ExpandPrefabs.EXFriendlyForgeHammer.AddComponent <ExpandForgeHammerComponent>(); EXFriendlyHammerController.HitEffectAnimator = m_HitEffectObject.GetComponent <tk2dSpriteAnimator>(); EXFriendlyHammerController.TargetAnimator = m_TargetAnimatorObject.GetComponent <tk2dSpriteAnimator>(); EXFriendlyHammerController.ShadowAnimator = m_ShadowObject.GetComponent <tk2dSpriteAnimator>(); EXFriendlyHammerController.ShootPoint = m_ShootPointObject.transform; EXFriendlyHammerController.GoopToDo = m_HammerGoopDefinition; FakePrefab.MarkAsFakePrefab(ExpandPrefabs.EXFriendlyForgeHammer); DontDestroyOnLoad(ExpandPrefabs.EXFriendlyForgeHammer); }
public static void Init(AssetBundle expandSharedAssets1) { SonicRingObject = expandSharedAssets1.LoadAsset <GameObject>("EXSonicRing"); SpriteSerializer.AddSpriteToObject(SonicRingObject, ExpandPrefabs.EXItemCollection, "SonicRing_Idle_05"); List <string> m_RingFrames = new List <string>(); for (int i = 1; i < 16; i++) { if (i < 10) { m_RingFrames.Add("SonicRing_Idle_0" + i.ToString()); } else { m_RingFrames.Add("SonicRing_Idle_" + i.ToString()); } } ExpandUtility.GenerateSpriteAnimator(SonicRingObject, playAutomatically: true); ExpandUtility.AddAnimation(SonicRingObject.GetComponent <tk2dSpriteAnimator>(), ExpandPrefabs.EXItemCollection.GetComponent <tk2dSpriteCollectionData>(), m_RingFrames, "idle", tk2dSpriteAnimationClip.WrapMode.Loop); ExpandUtility.GenerateOrAddToRigidBody(SonicRingObject, CollisionLayer.Pickup, PixelCollider.PixelColliderGeneration.Manual, UsesPixelsAsUnitSize: true, offset: new IntVector2(0, 1), dimensions: new IntVector2(15, 14)); SonicRingObject.GetComponent <SpeculativeRigidbody>().PixelColliders[0].IsTrigger = true; PickupMover pickupMover = SonicRingObject.AddComponent <PickupMover>(); pickupMover.pathInterval = 0.25f; pickupMover.acceleration = 7; pickupMover.maxSpeed = 15; pickupMover.minRadius = 0; SonicRing sonicRing = SonicRingObject.AddComponent <SonicRing>(); string name = "Sonic Ring"; string shortDesc = "A Ring"; string longDesc = "A Simple Ring. Equilivent to one casing."; ItemBuilder.SetupEXItem(sonicRing, name, shortDesc, longDesc, "ex", false); sonicRing.quality = ItemQuality.COMMON; sonicRing.ItemSpansBaseQualityTiers = false; sonicRing.additionalMagnificenceModifier = 0; sonicRing.ItemRespectsHeartMagnificence = false; sonicRing.associatedItemChanceMods = new LootModData[0]; sonicRing.contentSource = ContentSource.BASE; sonicRing.ShouldBeExcludedFromShops = false; sonicRing.CanBeDropped = true; sonicRing.PreventStartingOwnerFromDropping = false; sonicRing.PersistsOnDeath = false; sonicRing.PersistsOnPurchase = false; sonicRing.RespawnsIfPitfall = true; sonicRing.PreventSaveSerialization = false; sonicRing.IgnoredByRat = false; sonicRing.SaveFlagToSetOnAcquisition = 0; sonicRing.UsesCustomCost = false; sonicRing.CustomCost = 0; sonicRing.CanBeSold = true; sonicRing.ForcedPositionInAmmonomicon = -1; sonicRing.currencyValue = 1; sonicRing.IsMetaCurrency = false; sonicRing.overrideBloopSpriteName = "SonicRing_Idle_05"; RingID = sonicRing.PickupObjectId; }