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(KinAmmoletID))
            {
                RoomHandler currentRoom = user.CurrentRoom;
                if (currentRoom.IsSealed)
                {
                    string enemyToSpawnGUID = "01972dee89fc4404a5c408d50007dad5";
                    bool   shouldJam        = false;
                    if (user.PlayerHasActiveSynergy("Shotgun Club") && UnityEngine.Random.value <= 0.5f)
                    {
                        enemyToSpawnGUID = "128db2f0781141bcb505d8f00f9e4d47";
                    }
                    if (user.PlayerHasActiveSynergy("Friends On The Other Side"))
                    {
                        shouldJam = true;
                    }

                    CompanionisedEnemyUtility.SpawnCompanionisedEnemy(user, enemyToSpawnGUID, centerPoint.ToIntVector2(), false, ExtendedColours.brown, 15, 2, shouldJam, true);
                    if ((user.PlayerHasActiveSynergy("Aim Twice, Shoot Once")))
                    {
                        CompanionisedEnemyUtility.SpawnCompanionisedEnemy(user, enemyToSpawnGUID, centerPoint.ToIntVector2(), false, ExtendedColours.brown, 15, 2, shouldJam, true);
                    }
                }
            }
        }
Exemplo n.º 2
0
 public override void OnReload(PlayerController player, Gun gun)
 {
     if (player && player.PlayerHasActiveSynergy("Manbat and Robin"))
     {
         CompanionisedEnemyUtility.SpawnCompanionisedEnemy(player, "2feb50a6a40f4f50982e89fd276f6f15", gun.barrelOffset.position.XY().ToIntVector2(), true, Color.black, 10, 2, false, false);
     }
     base.OnReload(player, gun);
 }
        private IEnumerator BatAttack()
        {
            yield return(new WaitForSeconds(1));

            for (int i = 0; i < 10; i++)
            {
                if (self.ProjectilePlayerOwner().IsInCombat)
                {
                    CompanionisedEnemyUtility.SpawnCompanionisedEnemy(self.ProjectilePlayerOwner(), BraveUtility.RandomElement(EasyEnemyTypeLists.SmallBullats), self.specRigidbody.UnitCenter.ToIntVector2(), false, Color.red, 7, 2, false, false);
                }
                yield return(new WaitForSeconds(0.1f));
            }
            Die();
            yield break;
        }
        private IEnumerator HegemonyPlatoon()
        {
            yield return(new WaitForSeconds(1));

            for (int i = 0; i < 3; i++)
            {
                if (self.ProjectilePlayerOwner().IsInCombat)
                {
                    CompanionisedEnemyUtility.SpawnCompanionisedEnemy(self.ProjectilePlayerOwner(), "556e9f2a10f9411cb9dbfd61e0e0f1e1", self.specRigidbody.UnitCenter.ToIntVector2(), false, Color.red, 5, 2, false, true);
                }
                yield return(new WaitForSeconds(0.8f));
            }
            Die();
            yield break;
        }
Exemplo n.º 5
0
        protected override void DoEffect(PlayerController user)
        {
            AkSoundEngine.PostEvent("Play_OBJ_dead_again_01", base.gameObject);
            for (int i = 0; i < StaticReferenceManager.AllCorpses.Count; i++)
            {
                GameObject gameObject = StaticReferenceManager.AllCorpses[i];
                if (gameObject && gameObject.GetComponent <tk2dBaseSprite>() && gameObject.transform.position.GetAbsoluteRoom() == user.CurrentRoom && gameObject.transform.position.GetAbsoluteRoom().IsSealed)
                {
                    Vector2 worldCenter = gameObject.GetComponent <tk2dBaseSprite>().WorldCenter;

                    string guid = "249db525a9464e5282d02162c88e0357";
                    if (user.PlayerHasActiveSynergy("Roll Dem Bones") && UnityEngine.Random.value <= 0.25f)
                    {
                        guid = "336190e29e8a4f75ab7486595b700d4a";
                    }
                    AIActor Spent = CompanionisedEnemyUtility.SpawnCompanionisedEnemy(user, guid, worldCenter.ToIntVector2(), true, ExtendedColours.purple, 5, 2, false, true);
                    if (Spent.GetComponent <SpawnEnemyOnDeath>())
                    {
                        UnityEngine.Object.Destroy(Spent.GetComponent <SpawnEnemyOnDeath>());
                    }
                    if (Spent.CorpseObject != null)
                    {
                        Spent.CorpseObject = null;
                    }

                    if (guid == "249db525a9464e5282d02162c88e0357")
                    {
                        Spent.OverrideHitEnemies    = true;
                        Spent.CollisionDamage       = 1f;
                        Spent.CollisionDamageTypes |= CoreDamageTypes.Electric;
                    }

                    if (user.PlayerHasActiveSynergy("The Sprinting Dead"))
                    {
                        Spent.MovementSpeed *= 2;
                    }

                    UnityEngine.Object.Destroy(gameObject.gameObject);
                }
            }
        }
