示例#1
0
        private void HandleActiveTossedBallGrounded(DebrisObject obj)
        {
            obj.OnGrounded -= this.HandleActiveTossedBallGrounded;
            MonsterBall component = obj.GetComponent <MonsterBall>();
            //component.spriteAnimator.Play("monster_ball_open");
            AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(component.m_storedEnemyGuid);

            if (orLoadByGuid == null)
            {
                if (m_Debug)
                {
                    ETGModConsole.Log("[Monster_Ball] Tried to spawn an unknown AIActor! (Enemy GUID not found)");
                }
                component.m_containsEnemy   = false;
                component.m_wasBlackPhantom = false;
                component.m_storedEnemyGuid = string.Empty;
                component.IsCurrentlyActive = false;
                component.ApplyCooldown(this.LastOwner);
                return;
            }
            IntVector2 bestRewardLocation = obj.transform.position.GetAbsoluteRoom().GetBestRewardLocation(orLoadByGuid.Clearance, obj.sprite.WorldCenter, true);
            AIActor    m_CachedEnemy      = AIActor.Spawn(orLoadByGuid, bestRewardLocation, obj.transform.position.GetAbsoluteRoom(), true, AIActor.AwakenAnimationType.Default, true);

            // m_CachedEnemy.ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1f, null);
            this.MakeCompanion(this.LastOwner, m_CachedEnemy, component.m_wasBlackPhantom);
            LootEngine.DoDefaultItemPoof(m_CachedEnemy.CenterPosition, false, false);
            component.m_containsEnemy   = false;
            component.m_storedEnemyGuid = string.Empty;
            component.IsCurrentlyActive = false;
            component.ApplyCooldown(this.LastOwner);
        }
示例#2
0
        public override void OnPostFired(PlayerController player, Gun gun)
        {
            //This determines what sound you want to play when you fire a gun.
            //Sounds names are based on the Gungeon sound dump, which can be found at EnterTheGungeon/Etg_Data/StreamingAssets/Audio/GeneratedSoundBanks/Windows/sfx.txt
            gun.PreventNormalFireAudio = true;
            string guid;

            guid = "86dfc13486ee4f559189de53cfb84107";

            PlayerController owner = player;

            if (player.PlayerHasActiveSynergy("Ye Olden Ages"))
            {
                guid = "05891b158cd542b1a5f3df30fb67a7ff";
            }
            AIActor    orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(guid);
            IntVector2?intVector    = new IntVector2?(player.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    aiactor      = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);

            aiactor.CanTargetEnemies = true;
            aiactor.CanTargetPlayers = false;
            PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);
            aiactor.gameObject.AddComponent <KillOnRoomClear>();
            aiactor.IsHarmlessEnemy    = true;
            aiactor.IgnoreForRoomClear = true;
            aiactor.HandleReinforcementFallIntoRoom(0f);
        }
示例#3
0
        private void OnKill(Projectile arg1, SpeculativeRigidbody arg2)
        {
            bool flag = !arg2.aiActor.healthHaver.IsDead;

            if (flag)
            {
                int  num3  = UnityEngine.Random.Range(0, 4);
                bool flag3 = num3 == 0;
                if (flag3)
                {
                    AkSoundEngine.PostEvent("Play_OBJ_chestwarp_use_01", gameObject);
                    PlayerController player = (GameManager.Instance.PrimaryPlayer);
                    string           guid;
                    guid = "ChaosBeing";
                    PlayerController owner        = player;
                    AIActor          orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(guid);
                    IntVector2?      intVector    = new IntVector2?(player.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
                    AIActor          aiactor      = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);
                    aiactor.CanTargetEnemies = false;
                    aiactor.CanTargetPlayers = true;
                    PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);
                    aiactor.IsHarmlessEnemy    = false;
                    aiactor.IgnoreForRoomClear = true;
                    aiactor.HandleReinforcementFallIntoRoom(-1f);
                    SpawnManager.SpawnVFX((PickupObjectDatabase.GetById(573) as ChestTeleporterItem).TeleportVFX, aiactor.sprite.WorldCenter.ToVector3ZisY(0f), Quaternion.identity).GetComponent <tk2dBaseSprite>().PlaceAtPositionByAnchor(aiactor.sprite.WorldCenter.ToVector3ZisY(0f), tk2dBaseSprite.Anchor.MiddleCenter);
                }
            }
        }
 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));
         }
     }
 }
