private void SpawnExtraWaves(PlayerController user)
 {
     if (user.PlayerHasActiveSynergy(SynNames[0]))
     {
         IntVector2?spawnPos = user.CurrentRoom.GetRandomVisibleClearSpot(1, 1);
         int        amount   = 2;
         for (int i = 0; i < amount; i++)
         {
             AIActor HeavyKin    = EnemyDatabase.GetOrLoadByGuid("df7fb62405dc4697b7721862c7b6b3cd");
             AIActor TargetActor = AIActor.Spawn(HeavyKin, spawnPos.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(spawnPos.Value), true, AIActor.AwakenAnimationType.Default, true);
             (TargetActor.behaviorSpeculator.AttackBehaviors[0] as ShootGunBehavior).Range = (EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").behaviorSpeculator.AttackBehaviors[0] as ShootGunBehavior).Range;
             TargetActor.ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1f, null);
             PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(TargetActor.specRigidbody, null, false);
             TargetActor.gameObject.AddComponent <GoAwayAfterRoomClear>();
             TargetActor.IsHarmlessEnemy    = true;
             TargetActor.IgnoreForRoomClear = true;
             TargetActor.StartCoroutine(HandleTimer(TargetActor, duration));
             float hpMax = TargetActor.healthHaver.GetMaxHealth();
             TargetActor.healthHaver.SetHealthMaximum(hpMax * 3f);
             TargetActor.healthHaver.FullHeal();
             TargetActor.CanTargetPlayers = false;
             CompanionisedEnemyBulletModifiers mod = TargetActor.gameObject.AddComponent <CompanionisedEnemyBulletModifiers>();
             if (user.PlayerHasActiveSynergy("Great Leadership"))
             {
                 mod.doPostProcess = true;
             }
             mod.TintBullets = true;
             mod.TintColor   = new Color(252, 116, 216, 1);
             TargetActor.specRigidbody.AddCollisionLayerIgnoreOverride(CollisionMask.LayerToMask(CollisionLayer.PlayerCollider));
             GameObject gameObject = (GameObject)ResourceCache.Acquire("Global VFX/VFX_Teleport_Beam");
             SpawnManager.SpawnVFX(gameObject, TargetActor.specRigidbody.UnitCenter, Quaternion.Euler(0, 0, 0));
         }
     }
 }
        protected void AffectEnemy(AIActor target, PlayerController user)
        {
            bool flag = target.healthHaver.GetCurrentHealthPercentage() < .3f;

            if (flag)
            {
                target.StartCoroutine(HandleClockhair(target, user));
            }
        }
Beispiel #3
0
        private void EatEnemy(AIActor target)
        {
            if (!target)
            {
                return;
            }
            if (target.behaviorSpeculator)
            {
                target.behaviorSpeculator.Stun(1f, true);
            }
            if (target.knockbackDoer)
            {
                target.knockbackDoer.SetImmobile(true, "KaliberAffliction");
            }
            this.enemiesToEat.Add(target);
            GameObject gameObject = target.PlayEffectOnActor(KaliberAffliction.EraseVFX, new Vector3(0f, -1f, 0f), false, false, false);

            target.StartCoroutine(this.DelayedDestroyEnemy(target, gameObject.GetComponent <tk2dSpriteAnimator>()));
        }
Beispiel #4
0
        private void EatEnemy(AIActor enemy)
        {
            if (!enemy)
            {
                return;
            }
            if (!enemy.healthHaver.IsBoss)
            {
                if (enemy.behaviorSpeculator)
                {
                    enemy.behaviorSpeculator.Stun(1f, true);
                }
                if (enemy.knockbackDoer)
                {
                    enemy.knockbackDoer.SetImmobile(true, "KillTheWeakBehaviour");
                }
            }
            GameObject gameObject = enemy.PlayEffectOnActor(KaliberAffliction.EraseVFX, new Vector3(0f, -1f, 0f), enemy.healthHaver.IsBoss, false, false);

            enemy.StartCoroutine(this.DelayedDestroyEnemy(enemy, gameObject.GetComponent <tk2dSpriteAnimator>()));
        }
