366 lines
12 KiB
C#
366 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
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: 0x02002C45 RID: 11333
|
|
[Token(Token = "0x2002C45")]
|
|
public class ForceWandWeapon : SpreadRangedWeapon
|
|
{
|
|
// Token: 0x060132EE RID: 78574 RVA: 0x00472AC4 File Offset: 0x00470CC4
|
|
[Token(Token = "0x60132EE")]
|
|
[Address(RVA = "0xB260C0", Offset = "0xB24EC0", VA = "0x180B260C0", Slot = "13")]
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
DelayedRangedWeaponTrigger delayedRangedWeaponTrigger = this.trigger;
|
|
DelayedRangedWeaponTrigger.IOGLIBAPLLG ioglibapllg = new DelayedRangedWeaponTrigger.IOGLIBAPLLG(this.NDLIEIOPMNN);
|
|
delayedRangedWeaponTrigger.JFPBBAHBCPN += ioglibapllg;
|
|
}
|
|
|
|
// Token: 0x060132EF RID: 78575 RVA: 0x00472AF8 File Offset: 0x00470CF8
|
|
[Token(Token = "0x60132EF")]
|
|
[Address(RVA = "0xB27260", Offset = "0xB26060", VA = "0x180B27260", Slot = "14")]
|
|
protected override void OnDestroy()
|
|
{
|
|
base.OnDestroy();
|
|
DelayedRangedWeaponTrigger delayedRangedWeaponTrigger = this.trigger;
|
|
DelayedRangedWeaponTrigger.IOGLIBAPLLG ioglibapllg = new DelayedRangedWeaponTrigger.IOGLIBAPLLG(this.NDLIEIOPMNN);
|
|
delayedRangedWeaponTrigger.JFPBBAHBCPN -= ioglibapllg;
|
|
}
|
|
|
|
// Token: 0x060132F0 RID: 78576 RVA: 0x00472B2C File Offset: 0x00470D2C
|
|
[Token(Token = "0x60132F0")]
|
|
[Address(RVA = "0xB26A50", Offset = "0xB25850", VA = "0x180B26A50")]
|
|
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: 0x060132F1 RID: 78577 RVA: 0x00472B7C File Offset: 0x00470D7C
|
|
[Token(Token = "0x60132F1")]
|
|
[Address(RVA = "0x79A500", Offset = "0x799300", VA = "0x18079A500")]
|
|
private void NDLIEIOPMNN(DelayedRangedWeaponTrigger OOONNFPBMKC)
|
|
{
|
|
if (base.OGIBLNIIHDK)
|
|
{
|
|
bool isCompleted = ((IAsyncResult)this).IsCompleted;
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060132F2 RID: 78578 RVA: 0x00472B9C File Offset: 0x00470D9C
|
|
[Token(Token = "0x60132F2")]
|
|
[Address(RVA = "0xB265D0", Offset = "0xB253D0", VA = "0x180B265D0", Slot = "40")]
|
|
public override void Fire(float JHJCINDODIL)
|
|
{
|
|
if (base.OGIBLNIIHDK)
|
|
{
|
|
if (base.MJDHKAHMGMO || base.LAJLNCJKALH)
|
|
{
|
|
throw new NullReferenceException();
|
|
}
|
|
Transform barrelTransform = this.barrelTransform;
|
|
if (this.useHeadAimBias)
|
|
{
|
|
Tool tool = this._tool;
|
|
if (tool.<BIPMAHKMNKF>k__BackingField)
|
|
{
|
|
Transform transform = tool.<OKDFEPHLKCB>k__BackingField.head.transform;
|
|
float num;
|
|
if (this.maxHeadAimAngle > num)
|
|
{
|
|
RigidbodyEx rigidbodyEx = this._tool.<OKDFEPHLKCB>k__BackingField.head.rigidbodyEx;
|
|
Transform barrelTransform2 = this.barrelTransform;
|
|
}
|
|
}
|
|
}
|
|
Transform transform2 = this.spreadOffsetRoot;
|
|
this.Fire(JHJCINDODIL);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060132F3 RID: 78579 RVA: 0x00472C38 File Offset: 0x00470E38
|
|
[Token(Token = "0x60132F3")]
|
|
[Address(RVA = "0xB26520", Offset = "0xB25320", VA = "0x180B26520", 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: 0x060132F4 RID: 78580 RVA: 0x00472C64 File Offset: 0x00470E64
|
|
[Token(Token = "0x60132F4")]
|
|
[Address(RVA = "0xB26150", Offset = "0xB24F50", VA = "0x180B26150", Slot = "25")]
|
|
protected override bool DHODJKLNHPA(Enemy BPJNEFJBBML, ANBBFGKPJFD EMPFLFOEDFD, GHMDIDJLFMC KNLMJBAKCGF)
|
|
{
|
|
if (KNLMJBAKCGF.FEDGOFKEGEF.z > this.spreadShotInitialCharge)
|
|
{
|
|
if (BPJNEFJBBML.steering.<FEJCOJLMGPC>k__BackingField)
|
|
{
|
|
Steering steering = BPJNEFJBBML.steering;
|
|
Vector3 vector;
|
|
float z = vector.z;
|
|
KNLMJBAKCGF.NKKJICPFILJ.z = z;
|
|
}
|
|
if (base.OGIBLNIIHDK && !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 z2 = KNLMJBAKCGF.FEDGOFKEGEF.z;
|
|
float num = KNLMJBAKCGF.EGJBGIIHEEL.z;
|
|
float num2 = Mathf.Clamp01(z2);
|
|
AnimationCurve animationCurve = this.damageFalloffCurve;
|
|
num = num2;
|
|
float num3 = animationCurve.Evaluate(num);
|
|
KNLMJBAKCGF.OHPBNIDKAEK = num3;
|
|
bool flag;
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x060132F5 RID: 78581 RVA: 0x00472D5C File Offset: 0x00470F5C
|
|
[Token(Token = "0x60132F5")]
|
|
[Address(RVA = "0xB26A40", Offset = "0xB25840", VA = "0x180B26A40")]
|
|
protected void JIFMOEKGGNG(Enemy BPJNEFJBBML)
|
|
{
|
|
this.HFMECCNDOOE(BPJNEFJBBML);
|
|
}
|
|
|
|
// Token: 0x060132F6 RID: 78582 RVA: 0x00472D70 File Offset: 0x00470F70
|
|
[Token(Token = "0x60132F6")]
|
|
[Address(RVA = "0xB26E20", Offset = "0xB25C20", VA = "0x180B26E20")]
|
|
protected void OIHFBPGMEME(Enemy BPJNEFJBBML, Collision GBJHLKOJGPB)
|
|
{
|
|
int num = 0;
|
|
Vector3 vector;
|
|
float z = vector.z;
|
|
float num2 = this.minPhysicsDamageVelocity;
|
|
float num3;
|
|
if (num3 > num2)
|
|
{
|
|
Enemy enemy = GBJHLKOJGPB.PABDAFCMNCK(num);
|
|
int num4 = 0;
|
|
if (!(enemy != num4))
|
|
{
|
|
ContactPoint[] contacts = GBJHLKOJGPB.contacts;
|
|
Vector3 up = Vector3.up;
|
|
float num5;
|
|
if (num5 <= 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: 0x060132F7 RID: 78583 RVA: 0x00472E10 File Offset: 0x00471010
|
|
[Token(Token = "0x60132F7")]
|
|
[Address(RVA = "0xB26B20", Offset = "0xB25920", VA = "0x180B26B20")]
|
|
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: 0x060132F8 RID: 78584 RVA: 0x00472E68 File Offset: 0x00471068
|
|
[Token(Token = "0x60132F8")]
|
|
[Address(RVA = "0xB26970", Offset = "0xB25770", VA = "0x180B26970")]
|
|
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: 0x060132F9 RID: 78585 RVA: 0x00472EB0 File Offset: 0x004710B0
|
|
[Token(Token = "0x60132F9")]
|
|
[Address(RVA = "0xB26C20", Offset = "0xB25A20", VA = "0x180B26C20", 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<WandProjectileParticles>(wandProjectileParticles2);
|
|
this.JOBCKNKOCKM = wandProjectileParticles3;
|
|
wandProjectileParticles3.ResetVelocity();
|
|
WandProjectileParticles jobcknkockm = this.JOBCKNKOCKM;
|
|
Transform barrelTransform = this.barrelTransform;
|
|
jobcknkockm.Play(barrelTransform);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060132FA RID: 78586 RVA: 0x00472F58 File Offset: 0x00471158
|
|
[Token(Token = "0x60132FA")]
|
|
[Address(RVA = "0xB272F0", Offset = "0xB260F0", VA = "0x180B272F0")]
|
|
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<Enemy> list = new List();
|
|
this.GOOBODNNOKN = list;
|
|
base..ctor();
|
|
}
|
|
|
|
// Token: 0x0400C7AD RID: 51117
|
|
[FieldOffset(Offset = "0x318")]
|
|
[Token(Token = "0x400C7AD")]
|
|
[SerializeField]
|
|
[DDPIINEJFMD(JIBDPHMGEGO.Self, false, false, false)]
|
|
private DelayedRangedWeaponTrigger trigger;
|
|
|
|
// Token: 0x0400C7AE RID: 51118
|
|
[FieldOffset(Offset = "0x320")]
|
|
[Token(Token = "0x400C7AE")]
|
|
[SerializeField]
|
|
[Header("Wand")]
|
|
private Transform spreadOffsetRoot;
|
|
|
|
// Token: 0x0400C7AF RID: 51119
|
|
[FieldOffset(Offset = "0x328")]
|
|
[Token(Token = "0x400C7AF")]
|
|
[SerializeField]
|
|
private WandProjectileParticles shootParticlesPrefab;
|
|
|
|
// Token: 0x0400C7B0 RID: 51120
|
|
[FieldOffset(Offset = "0x330")]
|
|
[Token(Token = "0x400C7B0")]
|
|
[SerializeField]
|
|
private float minBulletPercentageRequiredForParticles;
|
|
|
|
// Token: 0x0400C7B1 RID: 51121
|
|
[FieldOffset(Offset = "0x334")]
|
|
[Token(Token = "0x400C7B1")]
|
|
[SerializeField]
|
|
[Header("Aiming")]
|
|
private bool useHeadAimBias;
|
|
|
|
// Token: 0x0400C7B2 RID: 51122
|
|
[FieldOffset(Offset = "0x338")]
|
|
[Token(Token = "0x400C7B2")]
|
|
[SerializeField]
|
|
private float maxHeadAimAngle;
|
|
|
|
// Token: 0x0400C7B3 RID: 51123
|
|
[FieldOffset(Offset = "0x33C")]
|
|
[Token(Token = "0x400C7B3")]
|
|
[SerializeField]
|
|
[Header("Damage")]
|
|
[Range(0f, 1f)]
|
|
private float centerShotInitialCharge;
|
|
|
|
// Token: 0x0400C7B4 RID: 51124
|
|
[FieldOffset(Offset = "0x340")]
|
|
[Token(Token = "0x400C7B4")]
|
|
[SerializeField]
|
|
[Range(0f, 1f)]
|
|
private float spreadShotInitialCharge;
|
|
|
|
// Token: 0x0400C7B5 RID: 51125
|
|
[FieldOffset(Offset = "0x348")]
|
|
[Token(Token = "0x400C7B5")]
|
|
[SerializeField]
|
|
private AnimationCurve damageFalloffCurve;
|
|
|
|
// Token: 0x0400C7B6 RID: 51126
|
|
[FieldOffset(Offset = "0x350")]
|
|
[Token(Token = "0x400C7B6")]
|
|
[SerializeField]
|
|
[Header("Physics Damage")]
|
|
private float minPhysicsDamageVelocity;
|
|
|
|
// Token: 0x0400C7B7 RID: 51127
|
|
[FieldOffset(Offset = "0x354")]
|
|
[Token(Token = "0x400C7B7")]
|
|
[SerializeField]
|
|
private float maxFloorAngleDegrees;
|
|
|
|
// Token: 0x0400C7B8 RID: 51128
|
|
[FieldOffset(Offset = "0x358")]
|
|
[Token(Token = "0x400C7B8")]
|
|
[SerializeField]
|
|
private float enemyCollisionDamageCharge;
|
|
|
|
// Token: 0x0400C7B9 RID: 51129
|
|
[FieldOffset(Offset = "0x35C")]
|
|
[Token(Token = "0x400C7B9")]
|
|
[SerializeField]
|
|
private float otherEnemyCollisionDamageCharge;
|
|
|
|
// Token: 0x0400C7BA RID: 51130
|
|
[FieldOffset(Offset = "0x360")]
|
|
[Token(Token = "0x400C7BA")]
|
|
[SerializeField]
|
|
private float environmentCollisionDamageCharge;
|
|
|
|
// Token: 0x0400C7BB RID: 51131
|
|
[FieldOffset(Offset = "0x368")]
|
|
[Token(Token = "0x400C7BB")]
|
|
private readonly List<Enemy> GOOBODNNOKN;
|
|
|
|
// Token: 0x0400C7BC RID: 51132
|
|
[FieldOffset(Offset = "0x370")]
|
|
[Token(Token = "0x400C7BC")]
|
|
private WandProjectileParticles JOBCKNKOCKM;
|
|
}
|
|
}
|