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(); if (this.GLDGOBKOFMJ == null) { global::UnityEngine.Debug.LogError(base.name + " is missing an enemy script."); return; } this.DIBBLFPCIFB = base.GetComponent(); } // 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(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 FOKHKLBPNLH = new List(); // 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; } } }