Files
Aug2021-Cpp2IL-Dump/Assembly-CSharp/RecRoom/Core/AI/RagdollPiece.cs
T
2026-04-10 22:50:51 +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: 0x020033EB RID: 13291
[Token(Token = "0x20033EB")]
public class RagdollPiece : MonoBehaviour
{
// Token: 0x06017378 RID: 95096 RVA: 0x0056F2F4 File Offset: 0x0056D4F4
[Token(Token = "0x6017378")]
[Address(RVA = "0x1149450", Offset = "0x1148250", VA = "0x181149450")]
public static void UseCustomGravity(Vector3 OPHDFCHKOBI)
{
float z = OPHDFCHKOBI.z;
}
// Token: 0x06017379 RID: 95097 RVA: 0x0056F308 File Offset: 0x0056D508
[Token(Token = "0x6017379")]
[Address(RVA = "0x11494D0", Offset = "0x11482D0", VA = "0x1811494D0")]
public static void UseDefaultGravity()
{
float z = Physics.gravity.z;
}
// Token: 0x0601737A RID: 95098 RVA: 0x0056F320 File Offset: 0x0056D520
[Token(Token = "0x601737A")]
[Address(RVA = "0x1148090", Offset = "0x1146E90", VA = "0x181148090")]
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: 0x0601737B RID: 95099 RVA: 0x0056F434 File Offset: 0x0056D634
[Token(Token = "0x601737B")]
[Address(RVA = "0x11484E0", Offset = "0x11472E0", VA = "0x1811484E0")]
private void OnDisable()
{
if (!base.gameObject.activeSelf)
{
Transform transform = base.transform;
Vector3 vector;
float z = vector.z;
Vector3 vector2;
float z2 = vector2.z;
}
}
// Token: 0x0601737C RID: 95100 RVA: 0x0056F46C File Offset: 0x0056D66C
[Token(Token = "0x601737C")]
[Address(RVA = "0x11485E0", Offset = "0x11473E0", VA = "0x1811485E0")]
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: 0x0601737D RID: 95101 RVA: 0x0056F734 File Offset: 0x0056D934
[Token(Token = "0x601737D")]
[Address(RVA = "0x1149010", Offset = "0x1147E10", VA = "0x181149010")]
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: 0x0601737E RID: 95102 RVA: 0x0056F858 File Offset: 0x0056DA58
[Token(Token = "0x601737E")]
[Address(RVA = "0x1148480", Offset = "0x1147280", VA = "0x181148480")]
private IEnumerator<KENFJGFMIPM> GGDNEPBAPNP()
{
/*
An exception occurred when decompiling this method (0601737E)
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: 0x0601737F RID: 95103 RVA: 0x0056F87C File Offset: 0x0056DA7C
[Token(Token = "0x601737F")]
[Address(RVA = "0x1148300", Offset = "0x1147100", VA = "0x181148300")]
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: 0x06017380 RID: 95104 RVA: 0x0056F908 File Offset: 0x0056DB08
[Token(Token = "0x6017380")]
[Address(RVA = "0x11495B0", Offset = "0x11483B0", VA = "0x1811495B0")]
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: 0x06017381 RID: 95105 RVA: 0x0056F9A8 File Offset: 0x0056DBA8
// Note: this type is marked as 'beforefieldinit'.
[Token(Token = "0x6017381")]
[Address(RVA = "0x1149550", Offset = "0x1148350", VA = "0x181149550")]
static RagdollPiece()
{
float z = Physics.gravity.z;
}
// Token: 0x0400F1C1 RID: 61889
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x400F1C1")]
[SerializeField]
[Tooltip("Only mark colliders as disable when not ragdolling if the colliders are exclusively used for ragdolling.")]
private bool disableColliderWhenNotRagdolling;
// Token: 0x0400F1C2 RID: 61890
[FieldOffset(Offset = "0x19")]
[Token(Token = "0x400F1C2")]
[SerializeField]
private bool disableInsteadOfRagdoll;
// Token: 0x0400F1C3 RID: 61891
[FieldOffset(Offset = "0x1C")]
[Token(Token = "0x400F1C3")]
[SerializeField]
[Header("Critical Hits")]
private float criticalHitShatterSpeedMultiplier = 1f;
// Token: 0x0400F1C4 RID: 61892
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x400F1C4")]
[SerializeField]
private RagdollPiece.KFONPGFNBKP criticalHitActionOverride = (RagdollPiece.KFONPGFNBKP)((ulong)4294967295L);
// Token: 0x0400F1C5 RID: 61893
[FieldOffset(Offset = "0x24")]
[Token(Token = "0x400F1C5")]
[SerializeField]
private float criticalHitOverrideChance;
// Token: 0x0400F1C6 RID: 61894
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x400F1C6")]
[SerializeField]
private bool disableWhenOverriding = true;
// Token: 0x0400F1C7 RID: 61895
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x400F1C7")]
[SerializeField]
private PooledParticle criticalHitActionEffect;
// Token: 0x0400F1C8 RID: 61896
[FieldOffset(Offset = "0x38")]
[Token(Token = "0x400F1C8")]
[SerializeField]
private RecRoomAudioClip criticalHitActionAudioClip;
// Token: 0x0400F1C9 RID: 61897
[FieldOffset(Offset = "0x40")]
[Token(Token = "0x400F1C9")]
private List<RecRoomCollider> CCLAGGKGHMI;
// Token: 0x0400F1CA RID: 61898
[FieldOffset(Offset = "0x48")]
[Token(Token = "0x400F1CA")]
private List<Collider> NNBALFKKNDO;
// Token: 0x0400F1CB RID: 61899
[FieldOffset(Offset = "0x50")]
[Token(Token = "0x400F1CB")]
private Rigidbody EELOMEPLLID;
// Token: 0x0400F1CC RID: 61900
[FieldOffset(Offset = "0x58")]
[Token(Token = "0x400F1CC")]
private Transform HICENEOPGOF;
// Token: 0x0400F1CD RID: 61901
[FieldOffset(Offset = "0x60")]
[Token(Token = "0x400F1CD")]
private Vector3 GHBPCACOCOL;
// Token: 0x0400F1CE RID: 61902
[FieldOffset(Offset = "0x6C")]
[Token(Token = "0x400F1CE")]
private Quaternion LDAKIHFDIFN;
// Token: 0x0400F1CF RID: 61903
[FieldOffset(Offset = "0x7C")]
[Token(Token = "0x400F1CF")]
private Vector3 MCBHKKGJLKD;
// Token: 0x0400F1D0 RID: 61904
[FieldOffset(Offset = "0x88")]
[Token(Token = "0x400F1D0")]
private bool FJJHBFPKLAN;
// Token: 0x0400F1D1 RID: 61905
[FieldOffset(Offset = "0x8C")]
[Token(Token = "0x400F1D1")]
private float BEPEMKEPPFK;
// Token: 0x0400F1D2 RID: 61906
[FieldOffset(Offset = "0x90")]
[Token(Token = "0x400F1D2")]
private Vector3 NGEHEHMAALH;
// Token: 0x0400F1D3 RID: 61907
[FieldOffset(Offset = "0xA0")]
[Token(Token = "0x400F1D3")]
private KFBABPAPIMB NHJOJNGHAMH;
// Token: 0x0400F1D4 RID: 61908
[Token(Token = "0x400F1D4")]
private const float NLHMOAAOOIG = 3.33f;
// Token: 0x0400F1D5 RID: 61909
[Token(Token = "0x400F1D5")]
private const float EJOCNEBMJCJ = 0.66f;
// Token: 0x0400F1D6 RID: 61910
[Token(Token = "0x400F1D6")]
private static bool EINFCILHKNG;
// Token: 0x0400F1D7 RID: 61911
[Token(Token = "0x400F1D7")]
private static Vector3 OPHDFCHKOBI;
// Token: 0x020033EC RID: 13292
[Token(Token = "0x20033EC")]
private enum KFONPGFNBKP
{
// Token: 0x0400F1D9 RID: 61913
[Token(Token = "0x400F1D9")]
NONE = -1,
// Token: 0x0400F1DA RID: 61914
[Token(Token = "0x400F1DA")]
PLAY_EFFECT
}
}
}