using System; using System.Collections.Generic; using System.Runtime.InteropServices; using Cpp2IlInjected; using RecRoom.Core.AI; using RecRoom.Core.Combat; using RecRoom.Core.Pools; using RecRoom.Tools.Weapons; using UnityEngine; namespace RecRoom.Activities.Quest.Goblin2 { // Token: 0x0200275A RID: 10074 [Token(Token = "0x200275A")] [StructLayout(3)] public class ForceWandWeapon : SpreadRangedWeapon { // Token: 0x0601196A RID: 72042 RVA: 0x00430B94 File Offset: 0x0042ED94 [Token(Token = "0x601196A")] [Address(RVA = "0x1103550", Offset = "0x1101F50", VA = "0x181103550", Slot = "13")] protected override void Awake() { base.Awake(); DelayedRangedWeaponTrigger delayedRangedWeaponTrigger = this.trigger; DelayedRangedWeaponTrigger.IOGLIBAPLLG ioglibapllg = new DelayedRangedWeaponTrigger.IOGLIBAPLLG(this.NDLIEIOPMNN); delayedRangedWeaponTrigger.JFPBBAHBCPN += ioglibapllg; } // Token: 0x0601196B RID: 72043 RVA: 0x00430BC8 File Offset: 0x0042EDC8 [Token(Token = "0x601196B")] [Address(RVA = "0x11046F0", Offset = "0x11030F0", VA = "0x1811046F0", Slot = "14")] protected override void OnDestroy() { base.OnDestroy(); DelayedRangedWeaponTrigger delayedRangedWeaponTrigger = this.trigger; DelayedRangedWeaponTrigger.IOGLIBAPLLG ioglibapllg = new DelayedRangedWeaponTrigger.IOGLIBAPLLG(this.NDLIEIOPMNN); delayedRangedWeaponTrigger.JFPBBAHBCPN -= ioglibapllg; } // Token: 0x0601196C RID: 72044 RVA: 0x00430BFC File Offset: 0x0042EDFC [Token(Token = "0x601196C")] [Address(RVA = "0x1103EE0", Offset = "0x11028E0", VA = "0x181103EE0")] private void LateUpdate() { WandProjectileParticles jobcknkockm = this.JOBCKNKOCKM; int num = 0; if (jobcknkockm != num) { float num2 = this.HLMEEKJIEEL.DDKECNEDAEK; SpreadRangedWeapon.SpreadTarget[] spreadTargets = this.spreadTargets; this.JOBCKNKOCKM.StopVelocity(); this.JOBCKNKOCKM = (ulong)0L; } } // Token: 0x0601196D RID: 72045 RVA: 0x00430C4C File Offset: 0x0042EE4C [Token(Token = "0x601196D")] [Address(RVA = "0x104F7F0", Offset = "0x104E1F0", VA = "0x18104F7F0")] private void NDLIEIOPMNN(DelayedRangedWeaponTrigger OOONNFPBMKC) { if (base.hasAuthority) { bool isCompleted = ((IAsyncResult)this).IsCompleted; return; } } // Token: 0x0601196E RID: 72046 RVA: 0x00430C6C File Offset: 0x0042EE6C [Token(Token = "0x601196E")] [Address(RVA = "0x1103A60", Offset = "0x1102460", VA = "0x181103A60", Slot = "40")] public override void Fire(float JHJCINDODIL) { if (base.hasAuthority) { if (base.MJDHKAHMGMO || base.LAJLNCJKALH) { throw new NullReferenceException(); } Transform barrelTransform = this.barrelTransform; if (this.useHeadAimBias) { Tool tool = this._tool; if (tool.k__BackingField) { Transform transform = tool.k__BackingField.head.transform; float num; if (this.maxHeadAimAngle > num) { RigidbodyEx rigidbodyEx = this._tool.k__BackingField.head.rigidbodyEx; Transform barrelTransform2 = this.barrelTransform; Vector3 vector; float z = vector.z; Vector3 vector2; float z2 = vector2.z; } } } Transform transform2 = this.spreadOffsetRoot; this.Fire(JHJCINDODIL); } } // Token: 0x0601196F RID: 72047 RVA: 0x00430D20 File Offset: 0x0042EF20 [Token(Token = "0x601196F")] [Address(RVA = "0x11039B0", Offset = "0x11023B0", VA = "0x1811039B0", Slot = "47")] protected override void EIEJLOGPMGM(Bullet NLLMMPLAPBK, Enemy BPJNEFJBBML, ANBBFGKPJFD EMPFLFOEDFD, GHMDIDJLFMC KNLMJBAKCGF) { AAEGKOIININ aaegkoiinin = this.HLMEEKJIEEL.OBKMOLNOBHD(NLLMMPLAPBK); if (aaegkoiinin != 0) { aaegkoiinin.MCHIEHNFNLF(); } } // Token: 0x06011970 RID: 72048 RVA: 0x00430D4C File Offset: 0x0042EF4C [Token(Token = "0x6011970")] [Address(RVA = "0x11035E0", Offset = "0x1101FE0", VA = "0x1811035E0", Slot = "25")] protected override bool DHODJKLNHPA(Enemy BPJNEFJBBML, ANBBFGKPJFD EMPFLFOEDFD, GHMDIDJLFMC KNLMJBAKCGF) { if (KNLMJBAKCGF.FEDGOFKEGEF.z > this.spreadShotInitialCharge) { if (BPJNEFJBBML.steering.k__BackingField) { Steering steering = BPJNEFJBBML.steering; Vector3 vector; float z = vector.z; Vector3 vector2; float z2 = vector2.z; KNLMJBAKCGF.NKKJICPFILJ.z = z2; } if (base.hasAuthority && !this.GOOBODNNOKN.Contains(BPJNEFJBBML) && !this.GOOBODNNOKN.Contains(BPJNEFJBBML)) { Enemy.FIEKLJKDFIP fiekljkdfip = new Enemy.FIEKLJKDFIP(this.OIHFBPGMEME); BPJNEFJBBML.NCMJJBMBDHK += fiekljkdfip; Enemy.FJNNOHNMINM fjnnohnminm = new Enemy.FJNNOHNMINM(this.JIFMOEKGGNG); BPJNEFJBBML.EJPGEKHJECG += fjnnohnminm; this.GOOBODNNOKN.Add(BPJNEFJBBML); } } float z3 = KNLMJBAKCGF.FEDGOFKEGEF.z; float num = KNLMJBAKCGF.EGJBGIIHEEL.z; float num2 = Mathf.Clamp01(z3); AnimationCurve animationCurve = this.damageFalloffCurve; num = num2; float num3 = animationCurve.Evaluate(num); KNLMJBAKCGF.OHPBNIDKAEK = num3; bool flag; return flag; } // Token: 0x06011971 RID: 72049 RVA: 0x00430E4C File Offset: 0x0042F04C [Token(Token = "0x6011971")] [Address(RVA = "0x1103ED0", Offset = "0x11028D0", VA = "0x181103ED0")] protected void JIFMOEKGGNG(Enemy BPJNEFJBBML) { this.HFMECCNDOOE(BPJNEFJBBML); } // Token: 0x06011972 RID: 72050 RVA: 0x00430E60 File Offset: 0x0042F060 [Token(Token = "0x6011972")] [Address(RVA = "0x11042B0", Offset = "0x1102CB0", VA = "0x1811042B0")] protected void OIHFBPGMEME(Enemy BPJNEFJBBML, Collision GBJHLKOJGPB) { int num = 0; Vector3 vector; float z = vector.z; float num2 = this.minPhysicsDamageVelocity; Enemy enemy = GBJHLKOJGPB.PABDAFCMNCK(num); int num3 = 0; if (!(enemy != num3)) { ContactPoint[] contacts = GBJHLKOJGPB.contacts; Vector3 up = Vector3.up; float num4; if (num4 <= this.maxFloorAngleDegrees) { return; } } this.HFMECCNDOOE(BPJNEFJBBML); Vector3 vector2; float z2 = vector2.z; float z3 = Vector3.zero.z; ContactPoint[] contacts2 = GBJHLKOJGPB.contacts; ContactPoint[] contacts3 = GBJHLKOJGPB.contacts; GameObject gameObject = GBJHLKOJGPB.gameObject; if (enemy) { } } // Token: 0x06011973 RID: 72051 RVA: 0x00430EF8 File Offset: 0x0042F0F8 [Token(Token = "0x6011973")] [Address(RVA = "0x1103FB0", Offset = "0x11029B0", VA = "0x181103FB0")] private void MELDMLAJELJ(Enemy BPJNEFJBBML) { if (!this.GOOBODNNOKN.Contains(BPJNEFJBBML)) { Enemy.FIEKLJKDFIP fiekljkdfip = new Enemy.FIEKLJKDFIP(this.OIHFBPGMEME); BPJNEFJBBML.NCMJJBMBDHK += fiekljkdfip; Enemy.FJNNOHNMINM fjnnohnminm = new Enemy.FJNNOHNMINM(this.JIFMOEKGGNG); BPJNEFJBBML.EJPGEKHJECG += fjnnohnminm; this.GOOBODNNOKN.Add(BPJNEFJBBML); } } // Token: 0x06011974 RID: 72052 RVA: 0x00430F50 File Offset: 0x0042F150 [Token(Token = "0x6011974")] [Address(RVA = "0x1103E00", Offset = "0x1102800", VA = "0x181103E00")] private void HFMECCNDOOE(Enemy BPJNEFJBBML) { Enemy.FIEKLJKDFIP fiekljkdfip = new Enemy.FIEKLJKDFIP(this.OIHFBPGMEME); BPJNEFJBBML.NCMJJBMBDHK -= fiekljkdfip; Enemy.FJNNOHNMINM fjnnohnminm = new Enemy.FJNNOHNMINM(this.JIFMOEKGGNG); BPJNEFJBBML.EJPGEKHJECG -= fjnnohnminm; bool flag = this.GOOBODNNOKN.Remove(BPJNEFJBBML); } // Token: 0x06011975 RID: 72053 RVA: 0x00430F98 File Offset: 0x0042F198 [Token(Token = "0x6011975")] [Address(RVA = "0x11040B0", Offset = "0x1102AB0", VA = "0x1811040B0", Slot = "42")] protected override void OICJPFPBIIK(Vector3 DDHPAFKBMON, Quaternion IGPENJBJADK, Vector3 NHAOMEMANJA, float LFDFFDCJAAD, bool FLKHKHDBIOH, byte LNPHJIHHNPN) { float z = NHAOMEMANJA.z; float z2 = DDHPAFKBMON.z; float num = this.spreadShotInitialCharge; float z3 = NHAOMEMANJA.z; float z4 = DDHPAFKBMON.z; float num2 = this.centerShotInitialCharge; WandProjectileParticles wandProjectileParticles = this.shootParticlesPrefab; int num3 = 0; if (wandProjectileParticles != num3) { GlobalPool instance = GlobalPool.ONCPNMDGGKG; WandProjectileParticles wandProjectileParticles2 = this.shootParticlesPrefab; WandProjectileParticles wandProjectileParticles3 = instance.Acquire(wandProjectileParticles2); this.JOBCKNKOCKM = wandProjectileParticles3; wandProjectileParticles3.ResetVelocity(); WandProjectileParticles jobcknkockm = this.JOBCKNKOCKM; Transform barrelTransform = this.barrelTransform; jobcknkockm.Play(barrelTransform); } } // Token: 0x06011976 RID: 72054 RVA: 0x00431040 File Offset: 0x0042F240 [Token(Token = "0x6011976")] [Address(RVA = "0x1104780", Offset = "0x1103180", VA = "0x181104780")] public ForceWandWeapon() { int num = 0; this.minBulletPercentageRequiredForParticles = 0.25f; int num2 = 0; this.maxHeadAimAngle = 75f; this.centerShotInitialCharge = 1f; this.spreadShotInitialCharge = 0.3f; AnimationCurve animationCurve = AnimationCurve.Linear((float)num2, 1f, 1f, (float)num); this.damageFalloffCurve = animationCurve; this.minPhysicsDamageVelocity = 1f; this.maxFloorAngleDegrees = 30f; this.enemyCollisionDamageCharge = 1f; this.otherEnemyCollisionDamageCharge = 1f; this.environmentCollisionDamageCharge = 1f; List list = new List(); this.GOOBODNNOKN = list; base..ctor(); } // Token: 0x0400BC54 RID: 48212 [global::Cpp2IlInjected.FieldOffset(Offset = "0x310")] [Token(Token = "0x400BC54")] [SerializeField] [DDPIINEJFMD(JIBDPHMGEGO.Self, false, false)] private DelayedRangedWeaponTrigger trigger; // Token: 0x0400BC55 RID: 48213 [global::Cpp2IlInjected.FieldOffset(Offset = "0x318")] [Token(Token = "0x400BC55")] [SerializeField] [Header("Wand")] private Transform spreadOffsetRoot; // Token: 0x0400BC56 RID: 48214 [global::Cpp2IlInjected.FieldOffset(Offset = "0x320")] [Token(Token = "0x400BC56")] [SerializeField] private WandProjectileParticles shootParticlesPrefab; // Token: 0x0400BC57 RID: 48215 [global::Cpp2IlInjected.FieldOffset(Offset = "0x328")] [Token(Token = "0x400BC57")] [SerializeField] private float minBulletPercentageRequiredForParticles; // Token: 0x0400BC58 RID: 48216 [global::Cpp2IlInjected.FieldOffset(Offset = "0x32C")] [Token(Token = "0x400BC58")] [SerializeField] [Header("Aiming")] private bool useHeadAimBias; // Token: 0x0400BC59 RID: 48217 [global::Cpp2IlInjected.FieldOffset(Offset = "0x330")] [Token(Token = "0x400BC59")] [SerializeField] private float maxHeadAimAngle; // Token: 0x0400BC5A RID: 48218 [global::Cpp2IlInjected.FieldOffset(Offset = "0x334")] [Token(Token = "0x400BC5A")] [SerializeField] [Range(0f, 1f)] [Header("Damage")] private float centerShotInitialCharge; // Token: 0x0400BC5B RID: 48219 [global::Cpp2IlInjected.FieldOffset(Offset = "0x338")] [Token(Token = "0x400BC5B")] [SerializeField] [Range(0f, 1f)] private float spreadShotInitialCharge; // Token: 0x0400BC5C RID: 48220 [global::Cpp2IlInjected.FieldOffset(Offset = "0x340")] [Token(Token = "0x400BC5C")] [SerializeField] private AnimationCurve damageFalloffCurve; // Token: 0x0400BC5D RID: 48221 [global::Cpp2IlInjected.FieldOffset(Offset = "0x348")] [Token(Token = "0x400BC5D")] [SerializeField] [Header("Physics Damage")] private float minPhysicsDamageVelocity; // Token: 0x0400BC5E RID: 48222 [global::Cpp2IlInjected.FieldOffset(Offset = "0x34C")] [Token(Token = "0x400BC5E")] [SerializeField] private float maxFloorAngleDegrees; // Token: 0x0400BC5F RID: 48223 [global::Cpp2IlInjected.FieldOffset(Offset = "0x350")] [Token(Token = "0x400BC5F")] [SerializeField] private float enemyCollisionDamageCharge; // Token: 0x0400BC60 RID: 48224 [global::Cpp2IlInjected.FieldOffset(Offset = "0x354")] [Token(Token = "0x400BC60")] [SerializeField] private float otherEnemyCollisionDamageCharge; // Token: 0x0400BC61 RID: 48225 [global::Cpp2IlInjected.FieldOffset(Offset = "0x358")] [Token(Token = "0x400BC61")] [SerializeField] private float environmentCollisionDamageCharge; // Token: 0x0400BC62 RID: 48226 [global::Cpp2IlInjected.FieldOffset(Offset = "0x360")] [Token(Token = "0x400BC62")] private readonly List GOOBODNNOKN; // Token: 0x0400BC63 RID: 48227 [global::Cpp2IlInjected.FieldOffset(Offset = "0x368")] [Token(Token = "0x400BC63")] private WandProjectileParticles JOBCKNKOCKM; } }