示例#5
0
 public override void Pickup(PlayerController player)
 {
     base.Pickup(player);
     AIActor    gameObject = player.aiActor;
     IntVector2?intVector  = new IntVector2?(player.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
     AIActor    aiactor    = AIActor.Spawn(gameObject, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);
 }
示例#6
0
        public void knightPlacer(PlayerController owner)
        {
            AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("ec8ea75b557d4e7b8ceeaacdf6f8238c");


            IntVector2  aim  = Vector2Extensions.ToIntVector2(owner.unadjustedAimPoint, VectorConversions.Round);
            RoomHandler room = GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(aim);

            if (room != null && room == owner.CurrentRoom && owner.IsInCombat)
            {
                AIActor aiActor = AIActor.Spawn(orLoadByGuid.aiActor, owner.CenterPosition, room, true, AIActor.AwakenAnimationType.Default, true);
                PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiActor.specRigidbody, null, false);
                aiActor.CanTargetEnemies   = true;
                aiActor.CanTargetPlayers   = false;
                aiActor.IsHarmlessEnemy    = true;
                aiActor.CanDropCurrency    = false;
                aiActor.IgnoreForRoomClear = true;
                aiActor.MovementSpeed      = 6.3f;

                aiActor.gameObject.AddComponent <KillOnRoomClear>();
                aiActor.reinforceType = AIActor.ReinforceType.Instant;
                aiActor.HandleReinforcementFallIntoRoom(.1f);
                nut = aiActor;

                MindControlEffect orAddComponent = aiActor.gameObject.GetOrAddComponent <MindControlEffect>();
                orAddComponent.owner = (this.gun.CurrentOwner as PlayerController);
            }
        }
示例#7
0
 protected override void DoEffect(PlayerController user)
 {
     if (base.LastOwner && base.LastOwner.CurrentRoom != null)
     {
         try
         {
             AIActor    orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("f38686671d524feda75261e469f30e0b");
             IntVector2?intVector    = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(1, 1));
             bool       flag         = intVector != null;
             if (flag)
             {
                 AIActor aiactor = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);
                 aiactor.ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1f, null);
                 aiactor.IgnoreForRoomClear              = true;
                 aiactor.bulletBank.OnProjectileCreated += this.NotDamagePlayer;
                 aiactor.gameObject.AddComponent <KillOnRoomClear>();
             }
         }
         catch (Exception ex)
         {
             ETGModConsole.Log(ex.Message, false);
         }
     }
     this.StartEffect(user);
     if (this.numberOfUses > 1)
     {
         base.StartCoroutine(this.Buff());
     }
     else
     {
         base.StartCoroutine(ItemBuilder.HandleDuration(this, this.duration, user, new Action <PlayerController>(this.EndEffect)));
     }
 }
        private void SpawnKevin()
        {
            string kevinGuid;

            if (Owner.HasPickupID(118))
            {
                kevinGuid = "70216cae6c1346309d86d4a0b4603045";
            }
            else
            {
                kevinGuid = "01972dee89fc4404a5c408d50007dad5";
            }
            PlayerController player       = this.Owner;
            var        Kevin              = EnemyDatabase.GetOrLoadByGuid(kevinGuid);
            IntVector2?bestRewardLocation = Owner.CurrentRoom.GetRandomVisibleClearSpot(2, 2);
            AIActor    TargetActor        = AIActor.Spawn(Kevin.aiActor, bestRewardLocation.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(bestRewardLocation.Value), true, AIActor.AwakenAnimationType.Default, true);

            //TargetActor.gameActor.ApplyEffect(this.charmEffect, 100f, null);
            TargetActor.CanTargetEnemies = true;
            TargetActor.CanTargetPlayers = false;
            PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(TargetActor.specRigidbody, null, false);
            TargetActor.gameObject.AddComponent <KillOnRoomClear>();
            TargetActor.IsHarmlessEnemy = true;
            //TargetActor.healthHaver.bossHealthBar = HealthHaver.BossBarType.MainBar;
            TargetActor.IgnoreForRoomClear = true;
            TargetActor.HandleReinforcementFallIntoRoom(0f);
            TargetActor.gameObject.AddComponent <AIActorIsKevin>();
            //PRAISE BE OUR LORD AND SAVIOUR KEVIN. YOU WILL BOW TO HIM, OR YOU WILL DIE.
        }
        public void SpawnParamedic(PlayerController player)
        {
            string guid;

            if (player)
            {
                guid = "22fc2c2c45fb47cf9fb5f7b043a70122";
            }
            else
            {
                guid = "22fc2c2c45fb47cf9fb5f7b043a70122";
            }

            AIActor    orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(guid);
            IntVector2?intVector    = new IntVector2?(player.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    aiactor      = AIActor.Spawn(orLoadByGuid.aiActor, player.AimCenter, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Spawn, true);

            aiactor.CanTargetEnemies = false;
            aiactor.CanTargetPlayers = true;
            PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);

            aiactor.IsHarmlessEnemy    = false;
            aiactor.IgnoreForRoomClear = true;
            aiactor.reinforceType      = AIActor.ReinforceType.Instant;
            aiactor.HandleReinforcementFallIntoRoom(0f);
        }
 public void OnEnteredCombat()
 {
     this.isBossRoom = false;
     foreach (AIActor enemy in base.Owner.CurrentRoom.GetActiveEnemies(Dungeonator.RoomHandler.ActiveEnemyType.RoomClear))
     {
         if (enemy.healthHaver.IsBoss)
         {
             this.isBossRoom = true;
         }
     }
     if (UnityEngine.Random.value <= 0.1f && base.Owner && !this.isBossRoom)
     {
         try
         {
             AIActor    orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("fa6a7ac20a0e4083a4c2ee0d86f8bbf7");
             IntVector2?intVector    = new IntVector2?(base.Owner.CurrentRoom.GetRandomVisibleClearSpot(1, 1));
             bool       flag         = intVector != null;
             if (flag)
             {
                 AIActor aiactor = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);
                 aiactor.healthHaver.OnPreDeath += this.onPreDeath;
             }
         }
         catch (Exception ex)
         {
             ETGModConsole.Log(ex.Message, false);
         }
         this.timesSpawned += 1;
     }
 }
