using System; using System.Collections.Generic; using RecRoom.Core.AI; using UnityEngine; namespace RecRoom.Core.Encounters { // Token: 0x020009B7 RID: 2487 public abstract class BaseSpawnEnemyEncounterStep : GameEncounterStep { // Token: 0x06012B03 RID: 76547 RVA: 0x00556D68 File Offset: 0x00554F68 public override void OnAwake(GameEncounter EBMDDFDIPEP, int BFDOPNMDIGP, KPFHBPCEMMD MONDEOHAMIO, KPFHBPCEMMD FKAEEDGBEJB) { base.OnAwake(EBMDDFDIPEP, BFDOPNMDIGP, MONDEOHAMIO, FKAEEDGBEJB); Enemy.NNENOABJJPA += this.MIGKILMJBAK; Enemy.DPDDEBIHPII += this.LHNHAOAKKHN; this.MCJIOHIJFHB.Add(BaseSpawnEnemyEncounterStep.NKBIPPBLBEC, BFDOPNMDIGP); } // Token: 0x06012B04 RID: 76548 RVA: 0x00556DB8 File Offset: 0x00554FB8 public override void OnCleanup() { base.OnCleanup(); Enemy.NNENOABJJPA -= this.MIGKILMJBAK; Enemy.DPDDEBIHPII -= this.LHNHAOAKKHN; } // Token: 0x06012B05 RID: 76549 RVA: 0x00556DE4 File Offset: 0x00554FE4 public override void OnEncounterStart() { } // Token: 0x06012B06 RID: 76550 RVA: 0x00556DE8 File Offset: 0x00554FE8 public override void OnEncounterStop() { this.MasterKillAllLivingEnemies(); } // Token: 0x06012B07 RID: 76551 RVA: 0x00556DF0 File Offset: 0x00554FF0 protected Enemy DLLNDEJBMNF(EncounterEnemyDescriptor DPAMLOGEFBO, bool FBNHPKHEGBK, out bool OKJKCKHKHFD) { OKJKCKHKHFD = false; if (!IHFKMIAHBFP.HCHIDMOLLAD || DPAMLOGEFBO.EnemyType == DJGJNJMJDHF.INVALID) { return null; } Vector3 vector; Quaternion quaternion; if (DPAMLOGEFBO.ExplicitSpawnPoint != null) { vector = DPAMLOGEFBO.ExplicitSpawnPoint.position; Vector3 normalized = Vector3.ProjectOnPlane(DPAMLOGEFBO.ExplicitSpawnPoint.forward, Vector3.up).normalized; quaternion = Quaternion.LookRotation(normalized, Vector3.up); } else { EnemySpawnNavMeshRegion enemySpawnNavMeshRegion; if (this.spawnRegions.Length == 0 || (enemySpawnNavMeshRegion = this.spawnRegions[global::UnityEngine.Random.Range(0, this.spawnRegions.Length)]) == null) { base.NLLNCFIMHGF("Missing or null spawn regions."); return null; } if (!enemySpawnNavMeshRegion.TryGetSpawnPositionAndRotation(out vector, out quaternion)) { OKJKCKHKHFD = true; return null; } if (NDOFAEEKBGO.FPGEJOONGNH(DPAMLOGEFBO.EnemyType) == NFHAHJBGBIM.FLYING) { vector += Vector3.up * NDOFAEEKBGO.HCEBMDLMDGA(); } } EnemyPatrol enemyPatrol; if (this.EBMDDFDIPEP.IHDGILNHAPC != null) { enemyPatrol = this.EBMDDFDIPEP.IHDGILNHAPC; } else { enemyPatrol = DPAMLOGEFBO.Patrol; } Vector3 vector2; Quaternion quaternion2; this.spawnerConfiguration.HPAKLLBCAPO(vector, quaternion, out vector2, out quaternion2); Enemy enemy = Enemy.MasterSpawn(DPAMLOGEFBO.EnemyType, vector2, quaternion2, vector, this.spawnOnPatrol, enemyPatrol, this.EBMDDFDIPEP.HAPPDKOIBKA, FBNHPKHEGBK, this.EBMDDFDIPEP.OMNGGJICBBI.ADMBCINHJOG, this.MCJIOHIJFHB); if (enemy == null) { base.NLLNCFIMHGF("Enemy of type " + DPAMLOGEFBO.EnemyType + " failed to instantiate."); } return enemy; } // Token: 0x06012B08 RID: 76552 RVA: 0x00556F90 File Offset: 0x00555190 private void MIGKILMJBAK(Enemy OELGAHAMCLH) { if (this.IAIMMBDDHDM(OELGAHAMCLH)) { this.DPCAHEMGIML.Add(OELGAHAMCLH); } } // Token: 0x06012B09 RID: 76553 RVA: 0x00556FAC File Offset: 0x005551AC private void LHNHAOAKKHN(Enemy OELGAHAMCLH) { if (this.IAIMMBDDHDM(OELGAHAMCLH)) { this.DPCAHEMGIML.Remove(OELGAHAMCLH); } } // Token: 0x06012B0A RID: 76554 RVA: 0x00556FC8 File Offset: 0x005551C8 private bool IAIMMBDDHDM(Enemy OELGAHAMCLH) { if (OELGAHAMCLH.GGFGGLCBCON == this.EBMDDFDIPEP.OMNGGJICBBI.ADMBCINHJOG) { object obj = -1; Dictionary instantiationParameters = OELGAHAMCLH.OAEPDOMEFGP; if (instantiationParameters != null && instantiationParameters.TryGetValue(BaseSpawnEnemyEncounterStep.NKBIPPBLBEC, out obj) && (int)obj == this.BFDOPNMDIGP) { return true; } } return false; } // Token: 0x06012B0B RID: 76555 RVA: 0x0055702C File Offset: 0x0055522C public void MasterKillAllLivingEnemies() { if (IHFKMIAHBFP.HCHIDMOLLAD) { BaseSpawnEnemyEncounterStep.FLNIJLLDDFD.Clear(); BaseSpawnEnemyEncounterStep.FLNIJLLDDFD.AddRange(this.DPCAHEMGIML); this.DPCAHEMGIML.Clear(); for (int i = 0; i < BaseSpawnEnemyEncounterStep.FLNIJLLDDFD.Count; i++) { Enemy.MasterKill(BaseSpawnEnemyEncounterStep.FLNIJLLDDFD[i]); } } } // Token: 0x06012B0C RID: 76556 RVA: 0x00557094 File Offset: 0x00555294 protected int JFALHNMALMK() { int num = 0; for (int i = 0; i < this.DPCAHEMGIML.Count; i++) { if (this.DPCAHEMGIML[i].AALIKEFHNIG) { num++; } } return num; } // Token: 0x0400340C RID: 13324 [SerializeField] [Header("Spawn Configuration")] public EnemySpawnerConfiguration spawnerConfiguration; // Token: 0x0400340D RID: 13325 [Header("Patrol")] [SerializeField] public bool spawnOnPatrol = true; // Token: 0x0400340E RID: 13326 [Header("Spawn Regions")] [SerializeField] public EnemySpawnNavMeshRegion[] spawnRegions = new EnemySpawnNavMeshRegion[1]; // Token: 0x0400340F RID: 13327 private static readonly string NKBIPPBLBEC = "ENC_STEP_ID"; // Token: 0x04003410 RID: 13328 private static List FLNIJLLDDFD = new List(); // Token: 0x04003411 RID: 13329 protected List DPCAHEMGIML = new List(); // Token: 0x04003412 RID: 13330 private Dictionary MCJIOHIJFHB = new Dictionary(); } }