Beispiel #1
0
        private IEnumerator DoEnemySpawn(string enemyGuid, IntVector2 position, bool isJammed, bool isDisplaced)
        {
            //ETGModConsole.Log("DoEnemySpawn triggered");
            yield return(new WaitForSeconds(1f));

            try
            {
                if (Owner.IsInCombat)
                {
                    var enemyToSpawn = EnemyDatabase.GetOrLoadByGuid(enemyGuid);
                    Instantiate <GameObject>(EasyVFXDatabase.BloodiedScarfPoofVFX, position.ToVector3(), Quaternion.identity);
                    AIActor TargetActor = AIActor.Spawn(enemyToSpawn, position, GameManager.Instance.Dungeon.data.GetAbsoluteRoomFromPosition(position), true, AIActor.AwakenAnimationType.Default, true);
                    PhysicsEngine.Instance.RegisterOverlappingGhostCollisionExceptions(TargetActor.specRigidbody, null, false);
                    CustomEnemyTagsSystem tags = TargetActor.gameObject.GetOrAddComponent <CustomEnemyTagsSystem>();
                    tags.isKalibersEyeMinion = true;
                    tags.ignoreForGoodMimic  = true;

                    CompanionController orAddComponent = TargetActor.gameObject.GetOrAddComponent <CompanionController>();
                    orAddComponent.companionID = CompanionController.CompanionIdentifier.NONE;
                    orAddComponent.Initialize(Owner);

                    TargetActor.OverrideHitEnemies    = true;
                    TargetActor.CollisionDamage       = 0.5f;
                    TargetActor.CollisionDamageTypes |= CoreDamageTypes.Electric;

                    if (isJammed == true)
                    {
                        TargetActor.BecomeBlackPhantom();
                    }
                    CompanionisedEnemyBulletModifiers companionisedBullets = TargetActor.gameObject.GetOrAddComponent <CompanionisedEnemyBulletModifiers>();
                    companionisedBullets.jammedDamageMultiplier = 2f;
                    companionisedBullets.TintBullets            = true;
                    companionisedBullets.TintColor        = ExtendedColours.honeyYellow;
                    companionisedBullets.baseBulletDamage = 10f;
                    companionisedBullets.scaleSpeed       = true;
                    companionisedBullets.scaleDamage      = true;
                    companionisedBullets.scaleSize        = false;
                    companionisedBullets.doPostProcess    = false;
                    companionisedBullets.enemyOwner       = Owner;

                    TargetActor.ApplyEffect(GameManager.Instance.Dungeon.sharedSettingsPrefab.DefaultPermanentCharmEffect, 1f, null);
                    TargetActor.gameObject.AddComponent <KillOnRoomClear>();

                    if (isDisplaced)
                    {
                        DisplacedImageController displacedness = TargetActor.gameObject.AddComponent <DisplacedImageController>();
                        displacedness.Init();
                    }

                    if (EasyEnemyTypeLists.MultiPhaseEnemies.Contains(TargetActor.EnemyGuid) || EasyEnemyTypeLists.EnemiesWithInvulnerablePhases.Contains(TargetActor.EnemyGuid))
                    {
                        EraseFromExistenceOnRoomClear destroyTrickyEnemy = TargetActor.gameObject.AddComponent <EraseFromExistenceOnRoomClear>();
                        destroyTrickyEnemy.Delay = 1f;
                    }
                    TargetActor.IsHarmlessEnemy = true;
                    TargetActor.RegisterOverrideColor(Color.grey, "Ressurection");
                    TargetActor.IgnoreForRoomClear = true;
                    if (TargetActor.gameObject.GetComponent <SpawnEnemyOnDeath>())
                    {
                        Destroy(TargetActor.gameObject.GetComponent <SpawnEnemyOnDeath>());
                    }
                }
            }
            catch (Exception e)
            {
                ETGModConsole.Log(e.Message);
                ETGModConsole.Log(e.StackTrace);
            }
            yield break;
        }
Beispiel #2
0
        public static void DebugBulletStoppingError(string[] notused)
        {
            RoomHandler    currentRoom           = GameManager.Instance.PrimaryPlayer.CurrentRoom;
            List <AIActor> activeenemies_typeall = currentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);

            // int flag = 0;

            Debug.Log("DebugBulletStoppingError");
            ETGModConsole.Log("");
            for (int e = 0; e < activeenemies_typeall.Count; e++)
            {
                AIActor    enemy = activeenemies_typeall[e];
                GameObject objectToInstantiate = enemy.gameObject;
                //AIBulletBank bulletbank = objectToInstantiate.GetComponent<AIBulletBank>();

                Vector2 lastIncurredDamageDirection  = enemy.specRigidbody.healthHaver.lastIncurredDamageDirection;
                Vector2 lastIncurredDamageDirection2 = enemy.healthHaver.lastIncurredDamageDirection;
                //Vector2 projectiledirection =
                //List<AIBulletBank.Entry> bullets = bulletbank.Bullets;



                HealthHaver healthhaver = enemy.healthHaver;

                AIAnimator animator     = objectToInstantiate.GetComponent <AIAnimator>();
                bool       animatorbool = false;

                tk2dSpriteAnimator sprite_animator = objectToInstantiate.GetComponent <tk2dSpriteAnimator>();
                bool sprite_animatorbool           = false;


                DisplacedImageController displacedimagecontroller = objectToInstantiate.GetComponent <DisplacedImageController>();
                bool displacedimagecontrollerbool = false;

                tk2dSprite tk2dsprite     = objectToInstantiate.GetComponent <tk2dSprite>();
                bool       tk2dspritebool = false;


                if (animator != null)
                {
                    animatorbool = true;
                }


                if (sprite_animator != null)
                {
                    sprite_animatorbool = true;
                }

                if (displacedimagecontroller != null)
                {
                    displacedimagecontrollerbool = true;
                }

                if (tk2dsprite != null)
                {
                    tk2dspritebool = true;
                }


                bool isdead = enemy.healthHaver.IsDead;


                ETGModConsole.Log(string.Format("{0}, {1}, IsDead:{2},  LIDD1:{3}, animator:{4}, spriteanimator:{5}, DisplacedImageController{6}, tk2dsprite{7}",
                                                e, enemy.EnemyGuid, isdead, lastIncurredDamageDirection.ToString(), animatorbool, sprite_animatorbool, displacedimagecontrollerbool, tk2dspritebool));
            }
        }