示例#11
0
        public void tophat(PlayerController player, HealthHaver enemy)
        {
            int bighead = UnityEngine.Random.Range(1, 6);

            if (bighead == 1)
            {
                if (!enemy.healthHaver.IsBoss)
                {
                    string guid;
                    guid = enemy.aiActor.EnemyGuid;
                    if (guid != "4db03291a12144d69fe940d5a01de376")
                    {
                        PlayerController owner        = base.Owner;
                        AIActor          orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(guid);
                        IntVector2?      intVector    = new IntVector2?(base.Owner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
                        AIActor          aiactor      = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);
                        aiactor.CanTargetEnemies = true;
                        aiactor.CanTargetPlayers = false;
                        PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);
                        aiactor.gameObject.AddComponent <KillOnRoomClear>();
                        aiactor.IsHarmlessEnemy    = true;
                        aiactor.IgnoreForRoomClear = true;
                        aiactor.HandleReinforcementFallIntoRoom(0f);
                    }
                }
            }
        }
示例#12
0
        private void DoSpawn()
        {
            DisplacedEnemy enemy = BraveUtility.RandomElement(listOfDisplacedEnemies.DisplacedEnemies);

            var        Enemy = EnemyDatabase.GetOrLoadByGuid(enemy.GUID);
            IntVector2?bestRewardLocation = m_player.CurrentRoom.GetRandomVisibleClearSpot(2, 2);
            AIActor    TargetActor        = AIActor.Spawn(Enemy.aiActor, bestRewardLocation.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(bestRewardLocation.Value), true, AIActor.AwakenAnimationType.Default, true);

            PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(TargetActor.specRigidbody, null, false);
            if (TargetActor.IsBlackPhantom && !enemy.ISJAMMED)
            {
                TargetActor.UnbecomeBlackPhantom();
            }
            else if (!TargetActor.IsBlackPhantom && enemy.ISJAMMED)
            {
                TargetActor.BecomeBlackPhantom();
            }
            TargetActor.healthHaver.ForceSetCurrentHealth(enemy.HEALTH);


            listOfDisplacedEnemies.DisplacedEnemies.Remove(enemy);

            AkSoundEngine.PostEvent("Play_OBJ_chestwarp_use_01", gameObject);
            var tpvfx = (PickupObjectDatabase.GetById(573) as ChestTeleporterItem).TeleportVFX;

            SpawnManager.SpawnVFX(tpvfx, TargetActor.sprite.WorldCenter, Quaternion.identity, true);
        }
示例#13
0
        private void OnHitEnemy(Projectile bullet, SpeculativeRigidbody enemy, bool fuckingsomethingidk)
        {
            bool flag = bullet != null && bullet.specRigidbody != null;

            if (flag)
            {
                if (enemy.healthHaver.IsBoss == false)
                {
                    IntVector2?intVector = new IntVector2?(enemy.aiActor.ParentRoom.GetRandomVisibleClearSpot(2, 2));

                    AIActor aiactor = AIActor.Spawn(enemy.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Spawn, true);
                    aiactor.CanTargetEnemies = true;
                    aiactor.CanTargetPlayers = false;
                    PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);
                    aiactor.gameObject.AddComponent <KillOnRoomClear>();
                    aiactor.CanDropCurrency    = false;
                    aiactor.HitByEnemyBullets  = false;
                    aiactor.CollisionDamage    = 0f;
                    aiactor.IsHarmlessEnemy    = true;
                    aiactor.IgnoreForRoomClear = true;
                    Instantiate <GameObject>(EasyVFXDatabase.SmallMagicPuffVFX, aiactor.CenterPosition, Quaternion.identity);
                }
            }



            //All that's left now is sprite stuff.
            //Your sprites should be organized, like how you see in the mod folder.
            //Every gun requires that you have a .json to match the sprites or else the gun won't spawn at all
            //.Json determines the hand sprites for your character. You can make a gun two handed by having both "SecondaryHand" and "PrimaryHand" in the .json file, which can be edited through Notepad or Visual Studios
            //By default this gun is a one-handed weapon
            //If you need a basic two handed .json. Just use the jpxfrd2.json.
            //And finally, don't forget to add your Gun to your ETGModule class!
        }
