private void OnHitEnemy(Projectile bullet, SpeculativeRigidbody enemy, bool fatal)
 {
     if (enemy && enemy.healthHaver && fatal)
     {
         float procChance = 0.1f;
         if (owner && owner.PlayerHasActiveSynergy("Blood For The Blood God"))
         {
             procChance = 0.2f;
         }
         if (UnityEngine.Random.value <= procChance)
         {
             UnityEngine.Object.Instantiate <GameObject>(EasyVFXDatabase.TeleporterPrototypeTelefragVFX, enemy.UnitCenter, Quaternion.identity);
             if (owner && owner.PlayerHasActiveSynergy("Blood For The Blood God"))
             {
                 GoopDefinition          Blood = EasyGoopDefinitions.GenerateBloodGoop(15, Color.red, 20);
                 DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(Blood);
                 goopManagerForGoopType.TimedAddGoopCircle(enemy.UnitCenter, 3, 0.5f, false);
             }
             if (owner && owner.PlayerHasActiveSynergy("BLOOD IS FUEL"))
             {
                 if (Vector2.Distance(owner.sprite.WorldCenter, enemy.sprite.WorldCenter) <= 4)
                 {
                     owner.healthHaver.ApplyHealing(0.5f);
                 }
             }
         }
     }
 }
Пример #2
0
        // Token: 0x0600030F RID: 783 RVA: 0x0001CEAC File Offset: 0x0001B0AC
        private void OnDestroy(Projectile projectile)
        {
            Exploder.DoDefaultExplosion(projectile.specRigidbody.UnitTopCenter, default(Vector2), null, false, CoreDamageTypes.None, true);
            DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.FireDef);

            goopManagerForGoopType.TimedAddGoopCircle(projectile.specRigidbody.UnitTopCenter, 5f, 0.35f, false);
        }
Пример #3
0
 private void NukeBlastOnHit(PlayerController player)
 {
     //I dont know how, but SOMEHOW using Cigarettes with RTG instantly kills you if i try to have this Nuke Code
     //this.random = UnityEngine.Random.Range(0.00f, 1.00f);
     //if (random <= 0.04f)
     {
         Vector3 position = player.sprite.WorldCenter;
         this.Boom(position);
         AssetBundle    assetBundle    = ResourceManager.LoadAssetBundle("shared_auto_001");
         GoopDefinition goopDefinition = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset");
         goopDefinition.baseColor32   = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue);
         goopDefinition.fireColor32   = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue);
         goopDefinition.UsesGreenFire = false;
         DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition);
         goopManagerForGoopType.TimedAddGoopCircle(projectile.sprite.WorldCenter, 10f, 0.1f, false);
         this.Nuke = assetBundle.LoadAsset <GameObject>("assets/data/vfx prefabs/impact vfx/vfx_explosion_nuke.prefab");
         GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(this.Nuke);
         gameObject2.GetComponent <tk2dBaseSprite>().PlaceAtLocalPositionByAnchor(projectile.specRigidbody.UnitCenter, tk2dBaseSprite.Anchor.LowerCenter);
         gameObject2.transform.position = gameObject.transform.position.Quantize(0.0625f);
         gameObject2.GetComponent <tk2dBaseSprite>().UpdateZDepth();
         {
             this.FlashHoldtime = 0.1f;
             this.FlashFadetime = 0.5f;
             Pixelator.Instance.FadeToColor(this.FlashFadetime, Color.white, true, this.FlashHoldtime);
             StickyFrictionManager.Instance.RegisterCustomStickyFriction(0.15f, 1f, false, false); this.FlashHoldtime = 0.1f;
         }
     }
 }
Пример #4
0
            public override void OnEffect(GameObject obj)
            {
                DeadlyDeadlyGoopManager goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.GreenFireDef);

                goop.TimedAddGoopCircle(obj.transform.position, 4, 0.75f, true);
                StartCoroutine(Kill(obj));
            }
Пример #5
0
 // Token: 0x06000048 RID: 72 RVA: 0x00002180 File Offset: 0x00000380
 private IEnumerator GoopTrail(Projectile component, DeadlyDeadlyGoopManager goopManager)
 {
     while (component != null)
     {
         goopManager.TimedAddGoopCircle(component.specRigidbody.UnitCenter, this.radius, 0.5f, false);
         yield return(new WaitForSeconds(0.01f));
     }
     yield break;
 }
        private void DoHoleSpawn(Projectile projectile)
        {
            DeadlyDeadlyGoopManager goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PitGoop);

            goop.TimedAddGoopCircle(projectile.specRigidbody.UnitCenter, 7f, 0.75f, true);
            SpecialGoopBehaviours specialBehav = goop.gameObject.AddComponent <SpecialGoopBehaviours>();

            specialBehav.ForcesEnemiesToFall = true;
        }
Пример #7
0
 public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData)
 {
     if (EasyGoopDefinitions.PlagueGoop != null)
     {
         DeadlyDeadlyGoopManager goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PlagueGoop);
         goop.TimedAddGoopCircle(actor.specRigidbody.UnitCenter, 1.5f, 0.75f, true);
     }
     base.EffectTick(actor, effectData);
 }
