public static void DropEnemy(string[] _enemyguid) { //method used for debugging, not used in regular settings int count = EnemyDatabase.Instance.Entries.Count; ETGModConsole.Log(string.Format("There are : {0} in Database", count.ToString())); bool re = false; ETGModConsole.Log("Removing: " + _enemyguid[0] + " from database"); for (int i = 0; i < count; i++) { EnemyDatabaseEntry enemyDatabaseEntry = EnemyDatabase.Instance.Entries[i]; if (enemyDatabaseEntry != null && enemyDatabaseEntry.myGuid == _enemyguid[0]) { ETGModConsole.Log("Found: " + _enemyguid[0] + " in database"); EnemyDatabase.Instance.Entries.Remove(enemyDatabaseEntry); ETGModConsole.Log("Removed: " + _enemyguid[0] + " from database"); re = true; break; } } if (re == false) { ETGModConsole.Log(_enemyguid[0] + " Not found in database"); } }
public static void AddEnemyToDatabase(GameObject EnemyPrefab, string EnemyGUID, bool isInBossTab = false, bool IsNormalEnemy = true, bool AddToMTGSpawnPool = true) { EnemyDatabaseEntry item = new EnemyDatabaseEntry { myGuid = EnemyGUID, placeableWidth = 2, placeableHeight = 2, isNormalEnemy = IsNormalEnemy, path = EnemyGUID, isInBossTab = isInBossTab, encounterGuid = EnemyGUID }; EnemyDatabase.Instance.Entries.Add(item); SpecialResources.resources.Add(EnemyGUID, EnemyPrefab); EncounterDatabaseEntry encounterDatabaseEntry = new EncounterDatabaseEntry(EnemyPrefab.GetComponent <AIActor>().encounterTrackable) { path = EnemyGUID, myGuid = EnemyPrefab.GetComponent <AIActor>().encounterTrackable.EncounterGuid }; EncounterDatabase.Instance.Entries.Add(encounterDatabaseEntry); if (AddToMTGSpawnPool && !string.IsNullOrEmpty(EnemyPrefab.GetComponent <AIActor>().ActorName)) { string EnemyName = "spapi:" + EnemyPrefab.GetComponent <AIActor>().ActorName.Replace(" ", "_").Replace("(", "_").Replace(")", string.Empty).ToLower(); if (!Game.Enemies.ContainsID(EnemyName)) { Game.Enemies.Add(EnemyName, EnemyPrefab.GetComponent <AIActor>()); } } }
// Token: 0x060000BF RID: 191 RVA: 0x000087B8 File Offset: 0x000069B8 public static GameObject BuildPrefab(string name, string guid, string defaultSpritePath, IntVector2 hitboxOffset, IntVector2 hitBoxSize) { bool flag = CompanionBuilder.companionDictionary.ContainsKey(guid); GameObject result; if (flag) { ETGModConsole.Log("CompanionBuilder: Tried to create two companion prefabs with the same GUID!", false); result = null; } else { GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(CompanionBuilder.behaviorSpeculatorPrefab); gameObject.name = name; tk2dSprite component = SpriteBuilder.SpriteFromResource(defaultSpritePath, gameObject, false).GetComponent <tk2dSprite>(); component.SetUpSpeculativeRigidbody(hitboxOffset, hitBoxSize).CollideWithOthers = false; gameObject.AddComponent <tk2dSpriteAnimator>(); gameObject.AddComponent <AIAnimator>(); HealthHaver healthHaver = gameObject.AddComponent <HealthHaver>(); healthHaver.RegisterBodySprite(component, false, 0); healthHaver.PreventAllDamage = true; healthHaver.SetHealthMaximum(15000f, null, false); healthHaver.FullHeal(); AIActor aiactor = gameObject.AddComponent <AIActor>(); aiactor.State = AIActor.ActorState.Normal; aiactor.EnemyGuid = guid; BehaviorSpeculator component2 = gameObject.GetComponent <BehaviorSpeculator>(); component2.MovementBehaviors = new List <MovementBehaviorBase>(); component2.AttackBehaviors = new List <AttackBehaviorBase>(); component2.TargetBehaviors = new List <TargetBehaviorBase>(); component2.OverrideBehaviors = new List <OverrideBehaviorBase>(); component2.OtherBehaviors = new List <BehaviorBase>(); EnemyDatabaseEntry item = new EnemyDatabaseEntry { myGuid = guid, placeableWidth = 2, placeableHeight = 2, isNormalEnemy = false }; EnemyDatabase.Instance.Entries.Add(item); CompanionBuilder.companionDictionary.Add(guid, gameObject); UnityEngine.Object.DontDestroyOnLoad(gameObject); FakePrefab.MarkAsFakePrefab(gameObject); gameObject.SetActive(false); result = gameObject; } return(result); }
public static void EnemyDatabaseChecker() { int count = EnemyDatabase.Instance.Entries.Count; ETGModConsole.Log(string.Format("There are : {0} in Database", count.ToString())); //bool flag = false; //bool flag_prefabActor = false; Debug.Log("[RANDOMIZER] Start EnemyDatabase"); for (int i = 0; i < count; i++) { EnemyDatabaseEntry enemyDatabaseEntry = EnemyDatabase.Instance.Entries[i]; if (enemyDatabaseEntry != null) //if (enemyDatabaseEntry != null && enemyDatabaseEntry.name.Equals(_name[0], StringComparison.OrdinalIgnoreCase)) { string enemyGuid = enemyDatabaseEntry.myGuid; if (EnemyDatabase.GetOrLoadByGuid(enemyGuid) != null) { AIActor prefabActor = EnemyDatabase.GetOrLoadByGuid(enemyGuid); if (prefabActor.healthHaver != null) { HealthHaver health = prefabActor.healthHaver; Debug.Log(string.Format("{0}: {1} NormalEnemy: {2}, Boss: {3}, SubBoss{4} ", enemyGuid, prefabActor.ActorName, prefabActor.IsNormalEnemy, health.IsBoss, health.IsSubboss)); } else { Debug.Log(string.Format("{0}: No HealthHaver Found!!!, {1} NormalEnemy: {2}", enemyGuid, prefabActor.ActorName, prefabActor.IsNormalEnemy)); } } else { Debug.Log(string.Format("{0}: No PrefabActorFound!!!", enemyGuid)); //flag_prefabActor = true; } } } Debug.Log("[RANDOMIZER] End EnemyDatabase"); }
public static void AddEnemyToDatabase(GameObject EnemyPrefab, string EnemyGUID) { EnemyDatabaseEntry item = new EnemyDatabaseEntry { myGuid = EnemyGUID, placeableWidth = 2, placeableHeight = 2, isNormalEnemy = true, path = EnemyGUID, isInBossTab = false, encounterGuid = EnemyGUID }; EnemyDatabase.Instance.Entries.Add(item); EncounterDatabaseEntry encounterDatabaseEntry = new EncounterDatabaseEntry(EnemyPrefab.GetComponent <AIActor>().encounterTrackable) { path = EnemyGUID, myGuid = EnemyPrefab.GetComponent <AIActor>().encounterTrackable.EncounterGuid }; EncounterDatabase.Instance.Entries.Add(encounterDatabaseEntry); }
public static GameObject BuildPrefab(string name, string guid, string defaultSpritePath, IntVector2 hitboxOffset, IntVector2 hitBoxSize) { if (CompanionBuilder.companionDictionary.ContainsKey(guid)) { ETGModConsole.Log("CompanionBuilder: Tried to create two companion prefabs with the same GUID!"); return(null); } var prefab = GameObject.Instantiate(behaviorSpeculatorPrefab); prefab.name = name; //setup misc components var sprite = SpriteBuilder.SpriteFromResource(defaultSpritePath, prefab).GetComponent <tk2dSprite>(); sprite.SetUpSpeculativeRigidbody(hitboxOffset, hitBoxSize).CollideWithOthers = false; prefab.AddComponent <tk2dSpriteAnimator>(); prefab.AddComponent <AIAnimator>(); //setup health haver var healthHaver = prefab.AddComponent <HealthHaver>(); healthHaver.RegisterBodySprite(sprite); healthHaver.PreventAllDamage = true; healthHaver.SetHealthMaximum(15000); healthHaver.FullHeal(); //setup AI Actor var aiActor = prefab.AddComponent <AIActor>(); aiActor.State = AIActor.ActorState.Normal; aiActor.EnemyGuid = guid; //setup behavior speculator var bs = prefab.GetComponent <BehaviorSpeculator>(); bs.MovementBehaviors = new List <MovementBehaviorBase>(); bs.AttackBehaviors = new List <AttackBehaviorBase>(); bs.TargetBehaviors = new List <TargetBehaviorBase>(); bs.OverrideBehaviors = new List <OverrideBehaviorBase>(); bs.OtherBehaviors = new List <BehaviorBase>(); //Add to enemy database EnemyDatabaseEntry enemyDatabaseEntry = new EnemyDatabaseEntry() { myGuid = guid, placeableWidth = 2, placeableHeight = 2, isNormalEnemy = false }; EnemyDatabase.Instance.Entries.Add(enemyDatabaseEntry); CompanionBuilder.companionDictionary.Add(guid, prefab); //finalize GameObject.DontDestroyOnLoad(prefab); FakePrefab.MarkAsFakePrefab(prefab); prefab.SetActive(false); return(prefab); }
public static GameObject BuildPrefab(string name, string guid, string defaultSpritePath, IntVector2 hitboxOffset, IntVector2 hitBoxSize, bool HasAiShooter, bool UsesAttackGroup = false) { if (BossBuilder.Dictionary.ContainsKey(guid)) { ETGModConsole.Log("BossBuilder: Yea something went wrong. Complain to Neighborino about it."); return(null); } var prefab = GameObject.Instantiate(behaviorSpeculatorPrefab); prefab.name = name; //setup misc components var sprite = SpriteBuilder.SpriteFromResource(defaultSpritePath, prefab).GetComponent <tk2dSprite>(); sprite.SetUpSpeculativeRigidbody(hitboxOffset, hitBoxSize).CollideWithOthers = true; prefab.AddComponent <tk2dSpriteAnimator>(); prefab.AddComponent <AIAnimator>(); PickupObject item = PickupObjectDatabase.GetById(291); //setup knockback var knockback = prefab.AddComponent <KnockbackDoer>(); knockback.weight = 1; SpriteBuilder.AddSpriteToCollection("FrostAndGunfireItems/Resources/roomimic_bosscard", SpriteBuilder.ammonomiconCollection); //setup health haver var healthHaver = prefab.AddComponent <HealthHaver>(); healthHaver.RegisterBodySprite(sprite); healthHaver.PreventAllDamage = false; healthHaver.SetHealthMaximum(15000); healthHaver.FullHeal(); //setup AI Actor var aiActor = prefab.AddComponent <AIActor>(); aiActor.State = AIActor.ActorState.Normal; aiActor.EnemyGuid = guid; aiActor.HasShadow = false; //setup behavior speculator var bs = prefab.GetComponent <BehaviorSpeculator>(); bs.MovementBehaviors = new List <MovementBehaviorBase>(); bs.TargetBehaviors = new List <TargetBehaviorBase>(); bs.OverrideBehaviors = new List <OverrideBehaviorBase>(); bs.OtherBehaviors = new List <BehaviorBase>(); bs.AttackBehaviorGroup.AttackBehaviors = new List <AttackBehaviorGroup.AttackGroupItem>(); if (HasAiShooter) { var actor = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5"); behaviorSpeculatorPrefab = GameObject.Instantiate(actor.gameObject); foreach (Transform child in behaviorSpeculatorPrefab.transform) { if (child != behaviorSpeculatorPrefab.transform) { GameObject.DestroyImmediate(child); } } foreach (var comp in behaviorSpeculatorPrefab.GetComponents <Component>()) { if (comp.GetType() != typeof(BehaviorSpeculator)) { GameObject.DestroyImmediate(comp); } } GameObject.DontDestroyOnLoad(behaviorSpeculatorPrefab); FakePrefab.MarkAsFakePrefab(behaviorSpeculatorPrefab); behaviorSpeculatorPrefab.SetActive(false); } else { AIBulletBank aibulletBank = prefab.AddComponent <AIBulletBank>(); } //Add to enemy database EnemyDatabaseEntry enemyDatabaseEntry = new EnemyDatabaseEntry { myGuid = guid, placeableWidth = 2, placeableHeight = 2, isNormalEnemy = true, path = guid, isInBossTab = true, encounterGuid = guid, }; EnemyDatabase.Instance.Entries.Add(enemyDatabaseEntry); BossBuilder.Dictionary.Add(guid, prefab); //finalize GameObject.DontDestroyOnLoad(prefab); FakePrefab.MarkAsFakePrefab(prefab); prefab.SetActive(false); return(prefab); }
public static GameObject BuildPrefab(string name, string guid, string defaultSpritePath, IntVector2 hitboxOffset, IntVector2 hitBoxSize, bool HasAiShooter, bool UsesAttackGroup = false) { if (HasAiShooter) { var actor = EnemyDatabase.GetOrLoadByGuid("3cadf10c489b461f9fb8814abc1a09c1"); behaviorSpeculatorPrefab = GameObject.Instantiate(actor.gameObject); foreach (Transform child in behaviorSpeculatorPrefab.transform) { if (child != behaviorSpeculatorPrefab.transform) { GameObject.DestroyImmediate(child); } } foreach (var comp in behaviorSpeculatorPrefab.GetComponents <Component>()) { if (comp.GetType() != typeof(BehaviorSpeculator)) { GameObject.DestroyImmediate(comp); } } GameObject.DontDestroyOnLoad(behaviorSpeculatorPrefab); FakePrefab.MarkAsFakePrefab(behaviorSpeculatorPrefab); behaviorSpeculatorPrefab.SetActive(false); } if (EnemyBuilder.Dictionary.ContainsKey(guid)) { ETGModConsole.Log("EnemyBuilder: Yea something went wrong. Complain to Neighborino about it."); return(null); } var prefab = GameObject.Instantiate(behaviorSpeculatorPrefab); prefab.name = name; //setup misc components var sprite = SpriteBuilder.SpriteFromResource(defaultSpritePath, prefab).GetComponent <tk2dSprite>(); sprite.SetUpSpeculativeRigidbody(hitboxOffset, hitBoxSize).CollideWithOthers = true; prefab.AddComponent <tk2dSpriteAnimator>(); prefab.AddComponent <AIAnimator>(); //setup knockback var knockback = prefab.AddComponent <KnockbackDoer>(); knockback.weight = 1; //setup health haver var healthHaver = prefab.AddComponent <HealthHaver>(); healthHaver.RegisterBodySprite(sprite); healthHaver.PreventAllDamage = false; healthHaver.SetHealthMaximum(15000); healthHaver.FullHeal(); //setup AI Actor var aiActor = prefab.AddComponent <AIActor>(); aiActor.State = AIActor.ActorState.Normal; aiActor.EnemyGuid = guid; aiActor.CanTargetPlayers = true; aiActor.HasShadow = false; aiActor.specRigidbody.CollideWithOthers = true; aiActor.specRigidbody.CollideWithTileMap = true; aiActor.specRigidbody.PixelColliders.Clear(); aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyCollider, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 0, ManualOffsetY = 0, ManualWidth = 15, ManualHeight = 17, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0 }); aiActor.specRigidbody.PixelColliders.Add(new PixelCollider { ColliderGenerationMode = PixelCollider.PixelColliderGeneration.Manual, CollisionLayer = CollisionLayer.EnemyHitBox, IsTrigger = false, BagleUseFirstFrameOnly = false, SpecifyBagelFrame = string.Empty, BagelColliderNumber = 0, ManualOffsetX = 0, ManualOffsetY = 0, ManualWidth = 15, ManualHeight = 17, ManualDiameter = 0, ManualLeftX = 0, ManualLeftY = 0, ManualRightX = 0, ManualRightY = 0, }); aiActor.CorpseObject = EnemyDatabase.GetOrLoadByGuid("01972dee89fc4404a5c408d50007dad5").CorpseObject; aiActor.PreventBlackPhantom = false; //setup behavior speculator var bs = prefab.GetComponent <BehaviorSpeculator>(); prefab.AddComponent <Tint>(); bs.MovementBehaviors = new List <MovementBehaviorBase>(); bs.TargetBehaviors = new List <TargetBehaviorBase>(); bs.OverrideBehaviors = new List <OverrideBehaviorBase>(); bs.OtherBehaviors = new List <BehaviorBase>(); if (UsesAttackGroup) { bs.AttackBehaviorGroup.AttackBehaviors = new List <AttackBehaviorGroup.AttackGroupItem>(); } else { bs.AttackBehaviors = new List <AttackBehaviorBase>(); } //allows enemies to be tinted prefab.AddComponent <AIBulletBank>(); //Add to enemy database EnemyDatabaseEntry enemyDatabaseEntry = new EnemyDatabaseEntry() { myGuid = guid, placeableWidth = 2, placeableHeight = 2, isNormalEnemy = true }; EnemyDatabase.Instance.Entries.Add(enemyDatabaseEntry); EnemyBuilder.Dictionary.Add(guid, prefab); //finalize GameObject.DontDestroyOnLoad(prefab); FakePrefab.MarkAsFakePrefab(prefab); prefab.SetActive(false); return(prefab); }
public static void Create_Databases() { for (int i = 0; i < EnemyDatabase.Instance.Entries.Count(); i++) { EnemyDatabaseEntry EnemyDatabaseEntry = EnemyDatabase.Instance.Entries[i]; string enemyGuid = EnemyDatabaseEntry.myGuid; if (!RemoveEnemyDatabase.Contains(enemyGuid)) { try { AIActor prefabActor = EnemyDatabase.GetOrLoadByGuid(enemyGuid); if (prefabActor.healthHaver.IsBoss | prefabActor.healthHaver.IsSubboss) { BossOnlyDatabase.Add(enemyGuid); } if (prefabActor.IsNormalEnemy && prefabActor.IsWorthShootingAt && prefabActor.CanTargetPlayers && prefabActor.healthHaver.CanCurrentlyBeKilled && !prefabActor.IsMimicEnemy && !prefabActor.IgnoreForRoomClear && !prefabActor.IsHarmlessEnemy) { BossRoomAllEnemies.Add(enemyGuid); } if (prefabActor.IsNormalEnemy && !prefabActor.healthHaver.IsBoss && !prefabActor.healthHaver.IsSubboss) { ClearOnlyDatabase_NoBosses.Add(enemyGuid); } if (prefabActor.IsNormalEnemy && prefabActor.IsWorthShootingAt && prefabActor.CanTargetPlayers && prefabActor.healthHaver.CanCurrentlyBeKilled && !prefabActor.IsMimicEnemy && !prefabActor.IgnoreForRoomClear && !prefabActor.IsHarmlessEnemy && !prefabActor.healthHaver.IsBoss && !prefabActor.healthHaver.IsSubboss) { BossRoomRegularEnemiesOnly.Add(enemyGuid); } if (prefabActor.IsHarmlessEnemy) { HarmlessEnemyDatabase.Add(enemyGuid); } All_Database.Add(enemyGuid); } catch { Debug.Log("Error in loading to database: " + enemyGuid); throw; } } } SpecificEnemyDatabase.Add("0d3f7c641557426fbac8596b61c9fb45"); //lord_of_the_jammed SpecificEnemyDatabase.Add("5d045744405d4438b371eb5ed3e2cdb2"); //bishop SpecificEnemyDatabase.Add("ce2d2a0dced0444fb751b262ec6af08a"); //DrWolf SpecificEnemyDatabase.Add("640238ba85dd4e94b3d6f68888e6ecb8"); //robocop SpecificEnemyDatabase.Add("e456b66ed3664a4cb590eab3a8ff3814"); //babygood mimic SpecificEnemyDatabase.Add("5fa8c86a65234b538cd022f726af2aea"); //bulletman SpecificEnemyDatabase.Add("998807b57e454f00a63d67883fcf90d6"); //turret SpecificEnemyDatabase.Add("6450d20137994881aff0ddd13e3d40c8"); //mimic SpecificEnemyDatabase.Add("abfb454340294a0992f4173d6e5898a8"); //mimic SpecificEnemyDatabase.Add("ac9d345575444c9a8d11b799e8719be0"); //mimic SpecificEnemyDatabase.Add("d8fd592b184b4ac9a3be217bc70912a2"); //mimic SpecificEnemyDatabase.Add("d8d651e3484f471ba8a2daa4bf535ce6"); //mimic SpecificEnemyDatabase.Add("2ebf8ef6728648089babb507dec4edb7"); //mimic SpecificEnemyDatabase.Add("796a7ed4ad804984859088fc91672c7f"); //mimic for (int i = 0; i < SpecificEnemyDatabase.Count; i++) { RemovefromBossRoomDatabase.Add(SpecificEnemyDatabase[i]); } RemovefromBossRoomDatabase.Add("3e98ccecf7334ff2800188c417e67c15"); //killithid RemovefromBossRoomDatabase.Add("45192ff6d6cb43ed8f1a874ab6bef316"); //misfirebeast RemovefromBossRoomDatabase.Add("2ccaa1b7ae10457396a1796decda9cf6"); //agunim RemovefromBossRoomDatabase.Add("39dca963ae2b4688b016089d926308ab"); //cannon RemovefromBossRoomDatabase.Add("0ff278534abb4fbaaa65d3f638003648"); //popcorn RemovefromBossRoomDatabase.Add("0d3f7c641557426fbac8596b61c9fb45"); //hollowpoint RemovefromBossRoomDatabase.Add("dc3cd41623d447aeba77c77c99598426"); //other worldy terror (marine past) }