示例#14
0
 protected override void DoEffect(PlayerController user)
 {
     for (int i = 0; i < 4; i++)
     {
         try
         {
             var BulletKin = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5");
             //float radius = 5;
             //var random = UnityEngine.Random.insideUnitCircle * radius;
             //IntVector2 temp = random.ToIntVector2() + LastOwner.CurrentRoom.GetNearestCellToPosition(LastOwner.specRigidbody.UnitCenter).position; // or something like this to get the player's pos relative to the room
             //IntVector2? spawnPos = LastOwner.CurrentRoom.GetRandomAvailableCell(temp);
             IntVector2?spawnPos = LastOwner.CurrentRoom.GetRandomVisibleClearSpot(1, 1);
             if (spawnPos != null)
             {
                 AIActor TargetActor = AIActor.Spawn(BulletKin.aiActor, spawnPos.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(spawnPos.Value), true, AIActor.AwakenAnimationType.Default, true);
                 TargetActor.ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1f, null);
                 PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(TargetActor.specRigidbody, null, false);
                 TargetActor.gameObject.AddComponent <KillOnRoomClear>();
                 TargetActor.IsHarmlessEnemy    = true;
                 TargetActor.IgnoreForRoomClear = true;
                 TargetActor.HandleReinforcementFallIntoRoom(0f);
             }
         }
         catch (Exception e)
         {
             ETGModConsole.Log(e.Message);
         }
     }
 }
示例#15
0
 public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData)
 {
     if (this.AffectsEnemies && actor is AIActor && !actor.healthHaver.IsBoss)
     {
         if (actor.healthHaver.IsDead)
         {
             if (ShouldISpawn == true)
             {
                 if (actor.aiActor.EnemyGuid != "5861e5a077244905a8c25c2b7b4d6ebb")
                 {
                     string guid;
                     guid = "4db03291a12144d69fe940d5a01de376";
                     AIActor    orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(guid);
                     IntVector2?intVector    = new IntVector2?(actor.PlacedPosition);
                     AIActor    aiactor      = AIActor.Spawn(orLoadByGuid.aiActor, actor.CenterPosition, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);
                     aiactor.CanTargetEnemies = true;
                     aiactor.CanTargetPlayers = false;
                     PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);
                     aiactor.gameObject.AddComponent <KillOnRoomClear>();
                     aiactor.CanDropCurrency    = false;
                     aiactor.HitByEnemyBullets  = false;
                     aiactor.CollisionDamage    = 0f;
                     aiactor.IsHarmlessEnemy    = true;
                     aiactor.IgnoreForRoomClear = true;
                     ShouldISpawn = false;
                 }
             }
         }
     }
 }
示例#16
0
        //applies damage on last use
        protected override void DoEffect(PlayerController user)
        {
            AkSoundEngine.PostEvent("Play_ENM_smiley_whistle_02", base.gameObject);

            string guid;

            if (user)
            {
                guid = "86237c6482754cd29819c239403a2de7";
            }
            else
            {
                guid = "86237c6482754cd29819c239403a2de7";
            }

            AIActor    orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(guid);
            IntVector2?intVector    = new IntVector2?(user.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    aiactor      = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);

            aiactor.CanTargetEnemies = true;
            aiactor.CanTargetPlayers = false;
            PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);
            aiactor.gameObject.AddComponent <KillOnRoomClear>();
            aiactor.IsHarmlessEnemy    = false;
            aiactor.IgnoreForRoomClear = true;

            aiactor.reinforceType = AIActor.ReinforceType.Instant;
            aiactor.HandleReinforcementFallIntoRoom(0f);
        }
示例#17
0
        private void SpawnGrim()
        {
            string guid;

            if (this.Owner)
            {
                guid = "0d3f7c641557426fbac8596b61c9fb45";
            }
            else
            {
                guid = "0d3f7c641557426fbac8596b61c9fb45";
            }
            PlayerController owner        = base.Owner;
            AIActor          orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(guid);
            IntVector2?      intVector    = new IntVector2?(base.Owner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor          aiactor      = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);

            aiactor.CanTargetEnemies = false;
            aiactor.CanTargetPlayers = true;
            PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);
            aiactor.gameObject.AddComponent <KillOnRoomClear>();
            aiactor.IsHarmlessEnemy    = false;
            aiactor.IgnoreForRoomClear = true;
            aiactor.MovementSpeed      = .5f;

            aiactor.reinforceType = AIActor.ReinforceType.Instant;
            aiactor.HandleReinforcementFallIntoRoom(0f);
        }
示例#18
0
        public void tophat(Vector3 position)
        {
            string guid;

            guid = "5861e5a077244905a8c25c2b7b4d6ebb";
            if (Owner.PlayerHasActiveSynergy("Hat's Off to You"))

            {
                guid = "ddf12a4881eb43cfba04f36dd6377abb";
            }
            if (Owner.HasPickupID(Game.Items["cak:hat_shells"].PickupObjectId))
            {
            }

            PlayerController owner        = base.Owner;
            AIActor          orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(guid);
            IntVector2?      intVector    = new IntVector2?(base.Owner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor          aiactor      = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);

            aiactor.CanTargetEnemies = true;
            aiactor.CanTargetPlayers = false;
            PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);
            aiactor.gameObject.AddComponent <KillOnRoomClear>();
            aiactor.IsHarmlessEnemy    = true;
            aiactor.IgnoreForRoomClear = true;
            aiactor.HandleReinforcementFallIntoRoom(0f);
        }
