コード例 #1
0
        protected override void DoEffect(PlayerController user)
        {
            base.DoEffect(user);
            AIActor actor = user.CurrentRoom.GetNearestEnemy(Camera.main.ScreenToWorldPoint(Input.mousePosition), out _);

            if (actor && actor.healthHaver && !actor.healthHaver.IsBoss)
            {
                BoxOTools.AddPermanentCharm(actor);
                if (user.PlayerHasActiveSynergy("Flock Together") && user.CurrentRoom != null)
                {
                    List <AIActor> synergyActors = user.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);
                    for (int i = 0; i < synergyActors.Count; i++)
                    {
                        if (Vector2.Distance(synergyActors[i].specRigidbody.UnitCenter, actor.specRigidbody.UnitCenter) < 5)
                        {
                            BoxOTools.AddPermanentCharm(synergyActors[i]);
                        }
                    }
                }
            }
            if (user.PlayerHasActiveSynergy("Birds of a Feather") && user.CurrentRoom != null)
            {
                AIActor bird = BoxOTools.SummonAtRandomPosition("ed37fa13e0fa4fcf8239643957c51293", user);
                BoxOTools.AddPermanentCharm(bird);
            }
        }
コード例 #2
0
        public void PostProcessProjectile(Projectile projectile, float chungo)
        {
            PlayerController player = base.Owner;
            float            Chance = 0.8f;

            if (player.HasGun(7))
            {
                Chance -= 0.05f;
            }
            if (BoxOTools.BasicRandom(Chance) && !CoolAsIce)
            {
                CoolAsIce = true;
                StartCoroutine(StartCooldown());
                if (BoxOTools.BasicRandom(0.98f) && !SharkMFs)
                {
                    SharkMFs = true;
                    StartCoroutine(SharkCooldown());
                    player.HandleProjectile(25f, (player.HasGun(359)) ? 110 : 90f, 359, true, Vector2.zero, true);
                }
                else
                {
                    player.HandleProjectile(20f, (player.HasGun(7)) ? 15 : 10, 7, false, Vector2.zero, true);
                }
            }
        }
コード例 #3
0
 private void OnHitEnemy(Projectile arg1, SpeculativeRigidbody arg2, bool arg3)
 {
     try
     {
         if (arg2 != null && arg2.aiActor != null && Owner != null)
         {
             if (BoxOTools.BasicRandom(.5f))
             {
                 if (arg2.aiActor.GetEffect("weezer") != null)
                 {
                     GameActorUnweaveEffect unweave = arg2.aiActor.GetEffect("weezer") as GameActorUnweaveEffect;
                     unweave.duration += 5;
                     unweave.IncreaseIfAmountNotHit(arg2.aiActor);
                 }
                 else
                 {
                     GameActorUnweaveEffect unweave = weezer;
                     arg2.aiActor.ApplyEffect(unweave);
                 }
             }
         }
     } catch (Exception eror)
     {
         eror.ToString().Log();
     }
 }
コード例 #4
0
 private void PostProcessProjectile(Projectile sourceProjectile, float effectChanceScalar)
 {
     try
     {
         if (sourceProjectile.GetComponent <HomingModifier>() == null)
         {
             BoomerangEffect boom = sourceProjectile.gameObject.AddComponent <BoomerangEffect>();
             boom.m_speed                     = sourceProjectile.baseData.speed / 10;
             boom.startingDamage              = sourceProjectile.baseData.damage;
             sourceProjectile.baseData.range *= 10;
         }
         else
         {
             sourceProjectile.baseData.damage *= 1.3f;
         }
         if (BoxOTools.BasicRandom(0.9f) && Owner.PlayerHasActiveSynergy("Suicide King"))
         {
             Owner.HandleProjectile(40, 1, 39, false, Vector2.zero);
         }
         if (BoxOTools.BasicRandom(0.8f) && Owner.PlayerHasActiveSynergy("Boomerang Bros"))
         {
             Owner.HandleProjectile(20, 6, 448, false, Vector2.zero);
         }
     }
     catch (Exception ex)
     {
         ETGModConsole.Log(ex.Message, false);
     }
     this.damageToDo = sourceProjectile.baseData.damage;
 }
