Files
2026-06-04 11:42:34 +02:00

420 lines
13 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using Photon;
using UnityEngine;
namespace RecRoom.Core.AI
{
// Token: 0x02000B7D RID: 2941
[RequireComponent(typeof(PhotonView))]
[RequireComponent(typeof(Enemy))]
public abstract class EnemyRangedWeapon : global::Photon.MonoBehaviour
{
// Token: 0x17000970 RID: 2416
// (get) Token: 0x0601639C RID: 91036 RVA: 0x00625BAC File Offset: 0x00623DAC
public Transform DCBHLBNCLGP
{
get
{
return this.projectileOriginTransform;
}
}
// Token: 0x17000971 RID: 2417
// (get) Token: 0x0601639D RID: 91037 RVA: 0x00625BB4 File Offset: 0x00623DB4
public float NJNINJPMKCA
{
get
{
if (this.shotSettings == null)
{
return 0f;
}
return (float)this.shotSettings.Length * this.timeBetweenBurstShots;
}
}
// Token: 0x140000AE RID: 174
// (add) Token: 0x0601639E RID: 91038 RVA: 0x00625BD8 File Offset: 0x00623DD8
// (remove) Token: 0x0601639F RID: 91039 RVA: 0x00625C10 File Offset: 0x00623E10
[field: DebuggerBrowsable(DebuggerBrowsableState.Never)]
public event EnemyRangedWeapon.LHLJCBGFKKD JCCIBHHCGDD;
// Token: 0x140000AF RID: 175
// (add) Token: 0x060163A0 RID: 91040 RVA: 0x00625C48 File Offset: 0x00623E48
// (remove) Token: 0x060163A1 RID: 91041 RVA: 0x00625C80 File Offset: 0x00623E80
[field: DebuggerBrowsable(DebuggerBrowsableState.Never)]
public event EnemyRangedWeapon.IPKAJLEIDKK APHBMAPOFBI;
// Token: 0x140000B0 RID: 176
// (add) Token: 0x060163A2 RID: 91042 RVA: 0x00625CB8 File Offset: 0x00623EB8
// (remove) Token: 0x060163A3 RID: 91043 RVA: 0x00625CF0 File Offset: 0x00623EF0
[field: DebuggerBrowsable(DebuggerBrowsableState.Never)]
public event EnemyRangedWeapon.AAOGICJJNLG HHGOAGAPIOJ;
// Token: 0x140000B1 RID: 177
// (add) Token: 0x060163A4 RID: 91044 RVA: 0x00625D28 File Offset: 0x00623F28
// (remove) Token: 0x060163A5 RID: 91045 RVA: 0x00625D60 File Offset: 0x00623F60
[field: DebuggerBrowsable(DebuggerBrowsableState.Never)]
public event EnemyRangedWeapon.MLNPHNHBCNA OHHFNAMFFBL;
// Token: 0x060163A6 RID: 91046 RVA: 0x00625D98 File Offset: 0x00623F98
protected override void Awake()
{
base.Awake();
this.GLDGOBKOFMJ = base.GetComponent<Enemy>();
if (this.GLDGOBKOFMJ == null)
{
global::UnityEngine.Debug.LogError(base.name + " is missing an enemy script.");
return;
}
this.DIBBLFPCIFB = base.GetComponent<EnemyTeamColor>();
}
// Token: 0x060163A7 RID: 91047 RVA: 0x00625DEC File Offset: 0x00623FEC
private void Start()
{
this.FOKHKLBPNLH.Add(this.GLDGOBKOFMJ.BOLBONELAEF.POEDHHBIGLD);
}
// Token: 0x060163A8 RID: 91048 RVA: 0x00625E0C File Offset: 0x0062400C
protected override void OnDestroy()
{
base.OnDestroy();
this.EBMKNCNNKEC();
}
// Token: 0x060163A9 RID: 91049 RVA: 0x00625E1C File Offset: 0x0062401C
public void AuthorityFire(Vector3 MMEBLCBANIL, float KMLDGGEMJHG = -1f)
{
if (base.BHCCHBHNHCG && this.BAFBLDIBFMC(MMEBLCBANIL))
{
this.JDCLNBMADKL(MMEBLCBANIL);
base.OMNGGJICBBI.RPC("RpcOnFire", IHCPDNLJMMD.All, new object[] { -1, MMEBLCBANIL, this.PBKGMFGBIKP, KMLDGGEMJHG });
}
}
// Token: 0x060163AA RID: 91050 RVA: 0x00625E84 File Offset: 0x00624084
public void AuthorityFire(EIDNMNCOAAJ MMEBLCBANIL, float KMLDGGEMJHG = -1f)
{
if (base.BHCCHBHNHCG && MMEBLCBANIL.AJFBOLHPEJC && this.BAFBLDIBFMC(MMEBLCBANIL.ICNCDGIKNNI))
{
this.JDCLNBMADKL(MMEBLCBANIL.ICNCDGIKNNI);
base.OMNGGJICBBI.RPC("RpcOnFire", IHCPDNLJMMD.All, new object[]
{
MMEBLCBANIL.BADMPMDONAH,
Vector3.zero,
this.PBKGMFGBIKP,
KMLDGGEMJHG
});
}
}
// Token: 0x060163AB RID: 91051 RVA: 0x00625F0C File Offset: 0x0062410C
public void StopFiring()
{
this.EBMKNCNNKEC();
}
// Token: 0x060163AC RID: 91052 RVA: 0x00625F14 File Offset: 0x00624114
private void JDCLNBMADKL(Vector3 FEOIAALCCLH)
{
if (base.BHCCHBHNHCG)
{
if (this.PBKGMFGBIKP == null || this.PBKGMFGBIKP.Length != this.shotSettings.Length)
{
this.PBKGMFGBIKP = new Vector3[this.shotSettings.Length];
}
global::UnityEngine.Random.InitState((int)DateTime.UtcNow.Ticks);
for (int i = 0; i < this.shotSettings.Length; i++)
{
this.PBKGMFGBIKP[i] = this.IJJFFGEBAGL(FEOIAALCCLH, this.shotSettings[i].HitChance);
}
}
}
// Token: 0x060163AD RID: 91053 RVA: 0x00625FB4 File Offset: 0x006241B4
private bool BAFBLDIBFMC(Vector3 MMEBLCBANIL)
{
Vector3 vector = Vector3.ProjectOnPlane(base.transform.forward, Vector3.up);
Vector3 vector2 = Vector3.ProjectOnPlane(MMEBLCBANIL - base.transform.position, Vector3.up);
return vector.sqrMagnitude >= 0.001f && vector2.sqrMagnitude >= 0.001f && Vector3.Angle(vector, vector2) <= this.validShotVisionConeDegrees;
}
// Token: 0x060163AE RID: 91054 RVA: 0x0062602C File Offset: 0x0062422C
protected virtual Vector3 IJJFFGEBAGL(Vector3 FEOIAALCCLH, float IDDGADFFNPK)
{
float num = global::UnityEngine.Random.Range(-this.maximumFireOffsetRotationAngle, this.maximumFireOffsetRotationAngle);
Vector3 vector = Vector3.up;
Vector3 vector2 = Vector3.ProjectOnPlane((FEOIAALCCLH - base.transform.position).normalized, Vector3.up);
vector = Quaternion.AngleAxis(num, vector2) * vector;
bool flag = IDDGADFFNPK != 0f && global::UnityEngine.Random.Range(0f, 1f) <= IDDGADFFNPK;
float num2;
float num3;
if (flag)
{
num2 = this.minimumFireHitDistance;
num3 = this.maximumFireHitDistance;
}
else
{
num2 = this.minimumFireMissDistance;
num3 = this.maximumFireMissDistance;
}
float num4 = global::UnityEngine.Random.Range(num2, num3);
return vector * num4;
}
// Token: 0x060163AF RID: 91055 RVA: 0x006260F8 File Offset: 0x006242F8
private void LJAELPNJINO(EIDNMNCOAAJ JHJKHGCBHBI, Vector3 JEICMHIFOCK, Vector3[] OHAAPMJOGDO, float KMLDGGEMJHG)
{
if (this.GLDGOBKOFMJ != null && this.GLDGOBKOFMJ.CNHBPJFLDCE > 0 && this.GLDGOBKOFMJ.ACEACLFJOAA)
{
this.OGLLCHLHOJE(JHJKHGCBHBI, JEICMHIFOCK, OHAAPMJOGDO, KMLDGGEMJHG);
}
}
// Token: 0x060163B0 RID: 91056
protected abstract void JFIPKCICNCJ(Vector3 MMEBLCBANIL, float KMLDGGEMJHG);
// Token: 0x060163B1 RID: 91057 RVA: 0x00626138 File Offset: 0x00624338
private void OGLLCHLHOJE(EIDNMNCOAAJ JHJKHGCBHBI, Vector3 JEICMHIFOCK, Vector3[] OHAAPMJOGDO, float KMLDGGEMJHG)
{
this.EBMKNCNNKEC();
this.POAOIIINFJC = base.StartCoroutine(this.FBNNHNNHLOH(JHJKHGCBHBI, JEICMHIFOCK, OHAAPMJOGDO, KMLDGGEMJHG));
}
// Token: 0x060163B2 RID: 91058 RVA: 0x00626158 File Offset: 0x00624358
private void EBMKNCNNKEC()
{
if (this.POAOIIINFJC != null)
{
base.StopCoroutine(this.POAOIIINFJC);
this.POAOIIINFJC = null;
}
}
// Token: 0x060163B3 RID: 91059 RVA: 0x00626178 File Offset: 0x00624378
private IEnumerator FBNNHNNHLOH(EIDNMNCOAAJ JHJKHGCBHBI, Vector3 JEICMHIFOCK, Vector3[] OHAAPMJOGDO, float KMLDGGEMJHG)
{
for (int i = 0; i < OHAAPMJOGDO.Length; i++)
{
if (this.GLDGOBKOFMJ == null || this.GLDGOBKOFMJ.CNHBPJFLDCE == 0 || !this.GLDGOBKOFMJ.ACEACLFJOAA)
{
break;
}
Vector3 vector = JEICMHIFOCK;
if (JHJKHGCBHBI.AJFBOLHPEJC)
{
vector = JHJKHGCBHBI.ICNCDGIKNNI;
}
vector += OHAAPMJOGDO[i];
this.HCKKFOBPFMA(vector);
this.JFIPKCICNCJ(vector, KMLDGGEMJHG);
if (OHAAPMJOGDO.Length > 1)
{
yield return new WaitForSeconds(this.timeBetweenBurstShots);
}
}
this.POAOIIINFJC = null;
yield break;
}
// Token: 0x060163B4 RID: 91060 RVA: 0x006261B0 File Offset: 0x006243B0
protected void KEPABDJPHJD(Player JEFGMHBLLKI, Player.HDOICGIKKAO ACAHIJEJKLC, IHEAKAOGCIF CACIBBKDNIH)
{
if (this.JCCIBHHCGDD != null)
{
this.JCCIBHHCGDD(this, JEFGMHBLLKI, ACAHIJEJKLC, CACIBBKDNIH);
}
}
// Token: 0x060163B5 RID: 91061 RVA: 0x006261CC File Offset: 0x006243CC
protected void HONGIOONIGM(Tool EEPPNAIKGEO, IHEAKAOGCIF CACIBBKDNIH)
{
if (EEPPNAIKGEO.OHGPCMJMFGC && this.APHBMAPOFBI != null)
{
this.APHBMAPOFBI(this, EEPPNAIKGEO, CACIBBKDNIH);
}
}
// Token: 0x060163B6 RID: 91062 RVA: 0x006261F4 File Offset: 0x006243F4
protected void LBOONNMGDKF(Enemy AKICADDPOIF, MHEBDODJGOA FJJKLPKDCPP, IHEAKAOGCIF CACIBBKDNIH)
{
if (AKICADDPOIF != null && this.HHGOAGAPIOJ != null)
{
this.HHGOAGAPIOJ(this, AKICADDPOIF, FJJKLPKDCPP, CACIBBKDNIH);
}
}
// Token: 0x060163B7 RID: 91063 RVA: 0x0062621C File Offset: 0x0062441C
protected void HCKKFOBPFMA(Vector3 MMEBLCBANIL)
{
Vector3 normalized = (MMEBLCBANIL - this.projectileOriginTransform.position).normalized;
this.DCIIDBJDHEH(this.muzzleFlashParticlesPrefab, this.projectileOriginTransform.position, normalized);
AudioManager.PlayRandom3DSFX(this.fireAudio, this.projectileOriginTransform.position, this.customAudioRolloff, false);
if (this.OHHFNAMFFBL != null)
{
this.OHHFNAMFFBL(this);
}
}
// Token: 0x060163B8 RID: 91064 RVA: 0x00626290 File Offset: 0x00624490
protected void DCIIDBJDHEH(PooledParticle PPICLLLMNAN, Vector3 FHFHOMKFHCI, Vector3 MNNIMIJFPPJ)
{
if (PPICLLLMNAN != null)
{
PooledParticle pooledParticle = ObjectPool.NCKMBFBMBFM.Acquire<PooledParticle>(PPICLLLMNAN);
pooledParticle.transform.position = FHFHOMKFHCI;
pooledParticle.transform.rotation = Quaternion.LookRotation(MNNIMIJFPPJ);
if (this.DIBBLFPCIFB != null && this.DIBBLFPCIFB.LAMCFBONKLA)
{
for (int i = 0; i < pooledParticle.MILLDACFPJB.Length; i++)
{
pooledParticle.MILLDACFPJB[i].main.startColor = this.DIBBLFPCIFB.GBLPHKFPELB;
}
}
pooledParticle.Play(false);
}
}
// Token: 0x060163B9 RID: 91065 RVA: 0x00626338 File Offset: 0x00624538
protected void DOEHAGPDBLF(ImpactDecal JAJBAKIDJGJ, Color HNOPCLEFEIG, Vector3 FHFHOMKFHCI, Vector3 CJDGNGLMGDI, GameObject BMGPDAGEDBB)
{
if (this.projectileImpactDecalPrefab != null)
{
ImpactDecal.Spawn(JAJBAKIDJGJ, HNOPCLEFEIG, FHFHOMKFHCI, CJDGNGLMGDI, BMGPDAGEDBB);
}
}
// Token: 0x060163BA RID: 91066 RVA: 0x00626358 File Offset: 0x00624558
[BCENPNOIAOM]
protected void RpcOnFire(int EDEKGCLBACC, Vector3 JEICMHIFOCK, Vector3[] OHAAPMJOGDO, float KMLDGGEMJHG)
{
this.LJAELPNJINO(new EIDNMNCOAAJ(EDEKGCLBACC), JEICMHIFOCK, OHAAPMJOGDO, KMLDGGEMJHG);
}
// Token: 0x04003E5D RID: 15965
[SerializeField]
private float validShotVisionConeDegrees = 60f;
// Token: 0x04003E5E RID: 15966
[SerializeField]
private EnemyRangedWeapon.ShotSettings[] shotSettings = new EnemyRangedWeapon.ShotSettings[]
{
new EnemyRangedWeapon.ShotSettings
{
HitChance = 1f
}
};
// Token: 0x04003E5F RID: 15967
[SerializeField]
private float timeBetweenBurstShots = 0.36f;
// Token: 0x04003E60 RID: 15968
[Header("Projectile")]
[SerializeField]
protected Transform projectileOriginTransform;
// Token: 0x04003E61 RID: 15969
[SerializeField]
[Header("Fire Accuracy")]
protected float minimumFireHitDistance = 0.09f;
// Token: 0x04003E62 RID: 15970
[SerializeField]
protected float maximumFireHitDistance = 0.11f;
// Token: 0x04003E63 RID: 15971
[SerializeField]
protected float minimumFireMissDistance = 0.175f;
// Token: 0x04003E64 RID: 15972
[SerializeField]
protected float maximumFireMissDistance = 0.4f;
// Token: 0x04003E65 RID: 15973
[SerializeField]
protected float maximumFireOffsetRotationAngle = 120f;
// Token: 0x04003E66 RID: 15974
[Header("Fire Feedback")]
[SerializeField]
protected PooledParticle muzzleFlashParticlesPrefab;
// Token: 0x04003E67 RID: 15975
[SerializeField]
protected RecRoomAudioClip[] fireAudio;
// Token: 0x04003E68 RID: 15976
[Header("Impact Feedback")]
[SerializeField]
protected ImpactDecal projectileImpactDecalPrefab;
// Token: 0x04003E69 RID: 15977
[SerializeField]
protected PooledParticle projectileImpactParticlesPrefab;
// Token: 0x04003E6A RID: 15978
[SerializeField]
protected RecRoomAudioClip projectileImpactAudio;
// Token: 0x04003E6B RID: 15979
[Header("Audio rolloff")]
[SerializeField]
protected AudioRolloff customAudioRolloff;
// Token: 0x04003E70 RID: 15984
protected Enemy GLDGOBKOFMJ;
// Token: 0x04003E71 RID: 15985
protected EnemyTeamColor DIBBLFPCIFB;
// Token: 0x04003E72 RID: 15986
protected List<Rigidbody> FOKHKLBPNLH = new List<Rigidbody>();
// Token: 0x04003E73 RID: 15987
private Vector3[] PBKGMFGBIKP;
// Token: 0x04003E74 RID: 15988
private Coroutine POAOIIINFJC;
// Token: 0x02000B7E RID: 2942
private enum PHHAPHPFKNC
{
// Token: 0x04003E76 RID: 15990
SINGLE_SHOT,
// Token: 0x04003E77 RID: 15991
BURST
}
// Token: 0x02000B7F RID: 2943
// (Invoke) Token: 0x060163BC RID: 91068
public delegate void LHLJCBGFKKD(EnemyRangedWeapon PDNIEPGJLNP, Player IPLDGGMENKL, Player.HDOICGIKKAO OJCFELLMIFA, IHEAKAOGCIF CACIBBKDNIH);
// Token: 0x02000B80 RID: 2944
// (Invoke) Token: 0x060163C0 RID: 91072
public delegate void IPKAJLEIDKK(EnemyRangedWeapon PDNIEPGJLNP, Tool EEPPNAIKGEO, IHEAKAOGCIF CACIBBKDNIH);
// Token: 0x02000B81 RID: 2945
// (Invoke) Token: 0x060163C4 RID: 91076
public delegate void AAOGICJJNLG(EnemyRangedWeapon PDNIEPGJLNP, Enemy AKICADDPOIF, MHEBDODJGOA OMPOICMBDBP, IHEAKAOGCIF CACIBBKDNIH);
// Token: 0x02000B82 RID: 2946
// (Invoke) Token: 0x060163C8 RID: 91080
public delegate void MLNPHNHBCNA(EnemyRangedWeapon PDNIEPGJLNP);
// Token: 0x02000B83 RID: 2947
[Serializable]
private struct ShotSettings
{
// Token: 0x04003E78 RID: 15992
[Range(0f, 1f)]
public float HitChance;
}
}
}