示例#19
0
        // This function doesn't null check orLoadByGuid. If non fake prefab custom enemies are spawned (like the special rats on Hollow), then this would cause exception.
        // Added fall back GUIDs and use one of those for AIActor instead if this happens.
        public void AddSpecificEnemyToRoomProcedurallyFixed(RoomHandler room, string enemyGuid, bool reinforcementSpawn = false, Vector2?goalPosition = null)
        {
            AIActor orLoadByGuid = EnemyDatabase.GetOrLoadByGuid(enemyGuid);

            if (!orLoadByGuid)
            {
                List <string> FallbackGUIDs = new List <string>()
                {
                    ExpandCustomEnemyDatabase.BootlegBullatGUID,
                    ExpandCustomEnemyDatabase.BootlegBulletManGUID,
                    ExpandCustomEnemyDatabase.BootlegBulletManBandanaGUID,
                    ExpandCustomEnemyDatabase.BootlegShotgunManBlueGUID,
                    ExpandCustomEnemyDatabase.BootlegShotgunManRedGUID
                };
                FallbackGUIDs = FallbackGUIDs.Shuffle();
                orLoadByGuid  = EnemyDatabase.GetOrLoadByGuid(BraveUtility.RandomElement(FallbackGUIDs));
            }
            IntVector2    clearance     = orLoadByGuid.specRigidbody.UnitDimensions.ToIntVector2(VectorConversions.Ceil);
            CellValidator cellValidator = delegate(IntVector2 c) {
                for (int i = 0; i < clearance.x; i++)
                {
                    int x = c.x + i;
                    for (int j = 0; j < clearance.y; j++)
                    {
                        int y = c.y + j;
                        if (GameManager.Instance.Dungeon.data.isTopWall(x, y))
                        {
                            return(false);
                        }
                    }
                }
                return(true);
            };
            IntVector2?intVector;

            if (goalPosition != null)
            {
                intVector = room.GetNearestAvailableCell(goalPosition.Value, new IntVector2?(clearance), new CellTypes?(CellTypes.FLOOR), false, cellValidator);
            }
            else
            {
                intVector = room.GetRandomAvailableCell(new IntVector2?(clearance), new CellTypes?(CellTypes.FLOOR), false, cellValidator);
            }
            if (intVector != null)
            {
                AIActor aiactor = AIActor.Spawn(orLoadByGuid, intVector.Value, room, true, AIActor.AwakenAnimationType.Spawn, false);
                if (aiactor && reinforcementSpawn)
                {
                    if (aiactor.specRigidbody)
                    {
                        aiactor.specRigidbody.CollideWithOthers = false;
                    }
                    aiactor.HandleReinforcementFallIntoRoom(0f);
                }
            }
            else
            {
                Debug.LogError("failed placement");
            }
        }
 private void SpawnWave()
 {
     CurrentWave++;
     if (CurrentWave < waves.Count)
     {
         foreach (string guid in waves[CurrentWave])
         {
             AIActor    prefab  = EnemyDatabase.GetOrLoadByGuid(guid);
             IntVector2?vector  = this.GetAbsoluteParentRoom().GetRandomAvailableCell(prefab.Clearance, new CellTypes?(CellTypes.FLOOR | CellTypes.PIT), false, null);
             AIActor    aiactor = AIActor.Spawn(prefab, vector != null ? vector.Value : this.GetAbsoluteParentRoom().GetBestRewardLocation(prefab.Clearance, RoomHandler.RewardLocationStyle.Original, false), this.GetAbsoluteParentRoom(), false, AIActor.AwakenAnimationType.Default,
                                                true);
             aiactor.SetIsFlying(true, "because why not", false, true);
             aiactor.encounterTrackable.journalData.PrimaryDisplayName = "#ENEMY_PRIMALASPIDS_REVENGE";
             this.GetAbsoluteParentRoom().SealRoom();
         }
     }
     else
     {
         SpawnManager.SpawnVFX(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultExplosionData.effect, this.statue.GetComponent <tk2dBaseSprite>().WorldBottomCenter, Quaternion.identity);
         AkSoundEngine.PostEvent("Play_WPN_grenade_blast_01", base.gameObject);
         this.statue.GetComponent <tk2dBaseSprite>().renderer.enabled = false;
         Chest      chest  = GameManager.Instance.RewardManager.Rainbow_Chest;
         IntVector2?vector = this.GetAbsoluteParentRoom().GetRandomAvailableCell(new IntVector2?(IntVector2.One * 4), new CellTypes?(CellTypes.FLOOR | CellTypes.PIT), false, null);
         Chest.Spawn(chest, vector != null ? vector.Value : this.GetAbsoluteParentRoom().GetBestRewardLocation(IntVector2.One * 4, RoomHandler.RewardLocationStyle.Original, false), this.GetAbsoluteParentRoom(), true);
         this.IsActive   = false;
         this.DeclineKey = "#SHRINE_ASPID_DECLINE_SPENT";
     }
 }