コード例 #5
0
ファイル: SoulInator.cs プロジェクト: blazeykat/prismatism
 protected override void DoEffect(PlayerController user)
 {
     base.DoEffect(user);
     if (user.CurrentRoom != null && user)
     {
         List <AIActor> activeEnemies = user.CurrentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);
         if (activeEnemies.Count != 0 && activeEnemies != null)
         {
             for (int counter = 0; counter < activeEnemies.Count; counter++)
             {
                 AIActor actor = activeEnemies[counter];
                 if (actor && actor.healthHaver && !actor.healthHaver.IsBoss && actor.gameObject.GetComponent <GhostAllyComponent>() == null && actor.healthHaver.IsVulnerable && actor.IsNormalEnemy && !actor.IsMimicEnemy && actor.GetResistanceForEffectType(EffectResistanceType.Charm) != 1)
                 {
                     List <int> Colors = new List <int>
                     {
                         7,
                         141,
                         222
                     };
                     GameActorCharmEffect ghostCharm = GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect;
                     ghostCharm.OverheadVFX  = null;
                     ghostCharm.TintColor    = new Color(Colors[0], Colors[1], Colors[2]);
                     ghostCharm.TintColor.a /= 100;
                     string  guid    = actor.EnemyGuid;
                     AIActor aiactor = BoxOTools.SummonAtRandomPosition(guid, user);
                     aiactor.AddPermanentCharm(ghostCharm);
                     aiactor.gameObject.AddComponent <GhostAllyComponent>();
                     aiactor.HandleReinforcementFallIntoRoom(counter / 10);
                 }
             }
         }
     }
 }
コード例 #6
0
ファイル: KeyDoubler.cs プロジェクト: blazeykat/prismatism
        public static void DoubleKeys(Action <KeyBulletPickup, PlayerController> acshon, KeyBulletPickup key, PlayerController player)
        {
            acshon(key, player);
            foreach (PassiveItem passives in player.passiveItems)
            {
                if (passives is KeyDoubler && BoxOTools.BasicRandom(0.5f))
                {
                    player.carriedConsumables.KeyBullets += 1;
                    player.BloopItemAboveHead(itemator.sprite);


                    if (player.PlayerHasActiveSynergy("Twice the Pride"))
                    {
                        if (player.characterIdentity != PlayableCharacters.Robot)
                        {
                            player.healthHaver.ApplyHealing(1f);
                        }
                        else
                        {
                            player.healthHaver.Armor += 1;
                        }
                        AkSoundEngine.PostEvent("Play_OBJ_heart_heal_01", passives.gameObject);
                        player.PlayEffectOnActor(ResourceCache.Acquire("Global VFX/vfx_healing_sparkles_001") as GameObject, Vector3.zero);
                    }
                }
            }
        }
コード例 #7
0
ファイル: PlagueBullets.cs プロジェクト: blazeykat/prismatism
 private void PostProcessBeamChanceTick(BeamController beamController)
 {
     if (BoxOTools.BasicRandom(0.7f) && !CoolAsIce)
     {
         ShootPlagueShit();
     }
 }
コード例 #8
0
 void Event(Chest chest, PlayerController player)
 {
     if (player.carriedConsumables.KeyBullets > 0 && BoxOTools.BasicRandom(0.5f))
     {
         player.carriedConsumables.KeyBullets--;
     }
 }
コード例 #9
0
 private void PostProcessBeamChanceTick(BeamController beamController)
 {
     if (BoxOTools.BasicRandom(Owner.PlayerHasActiveSynergy("Mahoguny Sapling") ? 0.6f : 0.75f) && CoolAsIce)
     {
         ShootLeafShit();
     }
 }
コード例 #10
0
ファイル: PlagueBullets.cs プロジェクト: blazeykat/prismatism
 private void PostProcessProjectile(Projectile projectile, float Chance)
 {
     if (BoxOTools.BasicRandom(0.7f) && !CoolAsIce)
     {
         ShootPlagueShit();
     }
 }
コード例 #11
0
 private void PostProcessProjectile(Projectile projectile, float Chance)
 {
     if (BoxOTools.BasicRandom(Owner.PlayerHasActiveSynergy("Mahoguny Sapling") ? 0.6f : 0.75f) && CoolAsIce && Owner)
     {
         ShootLeafShit();
     }
 }