Пример #8
0
        //make a rebar/impaler crossbow that pins enemies to walls
        private void BigGoop(Projectile proj)
        {
            DeadlyDeadlyGoopManager ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition);

            ddgm.TimedAddGoopCircle(proj.sprite.WorldCenter, 1.25f, .3f);
            if (goopDefinition == Library.goopDefs[5])
            {
                ddgm.ElectrifyGoopCircle(proj.LastPosition, 1.25f);
            }
        }
Пример #9
0
        private void InkGoop(PlayerController player, Gun playerGun)
        {
            bool flag = playerGun.ClipShotsRemaining == 0;

            if (flag)
            {
                DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(HelpfulLibrary.Ink);
                goopManagerForGoopType.TimedAddGoopCircle(base.Owner.sprite.WorldCenter, 5f, 0.35f, false);
            }
        }
Пример #10
0
        public static void BlankModHook(Action <SilencerInstance, BlankModificationItem, Vector2, PlayerController> orig, SilencerInstance silencer, BlankModificationItem bmi, Vector2 centerPoint, PlayerController user)
        {
            orig(silencer, bmi, centerPoint, user);
            bool flag = user.HasPickupID(WebAmmolet.roundID);

            if (flag)
            {
                DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefs[0]);
                goopManagerForGoopType.TimedAddGoopCircle(user.sprite.WorldCenter, 3f, 0.35f, false);
            }
        }
Пример #11
0
        private IEnumerator Heatfuck(PlayerController user)
        {
            AssetBundle             assetBundle            = ResourceManager.LoadAssetBundle("shared_auto_001");
            GoopDefinition          goopDefinition         = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset");
            DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition);

            goopManagerForGoopType.TimedAddGoopCircle(base.Owner.sprite.WorldCenter, 18f, 0.8f, false);
            yield return(new WaitForSeconds(1f));

            DeadlyDeadlyGoopManager.DelayedClearGoopsInRadius(base.Owner.sprite.WorldCenter, 25f);
            yield break;
        }
Пример #12
0
 private void DoHoleSpawn(Projectile projectile)
 {
     if (projectile.Owner is PlayerController)
     {
         float radius = 7f;
         if ((projectile.Owner as PlayerController).PlayerHasActiveSynergy("Honey, I'm Home!"))
         {
             radius = 10f;
         }
         DeadlyDeadlyGoopManager goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.HoneyGoop);
         goop.TimedAddGoopCircle(projectile.specRigidbody.UnitCenter, radius, 0.75f, true);
     }
 }
Пример #13
0
        private void DoGoop()
        {
            float time = 0;

            if (time < .005f)
            {
                time += BraveTime.DeltaTime;
            }
            if (time > .005f)
            {
                DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefs[0]);
                goopManagerForGoopType.TimedAddGoopCircle(this.m_owner.specRigidbody.UnitCenter, 1, .2f);
            }
        }
Пример #14
0
 private void OnHitEnemy(Projectile me, SpeculativeRigidbody enemy, bool fatal)
 {
     if (enemy && fatal)
     {
         if (enemy.healthHaver)
         {
             float bloodDPS = enemy.healthHaver.GetMaxHealth();
             bloodDPS *= 0.5f;
             GoopDefinition          Blood = EasyGoopDefinitions.GenerateBloodGoop(bloodDPS, Color.red, 10);
             DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(Blood);
             goopManagerForGoopType.TimedAddGoopCircle(enemy.UnitCenter, 3, 0.5f, false);
         }
     }
 }
Пример #15
0
        private IEnumerator DoGoop(PlayerController player)
        {
            float elapsed = 0;

            while (elapsed < 8)
            {
                elapsed += BraveTime.DeltaTime;
                DeadlyDeadlyGoopManager ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(Library.goopDefs[5]);
                ddgm.TimedAddGoopCircle(player.sprite.WorldBottomCenter, 1.25f, .3f);
                ddgm.ElectrifyGoopCircle(player.sprite.WorldBottomCenter, 1.25f);
                yield return(new WaitForSeconds(0.005f));
            }
            yield break;
        }
Пример #16
0
 private void Update()
 {
     if (proj != null)
     {
         if (timer < .008f)
         {
             timer += BraveTime.DeltaTime;
         }
         if (timer >= .008f)
         {
             timer = 0;
             DeadlyDeadlyGoopManager ddgm = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition);
             ddgm.TimedAddGoopCircle(proj.sprite.WorldCenter, .6f, .3f);
             if (goopDefinition == Library.goopDefs[5])
             {
                 ddgm.ElectrifyGoopCircle(proj.sprite.WorldCenter, .6f);
             }
         }
     }
 }
Пример #17
0
        private void GoopReload(PlayerController player, Gun gun)
        {
            if (gun.ClipShotsRemaining == 0)
            {
                int amount = UnityEngine.Random.Range(5, 12);

                for (int i = 0; i < amount; i++)
                {
                    float                   size     = UnityEngine.Random.Range(1.5f, 4);
                    float                   lifetime = UnityEngine.Random.Range(.2f, .4f);
                    Vector2                 location = player.sprite.WorldCenter + (UnityEngine.Random.insideUnitCircle * 7);
                    GoopDefinition          goop     = possibleGoops[UnityEngine.Random.Range(0, possibleGoops.Count)];
                    DeadlyDeadlyGoopManager ddgm     = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goop);
                    ddgm.TimedAddGoopCircle(location, size, lifetime);
                    if (goop == Library.goopDefs[5])
                    {
                        ddgm.ElectrifyGoopCircle(player.sprite.WorldCenter, size);
                    }
                }
            }
        }