示例#21
0
        // Token: 0x06000056 RID: 86 RVA: 0x00004194 File Offset: 0x00002394
        public void KnightPlacer(PlayerController owner)
        {
            try
            {
                AIActor     orLoadByGuid             = EnemyDatabase.GetOrLoadByGuid("ec8ea75b557d4e7b8ceeaacdf6f8238c");
                IntVector2  intVector                = Vector2Extensions.ToIntVector2(owner.unadjustedAimPoint, (VectorConversions)2);
                RoomHandler absoluteRoomFromPosition = GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector);
                bool        flag = absoluteRoomFromPosition != null && absoluteRoomFromPosition == owner.CurrentRoom && owner.IsInCombat;
                if (flag)
                {
                    AIActor aiactor = AIActor.Spawn(orLoadByGuid.aiActor, owner.CenterPosition, absoluteRoomFromPosition, true, (AIActor.AwakenAnimationType) 2, true);
                    PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(aiactor.specRigidbody, null, false);
                    aiactor.CanTargetEnemies   = true;
                    aiactor.CanTargetPlayers   = false;
                    aiactor.IsHarmlessEnemy    = true;
                    aiactor.CanDropCurrency    = false;
                    aiactor.IgnoreForRoomClear = true;
                    aiactor.MovementSpeed      = 5.95f;
                    aiactor.CompanionOwner     = owner;
                    aiactor.IsBuffEnemy        = true;
                    aiactor.isPassable         = true;
                    aiactor.gameObject.AddComponent <KillOnRoomClear>();
                    aiactor.reinforceType = (AIActor.ReinforceType) 2;
                    aiactor.HandleReinforcementFallIntoRoom(0.1f);

                    //added this so the player doesn't collide with the nut when dodge rolling, he goes through companions
                    aiactor.gameObject.AddComponent <CompanionController>();
                    CompanionController component = aiactor.gameObject.GetComponent <CompanionController>();
                    component.Initialize(owner);

                    this.nut = aiactor;
                    MindControlEffect orAddComponent = GameObjectExtensions.GetOrAddComponent <MindControlEffect>(aiactor.gameObject);
                    orAddComponent.owner = (this.gun.CurrentOwner as PlayerController);

                    // to make the nut invincible against the player effects or any other damage effects
                    if (aiactor.healthHaver != null)
                    {
                        aiactor.healthHaver.PreventAllDamage = true;
                    }

                    // to prevent the attacks of the nut from damaging the player
                    if (aiactor.bulletBank != null)
                    {
                        AIBulletBank bulletBank = aiactor.bulletBank;
                        bulletBank.OnProjectileCreated = (Action <Projectile>)Delegate.Combine(bulletBank.OnProjectileCreated, new Action <Projectile>(CopperChariot.OnPostProcessProjectile));
                    }
                    if (aiactor.aiShooter != null)
                    {
                        AIShooter aiShooter = aiactor.aiShooter;
                        aiShooter.PostProcessProjectile = (Action <Projectile>)Delegate.Combine(aiShooter.PostProcessProjectile, new Action <Projectile>(CopperChariot.OnPostProcessProjectile));
                    }
                }
            }
            catch (Exception e)
            {
                Tools.Print("Copper KnightPlacer", "FFFFFF", true);
                Tools.PrintException(e);
            }
        }
示例#22
0
 protected void DupeBosses(AIActor target)
 {
     if (target.healthHaver.IsBoss)
     {
         AIActor target2 = target;
         AIActor.Spawn(target2, target.transform.position, player.CurrentRoom, true, AIActor.AwakenAnimationType.Default, true);
     }
 }
示例#23
0
        private IEnumerator DelayedSpawnSpent(Vector2 vector)
        {
            yield return(new WaitForSeconds(.01f));

            IntVector2 intV     = vector.ToIntVector2(VectorConversions.Floor);
            AIActor    aiactor2 = AIActor.Spawn(EnemyDatabase.GetOrLoadByGuid("e21ac9492110493baef6df02a2682a0d"), intV, GameManager.Instance.GetRandomActivePlayer().CurrentRoom, true, AIActor.AwakenAnimationType.Default, true);

            yield break;
        }
示例#24
0
            protected override IEnumerator Top()
            {
                AkSoundEngine.PostEvent("Play_ENV_oilfire_ignite_01", base.BulletBank.aiActor.gameObject);
                IntVector2 meceea = new IntVector2(this.BulletBank.aiActor.GetAbsoluteParentRoom().GetRandomAvailableCellDumb().x, this.BulletBank.aiActor.GetAbsoluteParentRoom().GetRandomAvailableCellDumb().y);
                var        Enemy  = EnemyDatabase.GetOrLoadByGuid("flameclone");

                Instantiate <GameObject>(EasyVFXDatabase.FlameVFX, meceea.ToVector3(), Quaternion.identity);
                AIActor.Spawn(Enemy.aiActor, meceea, GameManager.Instance.PrimaryPlayer.CurrentRoom, true, AIActor.AwakenAnimationType.Default, true);
                yield break;
            }