コード例 #12
0
 private void OnEnemyDamaged(float damage, bool fatal, HealthHaver enemy)
 {
     if (enemy.specRigidbody != null && enemy.aiActor != null && base.Owner != null && enemy != null)
     {
         if (fatal)
         {
             if (BoxOTools.BasicRandom(0.97f))
             {
                 if (BoxOTools.BasicRandom(0.99f) && !base.Owner.HasPickupID(580) && !base.Owner.HasPickupID(641))
                 {
                     if (BoxOTools.BasicRandom(0.05f) && !base.Owner.HasPickupID(580))
                     {
                         LootEngine.SpawnItem(PickupObjectDatabase.GetById(580).gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f, false, true, false);
                     }
                     else if (!base.Owner.HasPickupID(641))
                     {
                         LootEngine.SpawnItem(PickupObjectDatabase.GetById(641).gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f, false, true, false);
                     }
                 }
                 else
                 {
                     LootEngine.SpawnItem(PickupObjectDatabase.GetById(127).gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f, false, true, false);
                 }
             }
         }
     }
 }
コード例 #13
0
        private void PostProcessBeamChanceTick(BeamController beamController)
        {
            PlayerController player = base.Owner;
            float            Chance = 0.9f;

            if (player.HasGun(7))
            {
                Chance -= 0.05f;
            }
            if (BoxOTools.BasicRandom(Chance) && !CoolAsIce)
            {
                CoolAsIce = true;
                StartCoroutine(StartCooldown());
                if (BoxOTools.BasicRandom(0.97f) && !SharkMFs)
                {
                    SharkMFs = true;
                    StartCoroutine(SharkCooldown());
                    player.HandleProjectile(25f, (player.HasGun(359)) ? 110 : 95f, 359, true, Vector2.zero, true);
                }
                else
                {
                    player.HandleProjectile(20f, (player.HasGun(7)) ? 20 : 10, 7, false, Vector2.zero, true);
                }
            }
        }
コード例 #14
0
 private void PostProcessProjectile(Projectile projectile, float arg2)
 {
     if (projectile && BoxOTools.BasicRandom(0.85f))
     {
         projectile.AdjustPlayerProjectileTint(Color.red, 5);
         projectile.OnDestruction += PushinPeopleToTheGround;
     }
 }
コード例 #15
0
 private void Player_PostProcessProjectile(Projectile projectile, float arg2)
 {
     if (projectile && BoxOTools.BasicRandom(0.9f))
     {
         projectile.baseData.damage *= 2;
         projectile.AdjustPlayerProjectileTint(Color.yellow, 5);
     }
 }
コード例 #16
0
 private void PostProcessProjectile(Projectile projectile, float chungo)
 {
     if (BoxOTools.BasicRandom(base.Owner.CurrentGun.PickupObjectId == 7 ? 0.4f : 0.9f) && !CoolAsIce && projectile)
     {
         CoolAsIce = true;
         projectile.AdjustPlayerProjectileTint(Color.blue, 5);
         projectile.OnDestruction += Wave;
     }
 }
コード例 #17
0
 private void OnEnemyDamaged(Projectile arg1, SpeculativeRigidbody arg2, bool arg3)
 {
     if (arg2 && arg2.healthHaver && arg2.aiActor)
     {
         if ((Owner.PlayerHasActiveSynergy("Mirror Cannon") || BoxOTools.BasicRandom(0.9f)) && !arg2.healthHaver.IsBoss)
         {
             arg2.aiActor.gameActor.ApplyEffect(EnemyDebuff, 1f, null);
         }
     }
 }
コード例 #18
0
 public void AmmoInator(PlayerController player, HealthHaver healed)
 {
     if (healed && healed.specRigidbody && player)
     {
         if (BoxOTools.BasicRandom(0.825f) && Shells < Mathf.FloorToInt(55 * player.stats.GetStatValue(PlayerStats.StatType.AmmoCapacityMultiplier)) && player.HasGun(Gungeon.Game.Items["psm:wastelanders_shotgun"].PickupObjectId))
         {
             LootEngine.SpawnItem(PickupObjectDatabase.GetById(NuclearAmmoPickup.id).gameObject, healed.specRigidbody.UnitCenter, Vector2.zero, 1f, true, true);
         }
     }
 }