Beispiel #5
0
 public void OnPreRigidbodyCollision(SpeculativeRigidbody myRigidbody, PixelCollider myPixelCollider, SpeculativeRigidbody otherRigidbody, PixelCollider otherPixelCollider)
 {
     if (myRigidbody.projectile != null && myRigidbody.sprite != null && this.m_owner.PlayerHasActiveSynergy("#BE_SERIOUS"))
     {
         if (!this.m_owner.IsInCombat || this.smarterMinions.Count >= 4)
         {
             return;
         }
         AIActor    orLoadByGuid         = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5");
         IntVector2?nearestAvailableCell = null;
         if (this.m_owner.CurrentRoom != null)
         {
             nearestAvailableCell = this.m_owner.CurrentRoom.GetNearestAvailableCell(myRigidbody.projectile.sprite.WorldCenter, new IntVector2?(orLoadByGuid.Clearance), new CellTypes?(CellTypes.FLOOR), false, null);
         }
         Vector3             vector         = nearestAvailableCell != null ? (nearestAvailableCell.Value.ToVector2()).ToVector3ZUp(0f) : myRigidbody.projectile.sprite.WorldCenter.ToVector3ZUp(0f);
         GameObject          enemyObj       = UnityEngine.Object.Instantiate <GameObject>(orLoadByGuid.gameObject, vector, Quaternion.identity);
         CompanionController orAddComponent = enemyObj.GetOrAddComponent <CompanionController>();
         orAddComponent.companionID = CompanionController.CompanionIdentifier.NONE;
         orAddComponent.Initialize(this.m_owner);
         orAddComponent.behaviorSpeculator.MovementBehaviors.Add(new CompanionFollowPlayerBehavior());
         AIActor aiactor = enemyObj.GetComponent <AIActor>();
         aiactor.HitByEnemyBullets         = true;
         aiactor.healthHaver.ModifyDamage += this.ModifyDamageForCompanions;
         aiactor.StartCoroutine(this.InvisibleCoroutine(aiactor));
         aiactor.procedurallyOutlined = false;
         aiactor.CorpseObject         = null;
         aiactor.ImmuneToAllEffects   = true;
         aiactor.SetIsFlying(true, "I'm a bullet too!");
         SmarterDumbEnemyBehavior smartBehavior = aiactor.gameObject.AddComponent <SmarterDumbEnemyBehavior>();
         smartBehavior.layer      = myRigidbody.projectile.gameObject.layer;
         smartBehavior.collection = myRigidbody.projectile.sprite.Collection;
         smartBehavior.spriteId   = myRigidbody.projectile.sprite.spriteId;
         foreach (AIBulletBank.Entry entry in orAddComponent.bulletBank.Bullets)
         {
             if (aiactor.IsBlackPhantom)
             {
                 entry.BulletObject.GetComponent <Projectile>().baseData.damage = 15;
             }
             else
             {
                 entry.BulletObject.GetComponent <Projectile>().baseData.damage = 10;
             }
         }
         foreach (AttackBehaviorBase behavior in aiactor.behaviorSpeculator.AttackBehaviors)
         {
             if ((behavior as ShootGunBehavior) != null)
             {
                 if (aiactor.IsBlackPhantom)
                 {
                     aiactor.aiShooter.GetBulletEntry((behavior as ShootGunBehavior).OverrideBulletName).ProjectileData.damage = 15;
                 }
                 else
                 {
                     aiactor.aiShooter.GetBulletEntry((behavior as ShootGunBehavior).OverrideBulletName).ProjectileData.damage = 10;
                 }
             }
         }
         this.smarterMinions.Add(aiactor);
     }
     else if (myRigidbody.projectile != null && myRigidbody.sprite != null)
     {
         AIActor    aiactor    = AIActor.Spawn(EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5"), myRigidbody.projectile.sprite.WorldCenter, myRigidbody.transform.position.GetAbsoluteRoom(), true, AIActor.AwakenAnimationType.Default, true);
         GameObject gameObject = new GameObject("suck image");
         gameObject.layer = myRigidbody.projectile.gameObject.layer;
         tk2dSprite tk2dSprite = gameObject.AddComponent <tk2dSprite>();
         gameObject.transform.parent   = SpawnManager.Instance.Projectiles;
         gameObject.transform.position = aiactor.sprite.WorldCenter;
         tk2dSprite.SetSprite(myRigidbody.projectile.sprite.Collection, myRigidbody.projectile.sprite.spriteId);
         tk2dSprite.transform.parent     = aiactor.transform;
         aiactor.sprite.renderer.enabled = false;
         aiactor.procedurallyOutlined    = false;
         aiactor.CanTargetEnemies        = true;
         aiactor.CanTargetPlayers        = false;
         aiactor.CorpseObject            = null;
         aiactor.ImmuneToAllEffects      = true;
         aiactor.SetIsFlying(true, "I'm a bullet too!");
         aiactor.specRigidbody.AddCollisionLayerIgnoreOverride(CollisionMask.LayerToMask(CollisionLayer.PlayerHitBox, CollisionLayer.PlayerCollider));
         if (aiactor.IgnoreForRoomClear)
         {
             aiactor.IgnoreForRoomClear = false;
             if (aiactor.ParentRoom != null)
             {
                 aiactor.ParentRoom.DeregisterEnemy(aiactor);
             }
         }
         DumbEnemyBehavior dumbEnemyBehavior = aiactor.gameObject.AddComponent <DumbEnemyBehavior>();
         if (myRigidbody.projectile.GetComponent <NewUsesProjectileSynergyController>() != null)
         {
             dumbEnemyBehavior.sourceAmmoType     = myRigidbody.projectile.GetComponent <NewUsesProjectileSynergyController>().ammoType;
             dumbEnemyBehavior.customAmmoType     = myRigidbody.projectile.GetComponent <NewUsesProjectileSynergyController>().customAmmoType;
             dumbEnemyBehavior.usesNewUsesSynergy = true;
         }
         myRigidbody.projectile.DieInAir();
     }
 }
        public void ChaosResizeEnemy(AIActor aiActor, bool delayed = false)
        {
            // AIActor targetAIActor = aiActor.gameObject.GetComponent<AIActor>();
            if (!ChaosConsole.randomEnemySizeEnabled)
            {
                return;
            }
            if (string.IsNullOrEmpty(aiActor.EnemyGuid))
            {
                return;
            }
            if (aiActor.name.ToLower().StartsWith("glitched") | aiActor.name.ToLower().EndsWith("(clone)(clone)"))
            {
                return;
            }
            if (ChaosLists.BannedEnemyGUIDList.Contains(aiActor.EnemyGuid))
            {
                return;
            }
            if (!ChaosConsole.randomEnemySizeEnabled)
            {
                return;
            }
            if (aiActor.GetComponentInParent <BossStatueController>() != null)
            {
                return;
            }
            try {
                if (aiActor.transform.position.GetAbsoluteRoom().GetRoomName().ToLower().StartsWith("doublebeholsterroom01"))
                {
                    return;
                }
            } catch (System.Exception) { return; }
            int currentFloor = GameManager.Instance.CurrentFloor;

            // Vector2 currentCorpseScale = new Vector2(1, 1);

            if (currentFloor == -1)
            {
                ChaosConsole.RandomResizedEnemies = 0.45f;
            }
            else
            {
                if (currentFloor > 2 && currentFloor < 5)
                {
                    ChaosConsole.RandomResizedEnemies = 0.45f;
                }
                else
                {
                    if (currentFloor > 4 && currentFloor < 6)
                    {
                        ChaosConsole.RandomResizedEnemies = 0.47f;
                    }
                    else
                    {
                        if (currentFloor > 5)
                        {
                            ChaosConsole.RandomResizedEnemies = 0.6f;
                        }
                    }
                }
            }

            if (Random.value >= ChaosConsole.RandomResizedEnemies)
            {
                return;
            }
            if (Random.value <= ChaosConsole.RandomSizeChooser)
            {
                // Make them tiny bois :P
                // Don't make cursed bois tiny. It can be a bit much to get hurt by tiny bois that are cursed. :P
                if (aiActor.IsBlackPhantom)
                {
                    aiActor.StartCoroutine(ResizeEnemy(aiActor, new Vector2(1.5f, 1.5f), false, true, delayed));
                }
                else
                {
                    aiActor.StartCoroutine(ResizeEnemy(aiActor, new Vector2(0.5f, 0.5f), false, false, delayed));
                    // targetAIActor.CollisionKnockbackStrength /= 2f;
                }
            }
            else
            {
                // Make them big bois :P
                aiActor.StartCoroutine(ResizeEnemy(aiActor, new Vector2(1.5f, 1.5f), false, delayed));
                // targetAIActor.CollisionKnockbackStrength *= 1.5f;
            }
            aiActor.placeableWidth  += 2;
            aiActor.placeableHeight += 2;
            return;
        }