示例#25
0
 public void FriendsWithGrim()
 {
     if (this.m_player != null)
     {
         AIActor    grim   = EnemyDatabase.GetOrLoadByGuid("88f037c3f93b4362a040a87b30770407");
         IntVector2?vector = this.m_player.CurrentRoom.GetRandomAvailableCell(grim.Clearance, grim.PathableTiles, false, null);
         AIActor.Spawn(grim, vector != null ? vector.Value : this.m_player.CurrentRoom.GetBestRewardLocation(grim.Clearance, RoomHandler.RewardLocationStyle.Original, false), this.m_player.CurrentRoom, true, AIActor.AwakenAnimationType.Default,
                       true).ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1, null);
     }
 }
示例#26
0
        private static void AffectEnemy(AIActor target)
        {
            bool flag = !target.IsNormalEnemy && target.healthHaver.IsBoss && !target.IsHarmlessEnemy;

            if (flag)
            {
                AIActor target2 = target;
                AIActor.Spawn(target2, target.transform.position, playerS.CurrentRoom, true, AIActor.AwakenAnimationType.Default, true);
                target.healthHaver.ApplyDamage((target.healthHaver.GetMaxHealth() * .4f), Vector2.zero, "Ishar", CoreDamageTypes.None, DamageCategory.Normal, false, null, true);
                target2.healthHaver.ApplyDamage((target2.healthHaver.GetMaxHealth() * .4f), Vector2.zero, "Ishar", CoreDamageTypes.None, DamageCategory.Normal, false, null, true);
            }
        }
示例#27
0
        protected override void DoEffect(PlayerController owner)
        {
            for (int i = 0; i <= 3; i++)
            {
                try
                {
                    AIActor    orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("21dd14e5ca2a4a388adab5b11b69a1e1");
                    IntVector2?intVector    = new IntVector2?(owner.CurrentRoom.GetRandomVisibleClearSpot(1, 1));
                    bool       flag         = intVector != null;
                    if (flag)
                    {
                        if (i == 1)
                        {
                            AIActor one = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);

                            one.IgnoreForRoomClear = true;
                            one.CanTargetEnemies   = true;
                            one.CanTargetPlayers   = false;
                            one.IsHarmlessEnemy    = true;
                            one.gameObject.AddComponent <KillOnRoomClear>();
                            buddy1 = one;
                        }
                        if (i == 2)
                        {
                            AIActor two = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);

                            two.IgnoreForRoomClear = true;
                            two.CanTargetEnemies   = true;
                            two.CanTargetPlayers   = false;
                            two.IsHarmlessEnemy    = true;
                            two.gameObject.AddComponent <KillOnRoomClear>();
                            buddy2 = two;
                        }
                        if (i == 3)
                        {
                            AIActor three = AIActor.Spawn(orLoadByGuid.aiActor, intVector.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(intVector.Value), true, AIActor.AwakenAnimationType.Default, true);
                            three.IgnoreForRoomClear = true;
                            three.CanTargetPlayers   = false;
                            three.CanTargetEnemies   = true;
                            three.IsHarmlessEnemy    = true;
                            three.gameObject.AddComponent <KillOnRoomClear>();
                            buddy3 = three;
                        }
                    }
                }
                catch (Exception ex)
                {
                    ETGModConsole.Log(ex.Message, false);
                }
            }
        }
示例#28
0
 private void OnEnteredCombat()
 {
     if (Owner && UnityEngine.Random.value <= 0.015f)
     {
         var        KeyBulletKin = EnemyDatabase.GetOrLoadByGuid("699cd24270af4cd183d671090d8323a1");
         IntVector2?spawnPos     = Owner.CurrentRoom.GetRandomVisibleClearSpot(1, 1);
         if (spawnPos != null)
         {
             AIActor TargetActor = AIActor.Spawn(KeyBulletKin.aiActor, spawnPos.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(spawnPos.Value), true, AIActor.AwakenAnimationType.Default, true);
             PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(TargetActor.specRigidbody, null, false);
             TargetActor.HandleReinforcementFallIntoRoom(0f);
         }
     }
 }