コード例 #19
0
 private void Doublinator(PlayerController arg1, ShopItemController arg2)
 {
     if (arg1 && arg2 && arg2.item)
     {
         if (arg2.item.quality != ItemQuality.COMMON && arg2.item.quality != ItemQuality.SPECIAL && arg2.item.quality != ItemQuality.EXCLUDED && BoxOTools.BasicRandom(0.4f))
         {
             LootEngine.GivePrefabToPlayer(BoxOTools.GetTotallyRandomItem(arg2.item.quality, false).gameObject, arg1);
         }
     }
 }
コード例 #20
0
ファイル: LuckyCoin.cs プロジェクト: blazeykat/prismatism
 private void OnHitEnemy(Projectile arg1, SpeculativeRigidbody arg2, bool arg3)
 {
     if (arg2 != null && arg2.aiActor != null && Owner != null && arg2.healthHaver && arg2.healthHaver.IsVulnerable)
     {
         if (BoxOTools.BasicRandom(0.97f))
         {
             LootEngine.SpawnItem(PickupObjectDatabase.GetById(68).gameObject, arg2.UnitCenter, Vector2.zero, 1f, false, true, true);
         }
     }
 }
コード例 #21
0
ファイル: Depthmeter.cs プロジェクト: blazeykat/prismatism
 public void MineSynergy()
 {
     if (Owner.PlayerHasActiveSynergy("Into the Depths"))
     {
         if (Owner.CurrentRoom != null)
         {
             AIActor actor = BoxOTools.SummonAtRandomPosition("3cadf10c489b461f9fb8814abc1a09c1", Owner);
             actor.AddPermanentCharm();
         }
     }
 }
コード例 #22
0
 public static void Healing(Action <HealthPickup, PlayerController> acshon, HealthPickup key, PlayerController player)
 {
     acshon(key, player);
     foreach (PassiveItem passives in player.passiveItems)
     {
         if (passives is CodexUmbra && BoxOTools.BasicRandom(.5f))
         {
             GiveRandomItem(player);
         }
     }
 }
コード例 #23
0
 public static void VeryBlank(Action <SilencerItem, PlayerController> acshon, SilencerItem key, PlayerController player)
 {
     acshon(key, player);
     foreach (PassiveItem passives in player.passiveItems)
     {
         if (passives is CodexUmbra && BoxOTools.BasicRandom(.5f))
         {
             GiveRandomItem(player);
         }
     }
 }
コード例 #24
0
 public static void VeryShady(Action <KeyBulletPickup, PlayerController> acshon, KeyBulletPickup key, PlayerController player)
 {
     acshon(key, player);
     foreach (PassiveItem passives in GameManager.Instance.GetActivePlayerClosestToPoint(key.specRigidbody.UnitCenter, true).passiveItems)
     {
         if (passives is CodexUmbra && BoxOTools.BasicRandom(.5f))
         {
             GiveRandomItem(player);
         }
     }
 }
コード例 #25
0
 public static void PigHook(Action <CompanionController, PlayerController> orig, CompanionController companion, PlayerController owner)
 {
     orig(companion, owner);
     if (companion && companion.specRigidbody && companion.name.StartsWith("Pig") && owner.PlayerHasActiveSynergy("Oink"))
     {
         if (BoxOTools.BasicRandom(0.4f))
         {
             LootEngine.SpawnCurrency(companion.specRigidbody.UnitCenter, 2);
         }
     }
 }
コード例 #26
0
 // the old "I don't lnow how to balance my items" version
 private void OnEnemyDamaged(float damage, bool fatal, HealthHaver enemy)
 {
     if (enemy.specRigidbody != null && enemy.aiActor != null && base.Owner != null)
     {
         if (fatal)
         {
             if (BoxOTools.BasicRandom(.985f) && !GameStatsManager.Instance.IsRainbowRun)
             {
                 GameManager.Instance.RewardManager.SpawnTotallyRandomItem(enemy.specRigidbody.UnitCenter);
             }
         }
     }
 }
