コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
 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);
         }
     }
 }
コード例 #3
0
        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;
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 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();
 }
コード例 #7
0
 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);
         }
     }
 }
コード例 #8
0
 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);
     }
 }
コード例 #9
0
 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);
     }
 }
コード例 #10
0
        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);
            }
        }
コード例 #11
0
                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;
                }
コード例 #12
0
        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"));
                }
            }
        }
コード例 #13
0
 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);
         }
     }
 }
コード例 #14
0
        // 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;
        }
コード例 #15
0
 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);
         }
     }
 }
コード例 #16
0
 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);
     }
 }
コード例 #17
0
        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;
                }
            }
        }
コード例 #18
0
 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;
         }
     }
 }
コード例 #19
0
        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);
                    }
                }
            }
        }
コード例 #20
0
 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);
 }
コード例 #21
0
        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;
            }
        }
コード例 #22
0
 public void RemoveTackShooter()
 {
     isActive = false;
     LootEngine.DoDefaultItemPoof(base.GetComponent <tk2dBaseSprite>().WorldCenter);
     UnityEngine.Object.Destroy(base.gameObject);
 }
コード例 #23
0
        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);
        }