Exemplo n.º 6
0
        protected override void DoEffect(PlayerController user)
        {
            AkSoundEngine.PostEvent("Play_OBJ_supplydrop_activate_01", base.gameObject);
            List <string> reinforcements = new List <string>();

            reinforcements.AddRange(BraveUtility.RandomElement(randomEnemyloadouts));

            foreach (string key in synergies.Keys)
            {
                if (user.PlayerHasActiveSynergy(key))
                {
                    reinforcements.Add(synergies[key]);
                }
            }

            foreach (string dude in reinforcements)
            {
                IntVector2?bestRewardLocation = LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2);
                AIActor    spawnedDude        = CompanionisedEnemyUtility.SpawnCompanionisedEnemy(user, dude, (IntVector2)bestRewardLocation, false, Color.red, 5, 2, false, true);
                spawnedDude.HandleReinforcementFallIntoRoom(0f);
            }
        }
Exemplo n.º 7
0
            public override void Update()
            {
                if (Owner && !Dungeon.IsGenerating && Owner.IsInCombat && base.transform.position.GetAbsoluteRoom() == Owner.CurrentRoom)
                {
                    if (timer > 0)
                    {
                        timer -= BraveTime.DeltaTime;
                    }
                    if (timer <= 0)
                    {
                        //do stuff
                        bool doAnim = false;
                        if ((GameManager.Instance.Dungeon.tileIndices.tilesetId == GlobalDungeonData.ValidTilesets.HELLGEON) || Owner.PlayerHasActiveSynergy("They Grow Inside"))
                        {
                            float chance = 0.25f;
                            if (Owner.PlayerHasActiveSynergy("They Grow Inside"))
                            {
                                chance = 0.50f;
                            }
                            if (UnityEngine.Random.value <= chance)
                            {
                                doAnim = true;
                                VolleyReplacementSynergyProcessor shotgrubProcessor = (PickupObjectDatabase.GetById(347) as Gun).GetComponent <VolleyReplacementSynergyProcessor>();
                                Projectile bullet      = shotgrubProcessor.SynergyVolley.projectiles[0].projectiles[0].projectile;
                                GameObject spawnedProj = ProjSpawnHelper.SpawnProjectileTowardsPoint(bullet.gameObject, base.sprite.WorldCenter, base.specRigidbody.UnitCenter.GetPositionOfNearestEnemy(false, true), 0, 15);
                                Projectile component   = spawnedProj.GetComponent <Projectile>();
                                if (component != null)
                                {
                                    component.Owner   = Owner;
                                    component.Shooter = Owner.specRigidbody;
                                    //COMPANION SHIT
                                    component.TreatedAsNonProjectileForChallenge = true;
                                    component.baseData.damage           *= Owner.stats.GetStatValue(PlayerStats.StatType.Damage);
                                    component.baseData.speed            *= Owner.stats.GetStatValue(PlayerStats.StatType.ProjectileSpeed);
                                    component.baseData.force            *= Owner.stats.GetStatValue(PlayerStats.StatType.KnockbackMultiplier);
                                    component.AdditionalScaleMultiplier *= Owner.stats.GetStatValue(PlayerStats.StatType.PlayerBulletScale);
                                    component.UpdateSpeed();
                                    base.HandleCompanionPostProcessProjectile(component);
                                }
                            }
                        }
                        if (UnityEngine.Random.value <= 0.02f)
                        {
                            doAnim = true;
                            bool shouldJam = false;
                            if (Owner.PlayerHasActiveSynergy("Cursed Ceramics"))
                            {
                                shouldJam = true;
                            }
                            AIActor fairy = CompanionisedEnemyUtility.SpawnCompanionisedEnemy(Owner, "c182a5cb704d460d9d099a47af49c913", base.specRigidbody.UnitCenter.ToIntVector2(), false, ExtendedColours.brown, 10, 2, shouldJam, true);
                            fairy.specRigidbody.CollideWithOthers = false;
                        }
                        if (UnityEngine.Random.value <= 0.05f && Owner.PlayerHasActiveSynergy("The Potter Boy"))
                        {
                            doAnim = true;
                            AIActor randomActiveEnemy = base.transform.position.GetAbsoluteRoom().GetRandomActiveEnemy(false);
                            if (randomActiveEnemy && randomActiveEnemy.IsNormalEnemy && randomActiveEnemy.healthHaver && !randomActiveEnemy.healthHaver.IsBoss)
                            {
                                randomActiveEnemy.Transmogrify(EnemyDatabase.GetOrLoadByGuid("76bc43539fc24648bff4568c75c686d1"), (GameObject)ResourceCache.Acquire("Global VFX/VFX_Item_Spawn_Poof"));
                            }
                        }
                        if (doAnim && this.aiAnimator)
                        {
                            this.aiAnimator.PlayUntilFinished("spawnobject", false, null, -1f, false);
                        }
                        timer = 2f;
                    }

                    if (RadialTimer > 0)
                    {
                        RadialTimer -= BraveTime.DeltaTime;
                    }
                    if (RadialTimer <= 0)
                    {
                        HandleRadialEffects();
                        RadialTimer = 0.05f;
                    }
                }
                base.Update();
            }
 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;
 }