コード例 #27
0
 private void OnEnemyDamaged(float damage, bool fatal, HealthHaver enemy)
 {
     if (!Owner.PlayerHasActiveSynergy("REANIMATE"))
     {
         if (fatal && enemy && enemy.aiActor && enemy.aiActor.EnemyGuid != "699cd24270af4cd183d671090d8323a1")
         {
             if (Owner.CurrentRoom != null)
             {
                 if (BoxOTools.BasicRandom(0.975f) && DoneKill)
                 {
                     try
                     {
                         AIActor aiactor = BoxOTools.SummonAtRandomPosition("699cd24270af4cd183d671090d8323a1", Owner);
                         if (base.Owner.PlayerHasActiveSynergy("keysight"))
                         {
                             aiactor.IsHarmlessEnemy = true;
                             aiactor.BecomeBlackPhantom();
                         }
                         if (!base.Owner.PlayerHasActiveSynergy("keysight"))
                         {
                             aiactor.PreventBlackPhantom = true;
                         }
                         aiactor.HandleReinforcementFallIntoRoom(0f);
                         DoneKill = false;
                     } catch (Exception Error)
                     {
                         ETGModConsole.Log(Error.Message);
                     }
                 }
             }
         }
     }
     else
     {
         if (BoxOTools.BasicRandom(0.8f) && enemy && enemy.aiActor && Owner.CurrentRoom != null && fatal)
         {
             if (BoxOTools.BasicRandom(0.3f) || base.Owner.PlayerHasActiveSynergy("keysight"))
             {
                 AIActor aiactor = BoxOTools.SummonAtRandomPosition("336190e29e8a4f75ab7486595b700d4a", Owner);
                 BoxOTools.AddPermanentCharm(aiactor);
                 aiactor.HandleReinforcementFallIntoRoom(0f);
             }
             else
             {
                 AIActor aiactor = BoxOTools.SummonAtRandomPosition("95ec774b5a75467a9ab05fa230c0c143", Owner);
                 BoxOTools.AddPermanentCharm(aiactor);
                 aiactor.HandleReinforcementFallIntoRoom(0f);
             }
         }
     }
 }
コード例 #28
0
ファイル: Drone.cs プロジェクト: blazeykat/prismatism
        private void OnEnemyDamaged(float damage, bool fatal, HealthHaver enemy)
        {
            XP += (int)damage;
            if (XP >= 1000 && Level < 5)
            {
                XP = 0;
                BoxOTools.Notify("LEVEL UP!", $"{Level + 1} => {Level + 2}", "katmod/Resources/Swarm/beeswarm", UINotificationController.NotificationColor.PURPLE);
                Level++;
            }
            if (enemy.specRigidbody != null && enemy.aiActor != null && base.Owner != null)
            {
                if (fatal)
                {
                    //if (BoxOTools.BasicRandom(.9f - (Level / 100)))
                    {
                        int pick = UnityEngine.Random.Range(1, 4 + Drone.Level);
                        switch (pick)
                        {
                        default:
                            ETGModConsole.Log($"Unknown number {pick} appeared at {Level}, oopsy daisies");
                            LootEngine.SpawnItem(Gungeon.Game.Items["psm:whitesplode"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f);
                            break;

                        case 1:
                            LootEngine.SpawnItem(Gungeon.Game.Items["psm:whitesplode"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f);
                            break;

                        case 2:
                            LootEngine.SpawnItem(Gungeon.Game.Items["psm:redsplode"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f);
                            break;

                        case 3:
                            LootEngine.SpawnItem(Gungeon.Game.Items["psm:bluesplode"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f);
                            break;

                        case 4:
                            LootEngine.SpawnItem(Gungeon.Game.Items["psm:beesneak"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f);
                            break;

                        case 5:
                            LootEngine.SpawnItem(Gungeon.Game.Items["psm:whiteup"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f);
                            break;

                        case 6:
                            LootEngine.SpawnItem(Gungeon.Game.Items["psm:yvswarm"].gameObject, enemy.specRigidbody.UnitCenter, Vector2.zero, 1f);
                            break;
                        }
                    }
                }
            }
        }
コード例 #29
0
 public void OnHit(Projectile proj, SpeculativeRigidbody target, bool flag)
 {
     if (proj && proj.specRigidbody)
     {
         target?.aiActor?.ParentRoom?.BetterDoToEnemiesInRadius(proj.specRigidbody.UnitCenter, 6, delegate(AIActor enemy)
         {
             if (BoxOTools.BasicRandom(0.5f))
             {
                 GameActorHealthEffect poisonEffect = Gungeon.Game.Items["irradiated_lead"].GetComponent <BulletStatusEffectItem>().HealthModifierEffect;
                 enemy.ApplyEffect(poisonEffect);
             }
         });
     }
 }
コード例 #30
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);
     }
 }