Files
27Aug2021-Cpp2IL-Dump/Assembly-CSharp/RecRoom/Core/AI/RagdollPiece.cs
T
niko c12fbe3fc6 m
2026-04-12 16:51:38 +02:00

529 lines
16 KiB
C#

using System;
using System.Collections.Generic;
using Cpp2IlInjected;
using RecNet;
using RecRoom.Core.Pools;
using UnityEngine;
namespace RecRoom.Core.AI
{
// Token: 0x020034D8 RID: 13528
[Token(Token = "0x20034D8")]
public class RagdollPiece : MonoBehaviour
{
// Token: 0x06017807 RID: 96263 RVA: 0x0057A440 File Offset: 0x00578640
[Token(Token = "0x6017807")]
[Address(RVA = "0x1C980C0", Offset = "0x1C970C0", VA = "0x181C980C0")]
public static void UseCustomGravity(Vector3 OPHDFCHKOBI)
{
float z = OPHDFCHKOBI.z;
}
// Token: 0x06017808 RID: 96264 RVA: 0x0057A454 File Offset: 0x00578654
[Token(Token = "0x6017808")]
[Address(RVA = "0x1C98140", Offset = "0x1C97140", VA = "0x181C98140")]
public static void UseDefaultGravity()
{
float z = Physics.gravity.z;
}
// Token: 0x06017809 RID: 96265 RVA: 0x0057A46C File Offset: 0x0057866C
[Token(Token = "0x6017809")]
[Address(RVA = "0x1C96D00", Offset = "0x1C95D00", VA = "0x181C96D00")]
private void Awake()
{
Transform parent = base.transform.parent;
this.HICENEOPGOF = parent;
Transform transform = base.transform;
Vector3 vector;
float z = vector.z;
this.GHBPCACOCOL.z = z;
Transform transform2 = base.transform;
Transform transform3 = base.transform;
Vector3 vector2;
float z2 = vector2.z;
this.MCBHKKGJLKD.z = z2;
Collider[] componentsInChildren = base.GetComponentsInChildren<Collider>(true);
int num = 0;
int length = componentsInChildren.Length;
if (num < length)
{
RecRoomCollider component = componentsInChildren[num].gameObject.GetComponent<RecRoomCollider>();
int num2 = 0;
if (!(component != num2))
{
List<Collider> nnbalfkkndo = this.NNBALFKKNDO;
Collider collider = componentsInChildren[num];
nnbalfkkndo.Add(collider);
if (!this.disableColliderWhenNotRagdolling)
{
goto IL_F9;
}
Collider collider2 = componentsInChildren[num];
int num3 = 0;
collider2.enabled = num3 != 0;
num++;
}
this.CCLAGGKGHMI.Add(component);
if (this.disableColliderWhenNotRagdolling)
{
int num4 = 0;
component.enabled = num4 != 0;
}
IL_F9:
num++;
}
}
// Token: 0x0601780A RID: 96266 RVA: 0x0057A580 File Offset: 0x00578780
[Token(Token = "0x601780A")]
[Address(RVA = "0x1C97150", Offset = "0x1C96150", VA = "0x181C97150")]
private void OnDisable()
{
if (!base.gameObject.activeSelf)
{
Transform transform = base.transform;
Vector3 vector;
float z = vector.z;
Vector3 vector2;
float z2 = vector2.z;
}
}
// Token: 0x0601780B RID: 96267 RVA: 0x0057A5B8 File Offset: 0x005787B8
[Token(Token = "0x601780B")]
[Address(RVA = "0x1C97250", Offset = "0x1C96250", VA = "0x181C97250")]
public void StartRagdoll(Vector3 GJFAEGPLDAB, Vector3 JIPJCDCNJKB, float FJLCMDJONID, bool MPOLJMBILKN = false)
{
int num;
int num3;
for (;;)
{
num = 0;
if ((this.FJJHBFPKLAN ? 1 : 0) != num)
{
return;
}
this.FJJHBFPKLAN = true;
if (this.criticalHitActionOverride != RagdollPiece.KFONPGFNBKP.NONE)
{
break;
}
if ((this.disableInsteadOfRagdoll ? 1 : 0) != num)
{
goto IL_294;
}
Vector3 onUnitSphere = global::UnityEngine.Random.onUnitSphere;
Transform transform = base.transform;
float z = JIPJCDCNJKB.z;
Vector3 vector;
float z2 = vector.z;
bool flag = Matchmaking.KDIKBBAPFDH;
base.gameObject.layer = 24;
List<RecRoomCollider> cclaggkghmi = this.CCLAGGKGHMI;
bool flag2;
if (flag2)
{
GameObject gameObject;
gameObject.layer = 24;
}
int num2 = 0;
if (num != 0)
{
goto IL_2AE;
}
if (num2 != -1)
{
}
List<Collider> nnbalfkkndo = this.NNBALFKKNDO;
bool flag3;
if (flag3)
{
GameObject gameObject2;
gameObject2.layer = 24;
}
num3 = 0;
if (num == 0)
{
goto Block_11;
}
}
float num4 = global::UnityEngine.Random.Range((float)0, 1f);
float num5 = this.criticalHitOverrideChance;
if (this.criticalHitActionOverride == (RagdollPiece.KFONPGFNBKP)num)
{
if ((this.disableWhenOverriding ? 1 : 0) != num)
{
GameObject gameObject3 = base.gameObject;
int num6 = 0;
gameObject3.SetActive(num6 != 0);
}
PooledParticle pooledParticle = this.criticalHitActionEffect;
int num7 = 0;
if (pooledParticle != num7)
{
GlobalPool instance = GlobalPool.ONCPNMDGGKG;
PooledParticle pooledParticle2 = this.criticalHitActionEffect;
PooledParticle pooledParticle3 = instance.Acquire<PooledParticle>(pooledParticle2);
if (pooledParticle3 != 0)
{
Transform transform2 = base.transform;
pooledParticle3.Play(transform2);
}
}
if (this.criticalHitActionAudioClip != 0)
{
Transform transform3 = base.transform;
}
}
return;
Block_11:
base.transform.localPosition = num3;
int num8 = 0;
base.transform.localRotation = num8;
int num9 = 0;
base.transform.localScale = num9;
Transform transform4 = base.transform;
int num10 = 0;
transform4.SetParent(num10, true);
Rigidbody eelomepllid = this.EELOMEPLLID;
int num11 = 0;
if (eelomepllid == num11)
{
Rigidbody rigidbody = base.gameObject.AddComponent<Rigidbody>();
this.EELOMEPLLID = rigidbody;
}
Rigidbody eelomepllid2 = this.EELOMEPLLID;
int num12 = 0;
if (eelomepllid2 != num12)
{
Rigidbody eelomepllid3 = this.EELOMEPLLID;
int num13 = 0;
eelomepllid3.isKinematic = num13 != 0;
Rigidbody eelomepllid4 = this.EELOMEPLLID;
int num14 = 0;
eelomepllid4.angularDrag = (float)num14;
Rigidbody eelomepllid5 = this.EELOMEPLLID;
int num15 = 0;
eelomepllid5.drag = (float)num15;
this.EELOMEPLLID.velocity = num13;
this.EELOMEPLLID.angularVelocity = num13;
Rigidbody eelomepllid6 = this.EELOMEPLLID;
bool flag4 = "{il2cpp field on {'constant105' (constant value of type Cpp2IL.Core.Analysis.ResultModels.StaticFieldsPtr)}, offset 0x0}" == (ulong)0L;
eelomepllid6.useGravity = flag4;
}
float time = Time.time;
this.BEPEMKEPPFK = time;
Transform transform5 = base.transform;
Vector3 vector2;
float z3 = vector2.z;
this.NGEHEHMAALH.z = z3;
Scheduler instance2 = SingletonMonoBehaviour.ONCPNMDGGKG;
RagdollPiece.PLIOINMPJOG plioinmpjog;
plioinmpjog.<>1__state = (int)((ulong)0L);
plioinmpjog.<>4__this = this;
KFBABPAPIMB kfbabpapimb = instance2.Run(this, plioinmpjog);
this.NHJOJNGHAMH = kfbabpapimb;
IL_294:
GameObject gameObject4 = base.gameObject;
int num16 = 0;
gameObject4.SetActive(num16 != 0);
throw new NullReferenceException();
IL_2AE:
throw new NullReferenceException();
}
// Token: 0x0601780C RID: 96268 RVA: 0x0057A880 File Offset: 0x00578A80
[Token(Token = "0x601780C")]
[Address(RVA = "0x1C97C80", Offset = "0x1C96C80", VA = "0x181C97C80")]
public void StopRagdoll()
{
int num;
do
{
num = 0;
if ((this.FJJHBFPKLAN ? 1 : 0) == num)
{
return;
}
GameObject gameObject = base.gameObject;
int num2 = 0;
if (gameObject != num2)
{
base.gameObject.SetActive(true);
}
Rigidbody eelomepllid = this.EELOMEPLLID;
int num3 = 0;
if (eelomepllid != num3)
{
global::UnityEngine.Object.Destroy(this.EELOMEPLLID);
this.EELOMEPLLID = num;
}
bool flag = (this.disableColliderWhenNotRagdolling ? 1 : 0) == num;
List<RecRoomCollider> cclaggkghmi = this.CCLAGGKGHMI;
bool flag2;
if (flag2)
{
}
int num4 = 0;
if (num != 0)
{
goto IL_110;
}
if (num4 != -1)
{
}
List<Collider> nnbalfkkndo = this.NNBALFKKNDO;
bool flag3;
if (flag3)
{
}
}
while (num != 0);
Transform transform = base.transform;
int num5 = 0;
if (transform != num5)
{
Transform transform2 = base.transform;
Transform hiceneopgof = this.HICENEOPGOF;
transform2.SetParent(hiceneopgof, true);
int num6 = 0;
base.transform.localPosition = num6;
int num7 = 0;
base.transform.localRotation = num7;
int num8 = 0;
base.transform.localScale = num8;
}
if (this.NHJOJNGHAMH != 0)
{
this.NHJOJNGHAMH = (ulong)0L;
}
this.FJJHBFPKLAN = false;
return;
IL_110:
throw new NullReferenceException();
}
// Token: 0x0601780D RID: 96269 RVA: 0x0057A9A4 File Offset: 0x00578BA4
[Token(Token = "0x601780D")]
[Address(RVA = "0x1C970F0", Offset = "0x1C960F0", VA = "0x181C970F0")]
private IEnumerator<KENFJGFMIPM> GGDNEPBAPNP()
{
/*
An exception occurred when decompiling this method (0601780D)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Collections.Generic.IEnumerator`1<KENFJGFMIPM> RecRoom.Core.AI.RagdollPiece::GGDNEPBAPNP()
---> System.Exception: Basic block has to end with unconditional control flow.
{
Block_0:
call:void(PLIOINMPJOG::System.IDisposable.Dispose, ldloc:PLIOINMPJOG(var_0))
stfld:int32(PLIOINMPJOG::<>1__state, ldloc:PLIOINMPJOG(var_0), conv.u8:uint64[exp:int32](ldc.i8:int64[exp:uint64](0)))
stfld:RagdollPiece(PLIOINMPJOG::<>4__this, ldloc:PLIOINMPJOG(var_0), ldloc:RagdollPiece(this))
}
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
--- End of inner exception stack trace ---
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
*/;
}
// Token: 0x0601780E RID: 96270 RVA: 0x0057A9C8 File Offset: 0x00578BC8
[Token(Token = "0x601780E")]
[Address(RVA = "0x1C96F70", Offset = "0x1C95F70", VA = "0x181C96F70")]
private void BPGOLGMELEO()
{
if (this.disableWhenOverriding)
{
GameObject gameObject = base.gameObject;
int num = 0;
gameObject.SetActive(num != 0);
}
PooledParticle pooledParticle = this.criticalHitActionEffect;
int num2 = 0;
if (pooledParticle != num2)
{
GlobalPool instance = GlobalPool.ONCPNMDGGKG;
PooledParticle pooledParticle2 = this.criticalHitActionEffect;
PooledParticle pooledParticle3 = instance.Acquire<PooledParticle>(pooledParticle2);
if (pooledParticle3 != 0)
{
Transform transform = base.transform;
pooledParticle3.Play(transform);
}
}
if (this.criticalHitActionAudioClip != 0)
{
Transform transform2 = base.transform;
Vector3 vector;
float z = vector.z;
}
}
// Token: 0x0601780F RID: 96271 RVA: 0x0057AA54 File Offset: 0x00578C54
[Token(Token = "0x601780F")]
[Address(RVA = "0x1C98220", Offset = "0x1C97220", VA = "0x181C98220")]
public RagdollPiece()
{
List<RecRoomCollider> list = new List();
this.CCLAGGKGHMI = list;
List<Collider> list2 = new List();
this.NNBALFKKNDO = list2;
float z = Vector3.zero.z;
this.GHBPCACOCOL.z = z;
Quaternion identity = Quaternion.identity;
float z2 = Vector3.one.z;
this.MCBHKKGJLKD.z = z2;
float z3 = Vector3.one.z;
this.NGEHEHMAALH.z = z3;
base..ctor();
}
// Token: 0x06017810 RID: 96272 RVA: 0x0057AAF4 File Offset: 0x00578CF4
// Note: this type is marked as 'beforefieldinit'.
[Token(Token = "0x6017810")]
[Address(RVA = "0x1C981C0", Offset = "0x1C971C0", VA = "0x181C981C0")]
static RagdollPiece()
{
float z = Physics.gravity.z;
}
// Token: 0x0400F409 RID: 62473
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x400F409")]
[SerializeField]
[Tooltip("Only mark colliders as disable when not ragdolling if the colliders are exclusively used for ragdolling.")]
private bool disableColliderWhenNotRagdolling;
// Token: 0x0400F40A RID: 62474
[FieldOffset(Offset = "0x19")]
[Token(Token = "0x400F40A")]
[SerializeField]
private bool disableInsteadOfRagdoll;
// Token: 0x0400F40B RID: 62475
[FieldOffset(Offset = "0x1C")]
[Token(Token = "0x400F40B")]
[SerializeField]
[Header("Critical Hits")]
private float criticalHitShatterSpeedMultiplier = 1f;
// Token: 0x0400F40C RID: 62476
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x400F40C")]
[SerializeField]
private RagdollPiece.KFONPGFNBKP criticalHitActionOverride = (RagdollPiece.KFONPGFNBKP)((ulong)4294967295L);
// Token: 0x0400F40D RID: 62477
[FieldOffset(Offset = "0x24")]
[Token(Token = "0x400F40D")]
[SerializeField]
private float criticalHitOverrideChance;
// Token: 0x0400F40E RID: 62478
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x400F40E")]
[SerializeField]
private bool disableWhenOverriding = true;
// Token: 0x0400F40F RID: 62479
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x400F40F")]
[SerializeField]
private PooledParticle criticalHitActionEffect;
// Token: 0x0400F410 RID: 62480
[FieldOffset(Offset = "0x38")]
[Token(Token = "0x400F410")]
[SerializeField]
private RecRoomAudioClip criticalHitActionAudioClip;
// Token: 0x0400F411 RID: 62481
[FieldOffset(Offset = "0x40")]
[Token(Token = "0x400F411")]
private List<RecRoomCollider> CCLAGGKGHMI;
// Token: 0x0400F412 RID: 62482
[FieldOffset(Offset = "0x48")]
[Token(Token = "0x400F412")]
private List<Collider> NNBALFKKNDO;
// Token: 0x0400F413 RID: 62483
[FieldOffset(Offset = "0x50")]
[Token(Token = "0x400F413")]
private Rigidbody EELOMEPLLID;
// Token: 0x0400F414 RID: 62484
[FieldOffset(Offset = "0x58")]
[Token(Token = "0x400F414")]
private Transform HICENEOPGOF;
// Token: 0x0400F415 RID: 62485
[FieldOffset(Offset = "0x60")]
[Token(Token = "0x400F415")]
private Vector3 GHBPCACOCOL;
// Token: 0x0400F416 RID: 62486
[FieldOffset(Offset = "0x6C")]
[Token(Token = "0x400F416")]
private Quaternion LDAKIHFDIFN;
// Token: 0x0400F417 RID: 62487
[FieldOffset(Offset = "0x7C")]
[Token(Token = "0x400F417")]
private Vector3 MCBHKKGJLKD;
// Token: 0x0400F418 RID: 62488
[FieldOffset(Offset = "0x88")]
[Token(Token = "0x400F418")]
private bool FJJHBFPKLAN;
// Token: 0x0400F419 RID: 62489
[FieldOffset(Offset = "0x8C")]
[Token(Token = "0x400F419")]
private float BEPEMKEPPFK;
// Token: 0x0400F41A RID: 62490
[FieldOffset(Offset = "0x90")]
[Token(Token = "0x400F41A")]
private Vector3 NGEHEHMAALH;
// Token: 0x0400F41B RID: 62491
[FieldOffset(Offset = "0xA0")]
[Token(Token = "0x400F41B")]
private KFBABPAPIMB NHJOJNGHAMH;
// Token: 0x0400F41C RID: 62492
[Token(Token = "0x400F41C")]
private const float NLHMOAAOOIG = 3.33f;
// Token: 0x0400F41D RID: 62493
[Token(Token = "0x400F41D")]
private const float EJOCNEBMJCJ = 0.66f;
// Token: 0x0400F41E RID: 62494
[Token(Token = "0x400F41E")]
private static bool EINFCILHKNG;
// Token: 0x0400F41F RID: 62495
[Token(Token = "0x400F41F")]
private static Vector3 OPHDFCHKOBI;
// Token: 0x020034D9 RID: 13529
[Token(Token = "0x20034D9")]
private enum KFONPGFNBKP
{
// Token: 0x0400F421 RID: 62497
[Token(Token = "0x400F421")]
NONE = -1,
// Token: 0x0400F422 RID: 62498
[Token(Token = "0x400F422")]
PLAY_EFFECT
}
}
}