示例#29
0
        protected override void DoEffect(PlayerController user)
        {
            AIActor    orLoadByGuid = EnemyDatabase.GetOrLoadByGuid("5861e5a077244905a8c25c2b7b4d6ebb");
            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);

            AIActor    memehatt = EnemyDatabase.GetOrLoadByGuid("ddf12a4881eb43cfba04f36dd6377abb");
            IntVector2?meme     = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    TOPPER   = AIActor.Spawn(memehatt.aiActor, meme.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(meme.Value), true, AIActor.AwakenAnimationType.Default, true);

            AIActor    ase  = EnemyDatabase.GetOrLoadByGuid("86dfc13486ee4f559189de53cfb84107");
            IntVector2?mem  = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    poof = AIActor.Spawn(ase.aiActor, mem.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(mem.Value), true, AIActor.AwakenAnimationType.Default, true);

            AIActor    ae    = EnemyDatabase.GetOrLoadByGuid("6f818f482a5c47fd8f38cce101f6566c");
            IntVector2?memee = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    dag   = AIActor.Spawn(ae.aiActor, memee.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(memee.Value), true, AIActor.AwakenAnimationType.Default, true);

            AIActor    aerr  = EnemyDatabase.GetOrLoadByGuid("8bb5578fba374e8aae8e10b754e61d62");
            IntVector2?me    = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    dager = AIActor.Spawn(aerr.aiActor, me.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(me.Value), true, AIActor.AwakenAnimationType.Default, true);

            AIActor    aerddr  = EnemyDatabase.GetOrLoadByGuid("df4e9fedb8764b5a876517431ca67b86");
            IntVector2?mec     = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    dageree = AIActor.Spawn(aerddr.aiActor, mec.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(mec.Value), true, AIActor.AwakenAnimationType.Default, true);

            AIActor    aerddccr  = EnemyDatabase.GetOrLoadByGuid("39e6f47a16ab4c86bec4b12984aece4c");
            IntVector2?mecee     = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    dagereecc = AIActor.Spawn(aerddccr.aiActor, mecee.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(mecee.Value), true, AIActor.AwakenAnimationType.Default, true);

            AIActor    aerddccrf       = EnemyDatabase.GetOrLoadByGuid("3cadf10c489b461f9fb8814abc1a09c1");
            IntVector2?meceerr         = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    dagerqreccceecc = AIActor.Spawn(aerddccrf.aiActor, meceerr.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(meceerr.Value), true, AIActor.AwakenAnimationType.Default, true);

            AIActor    aerddccre    = EnemyDatabase.GetOrLoadByGuid("95ec774b5a75467a9ab05fa230c0c143");
            IntVector2?meceea       = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    dagerqrqeecc = AIActor.Spawn(aerddccre.aiActor, meceea.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(meceea.Value), true, AIActor.AwakenAnimationType.Default, true);

            AIActor    aerfdddccr    = EnemyDatabase.GetOrLoadByGuid("47bdfec22e8e4568a619130a267eab5b");
            IntVector2?meceeffffffff = new IntVector2?(base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(2, 2));
            AIActor    dagercceecc   = AIActor.Spawn(aerfdddccr.aiActor, meceeffffffff.Value, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(meceeffffffff.Value), true, AIActor.AwakenAnimationType.Default, true);

            RoomHandler room = base.LastOwner.CurrentRoom;
            IntVector2  randomVisibleClearSpot5 = base.LastOwner.CurrentRoom.GetRandomVisibleClearSpot(1, 1);
            Chest       rainbow_Chest           = GameManager.Instance.RewardManager.D_Chest;

            rainbow_Chest.IsLocked = false;
            Chest.Spawn(rainbow_Chest, randomVisibleClearSpot5);
        }
示例#30
0
        private void ImprovedMindControl(PlayerController player)
        {
            var Enemy = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5");

            if (player.PlayerHasActiveSynergy("Skilled & Killed"))
            {
                Enemy = EnemyDatabase.GetOrLoadByGuid("70216cae6c1346309d86d4a0b4603045");
            }
            if (player.PlayerHasActiveSynergy("Darkened Soul"))
            {
                Enemy = EnemyDatabase.GetOrLoadByGuid("39e6f47a16ab4c86bec4b12984aece4c");
            }
            if (player.PlayerHasActiveSynergy("Ridin' Shotgun"))
            {
                Enemy = EnemyDatabase.GetOrLoadByGuid("128db2f0781141bcb505d8f00f9e4d47");
            }
            AIActor             aiactor       = AIActor.Spawn(Enemy.aiActor, player.CenterPosition, GameManager.Instance.PrimaryPlayer.CurrentRoom, true, AIActor.AwakenAnimationType.Spawn, true);
            MindControlNotGamer THEBRAINWAVES = aiactor.gameObject.GetOrAddComponent <MindControlNotGamer>();

            THEBRAINWAVES.owner = player;
            GameManager.Instance.MainCameraController.StopTrackingPlayer();
            GameManager.Instance.MainCameraController.SetManualControl(true, false);
            aiactor.IgnoreForRoomClear = true;
            aiactor.CanTargetEnemies   = true;
            aiactor.HitByEnemyBullets  = true;
            aiactor.MovementSpeed      = player.stats.MovementSpeed;
            aiactor.gameObject.AddComponent <KillOnRoomClear>();
            player.healthHaver.IsVulnerable = false;
            player.ToggleRenderer(false, "arbitrary teleporter.");
            player.ToggleGunRenderers(false, "arbitrary teleporter.");
            player.ToggleHandRenderers(false, "arbitrary teleporter.");
            aiactor.healthHaver.OnDeath += this.SummonPlayer;
            if (player.PlayerHasActiveSynergy(SynergyNameToCheck))
            {
                BraveTime.ClearMultiplier(base.gameObject);
                Gamer = true;
                player.RemovePassiveItem(279);
                aiactor.healthHaver.OnDamaged += this.SwapPositions;
                BraveTime.ClearMultiplier(base.gameObject);
            }
            daguy            = aiactor;
            player.IsVisible = false;
            player.specRigidbody.CollideWithOthers = false;

            player.MovementModifiers   += this.NoMotionModifier;
            player.IsStationary         = true;
            player.CurrentStoneGunTimer = 9999999999999999999999f;
            StartCoroutine("jaja");
        }