Пример #18
0
        private void BFN(Projectile projectile)
        {
            Vector2    worldCenter = projectile.sprite.WorldCenter;
            Vector3    position    = projectile.sprite.WorldCenter;
            Projectile projectile1 = ((Gun)ETGMod.Databases.Items[481]).DefaultModule.chargeProjectiles[0].Projectile;
            GameObject gameObject  = SpawnManager.SpawnProjectile(projectile.gameObject, projectile.sprite.WorldCenter, Quaternion.Euler(0f, 0f, 0f));
            bool       flag        = projectile1 != null;
            bool       flag2       = flag;

            if (flag2)
            {
                projectile1.baseData.damage           = 50f;
                projectile1.baseData.speed            = 0f;
                projectile1.AdditionalScaleMultiplier = 2.5f;
            }
            this.Boom(position);
            AssetBundle    assetBundle    = ResourceManager.LoadAssetBundle("shared_auto_001");
            GoopDefinition goopDefinition = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset");

            goopDefinition.baseColor32   = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue);
            goopDefinition.fireColor32   = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue);
            goopDefinition.UsesGreenFire = false;
            DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition);

            goopManagerForGoopType.TimedAddGoopCircle(projectile.sprite.WorldCenter, 10f, 0.1f, false);
            this.Nuke = assetBundle.LoadAsset <GameObject>("assets/data/vfx prefabs/impact vfx/vfx_explosion_nuke.prefab");
            //this.Nuke = assetBundle.LoadAsset<GameObject>("assets/data/vfx prefabs/impact vfx/vfx_explosion_big_new.prefab");

            GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(this.Nuke);

            gameObject2.GetComponent <tk2dBaseSprite>().PlaceAtLocalPositionByAnchor(projectile.specRigidbody.UnitCenter, tk2dBaseSprite.Anchor.LowerCenter);
            gameObject2.transform.position = gameObject.transform.position.Quantize(0.0625f);
            gameObject2.GetComponent <tk2dBaseSprite>().UpdateZDepth();
            {
                this.FlashHoldtime = 0.1f;
                this.FlashFadetime = 0.5f;
                Pixelator.Instance.FadeToColor(this.FlashFadetime, Color.white, true, this.FlashHoldtime);
                StickyFrictionManager.Instance.RegisterCustomStickyFriction(0.15f, 1f, false, false); this.FlashHoldtime = 0.1f;
            }
        }
 private void EnteredCombat()
 {
     if (m_attachedPlayer && m_attachedPlayer.CurrentRoom != null)
     {
         if (CurseManager.CurseIsActive("Curse of The Flames"))
         {
             for (int i = 0; i < 5; i++)
             {
                 IntVector2 pos = (IntVector2)m_attachedPlayer.CurrentRoom.GetRandomAvailableCell(null, CellTypes.FLOOR);
                 DeadlyDeadlyGoopManager goop = null;
                 if (GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))
                 {
                     goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PlayerFriendlyFireGoop);
                 }
                 else
                 {
                     goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.EnemyFriendlyFireGoop);
                 }
                 goop.TimedAddGoopCircle(pos.ToVector2(), UnityEngine.Random.Range(2.5f, 4f), 0.75f, true);
             }
         }
     }
 }
Пример #20
0
        public void DoDaGoo()
        {
            AssetBundle    assetBundle = ResourceManager.LoadAssetBundle("shared_auto_001");
            string         text        = "assets/data/goops/water goop.asset";
            GoopDefinition goopDefinition;

            try
            {
                GameObject gameObject = assetBundle.LoadAsset(text) as GameObject;
                goopDefinition = gameObject.GetComponent <GoopDefinition>();
            }
            catch
            {
                goopDefinition = (assetBundle.LoadAsset(text) as GoopDefinition);
            }
            goopDefinition.name = text.Replace("assets/data/goops/", "").Replace(".asset", "");
            DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition);

            goopManagerForGoopType.TimedAddGoopCircle(this.Owner.sprite.WorldCenter, 10f, 1f, false);

            speedTimer = 180;
            counter    = 0;
            limiter    = 1;
        }
Пример #21
0
        protected override void DoEffect(PlayerController user)
        {
            DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PoisonDef);

            goopManagerForGoopType.TimedAddGoopCircle(this.LastOwner.specRigidbody.UnitCenter, 3, 3f);
        }
Пример #22
0
        private void DoGoop(Vector2 pos, GoopDefinition def)
        {
            DeadlyDeadlyGoopManager goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(def);

            goop.TimedAddGoopCircle(pos, 7, 0.75f, true);
        }
