public void BlankModHook(Action <SilencerInstance, BlankModificationItem, Vector2, PlayerController> orig, SilencerInstance silencer, BlankModificationItem bmi, Vector2 centerPoint, PlayerController user)
        {
            orig(silencer, bmi, centerPoint, user);

            if (user.HasPickupID(AmmolockID))
            {
                GameActorSpeedEffect Lockdown      = StatusEffectHelper.GenerateLockdown(10);
                RoomHandler          currentRoom   = user.CurrentRoom;
                List <AIActor>       activeEnemies = currentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);
                if (activeEnemies != null)
                {
                    for (int i = 0; i < activeEnemies.Count; i++)
                    {
                        AIActor aiactor = activeEnemies[i];
                        aiactor.gameActor.ApplyEffect(Lockdown, 1f, null);
                        if (user.PlayerHasActiveSynergy("Under Lock And Key") && aiactor.healthHaver)
                        {
                            aiactor.healthHaver.ApplyDamage(7 * user.carriedConsumables.KeyBullets, Vector2.zero, "Under Lock And Key");
                        }
                    }
                }
            }
        }
Example #2
0
        public override void PostProcessProjectile(Projectile projectile)
        {
            base.PostProcessProjectile(projectile);
            switch (currentMode)
            {
            case 1:     //Increase
                EnemyScaleUpdaterMod scaleIncrease = projectile.gameObject.GetOrAddComponent <EnemyScaleUpdaterMod>();
                scaleIncrease.targetScale            = new Vector2(1.25f, 1.25f);
                scaleIncrease.multiplyExisting       = true;
                scaleIncrease.addScaleEffectsToEnemy = true;
                break;

            case 2:     //Decrease
                EnemyScaleUpdaterMod scaleDecrease = projectile.gameObject.GetOrAddComponent <EnemyScaleUpdaterMod>();
                scaleDecrease.targetScale            = new Vector2(0.75f, 0.75f);
                scaleDecrease.multiplyExisting       = true;
                scaleDecrease.addScaleEffectsToEnemy = true;
                break;

            case 3:     //ApplyStatus
                StatusEffectBulletMod effectMod = projectile.gameObject.AddComponent <StatusEffectBulletMod>();
                effectMod.pickRandom = true;
                effectMod.datasToApply.AddRange(new List <StatusEffectBulletMod.StatusData>()
                {
                    new StatusEffectBulletMod.StatusData()
                    {
                        effect      = StaticStatusEffects.chaosBulletsFreeze,
                        applyChance = 1,
                        applyTint   = false,
                    },
                    new StatusEffectBulletMod.StatusData()
                    {
                        effect      = StaticStatusEffects.charmingRoundsEffect,
                        applyChance = 1,
                        applyTint   = false,
                    },
                    new StatusEffectBulletMod.StatusData()
                    {
                        effect      = StaticStatusEffects.greenFireEffect,
                        applyChance = 1,
                        applyTint   = false,
                    },
                    new StatusEffectBulletMod.StatusData()
                    {
                        effect      = StaticStatusEffects.StandardPlagueEffect,
                        applyChance = 1,
                        applyTint   = false,
                    },
                    new StatusEffectBulletMod.StatusData()
                    {
                        effect      = StaticStatusEffects.tripleCrossbowSlowEffect,
                        applyChance = 1,
                        applyTint   = false,
                    },
                    new StatusEffectBulletMod.StatusData()
                    {
                        effect      = StaticStatusEffects.hotLeadEffect,
                        applyChance = 1,
                        applyTint   = false,
                    },
                    new StatusEffectBulletMod.StatusData()
                    {
                        effect      = StaticStatusEffects.irradiatedLeadEffect,
                        applyChance = 1,
                        applyTint   = false,
                    },
                    new StatusEffectBulletMod.StatusData()
                    {
                        effect      = StatusEffectHelper.GenerateLockdown(4),
                        applyChance = 1,
                        applyTint   = false,
                    },
                });
                break;

            case 4:     //SpawnKin
                SpawnEnemyOnDestructionMod kinSpawn = projectile.gameObject.GetOrAddComponent <SpawnEnemyOnDestructionMod>();
                kinSpawn.pickRandom = true;
                kinSpawn.EnemiesToSpawn.AddRange(new List <string>()
                {
                    EnemyGuidDatabase.Entries["bullet_kin"],
                    EnemyGuidDatabase.Entries["mutant_bullet_kin"],
                    EnemyGuidDatabase.Entries["cardinal"],
                    EnemyGuidDatabase.Entries["shroomer"],
                    EnemyGuidDatabase.Entries["ashen_bullet_kin"],
                    EnemyGuidDatabase.Entries["fallen_bullet_kin"],
                    EnemyGuidDatabase.Entries["ak47_bullet_kin"],
                    EnemyGuidDatabase.Entries["bandana_bullet_kin"],
                    EnemyGuidDatabase.Entries["veteran_bullet_kin"],
                    EnemyGuidDatabase.Entries["treadnaughts_bullet_kin"],
                    EnemyGuidDatabase.Entries["brollet"],
                    EnemyGuidDatabase.Entries["skullet"],
                    EnemyGuidDatabase.Entries["skullmet"],
                    EnemyGuidDatabase.Entries["gummy_spent"],
                    EnemyGuidDatabase.Entries["red_shotgun_kin"],
                    EnemyGuidDatabase.Entries["blue_shotgun_kin"],
                    EnemyGuidDatabase.Entries["veteran_shotgun_kin"],
                    EnemyGuidDatabase.Entries["mutant_shotgun_kin"],
                    EnemyGuidDatabase.Entries["executioner"],
                    EnemyGuidDatabase.Entries["ashen_shotgun_kin"],
                    EnemyGuidDatabase.Entries["bullat"],
                    EnemyGuidDatabase.Entries["shotgat"],
                    EnemyGuidDatabase.Entries["grenat"],
                    EnemyGuidDatabase.Entries["spirat"],
                    EnemyGuidDatabase.Entries["grenade_kin"],
                    EnemyGuidDatabase.Entries["dynamite_kin"],
                    EnemyGuidDatabase.Entries["m80_kin"],
                    EnemyGuidDatabase.Entries["tazie"],
                    EnemyGuidDatabase.Entries["rubber_kin"],
                    EnemyGuidDatabase.Entries["sniper_shell"],
                    EnemyGuidDatabase.Entries["professional"],
                });
                break;

            case 5:     //SpawnTable
                SpawnGameObjectOnDestructionMod tableSpawn = projectile.gameObject.GetOrAddComponent <SpawnGameObjectOnDestructionMod>();
                tableSpawn.objectsToPickFrom.AddRange(new List <GameObject>()
                {
                    EasyPlaceableObjects.TableVertical,
                    EasyPlaceableObjects.TableHorizontal,
                    EasyPlaceableObjects.TableHorizontalStone,
                    EasyPlaceableObjects.TableVerticalStone,
                    EasyPlaceableObjects.FoldingTable,
                });
                break;

            case 6:     //SpawnBarrel
                SpawnGameObjectOnDestructionMod barrelSpawn = projectile.gameObject.GetOrAddComponent <SpawnGameObjectOnDestructionMod>();
                barrelSpawn.objectsToPickFrom.AddRange(new List <GameObject>()
                {
                    EasyPlaceableObjects.ExplosiveBarrel,
                    EasyPlaceableObjects.MetalExplosiveBarrel,
                    EasyPlaceableObjects.OilBarrel,
                    EasyPlaceableObjects.PoisonBarrel,
                    EasyPlaceableObjects.WaterBarrel
                });
                break;

            case 7:     //Erase
                EraseEnemyBehav erase = projectile.gameObject.GetOrAddComponent <EraseEnemyBehav>();
                erase.doSparks = true;
                break;
            }
        }