public static IEnumerator SpawnHammer(PlayerController user, float spawnDelay = 0) { if (spawnDelay > 0) { yield return(new WaitForSeconds(spawnDelay)); } // Tools.Print("Spawning A Friendly Hammer!", "FFFFFF", false); RoomHandler room = user.CurrentRoom; IntVector2? spawnPosition = room.GetRandomVisibleClearSpot(2, 2); yield return(new WaitForSeconds(1f)); if (!spawnPosition.HasValue) { spawnPosition = (user.CenterPosition.ToIntVector2() - user.CurrentRoom.area.basePosition); } if (spawnPosition.HasValue) { RoomHandler currentRoom = user.CurrentRoom; GameObject ForgeHammer = DungeonPlaceableUtility.InstantiateDungeonPlaceable(ExpandPrefabs.EXFriendlyForgeHammer, currentRoom, spawnPosition.Value, true); yield return(null); if (ForgeHammer) { ForgeHammer.AddComponent <ExpandForgeHammerComponent>(); ExpandForgeHammerComponent expandForgeHammer = ForgeHammer.GetComponent <ExpandForgeHammerComponent>(); expandForgeHammer.m_Owner = user; expandForgeHammer.ConfigureOnPlacement(currentRoom); } yield return(null); } yield break; }
private void HandleRatBossSetup() { GameObject SpecialRatBoss = DungeonPlaceableUtility.InstantiateDungeonPlaceable(EnemyDatabase.GetOrLoadByGuid("6868795625bd46f3ae3e4377adce288b").gameObject, m_ParentRoom, new IntVector2(17, 28), true, AIActor.AwakenAnimationType.Awaken, true); AIActor RatBossAIActor = SpecialRatBoss.GetComponent <AIActor>(); if (RatBossAIActor != null) { PickupObject.ItemQuality targetQuality = (UnityEngine.Random.value >= 0.2f) ? ((!BraveUtility.RandomBool()) ? PickupObject.ItemQuality.C : PickupObject.ItemQuality.D) : PickupObject.ItemQuality.B; GenericLootTable lootTable = (!BraveUtility.RandomBool()) ? GameManager.Instance.RewardManager.GunsLootTable : GameManager.Instance.RewardManager.ItemsLootTable; PickupObject item = LootEngine.GetItemOfTypeAndQuality <PickupObject>(targetQuality, lootTable, false); PickupObject item2 = LootEngine.GetItemOfTypeAndQuality <PickupObject>(targetQuality, lootTable, false); Destroy(RatBossAIActor.gameObject.GetComponent <ResourcefulRatDeathController>()); Destroy(RatBossAIActor.gameObject.GetComponent <ResourcefulRatRewardRoomController>()); RatBossAIActor.State = AIActor.ActorState.Awakening; RatBossAIActor.StealthDeath = true; RatBossAIActor.healthHaver.gameObject.AddComponent <ExpandSpawnGlitchObjectOnDeath>(); ExpandSpawnGlitchObjectOnDeath ObjectSpawnerComponent = RatBossAIActor.healthHaver.gameObject.GetComponent <ExpandSpawnGlitchObjectOnDeath>(); ObjectSpawnerComponent.spawnRatCorpse = true; ObjectSpawnerComponent.ratCorpseSpawnsKey = true; ObjectSpawnerComponent.parentEnemyWasRat = true; if (item && item2) { RatBossAIActor.AdditionalSafeItemDrops = new List <PickupObject> { item, item2 }; } RatBossAIActor.healthHaver.enabled = true; RatBossAIActor.healthHaver.forcePreventVictoryMusic = true; RatBossAIActor.ConfigureOnPlacement(m_ParentRoom); RatBossAIActor.specRigidbody.CollideWithOthers = true; } }
public static void AddRainStormToRoom(RoomHandler targetRoom, IntVector2 targetLocation, float RainIntensity = 1f, bool useCustomIntensity = false) { if (targetRoom == null | targetLocation == null) { return; } GameObject m_RainObject = new GameObject("RainFXObject"); m_RainObject.AddComponent <ChaosWeatherPlacable>(); GameObject m_Rain = DungeonPlaceableUtility.InstantiateDungeonPlaceable(m_RainObject, targetRoom, targetLocation, true); ChaosWeatherPlacable m_RainComponent = m_Rain.GetComponent <ChaosWeatherPlacable>(); if (useCustomIntensity) { m_RainComponent.useCustomIntensity = true; m_RainComponent.RainIntensity = RainIntensity; } m_RainComponent.ConfigureOnPlacement(targetRoom); return; }