Пример #23
0
        protected override void DoEffect(PlayerController user)
        {
            DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(HelpfulLibrary.CurseGoop);

            goopManagerForGoopType.TimedAddGoopCircle(base.LastOwner.sprite.WorldCenter, 5f, 0.35f, false);
        }
 public static IEnumerator HandleCurseDeathEffects(Vector2 position, string guid, float maxHP, bool isJammed)
 {
     if (CurseManager.CurseIsActive("Curse of Infestation"))
     {
         if (!string.IsNullOrEmpty(guid) && !EasyEnemyTypeLists.SmallBullats.Contains(guid))
         {
             int amt = UnityEngine.Random.Range(-1, 4);
             if (amt > 0)
             {
                 for (int i = 0; i < amt; i++)
                 {
                     if (GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))
                     {
                         AIActor targetActor = CompanionisedEnemyUtility.SpawnCompanionisedEnemy(GameManager.Instance.PrimaryPlayer, BraveUtility.RandomElement(EasyEnemyTypeLists.SmallBullats), position.ToIntVector2(), false, Color.red, 5, 2, false, false);
                         PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(targetActor.specRigidbody, null, false);
                     }
                     else
                     {
                         var     enemyToSpawn = EnemyDatabase.GetOrLoadByGuid(BraveUtility.RandomElement(EasyEnemyTypeLists.SmallBullats));
                         AIActor TargetActor  = AIActor.Spawn(enemyToSpawn, position, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(position.ToIntVector2()), true, AIActor.AwakenAnimationType.Default, true);
                         PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(TargetActor.specRigidbody, null, false);
                         TargetActor.PreventBlackPhantom = true;
                     }
                 }
             }
         }
     }
     if (CurseManager.CurseIsActive("Curse of Sludge"))
     {
         if (maxHP > 0)
         {
             DeadlyDeadlyGoopManager goop = null;
             if (GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))
             {
                 goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PlayerFriendlyPoisonGoop);
             }
             else
             {
                 goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.EnemyFriendlyPoisonGoop);
             }
             float hpMod = maxHP;
             if (isJammed)
             {
                 hpMod /= 3.5f;
             }
             hpMod /= AIActor.BaseLevelHealthModifier;
             float radius = Math.Min((hpMod / 7.5f), 10);
             goop.TimedAddGoopCircle(position, radius, 0.75f, true);
         }
     }
     if (CurseManager.CurseIsActive("Curse of The Hive"))
     {
         if (maxHP > 0)
         {
             DeadlyDeadlyGoopManager goop = null;
             if (GameManager.Instance.AnyPlayerHasActiveSynergy("The Last Crusade"))
             {
                 goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PlayerFriendlyHoneyGoop);
             }
             else
             {
                 goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.HoneyGoop);
             }
             float hpMod = maxHP;
             if (isJammed)
             {
                 hpMod /= 3.5f;
             }
             hpMod /= AIActor.BaseLevelHealthModifier;
             float radius = Math.Min((hpMod / 5), 10);
             goop.TimedAddGoopCircle(position, radius, 0.75f, true);
         }
     }
     yield break;
 }
