using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using Aetherium;
using Aetherium.Achievements;
using Aetherium.Artifacts;
using Aetherium.Compatability;
using Aetherium.CoreModules;
using Aetherium.Effect;
using Aetherium.EliteEquipment;
using Aetherium.Equipment;
using Aetherium.Interactables;
using Aetherium.Items;
using Aetherium.Language;
using Aetherium.StandaloneBuffs;
using Aetherium.StandaloneBuffs.Tier1;
using Aetherium.StandaloneBuffs.Tier3;
using Aetherium.States.EliteEquipment.AffixSanguine;
using Aetherium.States.Equipment.BellTotem;
using Aetherium.States.Interactable.BuffBrazier;
using Aetherium.Survivors;
using Aetherium.Utils;
using Aetherium.Utils.Components;
using Aetherium.Utils.Easings;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.BrotherMonster;
using EntityStates.ImpMonster;
using HG.BlendableTypes;
using HarmonyLib;
using IL.RoR2;
using KinematicCharacterController;
using Microsoft.CodeAnalysis;
using Mono.Cecil;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.RoR2;
using On.RoR2.CharacterAI;
using On.RoR2.Items;
using On.RoR2.Orbs;
using On.RoR2.Projectile;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using R2API.Utils;
using RoR2;
using RoR2.Achievements;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.ExpansionManagement;
using RoR2.Hologram;
using RoR2.Navigation;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.UI;
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: CompilationRelaxations(8)]
[assembly: AssemblyCompany("Aetherium")]
[assembly: AssemblyProduct("Aetherium")]
[assembly: AssemblyTitle("Aetherium")]
[assembly: AssemblyInformationalVersion("1.0.0+6b13d4e756abff352c0590e6c90107d3207d9f95")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[Microsoft.CodeAnalysis.Embedded]
[CompilerGenerated]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
public class JarOfReshaping : EquipmentBase<JarOfReshaping>
{
public enum AbsorptionMode
{
ProjectilesOnly,
ProjectilesAndOrbs
}
public class JarTracker : MonoBehaviour
{
public List<StoredProjectile> StoredProjectiles = new List<StoredProjectile>();
public CharacterBody Body;
public Transform JarTransform;
public float reflectionTimer;
public float storageDecayTimer;
public GameObject reflectionEffect;
public bool isReflecting;
private bool hasOrbHook;
public void Awake()
{
Body = ((Component)this).GetComponent<CharacterBody>();
}
public void OnEnable()
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
if ((AbsorptionMode)AbsorptionType == AbsorptionMode.ProjectilesAndOrbs)
{
OrbManager.AddOrb += new hook_AddOrb(InterceptOrbs);
hasOrbHook = true;
}
}
public void OnDisable()
{
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Expected O, but got Unknown
if (hasOrbHook)
{
OrbManager.AddOrb -= new hook_AddOrb(InterceptOrbs);
hasOrbHook = false;
}
if (Object.op_Implicit((Object)(object)reflectionEffect))
{
Object.Destroy((Object)(object)reflectionEffect);
}
}
public void ActivateReflection()
{
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Expected O, but got Unknown
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
reflectionTimer = ReflectionDuration;
isReflecting = true;
if (NetworkServer.active)
{
EffectData val = new EffectData
{
origin = Body.corePosition,
scale = ReflectionRadius,
rootObject = ((Component)this).gameObject
};
EffectManager.SpawnEffect(ReflectionBubblePrefab, val, true);
}
if (NetworkServer.active)
{
NetworkIdentity component = ((Component)this).GetComponent<NetworkIdentity>();
if (Object.op_Implicit((Object)(object)component))
{
NetMessageExtensions.Send((INetMessage)(object)new SyncJarState(component.netId, isReflecting: true, reflectionTimer), (NetworkDestination)1);
}
}
Util.PlaySound("Play_item_proc_armorReduction_shatter", ((Component)Body).gameObject);
}
public void FixedUpdate()
{
if (!NetworkServer.active)
{
return;
}
if (reflectionTimer > 0f)
{
reflectionTimer -= Time.fixedDeltaTime;
if (reflectionTimer <= 0f)
{
isReflecting = false;
}
AbsorbProjectilesInRadius();
}
if (StoredProjectiles.Count > 0)
{
storageDecayTimer += Time.fixedDeltaTime;
if (storageDecayTimer >= 1f)
{
storageDecayTimer = 0f;
DecayOldProjectiles();
}
}
if (StoredProjectiles.Count >= (int)MaxStoredProjectiles)
{
FireAllProjectiles();
}
}
private void AbsorbProjectilesInRadius()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
List<ProjectileController> list = new List<ProjectileController>();
new SphereSearch
{
radius = ReflectionRadius,
mask = ((LayerIndex)(ref LayerIndex.projectile)).mask,
origin = Body.corePosition
}.RefreshCandidates().FilterCandidatesByProjectileControllers().GetProjectileControllers(list);
foreach (ProjectileController item in list)
{
if (CanAbsorbProjectile(item))
{
AbsorbProjectile(item);
}
}
}
private bool CanAbsorbProjectile(ProjectileController proj)
{
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Invalid comparison between Unknown and I4
if (!Object.op_Implicit((Object)(object)proj.owner))
{
return false;
}
CharacterBody component = proj.owner.GetComponent<CharacterBody>();
if (!Object.op_Implicit((Object)(object)component))
{
return false;
}
if ((Object)(object)component == (Object)(object)Body)
{
return false;
}
if (component.teamComponent.teamIndex == Body.teamComponent.teamIndex)
{
if ((bool)AllowFriendlyFireAbsorption && (int)FriendlyFireManager.friendlyFireMode > 0)
{
return true;
}
return false;
}
return true;
}
private void AbsorbProjectile(ProjectileController proj)
{
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
ProjectileDamage component = ((Component)proj).GetComponent<ProjectileDamage>();
if (!Object.op_Implicit((Object)(object)component))
{
return;
}
StoredProjectiles.Add(new StoredProjectile
{
Damage = component.damage,
DamageType = DamageTypeCombo.op_Implicit(component.damageType),
DamageColorIndex = component.damageColorIndex,
ProcCoefficient = proj.procCoefficient,
OriginalPrefab = ProjectileCatalog.GetProjectilePrefab(proj.catalogIndex),
TimeStored = Time.time,
WasOrb = false
});
SpawnAbsorbOrb(((Component)proj).transform.position);
Util.PlayAttackSpeedSound("Play_item_proc_crit", ((Component)Body).gameObject, (float)StoredProjectiles.Count * 0.1f);
if (NetworkServer.active)
{
NetworkIdentity component2 = ((Component)this).GetComponent<NetworkIdentity>();
if (Object.op_Implicit((Object)(object)component2))
{
NetMessageExtensions.Send((INetMessage)(object)new SyncJarAbsorption(component2.netId, ((Component)proj).transform.position, StoredProjectiles.Count), (NetworkDestination)1);
}
}
Object.Destroy((Object)(object)((Component)proj).gameObject);
}
private void InterceptOrbs(orig_AddOrb orig, OrbManager self, Orb orb)
{
if (!isReflecting || reflectionTimer <= 0f)
{
orig.Invoke(self, orb);
return;
}
HurtBox orbTarget = GetOrbTarget(orb);
if (!Object.op_Implicit((Object)(object)orbTarget) || !Object.op_Implicit((Object)(object)orbTarget.healthComponent) || !((Object)(object)orbTarget.healthComponent.body == (Object)(object)Body) || !TryAbsorbOrb(orb))
{
orig.Invoke(self, orb);
}
}
private HurtBox GetOrbTarget(Orb orb)
{
DamageOrb val = (DamageOrb)(object)((orb is DamageOrb) ? orb : null);
if (val != null)
{
return ((Orb)val).target;
}
LightningOrb val2 = (LightningOrb)(object)((orb is LightningOrb) ? orb : null);
if (val2 != null)
{
return ((Orb)val2).target;
}
return ((orb is GenericDamageOrb) ? orb : null)?.target;
}
private bool TryAbsorbOrb(Orb orb)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_0115: Unknown result type (might be due to invalid IL or missing references)
//IL_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Unknown result type (might be due to invalid IL or missing references)
//IL_014c: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
float num = 0f;
DamageType damageType = (DamageType)0;
DamageColorIndex damageColorIndex = (DamageColorIndex)0;
float procCoefficient = 1f;
Vector3 val = Vector3.zero;
DamageOrb val2 = (DamageOrb)(object)((orb is DamageOrb) ? orb : null);
if (val2 != null)
{
num = val2.damageValue;
damageType = DamageTypeCombo.op_Implicit(val2.orbDamageType);
damageColorIndex = val2.damageColorIndex;
procCoefficient = val2.procCoefficient;
val = ((Orb)val2).origin;
}
else
{
LightningOrb val3 = (LightningOrb)(object)((orb is LightningOrb) ? orb : null);
if (val3 != null)
{
num = val3.damageValue;
damageType = DamageTypeCombo.op_Implicit(val3.damageType);
damageColorIndex = val3.damageColorIndex;
procCoefficient = val3.procCoefficient;
val = ((Orb)val3).origin;
}
else
{
GenericDamageOrb val4 = (GenericDamageOrb)(object)((orb is GenericDamageOrb) ? orb : null);
if (val4 != null)
{
num = val4.damageValue;
damageType = DamageTypeCombo.op_Implicit(val4.damageType);
damageColorIndex = val4.damageColorIndex;
procCoefficient = val4.procCoefficient;
val = ((Orb)val4).origin;
}
}
}
if (num <= 0f)
{
return false;
}
StoredProjectiles.Add(new StoredProjectile
{
Damage = num,
DamageType = damageType,
DamageColorIndex = damageColorIndex,
ProcCoefficient = procCoefficient,
OriginalPrefab = DefaultJarProjectile,
TimeStored = Time.time,
WasOrb = true
});
SpawnAbsorbOrb(val);
Util.PlayAttackSpeedSound("Play_item_proc_crit", ((Component)Body).gameObject, (float)StoredProjectiles.Count * 0.1f);
if (NetworkServer.active)
{
NetworkIdentity component = ((Component)this).GetComponent<NetworkIdentity>();
if (Object.op_Implicit((Object)(object)component))
{
NetMessageExtensions.Send((INetMessage)(object)new SyncJarAbsorption(component.netId, val, StoredProjectiles.Count), (NetworkDestination)1);
}
}
return true;
}
private void SpawnAbsorbOrb(Vector3 origin)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
JarAbsorbOrb jarAbsorbOrb = new JarAbsorbOrb
{
origin = origin,
target = (Object.op_Implicit((Object)(object)JarTransform) ? ((Component)JarTransform).gameObject : ((Component)this).gameObject)
};
OrbManager.instance.AddOrb((Orb)(object)jarAbsorbOrb);
}
public void FireAllProjectiles()
{
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_00db: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_01df: Unknown result type (might be due to invalid IL or missing references)
//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
//IL_0206: Expected O, but got Unknown
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: Unknown result type (might be due to invalid IL or missing references)
//IL_0145: Unknown result type (might be due to invalid IL or missing references)
//IL_0151: Unknown result type (might be due to invalid IL or missing references)
//IL_016b: Unknown result type (might be due to invalid IL or missing references)
//IL_016c: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
//IL_0175: Unknown result type (might be due to invalid IL or missing references)
//IL_017a: Unknown result type (might be due to invalid IL or missing references)
//IL_019e: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
if (StoredProjectiles.Count != 0 && Object.op_Implicit((Object)(object)Body.inputBank))
{
Vector3 val = (Object.op_Implicit((Object)(object)JarTransform) ? JarTransform.position : Body.corePosition);
Vector3 aimDirection = Body.inputBank.aimDirection;
int count = StoredProjectiles.Count;
float num = Mathf.Min(45f, (float)count * 3f);
for (int i = 0; i < count; i++)
{
StoredProjectile storedProjectile = StoredProjectiles[i];
float num2 = Util.Remap((float)i, 0f, (float)(count - 1), 0f - num, num);
float num3 = Mathf.Sin((float)i * 0.5f) * 10f;
Quaternion val2 = Quaternion.Euler(num3, num2, 0f);
Vector3 val3 = val2 * aimDirection;
FireProjectileInfo val4 = default(FireProjectileInfo);
val4.projectilePrefab = storedProjectile.OriginalPrefab ?? DefaultJarProjectile;
val4.damage = storedProjectile.Damage * (float)DamageMultiplier;
val4.damageTypeOverride = DamageTypeCombo.op_Implicit(storedProjectile.DamageType);
val4.damageColorIndex = storedProjectile.DamageColorIndex;
val4.procChainMask = default(ProcChainMask);
val4.owner = ((Component)Body).gameObject;
val4.position = val;
val4.rotation = Util.QuaternionSafeLookRotation(val3);
((FireProjectileInfo)(ref val4)).speedOverride = 120f;
val4.crit = Body.RollCrit();
FireProjectileInfo val5 = val4;
ProjectileManager.instance.FireProjectile(val5);
}
Util.PlaySound("Play_huntress_R_snipe_shoot", ((Component)Body).gameObject);
EffectManager.SpawnEffect(MassFireEffect, new EffectData
{
origin = val,
rotation = Util.QuaternionSafeLookRotation(aimDirection),
scale = count
}, true);
StoredProjectiles.Clear();
isReflecting = false;
reflectionTimer = 0f;
}
}
private void DecayOldProjectiles()
{
float cutoffTime = Time.time - (float)StorageDuration;
int num = StoredProjectiles.RemoveAll((StoredProjectile p) => p.TimeStored < cutoffTime);
if (num > 0)
{
Util.PlaySound("Play_item_proc_chain_lightning_fade", ((Component)Body).gameObject);
}
}
}
public class StoredProjectile
{
public float Damage;
public DamageType DamageType;
public DamageColorIndex DamageColorIndex;
public float ProcCoefficient;
public GameObject OriginalPrefab;
public float TimeStored;
public bool WasOrb;
}
public class JarDisplayController : MonoBehaviour
{
public CharacterBody OwnerBody;
public JarTracker Tracker;
public ParticleSystem SuctionParticles;
public Light GlowLight;
private Material jarMaterial;
private float glowIntensity;
public void Start()
{
GameObject gameObject = ((Component)((Component)this).gameObject.transform.root).gameObject;
CharacterModel component = gameObject.GetComponent<CharacterModel>();
if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.body))
{
OwnerBody = component.body;
}
SuctionParticles = ((Component)this).GetComponentInChildren<ParticleSystem>();
GlowLight = ((Component)this).GetComponentInChildren<Light>();
Renderer component2 = ((Component)this).GetComponent<Renderer>();
if (Object.op_Implicit((Object)(object)component2))
{
jarMaterial = component2.material;
}
}
public void Update()
{
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
//IL_0200: Unknown result type (might be due to invalid IL or missing references)
//IL_0205: Unknown result type (might be due to invalid IL or missing references)
//IL_0210: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: Unknown result type (might be due to invalid IL or missing references)
if (!Object.op_Implicit((Object)(object)OwnerBody))
{
return;
}
if (!Object.op_Implicit((Object)(object)Tracker))
{
Tracker = ((Component)OwnerBody).GetComponent<JarTracker>();
}
if (!Object.op_Implicit((Object)(object)Tracker))
{
return;
}
if (Tracker.reflectionTimer > 0f && Object.op_Implicit((Object)(object)OwnerBody.inputBank))
{
((Component)this).transform.rotation = Quaternion.Slerp(((Component)this).transform.rotation, Util.QuaternionSafeLookRotation(OwnerBody.inputBank.aimDirection), 0.15f);
}
else
{
((Component)this).transform.rotation = Quaternion.Slerp(((Component)this).transform.rotation, Quaternion.identity, 0.1f);
}
if (Object.op_Implicit((Object)(object)SuctionParticles))
{
if (Tracker.reflectionTimer > 0f)
{
if (!SuctionParticles.isPlaying)
{
SuctionParticles.Play();
}
}
else if (SuctionParticles.isPlaying)
{
SuctionParticles.Stop();
}
}
int count = Tracker.StoredProjectiles.Count;
float num = Mathf.Clamp01((float)count / (float)(int)MaxStoredProjectiles);
glowIntensity = Mathf.Lerp(glowIntensity, num, Time.deltaTime * 5f);
if (Object.op_Implicit((Object)(object)GlowLight))
{
GlowLight.intensity = glowIntensity * 2f;
GlowLight.color = Color.Lerp(Color.cyan, Color.red, glowIntensity);
}
if (Object.op_Implicit((Object)(object)jarMaterial))
{
jarMaterial.SetColor("_EmColor", Color.Lerp(Color.cyan, Color.red, glowIntensity) * glowIntensity);
}
}
}
public class JarAbsorbOrb : Orb
{
public GameObject target;
public override void Begin()
{
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Expected O, but got Unknown
((Orb)this).duration = 0.3f;
if (Object.op_Implicit((Object)(object)target) && Object.op_Implicit((Object)(object)JarAbsorbOrbEffect))
{
EffectData val = new EffectData
{
origin = base.origin,
genericFloat = ((Orb)this).duration,
rootObject = target
};
EffectManager.SpawnEffect(JarAbsorbOrbEffect, val, true);
}
}
public override void OnArrival()
{
}
}
public class SyncJarState : INetMessage, ISerializableObject
{
private NetworkInstanceId BodyID;
private bool IsReflecting;
private float Duration;
public SyncJarState()
{
}
public SyncJarState(NetworkInstanceId bodyId, bool isReflecting, float duration)
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
BodyID = bodyId;
IsReflecting = isReflecting;
Duration = duration;
}
public void Serialize(NetworkWriter writer)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
writer.Write(BodyID);
writer.Write(IsReflecting);
writer.Write(Duration);
}
public void Deserialize(NetworkReader reader)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
BodyID = reader.ReadNetworkId();
IsReflecting = reader.ReadBoolean();
Duration = reader.ReadSingle();
}
public void OnReceived()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
if (NetworkServer.active)
{
return;
}
GameObject val = Util.FindNetworkObject(BodyID);
if (Object.op_Implicit((Object)(object)val))
{
JarTracker component = val.GetComponent<JarTracker>();
if (Object.op_Implicit((Object)(object)component) && IsReflecting)
{
component.ActivateReflection();
}
}
}
}
public class SyncJarAbsorption : INetMessage, ISerializableObject
{
private NetworkInstanceId BodyID;
private Vector3 AbsorbPosition;
private int StoredCount;
public SyncJarAbsorption()
{
}
public SyncJarAbsorption(NetworkInstanceId bodyId, Vector3 absorbPosition, int storedCount)
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
BodyID = bodyId;
AbsorbPosition = absorbPosition;
StoredCount = storedCount;
}
public void Serialize(NetworkWriter writer)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
writer.Write(BodyID);
writer.Write(AbsorbPosition);
writer.Write(StoredCount);
}
public void Deserialize(NetworkReader reader)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
BodyID = reader.ReadNetworkId();
AbsorbPosition = reader.ReadVector3();
StoredCount = reader.ReadInt32();
}
public void OnReceived()
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
if (NetworkServer.active)
{
return;
}
GameObject val = Util.FindNetworkObject(BodyID);
if (Object.op_Implicit((Object)(object)val))
{
CharacterBody component = val.GetComponent<CharacterBody>();
JarTracker component2 = val.GetComponent<JarTracker>();
if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component2))
{
JarAbsorbOrb jarAbsorbOrb = new JarAbsorbOrb
{
origin = AbsorbPosition,
target = (Object.op_Implicit((Object)(object)component2.JarTransform) ? ((Component)component2.JarTransform).gameObject : val)
};
OrbManager.instance.AddOrb((Orb)(object)jarAbsorbOrb);
Util.PlayAttackSpeedSound("Play_item_proc_crit", ((Component)component).gameObject, (float)StoredCount * 0.1f);
}
}
}
}
public class ReflectionBubbleController : MonoBehaviour
{
public Transform ParentTransform;
public Animator Animator;
public float Duration;
private float stopwatch;
public void Start()
{
Animator = ((Component)this).GetComponent<Animator>();
EffectComponent component = ((Component)this).GetComponent<EffectComponent>();
if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.effectData.rootObject))
{
ParentTransform = component.effectData.rootObject.transform;
Duration = ReflectionDuration;
}
if (!Object.op_Implicit((Object)(object)ParentTransform))
{
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
public void Update()
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)ParentTransform))
{
((Component)this).transform.position = ParentTransform.position;
((Component)this).transform.localScale = Vector3.one * (float)ReflectionRadius;
}
stopwatch += Time.deltaTime;
if (stopwatch >= Duration)
{
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
}
public static ConfigOption<float> ReflectionDuration;
public static ConfigOption<int> MaxStoredProjectiles;
public static ConfigOption<float> StorageDuration;
public static ConfigOption<float> ReflectionRadius;
public static ConfigOption<float> DamageMultiplier;
public static ConfigOption<AbsorptionMode> AbsorptionType;
public static ConfigOption<bool> AllowFriendlyFireAbsorption;
public static GameObject ItemBodyModelPrefab;
public static GameObject ReflectionBubblePrefab;
public static GameObject JarAbsorbOrbEffect;
public static GameObject MassFireEffect;
public static GameObject DefaultJarProjectile;
public override string EquipmentName => "Jar Of Reshaping";
public override string EquipmentLangTokenName => "JAR_OF_RESHAPING";
public override string EquipmentPickupDesc => "Activate to <style=cIsUtility>absorb nearby projectiles</style>. Activate again to <style=cIsDamage>unleash them all at once</style>.";
public override string EquipmentFullDescription => $"Activate to create a <style=cIsUtility>reflection field</style> for <style=cIsUtility>{ReflectionDuration}s</style> that absorbs projectiles within <style=cIsUtility>{ReflectionRadius}m</style>. " + $"Store up to <style=cIsUtility>{MaxStoredProjectiles}</style> projectiles. " + "Activate again to <style=cIsDamage>fire all stored projectiles</style> in a spread pattern for <style=cIsDamage>" + MathHelpers.FloatToPercentageString(DamageMultiplier) + " damage</style>. " + $"Stored projectiles decay after <style=cIsUtility>{StorageDuration}s</style>.";
public override string EquipmentLore => "[INCIDENT NUMBER 421076]\n[VISUAL RECORDING RECOVERED FROM BLACK BOX ON DERELICT 'UES SAFETY FIRST' ENGINEERING VESSEL. TRANSCRIPT TO FOLLOW]\n\nTerry: Hey Phil, did you see what the boys over in Expeditions brought in?\nTerry: Looks like a pretty ordinary jar right?\nPhil: Yeah, just looks like something you'd find at a <b>housewife's</b> art deco yard sale.\nTerry: Yeah, I thought the same thing, but watch and learn.\nTerry: First, you just hit the bottom of the jar with your palm, and ---\nPhil: Woah! It started glowing and what on Terra is that noise? Is that an alien vacuum cleaner?\nTerry: Far better. Now watch.\n[Terry is seen throwing random objects into the jar and Phil joins him with bewilderment on his face.]\nPhil: That's amazing! Can it do anything else, or is it just a weird vacuum pot?\nTerry: Yeah, if I just squeeze the handle here, it'll empty it all out.\n[Terry is seen squeezing the handles of the jar, but his expression turns to horror a moment later.]\nTerry: Oh hell, oh god. Phil, I just realized I may have thrown in a few mining grenades <b>when we were having fun with it earlier.</b>\nTerry: Quickly! Get <b>your suit</b> on before it---\n[The jar activates, shooting its contents around the room. One of the projectiles hits the hull and explodes, ripping a hole through it moments before the feed is lost.]\n\n[END OF FILE] ";
public override GameObject EquipmentModel => AetheriumPlugin.MainAssets.LoadAsset<GameObject>("PickupJarOfReshaping.prefab");
public override Sprite EquipmentIcon => AetheriumPlugin.MainAssets.LoadAsset<Sprite>("JarOfReshapingIcon.png");
public override float Cooldown => 20f;
public override bool EnigmaCompatible => false;
public override void Init(ConfigFile config)
{
CreateConfig(config);
CreateLang();
CreateNetworking();
CreateEffects();
CreateProjectile();
CreateEquipment();
Hooks();
}
private void CreateConfig(ConfigFile config)
{
ReflectionDuration = config.ActiveBind("Equipment: " + EquipmentName, "Reflection Duration", 3f, "How long the reflection field stays active (in seconds)");
ReflectionRadius = config.ActiveBind("Equipment: " + EquipmentName, "Reflection Radius", 15f, "Radius of the reflection field (in meters)");
MaxStoredProjectiles = config.ActiveBind("Equipment: " + EquipmentName, "Max Stored Projectiles", 20, "Maximum projectiles that can be stored before auto-firing");
StorageDuration = config.ActiveBind("Equipment: " + EquipmentName, "Storage Duration", 30f, "How long projectiles stay stored before decaying (in seconds)");
DamageMultiplier = config.ActiveBind("Equipment: " + EquipmentName, "Damage Multiplier", 1.5f, "Damage multiplier for reflected projectiles (1.5 = 150% damage)");
AbsorptionType = config.ActiveBind("Equipment: " + EquipmentName, "Absorption Mode", AbsorptionMode.ProjectilesAndOrbs, "What types of attacks to absorb. ProjectilesOnly = physical projectiles. ProjectilesAndOrbs = projectiles + orb attacks like lightning and vagrant tracking orbs.");
AllowFriendlyFireAbsorption = config.ActiveBind("Equipment: " + EquipmentName, "Absorb Friendly Fire (Chaos Mode)", defaultValue: false, "If true, can absorb projectiles from allies when Artifact of Chaos is active");
}
private void CreateNetworking()
{
NetworkingAPI.RegisterMessageType<SyncJarState>();
NetworkingAPI.RegisterMessageType<SyncJarAbsorption>();
}
private void CreateEffects()
{
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
//IL_00db: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
ReflectionBubblePrefab = AetheriumPlugin.MainAssets.LoadAsset<GameObject>("JarOfReshapingAbsorbEffect.prefab");
EffectComponent val = ReflectionBubblePrefab.AddComponent<EffectComponent>();
val.parentToReferencedTransform = true;
val.positionAtReferencedTransform = true;
ReflectionBubbleController reflectionBubbleController = ReflectionBubblePrefab.AddComponent<ReflectionBubbleController>();
VFXAttributes val2 = ReflectionBubblePrefab.AddComponent<VFXAttributes>();
val2.vfxIntensity = (VFXIntensity)1;
val2.vfxPriority = (VFXPriority)2;
ReflectionBubblePrefab.AddComponent<NetworkIdentity>();
PrefabAPI.RegisterNetworkPrefab(ReflectionBubblePrefab);
ContentAddition.AddEffect(ReflectionBubblePrefab);
JarAbsorbOrbEffect = AetheriumPlugin.MainAssets.LoadAsset<GameObject>("JarOfReshapingOrb.prefab");
OrbEffect val3 = JarAbsorbOrbEffect.AddComponent<OrbEffect>();
val3.startVelocity1 = new Vector3(-5f, 5f, -5f);
val3.startVelocity2 = new Vector3(5f, 8f, 5f);
val3.endVelocity1 = new Vector3(0f, 0f, 0f);
val3.endVelocity2 = new Vector3(0f, 0f, 0f);
val3.movementCurve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f);
JarAbsorbOrbEffect.AddComponent<EffectComponent>();
JarAbsorbOrbEffect.AddComponent<VFXAttributes>();
JarAbsorbOrbEffect.AddComponent<NetworkIdentity>();
PrefabAPI.RegisterNetworkPrefab(JarAbsorbOrbEffect);
ContentAddition.AddEffect(JarAbsorbOrbEffect);
OrbAPI.AddOrb(typeof(JarAbsorbOrb));
MassFireEffect = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/MuzzleFlashes/MuzzleflashSmokeRing");
}
private void CreateProjectile()
{
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
DefaultJarProjectile = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/MageFireboltBasic"), "JarOfReshapingDefaultProjectile", true);
ProjectileController component = DefaultJarProjectile.GetComponent<ProjectileController>();
component.procCoefficient = 1f;
ProjectileDamage component2 = DefaultJarProjectile.GetComponent<ProjectileDamage>();
component2.damageType = DamageTypeCombo.op_Implicit((DamageType)0);
ProjectileSimple component3 = DefaultJarProjectile.GetComponent<ProjectileSimple>();
if (Object.op_Implicit((Object)(object)component3))
{
component3.desiredForwardSpeed = 100f;
}
PrefabAPI.RegisterNetworkPrefab(DefaultJarProjectile);
ContentAddition.AddProjectile(DefaultJarProjectile);
}
public override ItemDisplayRuleDict CreateItemDisplayRules()
{
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Expected O, but got Unknown
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_013c: Unknown result type (might be due to invalid IL or missing references)
//IL_0152: Unknown result type (might be due to invalid IL or missing references)
//IL_0157: Unknown result type (might be due to invalid IL or missing references)
//IL_016d: Unknown result type (might be due to invalid IL or missing references)
//IL_0172: Unknown result type (might be due to invalid IL or missing references)
//IL_0177: Unknown result type (might be due to invalid IL or missing references)
//IL_0178: Unknown result type (might be due to invalid IL or missing references)
//IL_0193: Unknown result type (might be due to invalid IL or missing references)
//IL_019c: Unknown result type (might be due to invalid IL or missing references)
//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
//IL_0200: Unknown result type (might be due to invalid IL or missing references)
//IL_0205: Unknown result type (might be due to invalid IL or missing references)
//IL_020a: Unknown result type (might be due to invalid IL or missing references)
//IL_020b: Unknown result type (might be due to invalid IL or missing references)
//IL_0226: Unknown result type (might be due to invalid IL or missing references)
//IL_022f: Unknown result type (might be due to invalid IL or missing references)
//IL_025d: Unknown result type (might be due to invalid IL or missing references)
//IL_0262: Unknown result type (might be due to invalid IL or missing references)
//IL_0278: Unknown result type (might be due to invalid IL or missing references)
//IL_027d: Unknown result type (might be due to invalid IL or missing references)
//IL_0293: Unknown result type (might be due to invalid IL or missing references)
//IL_0298: Unknown result type (might be due to invalid IL or missing references)
//IL_029d: Unknown result type (might be due to invalid IL or missing references)
//IL_029e: Unknown result type (might be due to invalid IL or missing references)
//IL_02b9: Unknown result type (might be due to invalid IL or missing references)
//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
//IL_030b: Unknown result type (might be due to invalid IL or missing references)
//IL_0310: Unknown result type (might be due to invalid IL or missing references)
//IL_0326: Unknown result type (might be due to invalid IL or missing references)
//IL_032b: Unknown result type (might be due to invalid IL or missing references)
//IL_0330: Unknown result type (might be due to invalid IL or missing references)
//IL_0331: Unknown result type (might be due to invalid IL or missing references)
//IL_034c: Unknown result type (might be due to invalid IL or missing references)
//IL_0355: Unknown result type (might be due to invalid IL or missing references)
//IL_0383: Unknown result type (might be due to invalid IL or missing references)
//IL_0388: Unknown result type (might be due to invalid IL or missing references)
//IL_039e: Unknown result type (might be due to invalid IL or missing references)
//IL_03a3: Unknown result type (might be due to invalid IL or missing references)
//IL_03b9: Unknown result type (might be due to invalid IL or missing references)
//IL_03be: Unknown result type (might be due to invalid IL or missing references)
//IL_03c3: Unknown result type (might be due to invalid IL or missing references)
//IL_03c4: Unknown result type (might be due to invalid IL or missing references)
//IL_03df: Unknown result type (might be due to invalid IL or missing references)
//IL_03e8: Unknown result type (might be due to invalid IL or missing references)
//IL_0416: Unknown result type (might be due to invalid IL or missing references)
//IL_041b: Unknown result type (might be due to invalid IL or missing references)
//IL_0431: Unknown result type (might be due to invalid IL or missing references)
//IL_0436: Unknown result type (might be due to invalid IL or missing references)
//IL_044c: Unknown result type (might be due to invalid IL or missing references)
//IL_0451: Unknown result type (might be due to invalid IL or missing references)
//IL_0456: Unknown result type (might be due to invalid IL or missing references)
//IL_0457: Unknown result type (might be due to invalid IL or missing references)
//IL_0472: Unknown result type (might be due to invalid IL or missing references)
//IL_047b: Unknown result type (might be due to invalid IL or missing references)
//IL_04a9: Unknown result type (might be due to invalid IL or missing references)
//IL_04ae: Unknown result type (might be due to invalid IL or missing references)
//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
//IL_04c9: Unknown result type (might be due to invalid IL or missing references)
//IL_04df: Unknown result type (might be due to invalid IL or missing references)
//IL_04e4: Unknown result type (might be due to invalid IL or missing references)
//IL_04e9: Unknown result type (might be due to invalid IL or missing references)
//IL_04ea: Unknown result type (might be due to invalid IL or missing references)
//IL_0505: Unknown result type (might be due to invalid IL or missing references)
//IL_050e: Unknown result type (might be due to invalid IL or missing references)
//IL_053c: Unknown result type (might be due to invalid IL or missing references)
//IL_0541: Unknown result type (might be due to invalid IL or missing references)
//IL_0557: Unknown result type (might be due to invalid IL or missing references)
//IL_055c: Unknown result type (might be due to invalid IL or missing references)
//IL_0572: Unknown result type (might be due to invalid IL or missing references)
//IL_0577: Unknown result type (might be due to invalid IL or missing references)
//IL_057c: Unknown result type (might be due to invalid IL or missing references)
//IL_057d: Unknown result type (might be due to invalid IL or missing references)
//IL_0598: Unknown result type (might be due to invalid IL or missing references)
//IL_05a1: Unknown result type (might be due to invalid IL or missing references)
//IL_05cf: Unknown result type (might be due to invalid IL or missing references)
//IL_05d4: Unknown result type (might be due to invalid IL or missing references)
//IL_05ea: Unknown result type (might be due to invalid IL or missing references)
//IL_05ef: Unknown result type (might be due to invalid IL or missing references)
//IL_0605: Unknown result type (might be due to invalid IL or missing references)
//IL_060a: Unknown result type (might be due to invalid IL or missing references)
//IL_060f: Unknown result type (might be due to invalid IL or missing references)
//IL_0610: Unknown result type (might be due to invalid IL or missing references)
//IL_062b: Unknown result type (might be due to invalid IL or missing references)
//IL_0634: Unknown result type (might be due to invalid IL or missing references)
//IL_0662: Unknown result type (might be due to invalid IL or missing references)
//IL_0667: Unknown result type (might be due to invalid IL or missing references)
//IL_067d: Unknown result type (might be due to invalid IL or missing references)
//IL_0682: Unknown result type (might be due to invalid IL or missing references)
//IL_0698: Unknown result type (might be due to invalid IL or missing references)
//IL_069d: Unknown result type (might be due to invalid IL or missing references)
//IL_06a2: Unknown result type (might be due to invalid IL or missing references)
//IL_06a3: Unknown result type (might be due to invalid IL or missing references)
//IL_06be: Unknown result type (might be due to invalid IL or missing references)
//IL_06c7: Unknown result type (might be due to invalid IL or missing references)
//IL_06f5: Unknown result type (might be due to invalid IL or missing references)
//IL_06fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0710: Unknown result type (might be due to invalid IL or missing references)
//IL_0715: Unknown result type (might be due to invalid IL or missing references)
//IL_072b: Unknown result type (might be due to invalid IL or missing references)
//IL_0730: Unknown result type (might be due to invalid IL or missing references)
//IL_0735: Unknown result type (might be due to invalid IL or missing references)
//IL_0736: Unknown result type (might be due to invalid IL or missing references)
//IL_0751: Unknown result type (might be due to invalid IL or missing references)
//IL_075a: Unknown result type (might be due to invalid IL or missing references)
//IL_0788: Unknown result type (might be due to invalid IL or missing references)
//IL_078d: Unknown result type (might be due to invalid IL or missing references)
//IL_07a3: Unknown result type (might be due to invalid IL or missing references)
//IL_07a8: Unknown result type (might be due to invalid IL or missing references)
//IL_07be: Unknown result type (might be due to invalid IL or missing references)
//IL_07c3: Unknown result type (might be due to invalid IL or missing references)
//IL_07c8: Unknown result type (might be due to invalid IL or missing references)
//IL_07c9: Unknown result type (might be due to invalid IL or missing references)
//IL_07e4: Unknown result type (might be due to invalid IL or missing references)
//IL_07ed: Unknown result type (might be due to invalid IL or missing references)
//IL_081b: Unknown result type (might be due to invalid IL or missing references)
//IL_0820: Unknown result type (might be due to invalid IL or missing references)
//IL_0836: Unknown result type (might be due to invalid IL or missing references)
//IL_083b: Unknown result type (might be due to invalid IL or missing references)
//IL_0851: Unknown result type (might be due to invalid IL or missing references)
//IL_0856: Unknown result type (might be due to invalid IL or missing references)
//IL_085b: Unknown result type (might be due to invalid IL or missing references)
//IL_085c: Unknown result type (might be due to invalid IL or missing references)
//IL_0877: Unknown result type (might be due to invalid IL or missing references)
//IL_0880: Unknown result type (might be due to invalid IL or missing references)
//IL_08ae: Unknown result type (might be due to invalid IL or missing references)
//IL_08b3: Unknown result type (might be due to invalid IL or missing references)
//IL_08c9: Unknown result type (might be due to invalid IL or missing references)
//IL_08ce: Unknown result type (might be due to invalid IL or missing references)
//IL_08e4: Unknown result type (might be due to invalid IL or missing references)
//IL_08e9: Unknown result type (might be due to invalid IL or missing references)
//IL_08ee: Unknown result type (might be due to invalid IL or missing references)
//IL_08ef: Unknown result type (might be due to invalid IL or missing references)
//IL_090a: Unknown result type (might be due to invalid IL or missing references)
//IL_0913: Unknown result type (might be due to invalid IL or missing references)
//IL_0941: Unknown result type (might be due to invalid IL or missing references)
//IL_0946: Unknown result type (might be due to invalid IL or missing references)
//IL_095c: Unknown result type (might be due to invalid IL or missing references)
//IL_0961: Unknown result type (might be due to invalid IL or missing references)
//IL_0977: Unknown result type (might be due to invalid IL or missing references)
//IL_097c: Unknown result type (might be due to invalid IL or missing references)
//IL_0981: Unknown result type (might be due to invalid IL or missing references)
//IL_0982: Unknown result type (might be due to invalid IL or missing references)
//IL_099d: Unknown result type (might be due to invalid IL or missing references)
//IL_09a6: Unknown result type (might be due to invalid IL or missing references)
//IL_09d4: Unknown result type (might be due to invalid IL or missing references)
//IL_09d9: Unknown result type (might be due to invalid IL or missing references)
//IL_09ef: Unknown result type (might be due to invalid IL or missing references)
//IL_09f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0a0a: Unknown result type (might be due to invalid IL or missing references)
//IL_0a0f: Unknown result type (might be due to invalid IL or missing references)
//IL_0a14: Unknown result type (might be due to invalid IL or missing references)
//IL_0a15: Unknown result type (might be due to invalid IL or missing references)
//IL_0a30: Unknown result type (might be due to invalid IL or missing references)
//IL_0a39: Unknown result type (might be due to invalid IL or missing references)
//IL_0a67: Unknown result type (might be due to invalid IL or missing references)
//IL_0a6c: Unknown result type (might be due to invalid IL or missing references)
//IL_0a82: Unknown result type (might be due to invalid IL or missing references)
//IL_0a87: Unknown result type (might be due to invalid IL or missing references)
//IL_0a9d: Unknown result type (might be due to invalid IL or missing references)
//IL_0aa2: Unknown result type (might be due to invalid IL or missing references)
//IL_0aa7: Unknown result type (might be due to invalid IL or missing references)
//IL_0aa8: Unknown result type (might be due to invalid IL or missing references)
ItemBodyModelPrefab = AetheriumPlugin.MainAssets.LoadAsset<GameObject>("DisplayJarOfReshaping.prefab");
ItemBodyModelPrefab.AddComponent<NetworkIdentity>();
ItemBodyModelPrefab.AddComponent<JarDisplayController>();
ItemDisplay val = ItemBodyModelPrefab.AddComponent<ItemDisplay>();
val.rendererInfos = ItemHelpers.ItemDisplaySetup(ItemBodyModelPrefab);
PrefabAPI.RegisterNetworkPrefab(ItemBodyModelPrefab);
ItemDisplayRuleDict val2 = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
val2.Add("mdlCommandoDualies", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-1f, 0f, -1f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.1f, 0.1f, 0.1f)
}
});
val2.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-1f, 0f, -1f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.1f, 0.1f, 0.1f)
}
});
val2.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(8f, -4f, 8f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.8f, 0.8f, 0.8f)
}
});
val2.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-1f, 0f, -1f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.1f, 0.1f, 0.1f)
}
});
val2.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-1f, 0f, -1f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.1f, 0.1f, 0.1f)
}
});
val2.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-1f, 0f, -1f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.1f, 0.1f, 0.1f)
}
});
val2.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-2f, 0f, -2f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.2f, 0.2f, 0.2f)
}
});
val2.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-1f, 0f, -1f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.1f, 0.1f, 0.1f)
}
});
val2.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-8f, 0f, 8f),
localAngles = new Vector3(0f, 0f, 180f),
localScale = new Vector3(0.8f, 0.8f, 0.8f)
}
});
val2.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-1f, 0f, -1f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.1f, 0.1f, 0.1f)
}
});
val2.Add("mdlBandit2", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-0.33104f, -0.4353f, -1.00016f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.1f, 0.1f, 0.1f)
}
});
val2.Add("mdlEquipmentDrone", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "GunBarrelBase",
localPos = new Vector3(-1E-05f, 0f, 0.96976f),
localAngles = new Vector3(0f, 0f, 30f),
localScale = new Vector3(0.16696f, 0.16696f, 0.16696f)
}
});
val2.Add("CHEF", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Body",
localPos = new Vector3(-0.0308f, 0.0329f, -0.01119f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.00232f, 0.00232f, 0.00232f)
}
});
val2.Add("RobPaladinBody", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-1.29645f, 1.3155f, -0.30915f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.11874f, 0.11874f, 0.11874f)
}
});
val2.Add("RedMistBody", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Root",
localPos = new Vector3(-0.67258f, 1.58933f, -0.38069f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.06588f, 0.06588f, 0.06588f)
}
});
val2.Add("ArbiterBody", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-0.508f, 0.72586f, -0.32426f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.05863f, 0.05863f, 0.05863f)
}
});
val2.Add("EnforcerBody", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(-1.44097f, 1.03557f, 1.77019f),
localAngles = new Vector3(0f, 0f, 0f),
localScale = new Vector3(0.0893f, 0.0893f, 0.0893f)
}
});
val2.Add("NemesisEnforcerBody", (ItemDisplayRule[])(object)new ItemDisplayRule[1]
{
new ItemDisplayRule
{
ruleType = (ItemDisplayRuleType)0,
followerPrefab = ItemBodyModelPrefab,
childName = "Base",
localPos = new Vector3(0.01155f, 0.03353f, -0.02529f),
localAngles = new Vector3(0f, 270f, 0f),
localScale = new Vector3(0.00192f, 0.00192f, 0.00192f)
}
});
return val2;
}
public override void Hooks()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
CharacterBody.OnEquipmentGained += new hook_OnEquipmentGained(AddJarTracker);
CharacterBody.OnEquipmentLost += new hook_OnEquipmentLost(RemoveJarTracker);
}
private void AddJarTracker(orig_OnEquipmentGained orig, CharacterBody self, EquipmentDef equipmentDef)
{
orig.Invoke(self, equipmentDef);
if ((Object)(object)equipmentDef == (Object)(object)EquipmentDef && Object.op_Implicit((Object)(object)self) && !Object.op_Implicit((Object)(object)((Component)self).GetComponent<JarTracker>()))
{
((Component)self).gameObject.AddComponent<JarTracker>();
}
}
private void RemoveJarTracker(orig_OnEquipmentLost orig, CharacterBody self, EquipmentDef equipmentDef)
{
orig.Invoke(self, equipmentDef);
if ((Object)(object)equipmentDef == (Object)(object)EquipmentDef && Object.op_Implicit((Object)(object)self))
{
JarTracker component = ((Component)self).GetComponent<JarTracker>();
if (Object.op_Implicit((Object)(object)component))
{
Object.Destroy((Object)(object)component);
}
}
}
protected override bool ActivateEquipment(EquipmentSlot slot)
{
if (!Object.op_Implicit((Object)(object)slot.characterBody))
{
return false;
}
JarTracker jarTracker = ((Component)slot.characterBody).GetComponent<JarTracker>();
if (!Object.op_Implicit((Object)(object)jarTracker))
{
jarTracker = ((Component)slot.characterBody).gameObject.AddComponent<JarTracker>();
}
Transform val = slot.FindActiveEquipmentDisplay();
if (Object.op_Implicit((Object)(object)val))
{
jarTracker.JarTransform = val;
}
if (jarTracker.StoredProjectiles.Count > 0)
{
jarTracker.FireAllProjectiles();
return true;
}
jarTracker.ActivateReflection();
return false;
}
}
public static class EasingFunction
{
public enum Ease
{
EaseInQuad,
EaseOutQuad,
EaseInOutQuad,
EaseInCubic,
EaseOutCubic,
EaseInOutCubic,
EaseInQuart,
EaseOutQuart,
EaseInOutQuart,
EaseInQuint,
EaseOutQuint,
EaseInOutQuint,
EaseInSine,
EaseOutSine,
EaseInOutSine,
EaseInExpo,
EaseOutExpo,
EaseInOutExpo,
EaseInCirc,
EaseOutCirc,
EaseInOutCirc,
Linear,
Spring,
EaseInBounce,
EaseOutBounce,
EaseInOutBounce,
EaseInBack,
EaseOutBack,
EaseInOutBack,
EaseInElastic,
EaseOutElastic,
EaseInOutElastic
}
public delegate float Function(float s, float e, float v);
private const float NATURAL_LOG_OF_2 = 0.6931472f;
public static float Linear(float start, float end, float value)
{
return Mathf.Lerp(start, end, value);
}
public static float Spring(float start, float end, float value)
{
value = Mathf.Clamp01(value);
value = (Mathf.Sin(value * MathF.PI * (0.2f + 2.5f * value * value * value)) * Mathf.Pow(1f - value, 2.2f) + value) * (1f + 1.2f * (1f - value));
return start + (end - start) * value;
}
public static float EaseInQuad(float start, float end, float value)
{
end -= start;
return end * value * value + start;
}
public static float EaseOutQuad(float start, float end, float value)
{
end -= start;
return (0f - end) * value * (value - 2f) + start;
}
public static float EaseInOutQuad(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return end * 0.5f * value * value + start;
}
value -= 1f;
return (0f - end) * 0.5f * (value * (value - 2f) - 1f) + start;
}
public static float EaseInCubic(float start, float end, float value)
{
end -= start;
return end * value * value * value + start;
}
public static float EaseOutCubic(float start, float end, float value)
{
value -= 1f;
end -= start;
return end * (value * value * value + 1f) + start;
}
public static float EaseInOutCubic(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return end * 0.5f * value * value * value + start;
}
value -= 2f;
return end * 0.5f * (value * value * value + 2f) + start;
}
public static float EaseInQuart(float start, float end, float value)
{
end -= start;
return end * value * value * value * value + start;
}
public static float EaseOutQuart(float start, float end, float value)
{
value -= 1f;
end -= start;
return (0f - end) * (value * value * value * value - 1f) + start;
}
public static float EaseInOutQuart(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return end * 0.5f * value * value * value * value + start;
}
value -= 2f;
return (0f - end) * 0.5f * (value * value * value * value - 2f) + start;
}
public static float EaseInQuint(float start, float end, float value)
{
end -= start;
return end * value * value * value * value * value + start;
}
public static float EaseOutQuint(float start, float end, float value)
{
value -= 1f;
end -= start;
return end * (value * value * value * value * value + 1f) + start;
}
public static float EaseInOutQuint(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return end * 0.5f * value * value * value * value * value + start;
}
value -= 2f;
return end * 0.5f * (value * value * value * value * value + 2f) + start;
}
public static float EaseInSine(float start, float end, float value)
{
end -= start;
return (0f - end) * Mathf.Cos(value * (MathF.PI / 2f)) + end + start;
}
public static float EaseOutSine(float start, float end, float value)
{
end -= start;
return end * Mathf.Sin(value * (MathF.PI / 2f)) + start;
}
public static float EaseInOutSine(float start, float end, float value)
{
end -= start;
return (0f - end) * 0.5f * (Mathf.Cos(MathF.PI * value) - 1f) + start;
}
public static float EaseInExpo(float start, float end, float value)
{
end -= start;
return end * Mathf.Pow(2f, 10f * (value - 1f)) + start;
}
public static float EaseOutExpo(float start, float end, float value)
{
end -= start;
return end * (0f - Mathf.Pow(2f, -10f * value) + 1f) + start;
}
public static float EaseInOutExpo(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return end * 0.5f * Mathf.Pow(2f, 10f * (value - 1f)) + start;
}
value -= 1f;
return end * 0.5f * (0f - Mathf.Pow(2f, -10f * value) + 2f) + start;
}
public static float EaseInCirc(float start, float end, float value)
{
end -= start;
return (0f - end) * (Mathf.Sqrt(1f - value * value) - 1f) + start;
}
public static float EaseOutCirc(float start, float end, float value)
{
value -= 1f;
end -= start;
return end * Mathf.Sqrt(1f - value * value) + start;
}
public static float EaseInOutCirc(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return (0f - end) * 0.5f * (Mathf.Sqrt(1f - value * value) - 1f) + start;
}
value -= 2f;
return end * 0.5f * (Mathf.Sqrt(1f - value * value) + 1f) + start;
}
public static float EaseInBounce(float start, float end, float value)
{
end -= start;
float num = 1f;
return end - EaseOutBounce(0f, end, num - value) + start;
}
public static float EaseOutBounce(float start, float end, float value)
{
value /= 1f;
end -= start;
if (value < 0.36363637f)
{
return end * (7.5625f * value * value) + start;
}
if (value < 0.72727275f)
{
value -= 0.54545456f;
return end * (7.5625f * value * value + 0.75f) + start;
}
if ((double)value < 0.9090909090909091)
{
value -= 0.8181818f;
return end * (7.5625f * value * value + 0.9375f) + start;
}
value -= 21f / 22f;
return end * (7.5625f * value * value + 63f / 64f) + start;
}
public static float EaseInOutBounce(float start, float end, float value)
{
end -= start;
float num = 1f;
if (value < num * 0.5f)
{
return EaseInBounce(0f, end, value * 2f) * 0.5f + start;
}
return EaseOutBounce(0f, end, value * 2f - num) * 0.5f + end * 0.5f + start;
}
public static float EaseInBack(float start, float end, float value)
{
end -= start;
value /= 1f;
float num = 1.70158f;
return end * value * value * ((num + 1f) * value - num) + start;
}
public static float EaseOutBack(float start, float end, float value)
{
float num = 1.70158f;
end -= start;
value -= 1f;
return end * (value * value * ((num + 1f) * value + num) + 1f) + start;
}
public static float EaseInOutBack(float start, float end, float value)
{
float num = 1.70158f;
end -= start;
value /= 0.5f;
if (value < 1f)
{
num *= 1.525f;
return end * 0.5f * (value * value * ((num + 1f) * value - num)) + start;
}
value -= 2f;
num *= 1.525f;
return end * 0.5f * (value * value * ((num + 1f) * value + num) + 2f) + start;
}
public static float EaseInElastic(float start, float end, float value)
{
end -= start;
float num = 1f;
float num2 = num * 0.3f;
float num3 = 0f;
if (value == 0f)
{
return start;
}
if ((value /= num) == 1f)
{
return start + end;
}
float num4;
if (num3 == 0f || num3 < Mathf.Abs(end))
{
num3 = end;
num4 = num2 / 4f;
}
else
{
num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3);
}
return 0f - num3 * Mathf.Pow(2f, 10f * (value -= 1f)) * Mathf.Sin((value * num - num4) * (MathF.PI * 2f) / num2) + start;
}
public static float EaseOutElastic(float start, float end, float value)
{
end -= start;
float num = 1f;
float num2 = num * 0.3f;
float num3 = 0f;
if (value == 0f)
{
return start;
}
if ((value /= num) == 1f)
{
return start + end;
}
float num4;
if (num3 == 0f || num3 < Mathf.Abs(end))
{
num3 = end;
num4 = num2 * 0.25f;
}
else
{
num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3);
}
return num3 * Mathf.Pow(2f, -10f * value) * Mathf.Sin((value * num - num4) * (MathF.PI * 2f) / num2) + end + start;
}
public static float EaseInOutElastic(float start, float end, float value)
{
end -= start;
float num = 1f;
float num2 = num * 0.3f;
float num3 = 0f;
if (value == 0f)
{
return start;
}
if ((value /= num * 0.5f) == 2f)
{
return start + end;
}
float num4;
if (num3 == 0f || num3 < Mathf.Abs(end))
{
num3 = end;
num4 = num2 / 4f;
}
else
{
num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3);
}
if (value < 1f)
{
return -0.5f * (num3 * Mathf.Pow(2f, 10f * (value -= 1f)) * Mathf.Sin((value * num - num4) * (MathF.PI * 2f) / num2)) + start;
}
return num3 * Mathf.Pow(2f, -10f * (value -= 1f)) * Mathf.Sin((value * num - num4) * (MathF.PI * 2f) / num2) * 0.5f + end + start;
}
public static float LinearD(float start, float end, float value)
{
return end - start;
}
public static float EaseInQuadD(float start, float end, float value)
{
return 2f * (end - start) * value;
}
public static float EaseOutQuadD(float start, float end, float value)
{
end -= start;
return (0f - end) * value - end * (value - 2f);
}
public static float EaseInOutQuadD(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return end * value;
}
value -= 1f;
return end * (1f - value);
}
public static float EaseInCubicD(float start, float end, float value)
{
return 3f * (end - start) * value * value;
}
public static float EaseOutCubicD(float start, float end, float value)
{
value -= 1f;
end -= start;
return 3f * end * value * value;
}
public static float EaseInOutCubicD(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return 1.5f * end * value * value;
}
value -= 2f;
return 1.5f * end * value * value;
}
public static float EaseInQuartD(float start, float end, float value)
{
return 4f * (end - start) * value * value * value;
}
public static float EaseOutQuartD(float start, float end, float value)
{
value -= 1f;
end -= start;
return -4f * end * value * value * value;
}
public static float EaseInOutQuartD(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return 2f * end * value * value * value;
}
value -= 2f;
return -2f * end * value * value * value;
}
public static float EaseInQuintD(float start, float end, float value)
{
return 5f * (end - start) * value * value * value * value;
}
public static float EaseOutQuintD(float start, float end, float value)
{
value -= 1f;
end -= start;
return 5f * end * value * value * value * value;
}
public static float EaseInOutQuintD(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return 2.5f * end * value * value * value * value;
}
value -= 2f;
return 2.5f * end * value * value * value * value;
}
public static float EaseInSineD(float start, float end, float value)
{
return (end - start) * 0.5f * MathF.PI * Mathf.Sin(MathF.PI / 2f * value);
}
public static float EaseOutSineD(float start, float end, float value)
{
end -= start;
return MathF.PI / 2f * end * Mathf.Cos(value * (MathF.PI / 2f));
}
public static float EaseInOutSineD(float start, float end, float value)
{
end -= start;
return end * 0.5f * MathF.PI * Mathf.Sin(MathF.PI * value);
}
public static float EaseInExpoD(float start, float end, float value)
{
return 6.931472f * (end - start) * Mathf.Pow(2f, 10f * (value - 1f));
}
public static float EaseOutExpoD(float start, float end, float value)
{
end -= start;
return 3.465736f * end * Mathf.Pow(2f, 1f - 10f * value);
}
public static float EaseInOutExpoD(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return 3.465736f * end * Mathf.Pow(2f, 10f * (value - 1f));
}
value -= 1f;
return 3.465736f * end / Mathf.Pow(2f, 10f * value);
}
public static float EaseInCircD(float start, float end, float value)
{
return (end - start) * value / Mathf.Sqrt(1f - value * value);
}
public static float EaseOutCircD(float start, float end, float value)
{
value -= 1f;
end -= start;
return (0f - end) * value / Mathf.Sqrt(1f - value * value);
}
public static float EaseInOutCircD(float start, float end, float value)
{
value /= 0.5f;
end -= start;
if (value < 1f)
{
return end * value / (2f * Mathf.Sqrt(1f - value * value));
}
value -= 2f;
return (0f - end) * value / (2f * Mathf.Sqrt(1f - value * value));
}
public static float EaseInBounceD(float start, float end, float value)
{
end -= start;
float num = 1f;
return EaseOutBounceD(0f, end, num - value);
}
public static float EaseOutBounceD(float start, float end, float value)
{
value /= 1f;
end -= start;
if (value < 0.36363637f)
{
return 2f * end * 7.5625f * value;
}
if (value < 0.72727275f)
{
value -= 0.54545456f;
return 2f * end * 7.5625f * value;
}
if ((double)value < 0.9090909090909091)
{
value -= 0.8181818f;
return 2f * end * 7.5625f * value;
}
value -= 21f / 22f;
return 2f * end * 7.5625f * value;
}
public static float EaseInOutBounceD(float start, float end, float value)
{
end -= start;
float num = 1f;
if (value < num * 0.5f)
{
return EaseInBounceD(0f, end, value * 2f) * 0.5f;
}
return EaseOutBounceD(0f, end, value * 2f - num) * 0.5f;
}
public static float EaseInBackD(float start, float end, float value)
{
float num = 1.70158f;
return 3f * (num + 1f) * (end - start) * value * value - 2f * num * (end - start) * value;
}
public static float EaseOutBackD(float start, float end, float value)
{
float num = 1.70158f;
end -= start;
value -= 1f;
return end * ((num + 1f) * value * value + 2f * value * ((num + 1f) * value + num));
}
public static float EaseInOutBackD(float start, float end, float value)
{
float num = 1.70158f;
end -= start;
value /= 0.5f;
if (value < 1f)
{
num *= 1.525f;
return 0.5f * end * (num + 1f) * value * value + end * value * ((num + 1f) * value - num);
}
value -= 2f;
num *= 1.525f;
return 0.5f * end * ((num + 1f) * value * value + 2f * value * ((num + 1f) * value + num));
}
public static float EaseInElasticD(float start, float end, float value)
{
return EaseOutElasticD(start, end, 1f - value);
}
public static float EaseOutElasticD(float start, float end, float value)
{
end -= start;
float num = 1f;
float num2 = num * 0.3f;
float num3 = 0f;
float num4;
if (num3 == 0f || num3 < Mathf.Abs(end))
{
num3 = end;
num4 = num2 * 0.25f;
}
else
{
num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3);
}
return num3 * MathF.PI * num * Mathf.Pow(2f, 1f - 10f * value) * Mathf.Cos(MathF.PI * 2f * (num * value - num4) / num2) / num2 - 3.465736f * num3 * Mathf.Pow(2f, 1f - 10f * value) * Mathf.Sin(MathF.PI * 2f * (num * value - num4) / num2);
}
public static float EaseInOutElasticD(float start, float end, float value)
{
end -= start;
float num = 1f;
float num2 = num * 0.3f;
float num3 = 0f;
float num4;
if (num3 == 0f || num3 < Mathf.Abs(end))
{
num3 = end;
num4 = num2 / 4f;
}
else
{
num4 = num2 / (MathF.PI * 2f) * Mathf.Asin(end / num3);
}
if (value < 1f)
{
value -= 1f;
return -3.465736f * num3 * Mathf.Pow(2f, 10f * value) * Mathf.Sin(MathF.PI * 2f * (num * value - 2f) / num2) - num3 * MathF.PI * num * Mathf.Pow(2f, 10f * value) * Mathf.Cos(MathF.PI * 2f * (num * value - num4) / num2) / num2;
}
value -= 1f;
return num3 * MathF.PI * num * Mathf.Cos(MathF.PI * 2f * (num * value - num4) / num2) / (num2 * Mathf.Pow(2f, 10f * value)) - 3.465736f * num3 * Mathf.Sin(MathF.PI * 2f * (num * value - num4) / num2) / Mathf.Pow(2f, 10f * value);
}
public static float SpringD(float start, float end, float value)
{
value = Mathf.Clamp01(value);
end -= start;
return end * (6f * (1f - value) / 5f + 1f) * (-2.2f * Mathf.Pow(1f - value, 1.2f) * Mathf.Sin(MathF.PI * value * (2.5f * value * value * value + 0.2f)) + Mathf.Pow(1f - value, 2.2f) * (MathF.PI * (2.5f * value * value * value + 0.2f) + 23.561945f * value * value * value) * Mathf.Cos(MathF.PI * value * (2.5f * value * value * value + 0.2f)) + 1f) - 6f * end * (Mathf.Pow(1f - value, 2.2f) * Mathf.Sin(MathF.PI * value * (2.5f * value * value * value + 0.2f)) + value / 5f);
}
public static Function GetEasingFunction(Ease easingFunction)
{
return easingFunction switch
{
Ease.EaseInQuad => EaseInQuad,
Ease.EaseOutQuad => EaseOutQuad,
Ease.EaseInOutQuad => EaseInOutQuad,
Ease.EaseInCubic => EaseInCubic,
Ease.EaseOutCubic => EaseOutCubic,
Ease.EaseInOutCubic => EaseInOutCubic,
Ease.EaseInQuart => EaseInQuart,
Ease.EaseOutQuart => EaseOutQuart,
Ease.EaseInOutQuart => EaseInOutQuart,
Ease.EaseInQuint => EaseInQuint,
Ease.EaseOutQuint => EaseOutQuint,
Ease.EaseInOutQuint => EaseInOutQuint,
Ease.EaseInSine => EaseInSine,
Ease.EaseOutSine => EaseOutSine,
Ease.EaseInOutSine => EaseInOutSine,
Ease.EaseInExpo => EaseInExpo,
Ease.EaseOutExpo => EaseOutExpo,
Ease.EaseInOutExpo => EaseInOutExpo,
Ease.EaseInCirc => EaseInCirc,
Ease.EaseOutCirc => EaseOutCirc,
Ease.EaseInOutCirc => EaseInOutCirc,
Ease.Linear => Linear,
Ease.Spring => Spring,
Ease.EaseInBounce => EaseInBounce,
Ease.EaseOutBounce => EaseOutBounce,
Ease.EaseInOutBounce => EaseInOutBounce,
Ease.EaseInBack => EaseInBack,
Ease.EaseOutBack => EaseOutBack,
Ease.EaseInOutBack => EaseInOutBack,
Ease.EaseInElastic => EaseInElastic,
Ease.EaseOutElastic => EaseOutElastic,
Ease.EaseInOutElastic => EaseInOutElastic,
_ => null,
};
}
public static Function GetEasingFunctionDerivative(Ease easingFunction)
{
return easingFunction switch
{
Ease.EaseInQuad => EaseInQuadD,
Ease.EaseOutQuad => EaseOutQuadD,
Ease.EaseInOutQuad => EaseInOutQuadD,
Ease.EaseInCubic => EaseInCubicD,
Ease.EaseOutCubic => EaseOutCubicD,
Ease.EaseInOutCubic => EaseInOutCubicD,
Ease.EaseInQuart => EaseInQuartD,
Ease.EaseOutQuart => EaseOutQuartD,
Ease.EaseInOutQuart => EaseInOutQuartD,
Ease.EaseInQuint => EaseInQuintD,
Ease.EaseOutQuint => EaseOutQuintD,
Ease.EaseInOutQuint => EaseInOutQuintD,
Ease.EaseInSine => EaseInSineD,
Ease.EaseOutSine => EaseOutSineD,
Ease.EaseInOutSine => EaseInOutSineD,
Ease.EaseInExpo => EaseInExpoD,
Ease.EaseOutExpo => EaseOutExpoD,
Ease.EaseInOutExpo => EaseInOutExpoD,
Ease.EaseInCirc => EaseInCircD,
Ease.EaseOutCirc => EaseOutCircD,
Ease.EaseInOutCirc => EaseInOutCircD,
Ease.Linear => LinearD,
Ease.Spring => SpringD,
Ease.EaseInBounce => EaseInBounceD,
Ease.EaseOutBounce => EaseOutBounceD,
Ease.EaseInOutBounce => EaseInOutBounceD,
Ease.EaseInBack => EaseInBackD,
Ease.EaseOutBack => EaseOutBackD,
Ease.EaseInOutBack => EaseInOutBackD,
Ease.EaseInElastic => EaseInElasticD,
Ease.EaseOutElastic => EaseOutElasticD,
Ease.EaseInOutElastic => EaseInOutElasticD,
_ => null,
};
}
}
public class BellRingingEffect : NetworkBehaviour
{
public CharacterBody Attacker;
public float Radius;
public ParticleSystem BellParticleSystem;
public void Start()
{
BellParticleSystem = ((Component)this).GetComponentInChildren<ParticleSystem>();
}
public void RingBell()
{
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: Expected O, but got Unknown
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_011d: Unknown result type (might be due to invalid IL or missing references)
//IL_0122: Unknown result type (might be due to invalid IL or missing references)
//IL_0127: Unknown result type (might be due to invalid IL or missing references)
BellParticleSystem.Play();
if (NetworkServer.active)
{
GameObject gameObject = ((Component)((Component)this).gameObject.transform.Find("EffectArea")).gameObject;
EntitySoundManager.EmitSoundServer(AkEventIdArg.op_Implicit(BellTotem.BellRingingSound.akId), ((Component)this).gameObject);
EffectData val = new EffectData
{
origin = gameObject.transform.position,
rotation = gameObject.transform.rotation,
scale = BellTotem.RadiusOfBellRinging
};
EffectManager.SpawnEffect(BellTotem.BellSoundwaveEffect, val, true);
? val2 = new BlastAttack
{
attacker = (Object.op_Implicit((Object)(object)Attacker) ? ((Component)Attacker).gameObject : null),
position = gameObject.transform.position,
damageType = DamageTypeCombo.op_Implicit((DamageType)32),
baseForce = BellTotem.ForceOfBellRinging,
radius = BellTotem.RadiusOfBellRinging,
inflictor = gameObject
};
? val3 = val2;
int num;
if (!Object.op_Implicit((Object)(object)Attacker))
{
num = 1;
val2 = num;
num = (int)val2;
}
else
{
val2 = Attacker.teamComponent.teamIndex;
num = (int)val2;
}
((BlastAttack)val3).teamIndex = (TeamIndex)val2;
((BlastAttack)num).Fire();
}
}
private void UNetVersion()
{
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
bool result = default(bool);
return result;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
}
}
public class BellTotemDisappearEffect : NetworkBehaviour
{
public void PlayImpactEffect()
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Expected O, but got Unknown
if (NetworkServer.active)
{
EffectData val = new EffectData
{
origin = ((Component)this).gameObject.transform.Find("Base").position,
rotation = ((Component)this).gameObject.transform.rotation
};
EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impactEffects/SpawnLemurian"), val, true);
}
}
private void UNetVersion()
{
}
public override bool OnSerialize(NetworkWriter writer, bool forceAll)
{
bool result = default(bool);
return result;
}
public override void OnDeserialize(NetworkReader reader, bool initialState)
{
}
}
public class ChildLocatorCustom : MonoBehaviour
{
[Serializable]
public struct NameTransformPair
{
public string name;
public Transform transform;
}
[SerializeField]
public NameTransformPair[] transformPairs;
}
[AddComponentMenu("Dynamic Bone/Dynamic Bone")]
public class DynamicBone : MonoBehaviour
{
public enum UpdateMode
{
Normal,
AnimatePhysics,
UnscaledTime
}
public enum FreezeAxis
{
None,
X,
Y,
Z
}
private class Particle
{
public Transform m_Transform;
public int m_ParentIndex = -1;
public float m_Damping;
public float m_Elasticity;
public float m_Stiffness;
public float m_Inert;
public float m_Radius;
public float m_BoneLength;
public Vector3 m_Position = Vector3.zero;
public Vector3 m_PrevPosition = Vector3.zero;
public Vector3 m_EndOffset = Vector3.zero;
public Vector3 m_InitLocalPosition = Vector3.zero;
public Quaternion m_InitLocalRotation = Quaternion.identity;
}
public Transform m_Root;
public float m_UpdateRate = 60f;
public UpdateMode m_UpdateMode;
[Range(0f, 1f)]
public float m_Damping = 0.1f;
public AnimationCurve m_DampingDistrib;
[Range(0f, 1f)]
public float m_Elasticity = 0.1f;
public AnimationCurve m_ElasticityDistrib;
[Range(0f, 1f)]
public float m_Stiffness = 0.1f;
public AnimationCurve m_StiffnessDistrib;
[Range(0f, 1f)]
public float m_Inert;
public AnimationCurve m_InertDistrib;
public float m_Radius;
public AnimationCurve m_RadiusDistrib;
public float m_EndLength;
public Vector3 m_EndOffset = Vector3.zero;
public Vector3 m_Gravity = Vector3.zero;
public Vector3 m_Force = Vector3.zero;
public List<DynamicBoneCollider> m_Colliders;
public List<Transform> m_Exclusions;
public FreezeAxis m_FreezeAxis;
public bool m_DistantDisable;
public Transform m_ReferenceObject;
public float m_DistanceToObject = 20f;
private Vector3 m_LocalGravity = Vector3.zero;
private Vector3 m_ObjectMove = Vector3.zero;
private Vector3 m_ObjectPrevPosition = Vector3.zero;
private float m_BoneTotalLength;
private float m_ObjectScale = 1f;
private float m_Time;
private float m_Weight = 1f;
private bool m_DistantDisabled;
private List<Particle> m_Particles = new List<Particle>();
private void Start()
{
SetupParticles();
}
private void FixedUpdate()
{
if (m_UpdateMode == UpdateMode.AnimatePhysics)
{
PreUpdate();
}
}
private void Update()
{
if (m_UpdateMode != UpdateMode.AnimatePhysics)
{
PreUpdate();
}
}
private void LateUpdate()
{
if (m_DistantDisable)
{
CheckDistance();
}
if (m_Weight > 0f && (!m_DistantDisable || !m_DistantDisabled))
{
float deltaTime = Time.deltaTime;
UpdateDynamicBones(deltaTime);
}
}
private void PreUpdate()
{
if (m_Weight > 0f && (!m_DistantDisable || !m_DistantDisabled))
{
InitTransforms();
}
}
private void CheckDistance()
{
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_0052: Unknown result type (might be due to invalid IL or missing references)
Transform val = m_ReferenceObject;
if ((Object)(object)val == (Object)null && (Object)(object)Camera.main != (Object)null)
{
val = ((Component)Camera.main).transform;
}
if (!((Object)(object)val != (Object)null))
{
return;
}
Vector3 val2 = val.position - ((Component)this).transform.position;
bool flag = ((Vector3)(ref val2)).sqrMagnitude > m_DistanceToObject * m_DistanceToObject;
if (flag != m_DistantDisabled)
{
if (!flag)
{
ResetParticlesPosition();
}
m_DistantDisabled = flag;
}
}
private void OnEnable()
{
ResetParticlesPosition();
}
private void OnDisable()
{
InitTransforms();
}
private void OnValidate()
{
m_UpdateRate = Mathf.Max(m_UpdateRate, 0f);
m_Damping = Mathf.Clamp01(m_Damping);
m_Elasticity = Mathf.Clamp01(m_Elasticity);
m_Stiffness = Mathf.Clamp01(m_Stiffness);
m_Inert = Mathf.Clamp01(m_Inert);
m_Radius = Mathf.Max(m_Radius, 0f);
if (Application.isEditor && Application.isPlaying)
{
InitTransforms();
SetupParticles();
}
}
private void OnDrawGizmosSelected()
{
//IL_0052: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
if (!((Behaviour)this).enabled || (Object)(object)m_Root == (Object)null)
{
return;
}
if (Application.isEditor && !Application.isPlaying && ((Component)this).transform.hasChanged)
{
InitTransforms();
SetupParticles();
}
Gizmos.color = Color.white;
for (int i = 0; i < m_Particles.Count; i++)
{
Particle particle = m_Particles[i];
if (particle.m_ParentIndex >= 0)
{
Particle particle2 = m_Particles[particle.m_ParentIndex];
Gizmos.DrawLine(particle.m_Position, particle2.m_Position);
}
if (particle.m_Radius > 0f)
{
Gizmos.DrawWireSphere(particle.m_Position, particle.m_Radius * m_ObjectScale);
}
}
}
public void SetWeight(float w)
{
if (m_Weight != w)
{
if (w == 0f)
{
InitTransforms();
}
else if (m_Weight == 0f)
{
ResetParticlesPosition();
}
m_Weight = w;
}
}
public float GetWeight()
{
return m_Weight;
}
private void UpdateDynamicBones(float t)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)m_Root == (Object)null)
{
return;
}
m_ObjectScale = Mathf.Abs(((Component)this).transform.lossyScale.x);
m_ObjectMove = ((Component)this).transform.position - m_ObjectPrevPosition;
m_ObjectPrevPosition = ((Component)this).transform.position;
int num = 1;
if (m_UpdateRate > 0f)
{
float num2 = 1f / m_UpdateRate;
m_Time += t;
num = 0;
while (m_Time >= num2)
{
m_Time -= num2;
if (++num >= 3)
{
m_Time = 0f;
break;
}
}
}
if (num > 0)
{
for (int i = 0; i < num; i++)
{
UpdateParticles1();
UpdateParticles2();
m_ObjectMove = Vector3.zero;
}
}
else
{
SkipUpdateParticles();
}
ApplyParticlesToTransforms();
}
private void SetupParticles()
{
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
m_Particles.Clear();
if ((Object)(object)m_Root == (Object)null)
{
return;
}
m_LocalGravity = m_Root.InverseTransformDirection(m_Gravity);
m_ObjectScale = Mathf.Abs(((Component)this).transform.lossyScale.x);
m_ObjectPrevPosition = ((Component)this).transform.position;
m_ObjectMove = Vector3.zero;
m_BoneTotalLength = 0f;
AppendParticles(m_Root, -1, 0f);
for (int i = 0; i < m_Particles.Count; i++)
{
Particle particle = m_Particles[i];
particle.m_Damping = m_Damping;
particle.m_Elasticity = m_Elasticity;
particle.m_Stiffness = m_Stiffness;
particle.m_Inert = m_Inert;
particle.m_Radius = m_Radius;
if (m_BoneTotalLength > 0f)
{
float num = particle.m_BoneLength / m_BoneTotalLength;
if (m_DampingDistrib != null && m_DampingDistrib.keys.Length != 0)
{
particle.m_Damping *= m_DampingDistrib.Evaluate(num);
}
if (m_ElasticityDistrib != null && m_ElasticityDistrib.keys.Length != 0)
{
particle.m_Elasticity *= m_ElasticityDistrib.Evaluate(num);
}
if (m_StiffnessDistrib != null && m_StiffnessDistrib.keys.Length != 0)
{
particle.m_Stiffness *= m_StiffnessDistrib.Evaluate(num);
}
if (m_InertDistrib != null && m_InertDistrib.keys.Length != 0)
{
particle.m_Inert *= m_InertDistrib.Evaluate(num);
}
if (m_RadiusDistrib != null && m_RadiusDistrib.keys.Length != 0)
{
particle.m_Radius *= m_RadiusDistrib.Evaluate(num);
}
}
particle.m_Damping = Mathf.Clamp01(particle.m_Damping);
particle.m_Elasticity = Mathf.Clamp01(particle.m_Elasticity);
particle.m_Stiffness = Mathf.Clamp01(particle.m_Stiffness);
particle.m_Inert = Mathf.Clamp01(particle.m_Inert);
particle.m_Radius = Mathf.Max(particle.m_Radius, 0f);
}
}
private void AppendParticles(Transform b, int parentIndex, float boneLength)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_00f7: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
//IL_0112: Unknown result type (might be due to invalid IL or missing references)
//IL_011d: Unknown result type (might be due to invalid IL or missing references)
//IL_0122: Unknown result type (might be due to invalid IL or missing references)
//IL_0127: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: Unknown result type (might be due to invalid IL or missing references)
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_0155: Unknown result type (might be due to invalid IL or missing references)
//IL_015b: Unknown result type (might be due to invalid IL or missing references)
//IL_0160: Unknown result type (might be due to invalid IL or missing references)
//IL_0165: Unknown result type (might be due to invalid IL or missing references)
//IL_0267: Unknown result type (might be due to invalid IL or missing references)
//IL_026c: Unknown result type (might be due to invalid IL or missing references)
Particle particle = new Particle();
particle.m_Transform = b;
particle.m_ParentIndex = parentIndex;
Vector3 val;
if ((Object)(object)b != (Object)nu