private IEnumerator SpawnTargets(PlayerController player, Gun gun) { float num = (gun.reloadTime.RoundToNearest(1) - 1) * 2; for (int i = 0; i < (gun.reloadTime.RoundToNearest(1) - 1) * 2; i++) { Vector2 position = player.CurrentRoom.GetRandomVisibleClearSpot(1, 1).ToVector2(); targetObjects.Add(UnityEngine.Object.Instantiate <GameObject>(PrizeRifle.targetPrefab, position, Quaternion.identity)); tk2dBaseSprite targetSprite = targetObjects[i].GetComponent <tk2dBaseSprite>(); SpriteOutlineManager.AddOutlineToSprite(targetSprite, Color.white); LootEngine.DoDefaultItemPoof(targetSprite.WorldCenter, false, false); SpeculativeRigidbody body = targetObjects[i].GetComponent <SpeculativeRigidbody>(); body.OnRigidbodyCollision += this.HandleRigidbodyCollision; } for (int i = 0; i < (gun.reloadTime.RoundToNearest(1) - 1) * 2; i++) { yield return(new WaitForSeconds(0.5f)); GameObject obj3 = SpawnManager.SpawnProjectile(gun.DefaultModule.projectiles[0].gameObject, (gun.CurrentOwner as PlayerController).sprite.WorldCenter, Quaternion.Euler(0f, 0f, gun.CurrentAngle)); Projectile proj3 = obj3.GetComponent <Projectile>(); proj3.Owner = gun.CurrentOwner; proj3.collidesWithEnemies = false; if (proj3.gameObject.GetComponent <BounceProjModifier>() != null) { BounceProjModifier boing = proj3.GetComponent <BounceProjModifier>(); proj3.ChangeTintColorShader(0f, BraveUtility.GetRainbowColor(boing.numberOfBounces)); boing.OnBounceContext += this.OnBounce; } } }
private void DestroyMushroom(bool DestroyAfterAnimation = true) { if (DestroyVFX) { SpawnManager.SpawnVFX(DestroyVFX, specRigidbody.UnitCenter, Quaternion.identity); } else { LootEngine.DoDefaultItemPoof(specRigidbody.UnitCenter, false, false); } if (!string.IsNullOrEmpty(BreakAnimation)) { if (DestroyAfterAnimation) { spriteAnimator.PlayAndDestroyObject(BreakAnimation, null); } else { spriteAnimator.PlayAndDisableRenderer(BreakAnimation); } } else { if (DestroyAfterAnimation) { Destroy(gameObject); } } }
private IEnumerator DelayedDestroy(float additionalDelay) { spriteAnimator.Play(TriggerAnimation); float elapsed = 0; float delay = (2.5f + additionalDelay); while (elapsed < delay) { elapsed += BraveTime.DeltaTime; yield return(null); } spriteAnimator.Play(BreakAnimation); if (DestroyVFX) { SpawnManager.SpawnVFX(DestroyVFX, specRigidbody.UnitCenter, Quaternion.identity); } else { LootEngine.DoDefaultItemPoof(specRigidbody.UnitCenter, false, false); } yield return(null); if (m_TriggerVFX) { Destroy(m_TriggerVFX); } spriteAnimator.PlayAndDestroyObject(BreakAnimation); yield break; }
protected override void DoActiveEffect(PlayerController user) { if (GameManager.Instance.CurrentLevelOverrideState == GameManager.LevelOverrideState.END_TIMES) { return; } DebrisObject debrisObject = user.DropActiveItem(this, 10f, false); if (debrisObject) { AIActor[] currentActors = FindObjectsOfType <AIActor>(); if (currentActors != null && currentActors.Length > 0) { foreach (AIActor actor in currentActors) { if (!string.IsNullOrEmpty(actor.name)) { if (actor.name.ToLower().Contains("companionpet")) { LootEngine.DoDefaultItemPoof(actor.CenterPosition, false, false); actor.EraseFromExistence(false); } } } } MonsterBall component = debrisObject.GetComponent <MonsterBall>(); // component.spriteAnimator.Play("monster_ball_throw"); component.m_containsEnemy = this.m_containsEnemy; component.m_storedEnemyGuid = this.m_storedEnemyGuid; component.m_wasBlackPhantom = this.m_wasBlackPhantom; component.m_Debug = this.m_Debug; DebrisObject debrisObject2 = debrisObject; debrisObject2.OnGrounded += this.HandleActiveTossedBallGrounded; } }
private void HandleActiveTossedBallGrounded(DebrisObject obj) { obj.OnGrounded -= this.HandleActiveTossedBallGrounded; MonsterBall component = obj.GetComponent <MonsterBall>(); //component.spriteAnimator.Play("monster_ball_open"); AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(component.m_storedEnemyGuid); if (orLoadByGuid == null) { if (m_Debug) { ETGModConsole.Log("[Monster_Ball] Tried to spawn an unknown AIActor! (Enemy GUID not found)"); } component.m_containsEnemy = false; component.m_wasBlackPhantom = false; component.m_storedEnemyGuid = string.Empty; component.IsCurrentlyActive = false; component.ApplyCooldown(this.LastOwner); return; } IntVector2 bestRewardLocation = obj.transform.position.GetAbsoluteRoom().GetBestRewardLocation(orLoadByGuid.Clearance, obj.sprite.WorldCenter, true); AIActor m_CachedEnemy = AIActor.Spawn(orLoadByGuid, bestRewardLocation, obj.transform.position.GetAbsoluteRoom(), true, AIActor.AwakenAnimationType.Default, true); // m_CachedEnemy.ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1f, null); this.MakeCompanion(this.LastOwner, m_CachedEnemy, component.m_wasBlackPhantom); LootEngine.DoDefaultItemPoof(m_CachedEnemy.CenterPosition, false, false); component.m_containsEnemy = false; component.m_storedEnemyGuid = string.Empty; component.IsCurrentlyActive = false; component.ApplyCooldown(this.LastOwner); }
private void ClearTargets() { foreach (GameObject target in this.targetObjects) { SpeculativeRigidbody body = target.GetComponent <SpeculativeRigidbody>(); LootEngine.DoDefaultItemPoof(body.UnitCenter); UnityEngine.Object.Destroy(target); } this.targetObjects.Clear(); }
private void Player_OnKilledEnemyContext(PlayerController player, HealthHaver arg2) { if (arg2 && arg2.specRigidbody && player && player.CurrentRoom != null) { Vector2 position = arg2.specRigidbody.UnitCenterRight; Kills++; if (player.IsValidPlayerPosition(position)) { player.WarpToPoint(position); LootEngine.DoDefaultItemPoof(position); } } }
private void ClearBox() { GameUIRoot.Instance.ShowCoreUI(string.Empty); m_boxIsExtant = false; TextBoxManager.ClearTextBox(textboxSpawnPoint); if (DestroyedOnFinish) { GetAbsoluteParentRoom().DeregisterInteractable(this); RoomHandler.unassignedInteractableObjects.Remove(this); LootEngine.DoDefaultItemPoof(sprite.WorldCenter, false, false); Destroy(gameObject); } }
private void ItemGiver(PlayerController player) { if (BoxOTools.BasicRandom(.91f) && player && player.specRigidbody && !player.CurrentRoom.PlayerHasTakenDamageInThisRoom) { if (Owner.PlayerHasActiveSynergy("Lucky Bird")) { GameManager.Instance.RewardManager.SpawnTotallyRandomItem(player.specRigidbody.UnitCenter, ItemQuality.A, ItemQuality.S); } else { GameManager.Instance.RewardManager.SpawnTotallyRandomItem(player.specRigidbody.UnitCenter); } LootEngine.DoDefaultItemPoof(player.specRigidbody.UnitCenter); } }
private void Player_OnKilledEnemyContext(PlayerController arg1, HealthHaver arg2) { float curse = arg1.stats.GetStatValue(PlayerStats.StatType.Curse); if (BoxOTools.BasicRandom(.87f - 0.0025f * curse) && arg2 && arg2.aiActor && arg2.aiActor.IsBlackPhantom) { if (Owner.PlayerHasActiveSynergy("Lucky Bird")) { //This synergy f*****g sucks you gotta remove it GameManager.Instance.RewardManager.SpawnTotallyRandomItem(arg2.specRigidbody.UnitCenter, ItemQuality.A, ItemQuality.S); } else { GameManager.Instance.RewardManager.SpawnTotallyRandomItem(arg2.specRigidbody.UnitCenter); } LootEngine.DoDefaultItemPoof(arg2.specRigidbody.UnitCenter); } }
private IEnumerator HandleDuration() { float duration = 2f; float elapsed = 0f; while (elapsed < duration) { elapsed += BraveTime.DeltaTime; if (base.aiActor.CompanionOwner == null || base.aiActor.CompanionOwner.CurrentGun == null || base.aiActor.CompanionOwner.CurrentGun.GetComponent <JunkansRevengeController>() == null) { break; } yield return(null); } LootEngine.DoDefaultItemPoof(base.aiActor.sprite.WorldCenter); base.aiActor.EraseFromExistence(true); yield break; }
private void HandleHit(Projectile arg1, SpeculativeRigidbody arg2, bool arg3) { if (arg2.aiActor != null && !arg2.healthHaver.IsBoss && !arg2.healthHaver.IsDead && arg2.aiActor.behaviorSpeculator && !arg2.aiActor.IsHarmlessEnemy && arg2.aiActor != null) { GameActorEffect poison = arg2.aiActor.GetEffect(DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefs[0]).goopDefinition.HealthModifierEffect.effectIdentifier); if (poison != null) { AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("8b43a5c59b854eb780f9ab669ec26b7a"); arg2.aiActor.EraseFromExistenceWithRewards(true); AIActor aiactor = AIActor.Spawn(orLoadByGuid, arg2.aiActor.CenterPosition, arg2.transform.position.GetAbsoluteRoom(), true, AIActor.AwakenAnimationType.Awaken, true); LootEngine.DoDefaultItemPoof(aiactor.CenterPosition, false, false); aiactor.DiesOnCollison = true; aiactor.ImmuneToAllEffects = true; //arg2.aiActor.Transmogrify(orLoadByGuid, (GameObject)ResourceCache.Acquire("Global VFX/VFX_Item_Spawn_Poof")); } } }
protected override void DoEffect(PlayerController user) { base.DoEffect(user); foreach (AIActor aiactor in user.CurrentRoom.GetActiveEnemies(Dungeonator.RoomHandler.ActiveEnemyType.All)) { if (aiactor != null && aiactor.healthHaver != null && aiactor.healthHaver.IsAlive && !aiactor.healthHaver.IsBoss && !aiactor.IsMimicEnemy && !aiactor.IsHarmlessEnemy) { int num = UnityEngine.Random.Range(1, 5); ItemQuality quality; if (num == 1) { quality = ItemQuality.D; } else if (num == 2) { quality = ItemQuality.C; } else if (num == 3) { quality = ItemQuality.B; } else if (num == 4) { quality = ItemQuality.A; } else { quality = ItemQuality.S; } GenericLootTable lootTable = UnityEngine.Random.value <= 0.5f ? GameManager.Instance.RewardManager.GunsLootTable : GameManager.Instance.RewardManager.ItemsLootTable; bool spawnsExtraItem = false; if (UnityEngine.Random.value < 0.5f && user.PlayerHasActiveSynergy("#WONDA-WONDER_WONDER-WONDA!!!")) { spawnsExtraItem = true; GenericLootTable singleItemRewardTable = GameManager.Instance.RewardManager.CurrentRewardData.SingleItemRewardTable; LootEngine.SpawnItem(singleItemRewardTable.SelectByWeight(false), aiactor.sprite.WorldCenter, Vector2.right, 1f, true, false, false); } PickupObject po = LootEngine.GetItemOfTypeAndQuality <PickupObject>(quality, lootTable); LootEngine.SpawnItem(po.gameObject, aiactor.sprite.WorldCenter, spawnsExtraItem ? Vector2.left : Vector2.zero, spawnsExtraItem ? 1f : 0f, true, false, false); LootEngine.DoDefaultItemPoof(aiactor.sprite.WorldCenter); aiactor.EraseFromExistence(true); } } }
// Re-use code from baby dragun NPC to make Enemy get sucked into ball. Looks cooler then a simple poof effect. :D private IEnumerator SuckUpEnemy(AIActor targetEnemy, DebrisObject obj, PlayerController owner) { float elapsed = 0f; float duration = 0.5f; Vector3 startPos = targetEnemy.transform.position; Vector3 finalOffset = obj.sprite.WorldCenter - startPos.XY(); tk2dBaseSprite targetSprite = targetEnemy.GetComponentInChildren <tk2dBaseSprite>(); targetEnemy.behaviorSpeculator.InterruptAndDisable(); Destroy(targetEnemy); Destroy(targetEnemy.specRigidbody); yield return(null); AkSoundEngine.PostEvent("Play_NPC_BabyDragun_Munch_01", obj.gameObject); while (elapsed < duration) { elapsed += BraveTime.DeltaTime; if (!targetSprite || !targetSprite.transform) { yield return(null); } else { targetSprite.transform.localScale = Vector3.Lerp(Vector3.one, new Vector3(0.01f, 0.01f, 1f), elapsed / duration); targetSprite.transform.position = Vector3.Lerp(startPos, startPos + finalOffset, elapsed / duration); } yield return(null); } Destroy(targetSprite.gameObject); MonsterBall monsterBall = obj.GetComponent <MonsterBall>(); if (monsterBall) { if (monsterBall.AutoPickup) { yield return(new WaitForSeconds(0.2f)); LootEngine.DoDefaultItemPoof(obj.transform.position, false, false); monsterBall.Pickup(owner); } } yield break; }
private void BlinkAway(HealthHaver healthHaver, HealthHaver.ModifyDamageEventArgs args) { if (args == EventArgs.Empty) { return; } if (UnityEngine.Random.value <= (this.m_advancedSynergyUpgradeActive ? 0.3f : 0.15f)) { args.ModifiedDamage = 0; LootEngine.DoDefaultItemPoof(healthHaver.gameActor.sprite.WorldCenter); IntVector2?vector = (healthHaver.gameActor as PlayerController).CurrentRoom.GetRandomAvailableCell(new IntVector2?(IntVector2.One * 2), CellTypes.FLOOR | CellTypes.PIT, false, null); if (vector != null) { Vector2 vector2 = vector.Value.ToVector2(); (healthHaver.gameActor as PlayerController).WarpToPoint(vector2); LootEngine.DoDefaultItemPoof(vector2); } } }
public static IEnumerator ItemChoiceCoroutine(DebrisObject one, DebrisObject two) { for (; ;) { if (!one) { LootEngine.DoDefaultItemPoof(two.transform.position); Destroy(two.gameObject); yield break; } if (!two) { LootEngine.DoDefaultItemPoof(one.transform.position); Destroy(one.gameObject); yield break; } yield return(null); } }
private void HandleHit(Projectile arg1, SpeculativeRigidbody arg2, bool arg3) { bool flag = arg2.aiActor != null && !arg2.healthHaver.IsBoss && !arg2.healthHaver.IsDead && arg2.aiActor.behaviorSpeculator && !arg2.aiActor.IsHarmlessEnemy && arg2.aiActor != null; if (flag) { GameActorEffect effect = arg2.aiActor.GetEffect(DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(SynergyAlchemiser.goopDefs[0]).goopDefinition.HealthModifierEffect.effectIdentifier); bool flag2 = effect != null; if (flag2) { AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("8b43a5c59b854eb780f9ab669ec26b7a"); arg2.aiActor.EraseFromExistenceWithRewards(true); AIActor aiactor = AIActor.Spawn(orLoadByGuid, arg2.aiActor.CenterPosition, arg2.transform.position.GetAbsoluteRoom(), true, AIActor.AwakenAnimationType.Awaken, true); LootEngine.DoDefaultItemPoof(aiactor.CenterPosition, false, false); aiactor.DiesOnCollison = true; aiactor.ImmuneToAllEffects = true; } } }
private void LateUpdate() { if (this.m_pickedUp && this.LastOwner != null) { if (this.extantObj == null) { this.extantObj = UnityEngine.Object.Instantiate <GameObject>(GungeonCompass.arrowObj, this.LastOwner.transform.position, Quaternion.identity); LootEngine.DoDefaultItemPoof(this.LastOwner.sprite.WorldTopCenter + new Vector2(0f, 1f)); } this.extantObj.GetComponent <tk2dBaseSprite>().PlaceAtPositionByAnchor(this.LastOwner.sprite.WorldTopCenter + new Vector2(0f, 1f), tk2dBaseSprite.Anchor.MiddleCenter); Vector2 coords = new Vector2(); bool found = false; foreach (RoomHandler room in GameManager.Instance.Dungeon.data.rooms) { //ETGModConsole.Log("still searching!"); if ((room.area.PrototypeRoomCategory == this.currentSearchObject)) { coords = room.GetCenterCell().ToVector2(); found = true; break; } } if (found) { Vector2 offset = this.extantObj.GetComponent <tk2dBaseSprite>().WorldCenter - coords; this.extantObj.transform.Rotate(this.LastOwner.sprite.WorldTopCenter + Vector2.up, BraveMathCollege.Atan2Degrees(offset), Space.World); this.extantObj.transform.rotation = Quaternion.Euler(0, 0, BraveMathCollege.Atan2Degrees(offset)); } else { this.extantObj.transform.rotation = Quaternion.Euler(0, 0, 0); } } else { if (this.extantObj != null) { UnityEngine.Object.Destroy(this.extantObj); this.extantObj = null; } } }
private void onDodgeRolledOverBullet(Projectile bullet) { PlayerController player = base.Owner as PlayerController; bool flag = !RewardCrown.onCooldown; bool flag2 = flag; if (flag2) { LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(224).gameObject, player); RewardCrown.onCooldown = true; GameManager.Instance.StartCoroutine(RewardCrown.StartCooldown()); } bool a = !RewardCrown.VomitPrevention; bool b = a; if (b) { RoomHandler currentRoom = player.CurrentRoom; SpawnManager.SpawnVFX((PickupObjectDatabase.GetById(573) as ChestTeleporterItem).TeleportVFX, base.sprite.WorldCenter.ToVector3ZisY(0f), Quaternion.identity).GetComponent <tk2dBaseSprite>().PlaceAtPositionByAnchor(base.sprite.WorldCenter.ToVector3ZisY(0f), tk2dBaseSprite.Anchor.MiddleCenter); IntVector2?vector = (player as PlayerController).CurrentRoom.GetRandomAvailableCell(new IntVector2?(IntVector2.One * 2), CellTypes.FLOOR | CellTypes.PIT, false, null); if (vector != null) { Vector2 vector2 = vector.Value.ToVector2(); CellData cellAim = currentRoom.GetNearestCellToPosition(vector2); CellData cellAimLeft = currentRoom.GetNearestCellToPosition(vector2 + Vector2.left); CellData cellAimRight = currentRoom.GetNearestCellToPosition(vector2 + Vector2.right); CellData cellAimUp = currentRoom.GetNearestCellToPosition(vector2 + Vector2.up); CellData cellAimDown = currentRoom.GetNearestCellToPosition(vector2 + Vector2.down); if (player.IsValidPlayerPosition(vector2) && !cellAim.isNextToWall && !cellAimLeft.isNextToWall && !cellAimRight.isNextToWall && !cellAimUp.isNextToWall && !cellAimDown.isNextToWall) { RewardCrown.VomitPrevention = true; GameManager.Instance.StartCoroutine(RewardCrown.PreventVomiting()); (player as PlayerController).WarpToPoint(vector2); LootEngine.DoDefaultItemPoof(vector2); SpawnManager.SpawnVFX((PickupObjectDatabase.GetById(573) as ChestTeleporterItem).TeleportVFX, vector2.ToVector3ZisY(0f), Quaternion.identity).GetComponent <tk2dBaseSprite>().PlaceAtPositionByAnchor(vector2.ToVector3ZisY(0f), tk2dBaseSprite.Anchor.MiddleCenter); } } } }
public static void OnPurchase(Action <BaseShopController, ShopItemController, bool, bool> orig, BaseShopController self, ShopItemController item, bool flag1, bool flag2) { ETGModConsole.Log("god"); if (GameManager.Instance.PrimaryPlayer.HasMTGConsoleID("psm:restock") && item.item.quality != ItemQuality.SPECIAL) { ETGModConsole.Log("shitkeeper"); item.item.PersistsOnPurchase = true; FieldInfo _pickedUp = typeof(ShopItemController).GetField("pickedUp", BindingFlags.NonPublic | BindingFlags.Instance); _pickedUp.SetValue(item, false); LootEngine.DoDefaultItemPoof(item.specRigidbody.UnitCenter); if (item.item.quality != ItemQuality.COMMON && item.item.quality != ItemQuality.SPECIAL) { ETGModConsole.Log("fart sex"); item.Initialize(self.shopItemsGroup2.defaultItemDrops.SelectByWeight().GetComponent <PickupObject>(), self); } } else { item.item.PersistsOnPurchase = false; FieldInfo _pickedUp = typeof(ShopItemController).GetField("pickedUp", BindingFlags.NonPublic | BindingFlags.Instance); _pickedUp.SetValue(item, true); } orig(self, item, flag1, flag2); }
private IEnumerator HandleSpawnAnimation(PlayerController user, Vector3?overridePosition = null) { Vector3 SpawnFXPosition = (user.transform.position + new Vector3(0, 1.25f)); if (overridePosition.HasValue) { SpawnFXPosition = overridePosition.Value; } GameObject targetObject = Instantiate(hammerSpawnFX, SpawnFXPosition, Quaternion.identity); yield return(null); tk2dSpriteAnimator hammerAnimator = targetObject.GetComponent <tk2dSpriteAnimator>(); if (hammerAnimator != null) { if (!overridePosition.HasValue) { LootEngine.DoDefaultSynergyPoof(targetObject.transform.position + new Vector3(0.1f, 0.1f)); LootEngine.DoDefaultItemPoof(targetObject.transform.position + new Vector3(0.1f, 0.1f)); } hammerAnimator.Play("HammerSpawn"); while (hammerAnimator.Playing) { targetObject.transform.position += new Vector3(0, 0.02f); yield return(null); } Destroy(targetObject); } else { Destroy(targetObject); yield break; } }
public void RemoveTackShooter() { isActive = false; LootEngine.DoDefaultItemPoof(base.GetComponent <tk2dBaseSprite>().WorldCenter); UnityEngine.Object.Destroy(base.gameObject); }
public static void RollHook(Action <RatPackItem, Projectile> orig, RatPackItem item, Projectile proj) { PlayerController player = item.LastOwner; if (player.HasPickupID(TrapCardId)) { if (cooldown == false) { float value = UnityEngine.Random.Range(0.0f, 1.0f); bool flag = value < 0.3; if (flag || player.HasPickupID(423)) { AIActor enemy = proj.Owner as AIActor; if (enemy != null) { cooldown = true; GameManager.Instance.StartCoroutine(StartCooldown()); LootEngine.DoDefaultItemPoof(enemy.sprite.WorldBottomCenter, false, true); AkSoundEngine.PostEvent("Play_OBJ_bomb_fuse_01", enemy.gameObject); if (player.HasPickupID(109) || player.HasPickupID(364) || player.HasPickupID(170)) { SpawnObjectPlayerItem icebombPrefab = PickupObjectDatabase.GetById(109).GetComponent <SpawnObjectPlayerItem>(); GameObject icebombObject = icebombPrefab.objectToSpawn.gameObject; GameObject icebombObject2 = UnityEngine.Object.Instantiate <GameObject>(icebombObject, enemy.sprite.WorldBottomCenter, Quaternion.identity); tk2dBaseSprite icebombsprite = icebombObject2.GetComponent <tk2dBaseSprite>(); if (icebombsprite) { icebombsprite.PlaceAtPositionByAnchor(enemy.sprite.WorldBottomCenter, tk2dBaseSprite.Anchor.MiddleCenter); } } else if (!player.HasPickupID(109) || !player.HasPickupID(364) || !player.HasPickupID(170)) { SpawnObjectPlayerItem bigbombPrefab = PickupObjectDatabase.GetById(108).GetComponent <SpawnObjectPlayerItem>(); GameObject bigbombObject = bigbombPrefab.objectToSpawn.gameObject; GameObject bigbombObject2 = UnityEngine.Object.Instantiate <GameObject>(bigbombObject, enemy.sprite.WorldBottomCenter, Quaternion.identity); tk2dBaseSprite bombsprite = bigbombObject2.GetComponent <tk2dBaseSprite>(); if (bombsprite) { bombsprite.PlaceAtPositionByAnchor(enemy.sprite.WorldBottomCenter, tk2dBaseSprite.Anchor.MiddleCenter); } } } else { RoomHandler absoluteRoom = player.CurrentRoom; if (absoluteRoom.HasActiveEnemies(RoomHandler.ActiveEnemyType.All)) { AIActor randomActiveEnemy = absoluteRoom.GetNearestEnemy(Vector2.zero, out float nearestDistance, true, true); nearestDistance = float.MaxValue; if (randomActiveEnemy != null) { if (player.HasPickupID(109) || player.HasPickupID(364) || player.HasPickupID(170)) { SpawnObjectPlayerItem icebombPrefab = PickupObjectDatabase.GetById(109).GetComponent <SpawnObjectPlayerItem>(); GameObject icebombObject = icebombPrefab.objectToSpawn.gameObject; GameObject icebombObject2 = UnityEngine.Object.Instantiate <GameObject>(icebombObject, randomActiveEnemy.sprite.WorldBottomCenter, Quaternion.identity); tk2dBaseSprite icebombsprite = icebombObject2.GetComponent <tk2dBaseSprite>(); if (icebombsprite) { icebombsprite.PlaceAtPositionByAnchor(randomActiveEnemy.sprite.WorldBottomCenter, tk2dBaseSprite.Anchor.MiddleCenter); } } else if (!player.HasPickupID(109) || !player.HasPickupID(364) || !player.HasPickupID(170)) { SpawnObjectPlayerItem bigbombPrefab = PickupObjectDatabase.GetById(108).GetComponent <SpawnObjectPlayerItem>(); GameObject bigbombObject = bigbombPrefab.objectToSpawn.gameObject; GameObject bigbombObject2 = UnityEngine.Object.Instantiate <GameObject>(bigbombObject, randomActiveEnemy.sprite.WorldBottomCenter, Quaternion.identity); tk2dBaseSprite bombsprite = bigbombObject2.GetComponent <tk2dBaseSprite>(); if (bombsprite) { bombsprite.PlaceAtPositionByAnchor(randomActiveEnemy.sprite.WorldBottomCenter, tk2dBaseSprite.Anchor.MiddleCenter); } } } } } } } } orig(item, proj); }