Пример #25
0
        private void fuckShitUp(Projectile projectile)
        {
            string header = "";
            string text   = "";
            int    num3   = UnityEngine.Random.Range(0, 19);
            bool   flag3  = num3 == 0;

            if (flag3)
            {
                header = "You got nothing!";
                text   = "Get dunked on!";
            }
            bool flag4 = num3 == 1;

            if (flag4)
            {
                AkSoundEngine.PostEvent("Play_OBJ_chaff_blast_01", base.gameObject);
                this.FlashHoldtime = 3f;
                this.FlashFadetime = 4f;
                Pixelator.Instance.FadeToColor(this.FlashFadetime, Color.white, true, this.FlashHoldtime);
                StickyFrictionManager.Instance.RegisterCustomStickyFriction(0.15f, 4f, false, false); this.FlashHoldtime = 3f;
            }
            bool flag5 = num3 == 2;

            if (flag5)
            {
                header = "Your bullets bounce!";
                text   = "";
                ApplyStat(base.LastOwner, PlayerStats.StatType.AdditionalShotBounces, 2f, StatModifier.ModifyMethod.ADDITIVE);
            }
            bool flag6 = num3 == 3;

            if (flag6)
            {
                header = "You turn to Glass.";
                text   = "";
                ApplyStat(base.LastOwner, PlayerStats.StatType.Damage, 2f, StatModifier.ModifyMethod.MULTIPLICATIVE);
                ApplyStat(base.LastOwner, PlayerStats.StatType.Health, -5f, StatModifier.ModifyMethod.ADDITIVE);
            }
            bool flag7 = num3 == 4;

            if (flag7)
            {
                header = "The Game.";
                text   = "You just lost it.";
            }
            bool flag9 = num3 == 5;

            if (flag9)
            {
                ApplyStat(base.LastOwner, PlayerStats.StatType.AdditionalItemCapacity, 1f, StatModifier.ModifyMethod.ADDITIVE);
                for (int counter = 0; counter < UnityEngine.Random.Range(1f, 9f); counter++)
                {
                    PickupObject var = Gungeon.Game.Items["bny:ancient_whisper"];
                    LootEngine.GivePrefabToPlayer(var.gameObject, base.LastOwner);
                }
            }
            bool flag10 = num3 == 6;

            if (flag10)
            {
                header = "You fool!";
                text   = "";
                ApplyStat(base.LastOwner, PlayerStats.StatType.Curse, 10f, StatModifier.ModifyMethod.ADDITIVE);
            }
            bool flag11 = num3 == 7;

            if (flag11)
            {
                header = "Try again!";
                text   = "";
                for (int counter = 0; counter < UnityEngine.Random.Range(2f, 4f); counter++)
                {
                    PickupObject var = Gungeon.Game.Items["bny:d-grenade"];
                    LootEngine.GivePrefabToPlayer(var.gameObject, base.LastOwner);
                }
            }
            bool flag12 = num3 == 8;

            if (flag12)
            {
                header = "mmm yees";
                text   = "junk";
                for (int counter = 0; counter < UnityEngine.Random.Range(1f, 7f); counter++)
                {
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(127).gameObject, base.LastOwner);
                }
            }
            bool flag13 = num3 == 9;

            if (flag13)
            {
                header = "Unlocks!";
                text   = "";
                for (int counter = 0; counter < UnityEngine.Random.Range(1f, 3f); counter++)
                {
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(67).gameObject, base.LastOwner);
                }
            }
            bool flag14 = num3 == 10;

            if (flag14)
            {
                GameManager.Instance.LoadCustomLevel("tt_bullethell");
            }
            bool flag15 = num3 == 11;

            if (flag15)
            {
                GameManager.Instance.LoadCustomLevel("tt_castle");
            }
            bool flag16 = num3 == 12;

            if (flag16)
            {
                IntVector2 randomVisibleClearSpot6 = base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(1, 1);
                GameManager.Instance.RewardManager.SpawnRewardChestAt(randomVisibleClearSpot6, -1f, PickupObject.ItemQuality.EXCLUDED);
            }
            bool flag17 = num3 == 13;

            if (flag17)
            {
                Vector3 position = projectile.sprite.WorldCenter;
                this.Boom(position);
                AssetBundle    assetBundle    = ResourceManager.LoadAssetBundle("shared_auto_001");
                GoopDefinition goopDefinition = assetBundle.LoadAsset <GoopDefinition>("assets/data/goops/napalmgoopquickignite.asset");
                goopDefinition.baseColor32   = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue);
                goopDefinition.fireColor32   = new Color32(0, byte.MaxValue, byte.MaxValue, byte.MaxValue);
                goopDefinition.UsesGreenFire = false;
                DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(goopDefinition);
                goopManagerForGoopType.TimedAddGoopCircle(projectile.sprite.WorldCenter, 10f, 0.1f, false);
                this.Nuke = assetBundle.LoadAsset <GameObject>("assets/data/vfx prefabs/impact vfx/vfx_explosion_nuke.prefab");
                GameObject gameObject2 = UnityEngine.Object.Instantiate <GameObject>(this.Nuke);
                gameObject2.GetComponent <tk2dBaseSprite>().PlaceAtLocalPositionByAnchor(projectile.specRigidbody.UnitCenter, tk2dBaseSprite.Anchor.LowerCenter);
                gameObject2.transform.position = gameObject.transform.position.Quantize(0.0625f);
                gameObject2.GetComponent <tk2dBaseSprite>().UpdateZDepth();
                {
                    this.FlashHoldtime = 0.1f;
                    this.FlashFadetime = 0.5f;
                    Pixelator.Instance.FadeToColor(this.FlashFadetime, Color.white, true, this.FlashHoldtime);
                    StickyFrictionManager.Instance.RegisterCustomStickyFriction(0.15f, 1f, false, false); this.FlashHoldtime = 0.1f;
                }
            }
            bool flag18 = num3 == 14;

            if (flag18)
            {
                header = "Oops! Inflation!";
                text   = "";
                ApplyStat(base.LastOwner, PlayerStats.StatType.MoneyMultiplierFromEnemies, 5f, StatModifier.ModifyMethod.MULTIPLICATIVE);
                ApplyStat(base.LastOwner, PlayerStats.StatType.GlobalPriceMultiplier, 5f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            }
            bool flag19 = num3 == 15;

            if (flag19)
            {
                header = "Brrrap Papap Pop!";
                text   = "Pop! Brrrrrap!";
                ApplyStat(base.LastOwner, PlayerStats.StatType.ShadowBulletChance, 10f, StatModifier.ModifyMethod.ADDITIVE);
            }
            bool flag20 = num3 == 16;

            if (flag20)
            {
                header = "Money!";
                text   = "";
                for (int counter = 0; counter < UnityEngine.Random.Range(24f, 96f); counter++)
                {
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(68).gameObject, base.LastOwner);
                }
            }
            bool flag21 = num3 == 17;

            if (flag21)
            {
                for (int counter = 0; counter < UnityEngine.Random.Range(1f, 5f); counter++)
                {
                    LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(224).gameObject, base.LastOwner);
                }
            }
            bool flag22 = num3 == 18;

            if (flag22)
            {
                header = "You can take your time...";
                text   = "";
                ApplyStat(base.LastOwner, PlayerStats.StatType.ProjectileSpeed, .3f, StatModifier.ModifyMethod.MULTIPLICATIVE);
                ApplyStat(base.LastOwner, PlayerStats.StatType.EnemyProjectileSpeedMultiplier, .3f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            }
            bool flag23 = num3 == 19;

            if (flag23)
            {
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(137).gameObject, base.LastOwner);
            }
            this.Notify(header, text);
        }
        private void Update()
        {
            if (m_attachedPlayer != null && !Dungeon.IsGenerating)
            {
                if (m_attachedPlayer.healthHaver.Armor != armourLastChecked)
                {
                    if (!SaveAPIManager.GetFlag(CustomDungeonFlags.PLAYERHELDMORETHANFIVEARMOUR))
                    {
                        int threshHold = 5;
                        if (m_attachedPlayer.characterIdentity == PlayableCharacters.Robot)
                        {
                            threshHold = 11;
                        }
                        if (m_attachedPlayer.healthHaver.Armor >= threshHold)
                        {
                            SaveAPIManager.SetFlag(CustomDungeonFlags.PLAYERHELDMORETHANFIVEARMOUR, true);
                        }
                    }
                    armourLastChecked = (int)m_attachedPlayer.healthHaver.Armor;
                }
                if (m_attachedPlayer.stats.GetStatValue(PlayerStats.StatType.Health) != hpStatLastChecked)
                {
                    SaveAPIManager.UpdateMaximum(CustomTrackedMaximums.MAX_HEART_CONTAINERS_EVER, m_attachedPlayer.stats.GetStatValue(PlayerStats.StatType.Health));
                    hpStatLastChecked = (int)m_attachedPlayer.stats.GetStatValue(PlayerStats.StatType.Health);
                }
                if (m_attachedPlayer.passiveItems.Count != itemCountLastChecked)
                {
                    OnInventoryItemsChanged();
                    itemCountLastChecked = m_attachedPlayer.passiveItems.Count;
                }
                if (m_attachedPlayer.CurrentGun)
                {
                    if (m_attachedPlayer.CurrentGun.PickupObjectId != gunIDLastChecked)
                    {
                        OnCurrentGunChanged();
                    }
                }

                #region InvisibleO
                if (Challenges.CurrentChallenge == ChallengeType.INVISIBLEO && m_attachedPlayer.IsVisible == true)
                {
                    playerIsInvisibleForChallenge = true;
                    m_attachedPlayer.DoDustUps    = false;
                    m_attachedPlayer.IsVisible    = false;
                }
                if (playerIsInvisibleForChallenge && Challenges.CurrentChallenge != ChallengeType.INVISIBLEO && m_attachedPlayer.IsVisible == false)
                {
                    playerIsInvisibleForChallenge = false;
                    m_attachedPlayer.DoDustUps    = true;
                    m_attachedPlayer.IsVisible    = true;
                }
                if (playerIsInvisibleForChallenge && m_attachedPlayer.gameActor.ShadowObject.GetComponent <Renderer>().enabled == true && !playerShadowInvisible)
                {
                    m_attachedPlayer.gameActor.ShadowObject.GetComponent <Renderer>().enabled = false;
                    playerShadowInvisible = true;
                }
                else if (!playerIsInvisibleForChallenge && m_attachedPlayer.gameActor.ShadowObject.GetComponent <Renderer>().enabled == false && playerShadowInvisible)
                {
                    m_attachedPlayer.gameActor.ShadowObject.GetComponent <Renderer>().enabled = true;
                    playerShadowInvisible = false;
                }
                if (Challenges.CurrentChallenge == ChallengeType.INVISIBLEO && m_attachedPlayer.CurrentGun && m_attachedPlayer.CurrentGun.GetComponent <InvisibleGun>() == null)
                {
                    m_attachedPlayer.CurrentGun.gameObject.AddComponent <InvisibleGun>();
                }
                if (Challenges.CurrentChallenge == ChallengeType.INVISIBLEO && m_attachedPlayer.CurrentSecondaryGun && m_attachedPlayer.CurrentSecondaryGun.GetComponent <InvisibleGun>() == null)
                {
                    m_attachedPlayer.CurrentSecondaryGun.gameObject.AddComponent <InvisibleGun>();
                }
                if (playerIsInvisibleForChallenge && m_attachedPlayer.primaryHand.ForceRenderersOff == false)
                {
                    m_attachedPlayer.primaryHand.ForceRenderersOff = true;
                }
                if (playerIsInvisibleForChallenge && m_attachedPlayer.secondaryHand.ForceRenderersOff == false)
                {
                    m_attachedPlayer.secondaryHand.ForceRenderersOff = true;
                }
                if (Challenges.CurrentChallenge == ChallengeType.INVISIBLEO && GameUIRoot.Instance.GetReloadBarForPlayer(m_attachedPlayer))
                {
                    int i = m_attachedPlayer.PlayerIDX;
                    GameUIRoot.Instance.ForceClearReload(i);
                }
                #endregion

                if (Challenges.CurrentChallenge == ChallengeType.KEEP_IT_COOL)
                {
                    DeadlyDeadlyGoopManager goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.WaterGoop);
                    goop.TimedAddGoopCircle(m_attachedPlayer.specRigidbody.UnitCenter, 2f, 0.01f, true);
                    DeadlyDeadlyGoopManager.FreezeGoopsCircle(m_attachedPlayer.specRigidbody.UnitBottomCenter, 2);
                    if (!m_attachedPlayer.ownerlessStatModifiers.Contains(keepItCoolSpeedBuff))
                    {
                        m_attachedPlayer.ownerlessStatModifiers.Add(keepItCoolSpeedBuff);
                        m_attachedPlayer.stats.RecalculateStats(m_attachedPlayer);
                    }
                    if (m_attachedPlayer.HasPickupID(256))
                    {
                        m_attachedPlayer.RemovePassiveItem(256);
                        IntVector2 bestRewardLocation2 = m_attachedPlayer.CurrentRoom.GetBestRewardLocation(IntVector2.One * 3, RoomHandler.RewardLocationStyle.PlayerCenter, true);
                        Chest      red_Chest           = GameManager.Instance.RewardManager.A_Chest;
                        red_Chest.IsLocked  = false;
                        red_Chest.ChestType = (UnityEngine.Random.value <= 0.5f ? Chest.GeneralChestType.ITEM : Chest.GeneralChestType.WEAPON);
                        Chest spawnedRed = Chest.Spawn(red_Chest, bestRewardLocation2);
                        spawnedRed.lootTable.lootTable = (UnityEngine.Random.value <= 0.5f ? GameManager.Instance.RewardManager.GunsLootTable : GameManager.Instance.RewardManager.ItemsLootTable);
                        spawnedRed.RegisterChestOnMinimap(spawnedRed.GetAbsoluteParentRoom());
                        TextBubble.DoAmbientTalk(m_attachedPlayer.transform, new Vector3(1, 2, 0), "Nice Try", 4f);
                    }
                }
                else if (m_attachedPlayer.ownerlessStatModifiers.Contains(keepItCoolSpeedBuff))
                {
                    m_attachedPlayer.ownerlessStatModifiers.Remove(keepItCoolSpeedBuff);
                    m_attachedPlayer.stats.RecalculateStats(m_attachedPlayer);
                }
            }
        }
