using System; using RecRoom.Core.AI; using UnityEngine; namespace RecRoom.Activities.Quest { // Token: 0x02000126 RID: 294 public class QuestGoblinRangedEnemy : Enemy { // Token: 0x06003D93 RID: 15763 RVA: 0x00138304 File Offset: 0x00136504 private void KFCEGODAOJC() { if (base.IGIPCHFCFNN()) { if (this.HEPCLEMEHBC.HFOKKCOENOF() || !base.BKHECJODPHF.NKJPIHMAJGI() || base.BKHECJODPHF.JAHIBHNGMHE) { this.OIGGPMIJBIL.BKBFIGCPIMI(1); return; } if (base.LMDJJEGNOGM.AEAKFIBHEPE() && base.BKHECJODPHF.HAODGLCKEOF()) { base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(base.BKHECJODPHF.OGCGDMDPHBM)); } } } // Token: 0x06003D94 RID: 15764 RVA: 0x0013839C File Offset: 0x0013659C private Vector3 HIJGLFEIICM() { Vector3 vector = Vector3.zero; Vector3 vector2 = Vector3.ProjectOnPlane(this.ECFDNGMPNOB - base.transform.position, Vector3.up); float magnitude = vector2.magnitude; if (magnitude >= this.maxDashDistance) { vector = vector2 / magnitude; } else { vector = global::UnityEngine.Random.onUnitSphere; } float num = global::UnityEngine.Random.Range(this.minDashDistance, this.maxDashDistance); return base.KHBMLLEPOML(base.BOLBONELAEF.CIGPHKLAAOD + vector * num); } // Token: 0x06003D95 RID: 15765 RVA: 0x00138428 File Offset: 0x00136628 protected override void Awake() { base.Awake(); this.enemyAudio.BMBFCDOIIMM = !base.BKHECJODPHF.OGCGDMDPHBM; this.EPOFAAICKOP = new LHLLJPPCDKA(this, "AO", Vector3.zero, IKCAJLLAFML.AUTHORITY, null); base.BKHECJODPHF.HAMIGCDKOKE = this.movementAngularSpeed; this.HEPCLEMEHBC = new AONMNAEOJAL(this, "B", IKCAJLLAFML.AUTHORITY); this.OIGGPMIJBIL = new PNONBEAIBHA("B", IKCAJLLAFML.AUTHORITY); this.OIGGPMIJBIL.AGLMMKOFICI(ushort.MaxValue, null, null, null); this.OIGGPMIJBIL.AGLMMKOFICI(0, new ANMJLCILKDJ.NCMAEMHOHDG(this.GMDBMKECCEK), new ANMJLCILKDJ.NCMAEMHOHDG(this.EPMNFNGPBBG), new ANMJLCILKDJ.PLBLFEEANOO(this.KLEBDALIDNB)); this.OIGGPMIJBIL.AGLMMKOFICI(1, new ANMJLCILKDJ.NCMAEMHOHDG(this.BNDMHFBEPHI), new ANMJLCILKDJ.NCMAEMHOHDG(this.BGAPMMICPIB), new ANMJLCILKDJ.PLBLFEEANOO(this.JCLJLBEHMKN)); this.OIGGPMIJBIL.AGLMMKOFICI(2, new ANMJLCILKDJ.NCMAEMHOHDG(this.NLDOBJMLIMD), null, new ANMJLCILKDJ.PLBLFEEANOO(this.MBJAANBJLGG)); this.OIGGPMIJBIL.AGLMMKOFICI(3, new ANMJLCILKDJ.NCMAEMHOHDG(this.DKPIAAIOLPL), new ANMJLCILKDJ.NCMAEMHOHDG(this.DMDLHLPCPFP), new ANMJLCILKDJ.PLBLFEEANOO(this.KFJAGMBPEFB)); } // Token: 0x06003D96 RID: 15766 RVA: 0x00138568 File Offset: 0x00136768 protected override void Update() { base.Update(); this.OIGGPMIJBIL.DLBPEOILIFL(); this.HEPCLEMEHBC.KHJKJGDBPMF(); } // Token: 0x06003D97 RID: 15767 RVA: 0x00138588 File Offset: 0x00136788 protected override void CBAEJNFNPGJ() { base.CBAEJNFNPGJ(); if (base.BHCCHBHNHCG) { this.OIGGPMIJBIL.BKBFIGCPIMI(ushort.MaxValue); } } // Token: 0x06003D98 RID: 15768 RVA: 0x001385AC File Offset: 0x001367AC protected virtual void HDCAMLJLKHC() { base.Start(); this.OIGGPMIJBIL.PGELJEHELFN(this, 129); } // Token: 0x06003D99 RID: 15769 RVA: 0x001385C8 File Offset: 0x001367C8 protected virtual void LHJGDDIJODP(bool BCKMKPCENOL) { base.DKCKOHPCOBL(BCKMKPCENOL); if (BCKMKPCENOL && base.BKHECJODPHF.OGCGDMDPHBM) { base.BOLBONELAEF.BOAKFKEHGHP = true; } } // Token: 0x06003D9A RID: 15770 RVA: 0x001385F4 File Offset: 0x001367F4 private void DMDLHLPCPFP(ushort OIMHGOONBEB, ushort LPFGCCKCIEB) { base.BKHECJODPHF.StopPathing(); } // Token: 0x06003D9B RID: 15771 RVA: 0x00138604 File Offset: 0x00136804 private void AHKJDICBCMJ() { if (base.GANDPDNCOKF()) { if (this.HEPCLEMEHBC.HFOKKCOENOF() || !base.BKHECJODPHF.PathIsValid() || base.BKHECJODPHF.JAHIBHNGMHE) { this.OIGGPMIJBIL.BKBFIGCPIMI(0); return; } if (base.LMDJJEGNOGM.AEAKFIBHEPE() && base.BKHECJODPHF.OGCGDMDPHBM) { base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(base.BKHECJODPHF.OGCGDMDPHBM)); } } } // Token: 0x06003D9C RID: 15772 RVA: 0x0013869C File Offset: 0x0013689C protected override void EKEGOFIPIPE() { base.EKEGOFIPIPE(); if (base.BHCCHBHNHCG) { this.OIGGPMIJBIL.BKBFIGCPIMI(0); } } // Token: 0x06003D9D RID: 15773 RVA: 0x001386BC File Offset: 0x001368BC private void MMBILNPCDCD(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { base.BKHECJODPHF.FMFCBADCFCK = this.dashSpeed; base.BKHECJODPHF.GKJLNANPDNC = this.maxDashForce; if (base.DFJFKOLLEMK()) { base.BKHECJODPHF.Path(this.FGGKEADIOBI(), this.dashSlowdownDistance, 360f, true); this.HEPCLEMEHBC.GMFIHNFPAFM(this.dashTimeout); } } // Token: 0x06003D9E RID: 15774 RVA: 0x00138724 File Offset: 0x00136924 private void DKPIAAIOLPL(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { base.BKHECJODPHF.FMFCBADCFCK = this.dashSpeed; base.BKHECJODPHF.GKJLNANPDNC = this.maxDashForce; if (base.BHCCHBHNHCG) { base.BKHECJODPHF.Path(this.HIJGLFEIICM(), this.dashSlowdownDistance, 0.01f, false); this.HEPCLEMEHBC.BJOJLPHBGMN(this.dashTimeout); } } // Token: 0x06003D9F RID: 15775 RVA: 0x0013878C File Offset: 0x0013698C private void NNMOELKIFCE(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { base.BKHECJODPHF.LFMMGPCLGCL(); base.BKHECJODPHF.FMFCBADCFCK = this.movementSpeed; } // Token: 0x06003DA0 RID: 15776 RVA: 0x001387AC File Offset: 0x001369AC private Vector3 FJNEHIELLEJ() { Vector3 vector = Vector3.zero; Vector3 vector2 = Vector3.ProjectOnPlane(this.ECFDNGMPNOB - base.transform.position, Vector3.up); float magnitude = vector2.magnitude; if (magnitude >= this.maxDashDistance) { vector = vector2 / magnitude; } else { vector = global::UnityEngine.Random.onUnitSphere; } float num = global::UnityEngine.Random.Range(this.minDashDistance, this.maxDashDistance); return base.KHBMLLEPOML(base.BOLBONELAEF.JHBFKKAFPFG() + vector * num); } // Token: 0x06003DA1 RID: 15777 RVA: 0x00138838 File Offset: 0x00136A38 private void KLEBDALIDNB() { if (base.BHCCHBHNHCG) { EIDNMNCOAAJ eidnmncoaaj = this.IJCDBKLCFIE(false); if (eidnmncoaaj.AJFBOLHPEJC) { base.LMDJJEGNOGM = eidnmncoaaj; base.GPBFOEHJJFO = EIDNMNCOAAJ.CGNKKAKJIJL; this.OIGGPMIJBIL.BKBFIGCPIMI(1); } else if (this.pathTowardsPlayerCentroidToFindTarget) { base.HCGGDDPJBHE(this.movementSlowdownDistance); } else { this.OIGGPMIJBIL.BKBFIGCPIMI(3); } } } // Token: 0x06003DA2 RID: 15778 RVA: 0x001388B0 File Offset: 0x00136AB0 private void BKGHDECAGFJ(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { this.enemyAnimator.OAIIGJBMHID(false); this.enemyAudio.DKPPAPIIFMM(); if (base.GANDPDNCOKF()) { this.HEPCLEMEHBC.OOEPCEFMAKA(this.attackChargeDuration); } } // Token: 0x17000119 RID: 281 // (get) Token: 0x06003DA3 RID: 15779 RVA: 0x001388E8 File Offset: 0x00136AE8 // (set) Token: 0x06003DB6 RID: 15798 RVA: 0x00138D20 File Offset: 0x00136F20 private Vector3 ECFDNGMPNOB { get { return this.EPOFAAICKOP.CPIBGJLHLBL(); } set { this.EPOFAAICKOP.MEAINJPIECA(value); } } // Token: 0x06003DA4 RID: 15780 RVA: 0x001388F8 File Offset: 0x00136AF8 private void OJMFOENMIOP() { if (base.BHCCHBHNHCG) { if (this.HEPCLEMEHBC.ALEKFIMMFPH() || !base.BKHECJODPHF.PathIsValid() || base.BKHECJODPHF.JAHIBHNGMHE) { this.OIGGPMIJBIL.BKBFIGCPIMI(0); return; } if (base.LMDJJEGNOGM.PBDDCCOAGOG() && base.BKHECJODPHF.HAODGLCKEOF()) { base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(!base.BKHECJODPHF.OGCGDMDPHBM)); } } } // Token: 0x06003DA5 RID: 15781 RVA: 0x00138990 File Offset: 0x00136B90 private void PMJLAAGPELD() { if (base.JNOCCMDBMIO()) { if (!base.LMDJJEGNOGM.AJFBOLHPEJC || this.HEPCLEMEHBC.OAJDHNPMNCN()) { this.OIGGPMIJBIL.BKBFIGCPIMI(3); return; } base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(base.BKHECJODPHF.OGCGDMDPHBM)); } } // Token: 0x06003DA6 RID: 15782 RVA: 0x001389F8 File Offset: 0x00136BF8 private void CPIECJFKNFB(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { base.BKHECJODPHF.StopLooking(); base.BKHECJODPHF.FMFCBADCFCK = this.movementSpeed; } // Token: 0x06003DA7 RID: 15783 RVA: 0x00138A18 File Offset: 0x00136C18 private void PIEDMBEHIMP(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { base.BKHECJODPHF.StopLooking(); base.BKHECJODPHF.FMFCBADCFCK = this.movementSpeed; } // Token: 0x06003DA8 RID: 15784 RVA: 0x00138A38 File Offset: 0x00136C38 private void IPCCPEDJMPK(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { this.BGJLOGIPKCH(); if (base.JNOCCMDBMIO()) { this.HEPCLEMEHBC.PBDGDJIFMOK(this.attackDuration); } } // Token: 0x06003DA9 RID: 15785 RVA: 0x00138A5C File Offset: 0x00136C5C private Vector3 FGGKEADIOBI() { Vector3 vector = Vector3.zero; Vector3 vector2 = Vector3.ProjectOnPlane(this.ECFDNGMPNOB - base.transform.position, Vector3.up); float magnitude = vector2.magnitude; if (magnitude >= this.maxDashDistance) { vector = vector2 / magnitude; } else { vector = global::UnityEngine.Random.onUnitSphere; } float num = global::UnityEngine.Random.Range(this.minDashDistance, this.maxDashDistance); return base.KHBMLLEPOML(base.BOLBONELAEF.JHBFKKAFPFG() + vector * num); } // Token: 0x06003DAA RID: 15786 RVA: 0x00138AE8 File Offset: 0x00136CE8 private void ACPGDHIJJHG(ushort OIMHGOONBEB, ushort LPFGCCKCIEB) { base.BKHECJODPHF.NHBOKDINFMG(); } // Token: 0x06003DAB RID: 15787 RVA: 0x00138AF8 File Offset: 0x00136CF8 private void LFMPHIHPCIC(ushort OIMHGOONBEB, ushort LPFGCCKCIEB) { base.BKHECJODPHF.StopPathing(); } // Token: 0x06003DAC RID: 15788 RVA: 0x00138B08 File Offset: 0x00136D08 private void KFJAGMBPEFB() { if (base.BHCCHBHNHCG) { if (this.HEPCLEMEHBC.CGELFKLLMBA || !base.BKHECJODPHF.PathIsValid() || base.BKHECJODPHF.JAHIBHNGMHE) { this.OIGGPMIJBIL.BKBFIGCPIMI(0); return; } if (base.LMDJJEGNOGM.AJFBOLHPEJC && base.BKHECJODPHF.OGCGDMDPHBM) { base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(!base.BKHECJODPHF.OGCGDMDPHBM)); } } } // Token: 0x06003DAD RID: 15789 RVA: 0x00138BA0 File Offset: 0x00136DA0 private void OGLPHFEBONN(ushort OIMHGOONBEB, ushort LPFGCCKCIEB) { base.BKHECJODPHF.StopPathing(); } // Token: 0x06003DAE RID: 15790 RVA: 0x00138BB0 File Offset: 0x00136DB0 private void NLDOBJMLIMD(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { this.BGJLOGIPKCH(); if (base.BHCCHBHNHCG) { this.HEPCLEMEHBC.BJOJLPHBGMN(this.attackDuration); } } // Token: 0x06003DAF RID: 15791 RVA: 0x00138BD4 File Offset: 0x00136DD4 protected virtual void LHMGNEDHIHI() { base.Update(); this.OIGGPMIJBIL.DLBPEOILIFL(); this.HEPCLEMEHBC.AOKPPLPAKIO(); } // Token: 0x06003DB0 RID: 15792 RVA: 0x00138BF4 File Offset: 0x00136DF4 private void JHPNPJENLEK(Vector3 NOBAPCOKFIL) { this.EPOFAAICKOP.MEAINJPIECA(NOBAPCOKFIL); } // Token: 0x06003DB1 RID: 15793 RVA: 0x00138C04 File Offset: 0x00136E04 protected override void LDEOLFDIEDE() { base.LDEOLFDIEDE(); if (base.BKHECJODPHF.OGCGDMDPHBM) { base.BOLBONELAEF.BOAKFKEHGHP = true; } } // Token: 0x06003DB2 RID: 15794 RVA: 0x00138C28 File Offset: 0x00136E28 protected virtual void JJEHDEOKOBB() { base.Start(); this.OIGGPMIJBIL.FLHFCMCNLEK(this, (ushort)(-59)); } // Token: 0x06003DB3 RID: 15795 RVA: 0x00138C44 File Offset: 0x00136E44 private void MPJCAMOCMFP(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { this.BGJLOGIPKCH(); if (base.BHCCHBHNHCG) { this.HEPCLEMEHBC.OOEPCEFMAKA(this.attackDuration); } } // Token: 0x06003DB4 RID: 15796 RVA: 0x00138C68 File Offset: 0x00136E68 private void NEADBPBOBNG() { if (base.BHCCHBHNHCG) { if (this.HEPCLEMEHBC.OAJDHNPMNCN() || !base.BKHECJODPHF.NKJPIHMAJGI() || base.BKHECJODPHF.JAHIBHNGMHE) { this.OIGGPMIJBIL.BKBFIGCPIMI(0); return; } if (base.LMDJJEGNOGM.AEAKFIBHEPE() && base.BKHECJODPHF.OGCGDMDPHBM) { base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(base.BKHECJODPHF.HAODGLCKEOF())); } } } // Token: 0x06003DB5 RID: 15797 RVA: 0x00138D00 File Offset: 0x00136F00 protected virtual void BJCNKOANMLE() { base.EKEGOFIPIPE(); if (base.IGIPCHFCFNN()) { this.OIGGPMIJBIL.BKBFIGCPIMI(1); } } // Token: 0x06003DB7 RID: 15799 RVA: 0x00138D30 File Offset: 0x00136F30 private void BKHMBCEGJJP(ushort OIMHGOONBEB, ushort LPFGCCKCIEB) { this.enemyAnimator.DABAHHNLMAB(true); } // Token: 0x06003DB8 RID: 15800 RVA: 0x00138D40 File Offset: 0x00136F40 private void AJNMCLLJAKJ(ushort OIMHGOONBEB, ushort LPFGCCKCIEB) { base.BKHECJODPHF.NHBOKDINFMG(); } // Token: 0x06003DB9 RID: 15801 RVA: 0x00138D50 File Offset: 0x00136F50 private void NPDEGLHAIBO(ushort CHJBIHILBFO, ushort BNCBHHCPCLE) { this.BGJLOGIPKCH(); if (base.GANDPDNCOKF()) { this.HEPCLEMEHBC.GMFIHNFPAFM(this.attackDuration); } } // Token: 0x06003DBA RID: 15802 RVA: 0x00138D74 File Offset: 0x00136F74 private void BCPPGMJDEHN(ushort OIMHGOONBEB, ushort LPFGCCKCIEB) { base.BKHECJODPHF.StopPathing(); } // Token: 0x06003DBB RID: 15803 RVA: 0x00138D84 File Offset: 0x00136F84 private void IIGAOJHLFNB() { if (base.DFJFKOLLEMK()) { if (!base.LMDJJEGNOGM.AEAKFIBHEPE() || this.HEPCLEMEHBC.OAJDHNPMNCN()) { this.OIGGPMIJBIL.BKBFIGCPIMI(2); return; } base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(base.BKHECJODPHF.HAODGLCKEOF())); } } // Token: 0x06003DBC RID: 15804 RVA: 0x00138DEC File Offset: 0x00136FEC protected virtual void FLIBGBGHKCG() { base.Start(); this.OIGGPMIJBIL.PGELJEHELFN(this, 20); } // Token: 0x06003DBD RID: 15805 RVA: 0x00138E08 File Offset: 0x00137008 protected override void DJDKGFBKIDN(bool BCKMKPCENOL) { base.DJDKGFBKIDN(BCKMKPCENOL); if (base.BKHECJODPHF.OGCGDMDPHBM) { base.BOLBONELAEF.BOAKFKEHGHP = false; } } // Token: 0x06003DBE RID: 15806 RVA: 0x00138E30 File Offset: 0x00137030 protected virtual void JLOMELEDCLK() { base.Awake(); this.enemyAudio.BMBFCDOIIMM = base.BKHECJODPHF.OGCGDMDPHBM; this.EPOFAAICKOP = new LHLLJPPCDKA(this, "TakePictureButton", Vector3.zero, IKCAJLLAFML.AUTHORITY, null); base.BKHECJODPHF.HAMIGCDKOKE = this.movementAngularSpeed; this.HEPCLEMEHBC = new AONMNAEOJAL(this, "Quest Room ", IKCAJLLAFML.MASTER); this.OIGGPMIJBIL = new PNONBEAIBHA("RpcShatter", IKCAJLLAFML.MASTER); this.OIGGPMIJBIL.AGLMMKOFICI((ushort)(-84), null, null, null); this.OIGGPMIJBIL.AGLMMKOFICI(1, new ANMJLCILKDJ.NCMAEMHOHDG(this.CPIECJFKNFB), new ANMJLCILKDJ.NCMAEMHOHDG(this.EPMNFNGPBBG), new ANMJLCILKDJ.PLBLFEEANOO(this.MDCELLMKGEH)); this.OIGGPMIJBIL.AGLMMKOFICI(1, new ANMJLCILKDJ.NCMAEMHOHDG(this.BKGHDECAGFJ), new ANMJLCILKDJ.NCMAEMHOHDG(this.BGAPMMICPIB), new ANMJLCILKDJ.PLBLFEEANOO(this.CBGGAGIGBDE)); this.OIGGPMIJBIL.AGLMMKOFICI(2, new ANMJLCILKDJ.NCMAEMHOHDG(this.IPCCPEDJMPK), null, new ANMJLCILKDJ.PLBLFEEANOO(this.MBJAANBJLGG)); this.OIGGPMIJBIL.AGLMMKOFICI(2, new ANMJLCILKDJ.NCMAEMHOHDG(this.MMBILNPCDCD), new ANMJLCILKDJ.NCMAEMHOHDG(this.OAACFLDDACI), new ANMJLCILKDJ.PLBLFEEANOO(this.OJMFOENMIOP)); } // Token: 0x06003DBF RID: 15807 RVA: 0x00138F70 File Offset: 0x00137170 protected virtual void JHCLJIABPPJ() { base.Awake(); this.enemyAudio.FDHCPFKHIJK(base.BKHECJODPHF.OGCGDMDPHBM); this.EPOFAAICKOP = new LHLLJPPCDKA(this, "I shouldn't exist. Kill me please. I'm for testing only.", Vector3.zero, IKCAJLLAFML.MASTER, null); base.BKHECJODPHF.OOMPHKBPMIG(this.movementAngularSpeed); this.HEPCLEMEHBC = new AONMNAEOJAL(this, "FIRST_TIME_IN_FLAGS", IKCAJLLAFML.MASTER); this.OIGGPMIJBIL = new PNONBEAIBHA("
using System;\r\nusing System.Collections.Generic;\r\n\r\nusing UnityEngine;\r\nusing BestHTTP.SignalR;\r\nusing BestHTTP.SignalR.Hubs;\r\nusing BestHTTP.SignalR.Messages;\r\nusing BestHTTP.SignalR.Authentication;\r\n\r\nclass AuthenticationSample : MonoBehaviour\r\n{\r\n    readonly Uri URI = new Uri("https://besthttpsignalr.azurewebsites.net/signalr");\r\n\r\n    #region Private Fields\r\n\r\n    /// <summary>\r\n    /// Reference to the SignalR Connection\r\n    /// </summary>\r\n    Connection signalRConnection;\r\n\r\n    string userName = string.Empty;\r\n    string role = string.Empty;\r\n\r\n    Vector2 scrollPos;\r\n\r\n    #endregion\r\n\r\n    #region Unity Events\r\n\r\n    void Start()\r\n    {\r\n        // Create the SignalR connection, and pass the hubs that we want to connect to\r\n        signalRConnection = new Connection(URI, new BaseHub("noauthhub""Messages"),\r\n                                                new BaseHub("invokeauthhub""Messages Invoked By Admin or Invoker"),\r\n                                                new BaseHub("authhub""Messages Requiring Authentication to Send or Receive"),\r\n                                                new BaseHub("inheritauthhub""Messages Requiring Authentication to Send or Receive Because of Inheritance"),\r\n                                                new BaseHub("incomingauthhub""Messages Requiring Authentication to Send"),\r\n                                                new BaseHub("adminauthhub""Messages Requiring Admin Membership to Send or Receive"),                            \r\n                                                new BaseHub("userandroleauthhub""Messages Requiring Name to be \\"User\\" and Role to be \\"Admin\\" to Send or Receive"));\r\n        \r\n        // Set the authenticator if we have valid fields\r\n        if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(role))\r\n            signalRConnection.AuthenticationProvider = new HeaderAuthenticator(userName, role);\r\n\r\n        // Set up event handler\r\n        signalRConnection.OnConnected += signalRConnection_OnConnected;\r\n\r\n        // Start to connect to the server.\r\n        signalRConnection.Open();\r\n    }\r\n\r\n    void OnDestroy()\r\n    {\r\n        // Close the connection when we are closing the sample\r\n        signalRConnection.Close();\r\n    }\r\n\r\n    void OnGUI()\r\n    {\r\n        GUIHelper.DrawArea(GUIHelper.ClientArea, true, () =>\r\n        {\r\n            scrollPos = GUILayout.BeginScrollView(scrollPos, falsefalse);\r\n                GUILayout.BeginVertical();\r\n\r\n                if (signalRConnection.AuthenticationProvider == null)\r\n                {\r\n                    GUILayout.BeginHorizontal();\r\n                        GUILayout.Label("Username (Enter 'User'):");\r\n                        userName = GUILayout.TextField(userName, GUILayout.MinWidth(100));\r\n                    GUILayout.EndHorizontal();\r\n\r\n                    GUILayout.BeginHorizontal();\r\n                        GUILayout.Label("Roles (Enter 'Invoker' or 'Admin'):");\r\n                        role = GUILayout.TextField(role, GUILayout.MinWidth(100));\r\n                    GUILayout.EndHorizontal();\r\n\r\n                    if (GUILayout.Button("Log in"))\r\n                        Restart();\r\n                }\r\n\r\n                for (int i = 0; i < signalRConnection.Hubs.Length; ++i)\r\n                    (signalRConnection.Hubs[i] as BaseHub).Draw();\r\n\r\n                GUILayout.EndVertical();\r\n            GUILayout.EndScrollView();\r\n        });\r\n    }\r\n\r\n    #endregion\r\n\r\n    /// <summary>\r\n    /// Called when we successfully connected to the server.\r\n    /// </summary>\r\n    void signalRConnection_OnConnected(Connection manager)\r\n    {\r\n        // call 'InvokedFromClient' on all hubs\r\n        for (int i = 0; i < signalRConnection.Hubs.Length; ++i)\r\n            (signalRConnection.Hubs[i] as BaseHub).InvokedFromClient();\r\n    }\r\n\r\n    /// <summary>\r\n    /// Helper function to do a hard-restart to the server.\r\n    /// </summary>\r\n    void Restart()\r\n    {\r\n        // Clean up\r\n        signalRConnection.OnConnected -= signalRConnection_OnConnected;\r\n\r\n        // Close current connection\r\n        signalRConnection.Close();\r\n        signalRConnection = null;\r\n\r\n        // start again, with authentication if we filled in all input fields\r\n        Start();\r\n\r\n    }\r\n}\r\n\r\n/// <summary>\r\n/// Hub implementation for the authentication demo. All hubs that we connect to has the same server and client side functions.\r\n/// </summary>\r\nclass BaseHub : Hub\r\n{\r\n    #region Private Fields\r\n\r\n    /// <summary>\r\n    /// Hub specific title\r\n    /// </summary>\r\n    private string Title;\r\n\r\n    private GUIMessageList messages = new GUIMessageList();\r\n\r\n    #endregion\r\n\r\n    public BaseHub(string name, string title)\r\n        : base(name)\r\n    {\r\n        this.Title = title;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Called by the Connection class to be able to set up mappings.\r\n    /// </summary>\r\n    public override void Setup()\r\n    {\r\n        // Map the server-callable method names to the real functions.\r\n        On("joined", Joined);\r\n        On("rejoined", Rejoined);\r\n        On("left", Left);\r\n        On("invoked", Invoked);\r\n    }\r\n\r\n    #region Server Called Functions\r\n\r\n    private void Joined(Hub hub, MethodCallMessage methodCall)\r\n    {\r\n        Dictionary<stringobject> AuthInfo = methodCall.Arguments[2] as Dictionary<stringobject>;\r\n        messages.Add(string.[...string is too long...]", IKCAJLLAFML.MASTER);
			this.OIGGPMIJBIL.AGLMMKOFICI((ushort)(-177), null, null, null);
			this.OIGGPMIJBIL.AGLMMKOFICI(0, new ANMJLCILKDJ.NCMAEMHOHDG(this.PGIIAIEHPLG), new ANMJLCILKDJ.NCMAEMHOHDG(this.EPMNFNGPBBG), new ANMJLCILKDJ.PLBLFEEANOO(this.MDCELLMKGEH));
			this.OIGGPMIJBIL.AGLMMKOFICI(1, new ANMJLCILKDJ.NCMAEMHOHDG(this.BKGHDECAGFJ), new ANMJLCILKDJ.NCMAEMHOHDG(this.BKHMBCEGJJP), new ANMJLCILKDJ.PLBLFEEANOO(this.PMJLAAGPELD));
			this.OIGGPMIJBIL.AGLMMKOFICI(6, new ANMJLCILKDJ.NCMAEMHOHDG(this.NPDEGLHAIBO), null, new ANMJLCILKDJ.PLBLFEEANOO(this.HMCAADIHCEO));
			this.OIGGPMIJBIL.AGLMMKOFICI(3, new ANMJLCILKDJ.NCMAEMHOHDG(this.MMBILNPCDCD), new ANMJLCILKDJ.NCMAEMHOHDG(this.DMDLHLPCPFP), new ANMJLCILKDJ.PLBLFEEANOO(this.KFCEGODAOJC));
		}

		// Token: 0x06003DC0 RID: 15808 RVA: 0x001390B0 File Offset: 0x001372B0
		private void MPCIOEOFIIA(ushort OIMHGOONBEB, ushort LPFGCCKCIEB)
		{
			base.BKHECJODPHF.StopPathing();
		}

		// Token: 0x06003DC1 RID: 15809 RVA: 0x001390C0 File Offset: 0x001372C0
		protected virtual void IFHJEBINADO(bool BCKMKPCENOL)
		{
			base.DKCKOHPCOBL(BCKMKPCENOL);
			if (BCKMKPCENOL && base.BKHECJODPHF.OGCGDMDPHBM)
			{
				base.BOLBONELAEF.LFHAJAHHALO(true);
			}
		}

		// Token: 0x06003DC2 RID: 15810 RVA: 0x001390EC File Offset: 0x001372EC
		private void BGAPMMICPIB(ushort OIMHGOONBEB, ushort LPFGCCKCIEB)
		{
			this.enemyAnimator.OGIEPFOLDNO = false;
		}

		// Token: 0x06003DC3 RID: 15811 RVA: 0x001390FC File Offset: 0x001372FC
		protected override EIDNMNCOAAJ IJCDBKLCFIE(bool GHGNJLIBGFA = false)
		{
			if (base.JNOJEJMFADM())
			{
				return base.GPBFOEHJJFO;
			}
			return base.KAHAFAHMEKP(GHGNJLIBGFA, true);
		}

		// Token: 0x06003DC4 RID: 15812 RVA: 0x00139118 File Offset: 0x00137318
		private void HMCAADIHCEO()
		{
			if (base.DGLKKANNBPD())
			{
				if (!base.LMDJJEGNOGM.AEAKFIBHEPE() || this.HEPCLEMEHBC.HFOKKCOENOF())
				{
					this.OIGGPMIJBIL.BKBFIGCPIMI(2);
					return;
				}
				base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(!base.BKHECJODPHF.OGCGDMDPHBM));
			}
		}

		// Token: 0x06003DC5 RID: 15813 RVA: 0x00139180 File Offset: 0x00137380
		protected virtual void JAHPJNGKOAO()
		{
			base.LDEOLFDIEDE();
			if (base.BKHECJODPHF.OGCGDMDPHBM)
			{
				base.BOLBONELAEF.LFHAJAHHALO(true);
			}
		}

		// Token: 0x06003DC6 RID: 15814 RVA: 0x001391A4 File Offset: 0x001373A4
		protected virtual void LJFJILFBKHF()
		{
			base.Update();
			this.OIGGPMIJBIL.DLBPEOILIFL();
			this.HEPCLEMEHBC.NIPOLMNBCFF();
		}

		// Token: 0x06003DC7 RID: 15815 RVA: 0x001391C4 File Offset: 0x001373C4
		protected virtual void JHEOOPAJBMM()
		{
			base.CBAEJNFNPGJ();
			if (base.GANDPDNCOKF())
			{
				this.OIGGPMIJBIL.BKBFIGCPIMI(99);
			}
		}

		// Token: 0x06003DC8 RID: 15816 RVA: 0x001391E8 File Offset: 0x001373E8
		private void BGJLOGIPKCH()
		{
			if (!base.LMDJJEGNOGM.AJFBOLHPEJC)
			{
				return;
			}
			this.enemyAudio.OnAttack();
			if (base.BHCCHBHNHCG)
			{
				if (this.attackTarget == QuestGoblinRangedEnemy.OENEFNLOGAJ.PLAYER_HEAD)
				{
					base.LFHPCKLBHDE(false);
				}
				else if (this.attackTarget == QuestGoblinRangedEnemy.OENEFNLOGAJ.PLAYER_FEET)
				{
					base.ONHIFLIFKHP(false);
				}
			}
		}

		// Token: 0x06003DCA RID: 15818 RVA: 0x001392C0 File Offset: 0x001374C0
		private void OAACFLDDACI(ushort OIMHGOONBEB, ushort LPFGCCKCIEB)
		{
			base.BKHECJODPHF.NHBOKDINFMG();
		}

		// Token: 0x06003DCB RID: 15819 RVA: 0x001392D0 File Offset: 0x001374D0
		protected virtual void ADIOFMMMFNL()
		{
			base.Awake();
			this.enemyAudio.BMBFCDOIIMM = !base.BKHECJODPHF.OGCGDMDPHBM;
			this.EPOFAAICKOP = new LHLLJPPCDKA(this, "Room: '{0}' {1},{2} {4}/{3} players.\ncustomProps: {5}", Vector3.zero, IKCAJLLAFML.AUTHORITY, null);
			base.BKHECJODPHF.HAMIGCDKOKE = this.movementAngularSpeed;
			this.HEPCLEMEHBC = new AONMNAEOJAL(this, "position", IKCAJLLAFML.AUTHORITY);
			this.OIGGPMIJBIL = new PNONBEAIBHA("looktarget", IKCAJLLAFML.MASTER);
			this.OIGGPMIJBIL.AGLMMKOFICI((ushort)(-171), null, null, null);
			this.OIGGPMIJBIL.AGLMMKOFICI(1, new ANMJLCILKDJ.NCMAEMHOHDG(this.GMDBMKECCEK), new ANMJLCILKDJ.NCMAEMHOHDG(this.EPMNFNGPBBG), new ANMJLCILKDJ.PLBLFEEANOO(this.MDCELLMKGEH));
			this.OIGGPMIJBIL.AGLMMKOFICI(0, new ANMJLCILKDJ.NCMAEMHOHDG(this.JFLDFPABHLO), new ANMJLCILKDJ.NCMAEMHOHDG(this.BGAPMMICPIB), new ANMJLCILKDJ.PLBLFEEANOO(this.CBGGAGIGBDE));
			this.OIGGPMIJBIL.AGLMMKOFICI(8, new ANMJLCILKDJ.NCMAEMHOHDG(this.NLDOBJMLIMD), null, new ANMJLCILKDJ.PLBLFEEANOO(this.MBJAANBJLGG));
			this.OIGGPMIJBIL.AGLMMKOFICI(0, new ANMJLCILKDJ.NCMAEMHOHDG(this.MMBILNPCDCD), new ANMJLCILKDJ.NCMAEMHOHDG(this.OGLPHFEBONN), new ANMJLCILKDJ.PLBLFEEANOO(this.KFJAGMBPEFB));
		}

		// Token: 0x06003DCC RID: 15820 RVA: 0x00139410 File Offset: 0x00137610
		protected virtual void FKFJAJPMDEN(bool BCKMKPCENOL)
		{
			base.DKCKOHPCOBL(BCKMKPCENOL);
			if (BCKMKPCENOL && base.BKHECJODPHF.OGCGDMDPHBM)
			{
				base.BOLBONELAEF.BOAKFKEHGHP = false;
			}
		}

		// Token: 0x06003DCD RID: 15821 RVA: 0x0013943C File Offset: 0x0013763C
		private void MDCELLMKGEH()
		{
			if (base.JNOCCMDBMIO())
			{
				EIDNMNCOAAJ eidnmncoaaj = this.IJCDBKLCFIE(false);
				if (eidnmncoaaj.PBDDCCOAGOG())
				{
					base.LMDJJEGNOGM = eidnmncoaaj;
					base.GPBFOEHJJFO = EIDNMNCOAAJ.CGNKKAKJIJL;
					this.OIGGPMIJBIL.BKBFIGCPIMI(0);
				}
				else if (this.pathTowardsPlayerCentroidToFindTarget)
				{
					base.HCGGDDPJBHE(this.movementSlowdownDistance);
				}
				else
				{
					this.OIGGPMIJBIL.BKBFIGCPIMI(2);
				}
			}
		}

		// Token: 0x06003DCE RID: 15822 RVA: 0x001394B4 File Offset: 0x001376B4
		protected override void Start()
		{
			base.Start();
			this.OIGGPMIJBIL.FLHFCMCNLEK(this, ushort.MaxValue);
		}

		// Token: 0x06003DCF RID: 15823 RVA: 0x001394D0 File Offset: 0x001376D0
		protected virtual void CJIBCBLNGGM()
		{
			base.Start();
			this.OIGGPMIJBIL.PGELJEHELFN(this, 111);
		}

		// Token: 0x06003DD0 RID: 15824 RVA: 0x001394EC File Offset: 0x001376EC
		protected override void DKCKOHPCOBL(bool BCKMKPCENOL)
		{
			base.DKCKOHPCOBL(BCKMKPCENOL);
			if (BCKMKPCENOL && base.BKHECJODPHF.OGCGDMDPHBM)
			{
				base.BOLBONELAEF.BOAKFKEHGHP = true;
			}
		}

		// Token: 0x06003DD1 RID: 15825 RVA: 0x00139518 File Offset: 0x00137718
		private void ALPGBODHAHI(ushort CHJBIHILBFO, ushort BNCBHHCPCLE)
		{
			this.enemyAnimator.FMAFNHECOIH(false);
			this.enemyAudio.OnChargeAttack();
			if (base.BHCCHBHNHCG)
			{
				this.HEPCLEMEHBC.BJOJLPHBGMN(this.attackChargeDuration);
			}
		}

		// Token: 0x06003DD2 RID: 15826 RVA: 0x00139550 File Offset: 0x00137750
		protected virtual void BMNJOAAJHBK()
		{
			base.LDEOLFDIEDE();
			if (base.BKHECJODPHF.HAODGLCKEOF())
			{
				base.BOLBONELAEF.BOAKFKEHGHP = true;
			}
		}

		// Token: 0x06003DD3 RID: 15827 RVA: 0x00139574 File Offset: 0x00137774
		private void LOAIBCEDGAF(Vector3 NOBAPCOKFIL)
		{
			this.EPOFAAICKOP.MEAINJPIECA(NOBAPCOKFIL);
		}

		// Token: 0x06003DD4 RID: 15828 RVA: 0x00139584 File Offset: 0x00137784
		private void JFLDFPABHLO(ushort CHJBIHILBFO, ushort BNCBHHCPCLE)
		{
			this.enemyAnimator.DBEOAOEGGEK(true);
			this.enemyAudio.DKPPAPIIFMM();
			if (base.DGLKKANNBPD())
			{
				this.HEPCLEMEHBC.PBDGDJIFMOK(this.attackChargeDuration);
			}
		}

		// Token: 0x06003DD5 RID: 15829 RVA: 0x001395BC File Offset: 0x001377BC
		private void CBGGAGIGBDE()
		{
			if (base.DFJFKOLLEMK())
			{
				if (!base.LMDJJEGNOGM.PBDDCCOAGOG() || this.HEPCLEMEHBC.HFOKKCOENOF())
				{
					this.OIGGPMIJBIL.BKBFIGCPIMI(4);
					return;
				}
				base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(base.BKHECJODPHF.OGCGDMDPHBM));
			}
		}

		// Token: 0x06003DD6 RID: 15830 RVA: 0x00139624 File Offset: 0x00137824
		protected virtual void OLLOAPMOOHE()
		{
			base.Start();
			this.OIGGPMIJBIL.FLHFCMCNLEK(this, (ushort)(-49));
		}

		// Token: 0x06003DD7 RID: 15831 RVA: 0x00139640 File Offset: 0x00137840
		private void BNDMHFBEPHI(ushort CHJBIHILBFO, ushort BNCBHHCPCLE)
		{
			this.enemyAnimator.OGIEPFOLDNO = true;
			this.enemyAudio.OnChargeAttack();
			if (base.BHCCHBHNHCG)
			{
				this.HEPCLEMEHBC.BJOJLPHBGMN(this.attackChargeDuration);
			}
		}

		// Token: 0x06003DD8 RID: 15832 RVA: 0x00139678 File Offset: 0x00137878
		private void MBJAANBJLGG()
		{
			if (base.BHCCHBHNHCG)
			{
				if (!base.LMDJJEGNOGM.AJFBOLHPEJC || this.HEPCLEMEHBC.CGELFKLLMBA)
				{
					this.OIGGPMIJBIL.BKBFIGCPIMI(3);
					return;
				}
				base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(!base.BKHECJODPHF.OGCGDMDPHBM));
			}
		}

		// Token: 0x06003DD9 RID: 15833 RVA: 0x001396E0 File Offset: 0x001378E0
		private void GMDBMKECCEK(ushort CHJBIHILBFO, ushort BNCBHHCPCLE)
		{
			base.BKHECJODPHF.StopLooking();
			base.BKHECJODPHF.FMFCBADCFCK = this.movementSpeed;
		}

		// Token: 0x06003DDA RID: 15834 RVA: 0x00139700 File Offset: 0x00137900
		protected virtual EIDNMNCOAAJ BGEBEOCGNEJ(bool GHGNJLIBGFA = false)
		{
			if (base.JNOJEJMFADM())
			{
				return base.GPBFOEHJJFO;
			}
			return base.KAHAFAHMEKP(GHGNJLIBGFA, true);
		}

		// Token: 0x06003DDB RID: 15835 RVA: 0x0013971C File Offset: 0x0013791C
		private void JCLJLBEHMKN()
		{
			if (base.BHCCHBHNHCG)
			{
				if (!base.LMDJJEGNOGM.AJFBOLHPEJC || this.HEPCLEMEHBC.CGELFKLLMBA)
				{
					this.OIGGPMIJBIL.BKBFIGCPIMI(2);
					return;
				}
				base.BKHECJODPHF.Look(base.HIAMIHBNAMJ(!base.BKHECJODPHF.OGCGDMDPHBM));
			}
		}

		// Token: 0x06003DDC RID: 15836 RVA: 0x00139784 File Offset: 0x00137984
		private void EPMNFNGPBBG(ushort OIMHGOONBEB, ushort LPFGCCKCIEB)
		{
			if (base.BHCCHBHNHCG)
			{
				this.ECFDNGMPNOB = base.BKHECJODPHF.GOCOODINDFC;
			}
		}

		// Token: 0x06003DDD RID: 15837 RVA: 0x001397A4 File Offset: 0x001379A4
		protected virtual void NBNPCIPPHAO()
		{
			base.CBAEJNFNPGJ();
			if (base.DGLKKANNBPD())
			{
				this.OIGGPMIJBIL.BKBFIGCPIMI((ushort)(-119));
			}
		}

		// Token: 0x06003DDE RID: 15838 RVA: 0x001397C8 File Offset: 0x001379C8
		private void PGIIAIEHPLG(ushort CHJBIHILBFO, ushort BNCBHHCPCLE)
		{
			base.BKHECJODPHF.StopLooking();
			base.BKHECJODPHF.FMFCBADCFCK = this.movementSpeed;
		}

		// Token: 0x0400079E RID: 1950
		[SerializeField]
		[Header("Target Selection")]
		private bool pathTowardsPlayerCentroidToFindTarget = true;

		// Token: 0x0400079F RID: 1951
		[SerializeField]
		[Header("Attacking")]
		private float attackChargeDuration = 1f;

		// Token: 0x040007A0 RID: 1952
		[SerializeField]
		private float attackDuration = 3f;

		// Token: 0x040007A1 RID: 1953
		[SerializeField]
		private QuestGoblinRangedEnemy.OENEFNLOGAJ attackTarget;

		// Token: 0x040007A2 RID: 1954
		[SerializeField]
		[Header("Dash")]
		private float dashSpeed = 4f;

		// Token: 0x040007A3 RID: 1955
		[SerializeField]
		private float maxDashForce = 67f;

		// Token: 0x040007A4 RID: 1956
		[SerializeField]
		private float dashSlowdownDistance = 1f;

		// Token: 0x040007A5 RID: 1957
		[SerializeField]
		private float minDashDistance = 2f;

		// Token: 0x040007A6 RID: 1958
		[SerializeField]
		private float maxDashDistance = 4f;

		// Token: 0x040007A7 RID: 1959
		[SerializeField]
		private float dashTimeout = 2.5f;

		// Token: 0x040007A8 RID: 1960
		private LHLLJPPCDKA EPOFAAICKOP;

		// Token: 0x040007A9 RID: 1961
		private PNONBEAIBHA OIGGPMIJBIL;

		// Token: 0x040007AA RID: 1962
		private AONMNAEOJAL HEPCLEMEHBC;

		// Token: 0x02000127 RID: 295
		private enum GJCLFGJEIJL
		{
			// Token: 0x040007AC RID: 1964
			FIND_TARGET,
			// Token: 0x040007AD RID: 1965
			CHARGE_ATTACK,
			// Token: 0x040007AE RID: 1966
			ATTACK_TARGET,
			// Token: 0x040007AF RID: 1967
			DASH,
			// Token: 0x040007B0 RID: 1968
			INVALID = 65535
		}

		// Token: 0x02000128 RID: 296
		private enum OENEFNLOGAJ
		{
			// Token: 0x040007B2 RID: 1970
			PLAYER_HEAD,
			// Token: 0x040007B3 RID: 1971
			PLAYER_FEET
		}
	}
}