Exemplo n.º 9
0
        private void OnTableFlipped(FlippableCover obj)
        {
            if (Owner && obj)
            {
                int selectedEffect = UnityEngine.Random.Range(1, (27 + 1));
                ETGModConsole.Log("Selected Effect: " + selectedEffect);
                switch (selectedEffect)
                {
                case 1:
                    SpawnFoldingTable();
                    break;

                case 2:
                    DoSafeExplosion(obj.specRigidbody.UnitCenter);
                    break;

                case 3:
                    DoGoop(obj.specRigidbody.UnitCenter, EasyGoopDefinitions.FireDef);
                    break;

                case 4:
                    DoGoop(obj.specRigidbody.UnitCenter, EasyGoopDefinitions.PoisonDef);
                    break;

                case 5:
                    DoGoop(obj.specRigidbody.UnitCenter, EasyGoopDefinitions.CharmGoopDef);
                    break;

                case 6:
                    DoGoop(obj.specRigidbody.UnitCenter, EasyGoopDefinitions.CheeseDef);
                    break;

                case 7:
                    LootEngine.SpawnCurrency(obj.specRigidbody.UnitCenter, UnityEngine.Random.Range(5, 10), false);
                    break;

                case 8:
                    Owner.DoEasyBlank(obj.specRigidbody.UnitCenter, EasyBlankType.FULL);
                    break;

                case 9:
                    Owner.DoEasyBlank(obj.specRigidbody.UnitCenter, EasyBlankType.MINI);
                    break;

                case 10:
                    FullRoomStatusEffect(StaticStatusEffects.charmingRoundsEffect);
                    break;

                case 11:
                    FullRoomStatusEffect(PickupObjectDatabase.GetById(569).GetComponent <ChaosBulletsItem>().FreezeModifierEffect);
                    break;

                case 12:
                    FullRoomStatusEffect(StaticStatusEffects.tripleCrossbowSlowEffect);
                    break;

                case 13:
                    Exploder.DoRadialKnockback(obj.specRigidbody.UnitCenter, 200, 100);
                    break;

                case 14:
                    SpawnBlackHole(obj.specRigidbody.UnitCenter);
                    break;

                case 15:
                    if (Owner.CurrentGun != null)
                    {
                        Owner.CurrentGun.GainAmmo(UnityEngine.Random.Range(5, 26));
                    }
                    break;

                case 16:
                    FreezeTime();
                    break;

                case 17:
                    TurnTableIntoRocket(obj);
                    break;

                case 18:
                    StunEnemies();
                    break;

                case 19:
                    LootEngine.SpawnCurrency(obj.specRigidbody.UnitCenter, UnityEngine.Random.Range(2, 6), true);
                    break;

                case 20:
                    CompanionisedEnemyUtility.SpawnCompanionisedEnemy(Owner, "01972dee89fc4404a5c408d50007dad5", Owner.sprite.WorldCenter.ToIntVector2(), false, Color.red, 7, 2, false, true);
                    break;

                case 21:
                    int numBullat = UnityEngine.Random.Range(2, 6);
                    for (int i = 0; i < numBullat; i++)
                    {
                        CompanionisedEnemyUtility.SpawnCompanionisedEnemy(Owner, "2feb50a6a40f4f50982e89fd276f6f15", Owner.sprite.WorldCenter.ToIntVector2(), false, Color.red, 15, 2, false, false);
                    }
                    break;

                case 22:
                    FullRoomStatusEffect(StaticStatusEffects.hotLeadEffect);
                    break;

                case 23:
                    float degrees = 0;
                    for (int i = 0; i < 15; i++)
                    {
                        SpawnBullets((PickupObjectDatabase.GetById(50) as Gun).DefaultModule.projectiles[0], obj.specRigidbody.UnitCenter, degrees);
                        degrees += 24;
                    }
                    break;

                case 24:
                    SpawnBullets((PickupObjectDatabase.GetById(372) as Gun).DefaultModule.projectiles[0], Owner.sprite.WorldCenter, Owner.sprite.WorldCenter.GetVectorToNearestEnemy().ToAngle());
                    break;

                case 25:
                    StartCoroutine(HandleShield(Owner, 7));
                    break;

                case 26:
                    Owner.StartCoroutine(this.HandleSlowBullets());
                    break;

                case 27:
                    Owner.Enrage(4f);
                    break;
                }
            }
        }