Пример #27
0
        private void DoGoop()
        {
            DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.OilDef);

            goopManagerForGoopType.TimedAddGoopCircle(gun.CurrentOwner.sprite.WorldCenter, 4f, 0.35f, false);
        }
Пример #28
0
        protected override void DoEffect(PlayerController user)
        {
            string header = "You feel sick.";
            string text   = "You drank a potion.";

            AkSoundEngine.PostEvent("Play_WPN_Bubbler_Drink_01", gameObject);
            int bighead = UnityEngine.Random.Range(1, 19);

            if (bighead == 1)
            {
                header = "Damage up.";
                text   = "Lucky you!";
                this.ApplyStat(user, PlayerStats.StatType.Damage, 0.05f, StatModifier.ModifyMethod.ADDITIVE);
            }
            if (bighead == 2)
            {
                header = "Projectile speed up.";
                text   = "Lucky you!";
                this.ApplyStat(user, PlayerStats.StatType.ProjectileSpeed, 0.05f, StatModifier.ModifyMethod.ADDITIVE);
            }
            if (bighead == 3)
            {
                header = "Movement speed up.";
                text   = "Lucky you!.";
                this.ApplyStat(user, PlayerStats.StatType.MovementSpeed, 0.05f, StatModifier.ModifyMethod.ADDITIVE);
            }
            if (bighead == 4)
            {
                header = "Damage to bosses up.";
                text   = "Lucky you!";
                this.ApplyStat(user, PlayerStats.StatType.DamageToBosses, 0.05f, StatModifier.ModifyMethod.ADDITIVE);
            }
            if (bighead == 5)
            {
                header = "Blanks up.";
                text   = "Lucky you!";
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(224).gameObject, LastOwner);
            }
            if (bighead == 6)
            {
                header = "Curse up.";
                text   = "Unlucky.";

                this.ApplyStat(user, PlayerStats.StatType.Curse, 1f, StatModifier.ModifyMethod.ADDITIVE);
            }
            if (bighead == 7)
            {
                header = "Ammo Capacity up.";
                text   = "Lucky you!";
                this.ApplyStat(user, PlayerStats.StatType.AmmoCapacityMultiplier, 1.05f, StatModifier.ModifyMethod.MULTIPLICATIVE);
            }
            if (bighead == 8)
            {
                header = "Coolness up.";
                text   = "Lucky you!";
                this.ApplyStat(user, PlayerStats.StatType.Coolness, 3f, StatModifier.ModifyMethod.ADDITIVE);
            }
            if (bighead == 9)
            {
                header = "Armour up.";
                text   = "Lucky you!";
                LastOwner.healthHaver.Armor = LastOwner.healthHaver.Armor + 1;
            }
            if (bighead == 10)
            {
                header = "Money up.";
                text   = "Lucky you!";
                LastOwner.carriedConsumables.Currency = LastOwner.carriedConsumables.Currency + 15;
            }
            if (bighead == 11)
            {
                header = "Damage.";
                text   = "Unlucky.";
                LastOwner.healthHaver.ApplyDamage(1, Vector2.zero, "Chaotic Forces", CoreDamageTypes.None, DamageCategory.Normal, true, null, false);
            }
            if (bighead == 12)
            {
                header = "Keys up.";
                text   = "Lucky you!";
                LastOwner.carriedConsumables.KeyBullets = LastOwner.carriedConsumables.KeyBullets + 1;
            }
            if (bighead == 13)
            {
                header = "Mapped out.";
                text   = "Lucky you!";
                Minimap.Instance.RevealAllRooms(false);
            }
            if (bighead == 14)
            {
                header = "Lead Embrace.";
                text   = "Unlucky.";
                AIActor    orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("cd4a4b7f612a4ba9a720b9f97c52f38c");
                IntVector2?intVector    = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));

                AIActor aiactor = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);
            }
            if (bighead == 15)
            {
                header = "Glass blessing.";
                text   = "Lucky you!";
                LootEngine.GivePrefabToPlayer(PickupObjectDatabase.GetById(565).gameObject, LastOwner);
            }
            if (bighead == 16)
            {
                header = "Green fire.";
                text   = "Lucky you!";
                DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.GreenFireDef);
                goopManagerForGoopType.TimedAddGoopCircle(LastOwner.sprite.WorldCenter, 5f, 0.35f, false);
            }
            if (bighead == 17)
            {
                header = "Poison!";
                text   = "Unlucky.";
                DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.PoisonDef);
                goopManagerForGoopType.TimedAddGoopCircle(LastOwner.sprite.WorldCenter, 5f, 0.35f, false);
            }
            if (bighead == 18)
            {
                header = "Fire!";
                text   = "Unlucky.";
                DeadlyDeadlyGoopManager goopManagerForGoopType = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(EasyGoopDefinitions.FireDef);
                goopManagerForGoopType.TimedAddGoopCircle(LastOwner.sprite.WorldCenter, 5f, 0.35f, false);
            }
            this.Notify(header, text);
        }
