Example #1
0
        private IEnumerator HandleEnemySuck(AIActor target)
        {
            Transform copySprite = this.CreateEmptySprite(target);

            if (this.m_owner.PlayerHasActiveSynergy("#RELODIN_-_EXPLODIN"))
            {
                ExplosionData explosionData = new ExplosionData();
                explosionData.CopyFrom(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultSmallExplosionData);
                explosionData.damageToPlayer = 0f;
                Exploder.Explode(target.sprite.WorldCenter, explosionData, new Vector2());
            }
            if (this.m_owner.PlayerHasActiveSynergy("RECYCLE_COLLECT_AND_USE") && UnityEngine.Random.value <= 0.05f)
            {
                GenericLootTable singleItemRewardTable = GameManager.Instance.RewardManager.CurrentRewardData.SingleItemRewardTable;
                LootEngine.SpawnItem(singleItemRewardTable.SelectByWeight(false), this.m_owner.CenterPosition, Vector2.up, 1f, true, false, false);
            }
            Vector3 startPosition = copySprite.transform.position;
            float   elapsed       = 0f;
            float   duration      = 0.5f;

            while (elapsed < duration)
            {
                elapsed += BraveTime.DeltaTime;
                if (this.m_owner.CurrentGun && copySprite)
                {
                    Vector3 position = this.m_owner.CurrentGun.PrimaryHandAttachPoint.position;
                    float   t        = elapsed / duration * (elapsed / duration);
                    copySprite.position   = Vector3.Lerp(startPosition, position, t);
                    copySprite.rotation   = Quaternion.Euler(0f, 0f, 360f * BraveTime.DeltaTime) * copySprite.rotation;
                    copySprite.localScale = Vector3.Lerp(Vector3.one, new Vector3(0.1f, 0.1f, 0.1f), t);
                }
                yield return(null);
            }
            if (copySprite)
            {
                UnityEngine.Object.Destroy(copySprite.gameObject);
            }
            if (this.m_owner.CurrentGun)
            {
                this.m_owner.CurrentGun.GainAmmo(1);
                if (this.m_owner.PlayerHasActiveSynergy("#OILER_CYLINDER") && UnityEngine.Random.value <= 0.25f)
                {
                    this.m_owner.CurrentGun.GainAmmo(1);
                }
            }
            if (this.m_owner.PlayerHasActiveSynergy("#SIXTHER_CHAMBER"))
            {
                DevilishSynergy();
            }
            if (this.m_owner.PlayerHasActiveSynergy("#YELLOWER_CHAMBER"))
            {
                KaliberSynergy();
            }
            yield break;
        }
Example #2
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);
         }
     }
 }