183 lines
5.6 KiB
C#
183 lines
5.6 KiB
C#
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<string, object> 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<Enemy> FLNIJLLDDFD = new List<Enemy>();
|
|
|
|
// Token: 0x04003411 RID: 13329
|
|
protected List<Enemy> DPCAHEMGIML = new List<Enemy>();
|
|
|
|
// Token: 0x04003412 RID: 13330
|
|
private Dictionary<string, object> MCJIOHIJFHB = new Dictionary<string, object>();
|
|
}
|
|
}
|