Пример #29
0
            public override void OnEffect(GameObject obj)
            {
                float         radius        = UnityEngine.Random.Range(2f, 5f);
                float         force         = UnityEngine.Random.Range(25f, 50f);
                ExplosionData explosionData = new ExplosionData
                {
                    useDefaultExplosion = false,
                    doDamage            = true,
                    forceUseThisRadius  = false,
                    damageRadius        = radius,
                    damageToPlayer      = 0,
                    damage                       = UnityEngine.Random.Range(10f, 50f),
                    breakSecretWalls             = UnityEngine.Random.value <= 0.5f,
                    secretWallsRadius            = radius,
                    forcePreventSecretWallDamage = false,
                    doDestroyProjectiles         = true,
                    doForce                      = true,
                    pushRadius                   = UnityEngine.Random.Range(3f, 10f),
                    force                  = force,
                    debrisForce            = force,
                    preventPlayerForce     = false,
                    explosionDelay         = 0f,
                    usesComprehensiveDelay = false,
                    comprehensiveDelay     = 0,
                    playDefaultSFX         = false,

                    doScreenShake = true,
                    ss            = new ScreenShakeSettings
                    {
                        magnitude               = UnityEngine.Random.Range(1f, 3f),
                        speed                   = 6.5f,
                        time                    = 0.22f,
                        falloff                 = 0,
                        direction               = new Vector2(0, 0),
                        vibrationType           = ScreenShakeSettings.VibrationType.Auto,
                        simpleVibrationStrength = Vibration.Strength.Medium,
                        simpleVibrationTime     = Vibration.Time.Normal
                    },
                    doStickyFriction             = true,
                    doExplosionRing              = true,
                    isFreezeExplosion            = false,
                    freezeRadius                 = 5,
                    IsChandelierExplosion        = false,
                    rotateEffectToNormal         = false,
                    ignoreList                   = new List <SpeculativeRigidbody>(),
                    overrideRangeIndicatorEffect = null,
                    effect       = radius > 3.5f ? StaticExplosionDatas.genericLargeExplosion.effect : StaticExplosionDatas.explosiveRoundsExplosion.effect,
                    freezeEffect = null,
                };

                if (obj.GetComponent <CustomThrowableObject>().SpawningPlayer.PlayerHasActiveSynergy("Roll With Advantage"))
                {
                    DeadlyDeadlyGoopManager goop = DeadlyDeadlyGoopManager.GetGoopManagerForGoopType(BraveUtility.RandomElement(new List <GoopDefinition>()
                    {
                        EasyGoopDefinitions.BlobulonGoopDef,
                        EasyGoopDefinitions.CharmGoopDef,
                        EasyGoopDefinitions.CheeseDef,
                        EasyGoopDefinitions.FireDef,
                        EasyGoopDefinitions.GreenFireDef,
                        EasyGoopDefinitions.HoneyGoop,
                        EasyGoopDefinitions.OilDef,
                        EasyGoopDefinitions.PitGoop,
                        EasyGoopDefinitions.PlagueGoop,
                        EasyGoopDefinitions.PlayerFriendlyWebGoop,
                        EasyGoopDefinitions.WaterGoop
                    }));
                    goop.TimedAddGoopCircle(obj.transform.position, 4, 0.75f, true);
                }
                Exploder.Explode(obj.GetComponent <tk2dSprite>().WorldCenter, explosionData, Vector2.zero);
                StartCoroutine(Kill(obj));
            }