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; }
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)); } }