Decompiled source of CustomWands v0.13.0
JujutsuWand.dll
Decompiled 8 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using DungeonGeneration; using FMOD.Studio; using FMODUnity; using HarmonyLib; using Mirror; using RootMotion.Dynamics; using TMPro; using UnityEngine; using UnityEngine.AI; using UnityEngine.Animations; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; using UnityEngine.InputSystem.Utilities; using UnityEngine.Playables; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; using UnityEngine.SceneManagement; using UnityEngine.UI; using UnityEngine.VFX; using Utilities; using YAPYAP; using YAPYAP.Npc.CatacombMerchant; using YAPYAP.Npc.Fairy; using YAPYAP.Npc.Ghost; using YAPYAP.Npc.HealFairy; using YAPYAP.Npc.Jester; using YAPYAP.Npc.Shopkeeper; using YAPYAP.Utilities; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("Mirror")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public string AssemblyName { get; } public IgnoresAccessChecksToAttribute(string assemblyName) { AssemblyName = assemblyName; } } } namespace JujutsuWand { internal class AnimSpeed : MonoBehaviour { private Animator anim; private float original = 1f; private readonly Dictionary<string, float> factors = new Dictionary<string, float>(); public static void Set(Animator a, string key, float factor) { if ((Object)(object)a == (Object)null || string.IsNullOrEmpty(key)) { return; } try { AnimSpeed animSpeed = ((Component)a).GetComponent<AnimSpeed>(); if ((Object)(object)animSpeed == (Object)null) { animSpeed = ((Component)a).gameObject.AddComponent<AnimSpeed>(); animSpeed.anim = a; animSpeed.original = a.speed; } animSpeed.factors[key] = Mathf.Max(0f, factor); animSpeed.Apply(); } catch (Exception) { } } public static void Clear(Animator a, string key) { if ((Object)(object)a == (Object)null) { return; } try { AnimSpeed component = ((Component)a).GetComponent<AnimSpeed>(); if (!((Object)(object)component == (Object)null) && component.factors.Remove(key)) { if (component.factors.Count == 0) { component.anim.speed = component.original; Object.Destroy((Object)(object)component); } else { component.Apply(); } } } catch (Exception) { } } public static void SetAll(Component root, string key, float factor) { if (!((Object)(object)root == (Object)null)) { Animator[] componentsInChildren = root.GetComponentsInChildren<Animator>(true); for (int i = 0; i < componentsInChildren.Length; i++) { Set(componentsInChildren[i], key, factor); } } } public static void ClearAll(Component root, string key) { if (!((Object)(object)root == (Object)null)) { Animator[] componentsInChildren = root.GetComponentsInChildren<Animator>(true); for (int i = 0; i < componentsInChildren.Length; i++) { Clear(componentsInChildren[i], key); } } } private void Apply() { if ((Object)(object)anim == (Object)null) { return; } float num = original; foreach (float value in factors.Values) { num *= value; } anim.speed = num; } private void LateUpdate() { if ((Object)(object)anim == (Object)null) { Object.Destroy((Object)(object)this); } else { Apply(); } } } internal class SpeedBoost : MonoBehaviour { private string key; private Pawn pawn; private ControllerMovementComponent movement; private float addWalk; private float addSprint; private float until; private bool applied; public static void Apply(Pawn pawn, string key, float multiplier, float duration) { if ((Object)(object)pawn == (Object)null || multiplier <= 1.001f) { return; } SpeedBoost[] components = ((Component)pawn).GetComponents<SpeedBoost>(); foreach (SpeedBoost speedBoost in components) { if (!(speedBoost.key != key)) { speedBoost.until = Mathf.Max(speedBoost.until, Time.time + duration); return; } } SpeedBoost speedBoost2 = ((Component)pawn).gameObject.AddComponent<SpeedBoost>(); speedBoost2.key = key; speedBoost2.Begin(pawn, multiplier, duration); } public static void Remove(Pawn pawn, string key) { if ((Object)(object)pawn == (Object)null) { return; } SpeedBoost[] components = ((Component)pawn).GetComponents<SpeedBoost>(); foreach (SpeedBoost speedBoost in components) { if (speedBoost.key == key) { Object.Destroy((Object)(object)speedBoost); } } } private void Begin(Pawn pawn, float multiplier, float duration) { this.pawn = pawn; until = Time.time + duration; movement = (((Object)(object)pawn.ControllerStateMachine != (Object)null && (Object)(object)pawn.ControllerStateMachine.MoveJumpState != (Object)null) ? pawn.ControllerStateMachine.MoveJumpState.MovementComponent : null); if (movement == null || movement._settings == null) { Plugin.Log.LogWarning((object)"Couldn't find your movement settings to change your speed."); Object.Destroy((Object)(object)this); return; } float walkSpeed = movement._settings.walkSpeed; float sprintSpeed = movement._settings.sprintSpeed; addWalk = walkSpeed * (multiplier - 1f); addSprint = (sprintSpeed - walkSpeed) * (multiplier - 1f); ControllerMovementComponent obj = movement; obj.AdditiveWalkSpeed += addWalk; ControllerMovementComponent obj2 = movement; obj2.AdditiveSprintSpeed += addSprint; if ((Object)(object)pawn.Blackboard != (Object)null && pawn.Blackboard.IsSprinting) { ControllerMovementComponent obj3 = movement; obj3._speed += addSprint; } applied = true; } private void Update() { if (Time.time >= until || (Object)(object)pawn == (Object)null || pawn.IsDead) { Object.Destroy((Object)(object)this); } } private void OnDestroy() { if (applied && movement != null) { ControllerMovementComponent obj = movement; obj.AdditiveWalkSpeed -= addWalk; ControllerMovementComponent obj2 = movement; obj2.AdditiveSprintSpeed -= addSprint; if ((Object)(object)pawn != (Object)null && (Object)(object)pawn.Blackboard != (Object)null && pawn.Blackboard.IsSprinting) { ControllerMovementComponent obj3 = movement; obj3._speed -= addSprint; } applied = false; } } } [DefaultExecutionOrder(-900)] internal class PawnScaleFx : MonoBehaviour { private const float BodyHeight = 1.85f; private Pawn pawn; private float target; private float current; private float until; private bool squeeze; private float nextProbe; private float fit = 99f; private float ragdollScale; private float settledSince; public static float Of(Pawn pawn) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) PawnScaleFx pawnScaleFx = (((Object)(object)pawn != (Object)null) ? ((Component)pawn).GetComponent<PawnScaleFx>() : null); if (!((Object)(object)pawnScaleFx != (Object)null)) { if (!((Object)(object)pawn != (Object)null)) { return 1f; } return ((Component)pawn).transform.localScale.y; } return pawnScaleFx.current; } public static void Apply(Pawn pawn, float scale, float duration) { if ((Object)(object)pawn == (Object)null) { return; } PawnScaleFx pawnScaleFx = ((Component)pawn).GetComponent<PawnScaleFx>() ?? ((Component)pawn).gameObject.AddComponent<PawnScaleFx>(); pawnScaleFx.pawn = pawn; pawnScaleFx.target = Mathf.Clamp(scale, 0.1f, 4f); pawnScaleFx.until = Time.time + duration; pawnScaleFx.squeeze = ((NetworkBehaviour)pawn).isLocalPlayer && pawnScaleFx.target > 1.05f; pawnScaleFx.current = pawnScaleFx.target; pawnScaleFx.ragdollScale = pawnScaleFx.target; Set(pawn, pawnScaleFx.target, ragdollToo: true); try { pawn.View.SpawnMagicPoof(); } catch (Exception) { } } public static void End(Pawn pawn) { PawnScaleFx pawnScaleFx = (((Object)(object)pawn != (Object)null) ? ((Component)pawn).GetComponent<PawnScaleFx>() : null); if ((Object)(object)pawnScaleFx != (Object)null) { Object.Destroy((Object)(object)pawnScaleFx); } } private static float Normal(Pawn pawn) { if (!pawn.IsShrunk) { return 1f; } return Mathf.Max(0.1f, pawn.shrunkSize); } private static void Set(Pawn pawn, float s, bool ragdollToo) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) ((Component)pawn).transform.localScale = new Vector3(s, s, s); if (!ragdollToo) { return; } try { if ((Object)(object)pawn.View != (Object)null && (Object)(object)pawn.View.PuppetMaster != (Object)null) { Rigidbody puppetRootRigidbody = pawn.View.PuppetRootRigidbody; bool activeSelf = ((Component)puppetRootRigidbody).gameObject.activeSelf; if (activeSelf) { ((Component)puppetRootRigidbody).gameObject.SetActive(false); } ((Component)puppetRootRigidbody).transform.localScale = new Vector3(s, s, s); if (activeSelf) { ((Component)puppetRootRigidbody).gameObject.SetActive(true); } } } catch (Exception ex) { Plugin.Log.LogWarning((object)("Couldn't resize the player's ragdoll: " + ex.Message)); } } private void Update() { if ((Object)(object)pawn == (Object)null || pawn.IsDead || Time.time >= until) { Object.Destroy((Object)(object)this); } } private void FixedUpdate() { if (squeeze && !((Object)(object)pawn == (Object)null)) { if (Time.time >= nextProbe) { nextProbe = Time.time + 0.1f; fit = Probe(); } float num = Mathf.Clamp(fit, 1f, target); float num2 = ((num < current) ? 6f : 0.8f); float num3 = Mathf.MoveTowards(current, num, num2 * Time.fixedDeltaTime); if (Mathf.Abs(num3 - current) > 0.0001f) { current = num3; Set(pawn, current, ragdollToo: false); settledSince = Time.time; } else if (Mathf.Abs(current - ragdollScale) > 0.12f && Time.time - settledSince > 0.3f && !Ragdolled()) { Set(pawn, current, ragdollToo: true); ragdollScale = current; } } } private bool Ragdolled() { try { return (Object)(object)pawn.Blackboard != (Object)null && pawn.Blackboard.IsRagdollMode; } catch (Exception) { return true; } } private float Probe() { //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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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_0078: 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_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_009d: 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_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_00b9: 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_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: 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_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_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_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: 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_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) Vector3 position = ((Component)pawn).transform.position; Vector3 val = (((Object)(object)pawn.Rigidbody != (Object)null) ? pawn.Rigidbody.linearVelocity : Vector3.zero); val.y = 0f; Vector3 normalized; if (!(((Vector3)(ref val)).sqrMagnitude > 0.25f)) { Vector3 val2 = DomainHelpers.Flat(((Component)pawn).transform.forward); normalized = ((Vector3)(ref val2)).normalized; } else { normalized = ((Vector3)(ref val)).normalized; } Vector3 val3 = normalized; float num = 99f; float reach = 1.85f * target + 0.6f; for (int i = 0; i < 4; i++) { float num2 = Combat.HeadroomAbove(position + val3 * ((float)i * 0.45f * target) + Vector3.up * 0.5f, ((Component)pawn).transform, reach) + 0.5f; num = Mathf.Min(num, (num2 - 0.15f) / 1.85f); } Vector3 val4 = Vector3.Cross(Vector3.up, val3); Vector3 val5 = position + val3 * (0.6f * target) + Vector3.up * 0.9f; float num3 = Combat.FreeDistance(val5, val4, 1.5f * target, 0.05f, ((Component)pawn).transform); float num4 = Combat.FreeDistance(val5, -val4, 1.5f * target, 0.05f, ((Component)pawn).transform); float num5 = num3 + num4; if (num5 < 1.4f * target) { num = Mathf.Min(num, (num5 - 0.1f) / 0.7f); } return num; } private void OnDestroy() { if ((Object)(object)pawn == (Object)null) { return; } try { Set(pawn, Normal(pawn), ragdollToo: true); pawn.View.SpawnMagicPoof(); } catch (Exception) { } } } [DefaultExecutionOrder(-500)] internal class VoiceFx : MonoBehaviour { private Pawn pawn; private float pitch; private float wobble; private float until; public static void Apply(Pawn pawn, float pitch, float wobble, float duration) { if (!((Object)(object)pawn == (Object)null)) { VoiceFx obj = ((Component)pawn).GetComponent<VoiceFx>() ?? ((Component)pawn).gameObject.AddComponent<VoiceFx>(); obj.pawn = pawn; obj.pitch = Mathf.Clamp(pitch, -1f, 1f); obj.wobble = Mathf.Clamp01(wobble); obj.until = Time.time + duration; } } public static void End(Pawn pawn) { VoiceFx voiceFx = (((Object)(object)pawn != (Object)null) ? ((Component)pawn).GetComponent<VoiceFx>() : null); if ((Object)(object)voiceFx != (Object)null) { Object.Destroy((Object)(object)voiceFx); } } private void Update() { if ((Object)(object)pawn == (Object)null || pawn.IsDead || Time.time >= until) { Object.Destroy((Object)(object)this); } else if (!((Object)(object)pawn.Voice == (Object)null)) { pawn.Voice.SetPitchEffect(pitch); if (wobble > 0f) { pawn.Voice.SetWobbleEffect(wobble); } } } } internal class ThirdPersonHold : MonoBehaviour { private readonly Dictionary<string, float> holds = new Dictionary<string, float>(); private Pawn pawn; private bool active; private float nextCheck; public static void Hold(Pawn pawn, string key, float duration) { if (!((Object)(object)pawn == (Object)null) && ((NetworkBehaviour)pawn).isLocalPlayer && !((Object)(object)pawn.PawnCamera == (Object)null)) { ThirdPersonHold obj = ((Component)pawn).GetComponent<ThirdPersonHold>() ?? ((Component)pawn).gameObject.AddComponent<ThirdPersonHold>(); obj.pawn = pawn; obj.holds[key] = Time.time + duration; obj.Apply(); } } public static void Release(Pawn pawn, string key) { ThirdPersonHold thirdPersonHold = (((Object)(object)pawn != (Object)null) ? ((Component)pawn).GetComponent<ThirdPersonHold>() : null); if (!((Object)(object)thirdPersonHold == (Object)null)) { thirdPersonHold.holds.Remove(key); if (thirdPersonHold.holds.Count == 0) { Object.Destroy((Object)(object)thirdPersonHold); } } } private void Apply() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Invalid comparison between Unknown and I4 try { if (!pawn.PawnCamera.overrideForceViewMode.HasValue) { if ((int)pawn.PawnCamera.CurrentViewMode != 1) { pawn.PawnCamera.SetThirdPersonViewMode(); } active = true; } } catch (Exception ex) { Plugin.Log.LogWarning((object)("Couldn't switch to the third-person view: " + ex.Message)); } } private void Update() { if ((Object)(object)pawn == (Object)null) { Object.Destroy((Object)(object)this); } else { if (Time.time < nextCheck) { return; } nextCheck = Time.time + 0.4f; List<string> list = new List<string>(); foreach (KeyValuePair<string, float> hold in holds) { if (Time.time >= hold.Value) { list.Add(hold.Key); } } foreach (string item in list) { holds.Remove(item); } if (holds.Count == 0 || pawn.IsDead) { Object.Destroy((Object)(object)this); } else { Apply(); } } } private void OnDestroy() { if (!active || (Object)(object)pawn == (Object)null || (Object)(object)pawn.PawnCamera == (Object)null) { return; } try { pawn.PawnCamera.SetCurrentViewModeState(false); } catch (Exception) { } } } internal static class Bones { private class Rig { public Animator Animator; public readonly Dictionary<HumanBodyBones, Transform> Found = new Dictionary<HumanBodyBones, Transform>(); public float CheckedAt; } private static readonly Dictionary<Pawn, Rig> Rigs = new Dictionary<Pawn, Rig>(); private static readonly Dictionary<HumanBodyBones, string[]> Names = new Dictionary<HumanBodyBones, string[]> { { (HumanBodyBones)10, new string[1] { "head" } }, { (HumanBodyBones)9, new string[1] { "neck" } }, { (HumanBodyBones)8, new string[5] { "chest", "spine2", "spine02", "spine1", "spine01" } }, { (HumanBodyBones)7, new string[1] { "spine" } }, { (HumanBodyBones)0, new string[3] { "hips", "pelvis", "hip" } }, { (HumanBodyBones)13, new string[6] { "leftarm", "upperarml", "larmupper", "arml", "lupperarm", "leftupperarm" } }, { (HumanBodyBones)14, new string[6] { "rightarm", "upperarmr", "rarmupper", "armr", "rupperarm", "rightupperarm" } }, { (HumanBodyBones)15, new string[5] { "leftforearm", "forearml", "lowerarml", "lforearm", "leftlowerarm" } }, { (HumanBodyBones)16, new string[5] { "rightforearm", "forearmr", "lowerarmr", "rforearm", "rightlowerarm" } }, { (HumanBodyBones)17, new string[3] { "lefthand", "handl", "lhand" } }, { (HumanBodyBones)18, new string[3] { "righthand", "handr", "rhand" } }, { (HumanBodyBones)1, new string[5] { "leftupleg", "thighl", "upperlegl", "lthigh", "leftupperleg" } }, { (HumanBodyBones)2, new string[5] { "rightupleg", "thighr", "upperlegr", "rthigh", "rightupperleg" } }, { (HumanBodyBones)3, new string[6] { "leftleg", "calfl", "shinl", "lowerlegl", "lcalf", "leftlowerleg" } }, { (HumanBodyBones)4, new string[6] { "rightleg", "calfr", "shinr", "lowerlegr", "rcalf", "rightlowerleg" } }, { (HumanBodyBones)5, new string[3] { "leftfoot", "footl", "lfoot" } }, { (HumanBodyBones)6, new string[3] { "rightfoot", "footr", "rfoot" } } }; public static readonly HumanBodyBones[][] Limbs; public static Animator AnimatorOf(Pawn pawn) { if ((Object)(object)pawn == (Object)null) { return null; } try { PawnView view = pawn.View; if ((Object)(object)view != (Object)null && (Object)(object)view.AnimatorTransform != (Object)null) { Animator component = ((Component)view.AnimatorTransform).GetComponent<Animator>(); if ((Object)(object)component != (Object)null) { return component; } } if ((Object)(object)view != (Object)null && (Object)(object)view.NetworkAnimator != (Object)null && (Object)(object)view.NetworkAnimator.animator != (Object)null) { return view.NetworkAnimator.animator; } } catch (Exception) { } return ((Component)pawn).GetComponentInChildren<Animator>(); } public static Transform Get(Pawn pawn, HumanBodyBones bone) { //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Invalid comparison between Unknown and I4 //IL_00e1: 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) if ((Object)(object)pawn == (Object)null) { return null; } if (!Rigs.TryGetValue(pawn, out var value) || (Object)(object)value.Animator == (Object)null) { Prune(); value = new Rig { Animator = AnimatorOf(pawn) }; Rigs[pawn] = value; } if (value.Found.TryGetValue(bone, out var value2) && (Object)(object)value2 != (Object)null) { return value2; } if (Time.time < value.CheckedAt && value.Found.ContainsKey(bone)) { return null; } value2 = null; try { if ((int)bone == 10 && (Object)(object)pawn.View != (Object)null && (Object)(object)pawn.View.HeadBone != (Object)null) { value2 = pawn.View.HeadBone; } if ((Object)(object)value2 == (Object)null && (Object)(object)value.Animator != (Object)null && value.Animator.isHuman) { value2 = value.Animator.GetBoneTransform(bone); } if ((Object)(object)value2 == (Object)null) { value2 = FindByName(((Object)(object)value.Animator != (Object)null) ? ((Component)value.Animator).transform : ((Component)pawn).transform, bone); } } catch (Exception) { value2 = null; } value.Found[bone] = value2; if ((Object)(object)value2 == (Object)null) { value.CheckedAt = Time.time + 2f; } return value2; } public static Vector3 Position(Pawn pawn, HumanBodyBones bone) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) Transform val = Get(pawn, bone); if ((Object)(object)val != (Object)null) { return val.position; } return Guess(pawn, bone); } public static Vector3 Guess(Pawn pawn, HumanBodyBones bone) { //IL_0016: 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_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: 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_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_004a: 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_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: 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_00af: Expected I4, but got Unknown //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_0260: 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_0268: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_0272: 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_0283: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02b8: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02e1: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: Unknown result type (might be due to invalid IL or missing references) //IL_02fc: Unknown result type (might be due to invalid IL or missing references) //IL_02fe: Unknown result type (might be due to invalid IL or missing references) //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_0309: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_031e: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0107: 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_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: 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_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_032f: 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_0337: Unknown result type (might be due to invalid IL or missing references) //IL_033c: Unknown result type (might be due to invalid IL or missing references) //IL_012b: 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_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0156: 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_0166: 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_0171: 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_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018e: 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_0199: 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_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: 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_01d1: 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_01d9: 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_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0204: 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_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_0237: 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_00b2: Invalid comparison between Unknown and I4 //IL_00f2: 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_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)pawn == (Object)null) { return Vector3.zero; } Transform transform = ((Component)pawn).transform; float num = Mathf.Clamp(transform.lossyScale.y, 0.1f, 4f); Vector3 val = transform.right * num; Vector3 val2 = Vector3.up * num; Vector3 val3 = transform.forward * num; Vector3 position = transform.position; switch ((int)bone) { default: if ((int)bone != 54) { break; } return position + val2 * 1.36f; case 10: return position + val2 * 1.62f; case 9: return position + val2 * 1.48f; case 8: return position + val2 * 1.3f; case 7: return position + val2 * 1.1f; case 0: return position + val2 * 0.95f; case 13: return position + val2 * 1.4f - val * 0.2f; case 14: return position + val2 * 1.4f + val * 0.2f; case 15: return position + val2 * 1.15f - val * 0.3f + val3 * 0.05f; case 16: return position + val2 * 1.15f + val * 0.3f + val3 * 0.05f; case 17: return position + val2 * 0.95f - val * 0.32f + val3 * 0.15f; case 18: return position + val2 * 0.95f + val * 0.32f + val3 * 0.15f; case 1: return position + val2 * 0.9f - val * 0.11f; case 2: return position + val2 * 0.9f + val * 0.11f; case 3: return position + val2 * 0.48f - val * 0.12f; case 4: return position + val2 * 0.48f + val * 0.12f; case 5: return position + val2 * 0.08f - val * 0.12f + val3 * 0.05f; case 6: return position + val2 * 0.08f + val * 0.12f + val3 * 0.05f; case 11: case 12: break; } return position + val2 * 1.1f; } public static Vector3 Facing(Pawn pawn) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_002f: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)pawn == (Object)null) { return Vector3.forward; } Vector3 val = pawn.AimDirection; if (((Vector3)(ref val)).sqrMagnitude < 0.0001f) { val = ((Component)pawn).transform.forward; } return ((Vector3)(ref val)).normalized; } public static Vector3 Mouth(Pawn pawn) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: 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_0009: 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_004a: 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_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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_0097: Unknown result type (might be due to invalid IL or missing references) //IL_0098: 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_00a8: 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_00b2: 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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)pawn == (Object)null) { return Vector3.zero; } Vector3 val = Facing(pawn); float num = Mathf.Clamp(((Component)pawn).transform.lossyScale.y, 0.1f, 4f); if (InFirstPerson(pawn)) { return pawn.LookOrigin + val * 0.35f * num - Vector3.up * 0.22f * num; } Transform val2 = Get(pawn, (HumanBodyBones)10); return (((Object)(object)val2 != (Object)null) ? val2.position : Guess(pawn, (HumanBodyBones)10)) + DomainHelpers.Flat(val) * 0.13f * num - Vector3.up * 0.06f * num; } public static Vector3 Hand(Pawn pawn, bool left) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0021: 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_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_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: 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_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: 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_0066: 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_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)pawn == (Object)null) { return Vector3.zero; } if (InFirstPerson(pawn)) { Vector3 val = Facing(pawn); Vector3 val2 = Vector3.Cross(Vector3.up, val); Vector3 normalized = ((Vector3)(ref val2)).normalized; float num = Mathf.Clamp(((Component)pawn).transform.lossyScale.y, 0.1f, 4f); return pawn.LookOrigin + (val * 0.45f + normalized * (left ? (-0.28f) : 0.28f) - Vector3.up * 0.38f) * num; } return Position(pawn, (HumanBodyBones)(left ? 17 : 18)); } public static bool InFirstPerson(Pawn pawn) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Invalid comparison between Unknown and I4 try { return (Object)(object)pawn != (Object)null && ((NetworkBehaviour)pawn).isLocalPlayer && (Object)(object)pawn.PawnCamera != (Object)null && (int)pawn.PawnCamera.CurrentViewMode == 0; } catch (Exception) { return false; } } private static Transform FindByName(Transform root, HumanBodyBones bone) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)root == (Object)null || !Names.TryGetValue(bone, out var value)) { return null; } Transform result = null; int num = int.MaxValue; Transform[] componentsInChildren = ((Component)root).GetComponentsInChildren<Transform>(true); foreach (Transform val in componentsInChildren) { if ((Object)(object)val == (Object)null || Fx.IsEffectOrCamera(val, root)) { continue; } string text = ((Object)val).name.ToLowerInvariant().Replace(" ", "").Replace("_", "") .Replace(".", "") .Replace(":", "") .Replace("-", ""); for (int j = 0; j < value.Length && j < num; j++) { if ((text.EndsWith(value[j], StringComparison.Ordinal) || text.Contains(value[j])) && !text.Contains("finger") && !text.Contains("thumb") && !text.Contains("index") && !text.Contains("twist") && !text.Contains("end")) { result = val; num = j; break; } } } return result; } private static void Prune() { if (Rigs.Count < 16) { return; } List<Pawn> list = new List<Pawn>(); foreach (KeyValuePair<Pawn, Rig> rig in Rigs) { if ((Object)(object)rig.Key == (Object)null) { list.Add(rig.Key); } } foreach (Pawn item in list) { Rigs.Remove(item); } } static Bones() { HumanBodyBones[][] array = new HumanBodyBones[5][]; HumanBodyBones[] array2 = new HumanBodyBones[5]; RuntimeHelpers.InitializeArray(array2, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); array[0] = (HumanBodyBones[])(object)array2; HumanBodyBones[] array3 = new HumanBodyBones[4]; RuntimeHelpers.InitializeArray(array3, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); array[1] = (HumanBodyBones[])(object)array3; HumanBodyBones[] array4 = new HumanBodyBones[4]; RuntimeHelpers.InitializeArray(array4, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); array[2] = (HumanBodyBones[])(object)array4; HumanBodyBones[] array5 = new HumanBodyBones[4]; RuntimeHelpers.InitializeArray(array5, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); array[3] = (HumanBodyBones[])(object)array5; HumanBodyBones[] array6 = new HumanBodyBones[4]; RuntimeHelpers.InitializeArray(array6, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); array[4] = (HumanBodyBones[])(object)array6; Limbs = array; } } internal sealed class Catalog { private sealed class Entry { public GameObject Prefab; public Spell Spell; public bool OnVoiceWand; } private readonly List<Entry> entries = new List<Entry>(); public readonly Dictionary<string, SpellData> DataByKey = new Dictionary<string, SpellData>(); public readonly List<GameObject> Prefabs = new List<GameObject>(); private bool loggedPrices; public static Catalog Build(YapNetworkManager mgr, bool log) { Catalog catalog = new Catalog(); StringBuilder stringBuilder = new StringBuilder(); foreach (GameObject spawnPrefab in ((NetworkManager)mgr).spawnPrefabs) { if ((Object)(object)spawnPrefab == (Object)null) { continue; } catalog.Prefabs.Add(spawnPrefab); Spell[] componentsInChildren = spawnPrefab.GetComponentsInChildren<Spell>(true); if (componentsInChildren.Length == 0) { continue; } NetworkPuppetWandProp component = spawnPrefab.GetComponent<NetworkPuppetWandProp>(); bool onVoiceWand = (Object)(object)component != (Object)null && component.Spell is VoiceSpell; stringBuilder.Append("\n ").Append(((Object)spawnPrefab).name).Append(((Object)(object)component != (Object)null) ? " [wand]: " : ": "); Spell[] array = componentsInChildren; foreach (Spell val in array) { SpellData spellData = val.SpellData; stringBuilder.Append(((object)val).GetType().Name).Append('(').Append(((Object)(object)spellData != (Object)null) ? spellData.voiceCommandKey : "-") .Append(val.IsSecret ? ",secret" : "") .Append(") "); catalog.entries.Add(new Entry { Prefab = spawnPrefab, Spell = val, OnVoiceWand = onVoiceWand }); if ((Object)(object)spellData != (Object)null && !string.IsNullOrEmpty(spellData.voiceCommandKey) && !catalog.DataByKey.ContainsKey(spellData.voiceCommandKey)) { catalog.DataByKey[spellData.voiceCommandKey] = spellData; } } } if (log) { Plugin.Log.LogInfo((object)("Game spell catalog (prefab: Spell(voice key)):" + stringBuilder)); } return catalog; } public T Spell<T>(string voiceKey = null, bool requireVoiceWand = false) where T : Spell { foreach (Entry entry in entries) { if (!(((object)entry.Spell).GetType() != typeof(T)) && (!requireVoiceWand || entry.OnVoiceWand) && (voiceKey == null || (!((Object)(object)entry.Spell.SpellData == (Object)null) && !(entry.Spell.SpellData.voiceCommandKey != voiceKey)))) { return (T)(object)entry.Spell; } } return default(T); } public GameObject WandWith<T>(string voiceKey = null) where T : Spell { foreach (Entry entry in entries) { if (entry.OnVoiceWand && !(((object)entry.Spell).GetType() != typeof(T)) && (voiceKey == null || (!((Object)(object)entry.Spell.SpellData == (Object)null) && !(entry.Spell.SpellData.voiceCommandKey != voiceKey)))) { return entry.Prefab; } } return null; } public GameObject PrefabNamed(string name) { foreach (GameObject prefab in Prefabs) { if ((Object)(object)prefab != (Object)null && string.Equals(((Object)prefab).name, name, StringComparison.Ordinal)) { return prefab; } } return null; } public int AverageWandPrice() { int num = 0; int num2 = 0; StringBuilder stringBuilder = new StringBuilder(); foreach (GameObject prefab in Prefabs) { if (!((Object)(object)prefab == (Object)null)) { NetworkPuppetWandProp component = prefab.GetComponent<NetworkPuppetWandProp>(); if (!((Object)(object)component == (Object)null) && component.Spell is VoiceSpell && ((NetworkPuppetProp)component).purchasePrice > 0) { num += ((NetworkPuppetProp)component).purchasePrice; num2++; stringBuilder.Append(' ').Append(((Object)prefab).name).Append('=') .Append(((NetworkPuppetProp)component).purchasePrice); } } } int num3 = ((num2 > 0) ? Mathf.RoundToInt((float)num / (float)num2) : 100); if (!loggedPrices) { loggedPrices = true; Plugin.Log.LogInfo((object)$"Game wand prices:{stringBuilder} (average {num3})."); } return num3; } public SpellData Data(params string[] keys) { foreach (string key in keys) { if (DataByKey.TryGetValue(key, out var value) && (Object)(object)value != (Object)null) { return value; } } return null; } } internal enum ShopMode { Rotation, Always } internal static class Cfg { public static ConfigEntry<int> Price; public static ConfigEntry<ShopMode> InShop; public static ConfigEntry<bool> TintWands; public static ConfigEntry<bool> FriendlyFire; public static ConfigEntry<int> InventorySlots; public static ConfigEntry<bool> SpellsBreakValuables; public static ConfigEntry<string> WandName; public static ConfigEntry<string> BoogiePhrase; public static ConfigEntry<string> SlicePhrase; public static ConfigEntry<string> RikaPhrase; public static ConfigEntry<int> BoogieCharges; public static ConfigEntry<float> BoogieRecharge; public static ConfigEntry<int> SliceCharges; public static ConfigEntry<float> SliceRecharge; public static ConfigEntry<float> SliceRange; public static ConfigEntry<float> SliceRadius; public static ConfigEntry<int> SliceEnemyDamage; public static ConfigEntry<int> SlicePlayerDamage; public static ConfigEntry<int> SlicePropDamage; public static ConfigEntry<float> SliceForce; public static ConfigEntry<int> RikaCharges; public static ConfigEntry<float> RikaRecharge; public static ConfigEntry<float> RikaDuration; public static ConfigEntry<float> RikaGuardRadius; public static ConfigEntry<float> RikaStrikeInterval; public static ConfigEntry<int> RikaStrikeDamage; public static ConfigEntry<float> RikaScale; public static ConfigEntry<int> RikaPropDamage; public static ConfigEntry<bool> RikaSmashesObjects; public static ConfigEntry<string> VoidPhrase; public static ConfigEntry<string> ShrinePhrase; public static ConfigEntry<string> CoffinPhrase; public static ConfigEntry<int> VoidCharges; public static ConfigEntry<float> VoidRecharge; public static ConfigEntry<float> VoidRadius; public static ConfigEntry<float> VoidFreezeSeconds; public static ConfigEntry<int> ShrineCharges; public static ConfigEntry<float> ShrineRecharge; public static ConfigEntry<float> ShrineDuration; public static ConfigEntry<float> ShrineRadius; public static ConfigEntry<float> ShrineSlashesPerSecond; public static ConfigEntry<float> ShrineSlashRadius; public static ConfigEntry<int> ShrineEnemyDamage; public static ConfigEntry<int> ShrinePlayerDamage; public static ConfigEntry<int> ShrinePropDamage; public static ConfigEntry<float> ShrineAimAtMonsters; public static ConfigEntry<int> CoffinCharges; public static ConfigEntry<float> CoffinRecharge; public static ConfigEntry<float> CoffinDuration; public static ConfigEntry<float> CoffinRadius; public static ConfigEntry<float> CoffinFireballsPerSecond; public static ConfigEntry<float> CoffinExplosionRadius; public static ConfigEntry<int> CoffinEnemyDamage; public static ConfigEntry<int> CoffinPlayerDamage; public static ConfigEntry<int> CoffinPropDamage; public static ConfigEntry<float> CoffinAimAtMonsters; public static ConfigEntry<string> RonWandName; public static ConfigEntry<string> PatronusPhrase; public static ConfigEntry<string> StupefyPhrase; public static ConfigEntry<string> LumosPhrase; public static ConfigEntry<string> AvadaPhrase; public static ConfigEntry<int> PatronusCharges; public static ConfigEntry<float> PatronusRecharge; public static ConfigEntry<float> PatronusDuration; public static ConfigEntry<float> PatronusWardRadius; public static ConfigEntry<float> PatronusPushForce; public static ConfigEntry<int> StupefyCharges; public static ConfigEntry<float> StupefyRecharge; public static ConfigEntry<int> LumosCharges; public static ConfigEntry<float> LumosRecharge; public static ConfigEntry<float> LumosDuration; public static ConfigEntry<float> LumosHighlightRadius; public static ConfigEntry<int> AvadaCharges; public static ConfigEntry<float> AvadaRecharge; public static ConfigEntry<float> AvadaRange; public static ConfigEntry<string> CrackWandName; public static ConfigEntry<string> CrackHealPhrase; public static ConfigEntry<string> CrackPipePhrase; public static ConfigEntry<string> CrackSpeedPhrase; public static ConfigEntry<string> CrackFlightPhrase; public static ConfigEntry<int> CrackHealCharges; public static ConfigEntry<float> CrackHealRecharge; public static ConfigEntry<int> CrackHealPerSecond; public static ConfigEntry<float> CrackHealDuration; public static ConfigEntry<int> CrackPipeCharges; public static ConfigEntry<float> CrackPipeRecharge; public static ConfigEntry<float> CrackPipeRange; public static ConfigEntry<float> CrackPipeRadius; public static ConfigEntry<int> CrackPipeEnemyDamage; public static ConfigEntry<int> CrackPipePlayerDamage; public static ConfigEntry<int> CrackPipePropDamage; public static ConfigEntry<int> CrackSpeedCharges; public static ConfigEntry<float> CrackSpeedRecharge; public static ConfigEntry<float> CrackSpeedDuration; public static ConfigEntry<float> CrackSpeedMultiplier; public static ConfigEntry<int> CrackFlightCharges; public static ConfigEntry<float> CrackFlightRecharge; public static ConfigEntry<float> CrackFlightVsUpdog; public static ConfigEntry<float> CrackFlightSpeed; public static ConfigEntry<float> CrackFlightClimb; public static ConfigEntry<bool> CrackFlightSecret; public static ConfigEntry<string> NarutoWandName; public static ConfigEntry<string> RasenganPhrase; public static ConfigEntry<string> ChidoriPhrase; public static ConfigEntry<string> RaijinPhrase; public static ConfigEntry<string> ReaperPhrase; public static ConfigEntry<int> RasenganCharges; public static ConfigEntry<float> RasenganRecharge; public static ConfigEntry<float> RasenganRange; public static ConfigEntry<float> RasenganSpeed; public static ConfigEntry<float> RasenganRadius; public static ConfigEntry<int> RasenganEnemyDamage; public static ConfigEntry<int> RasenganPlayerDamage; public static ConfigEntry<int> RasenganPropDamage; public static ConfigEntry<string> ShadowClonePhrase; public static ConfigEntry<string> SagePhrase; public static ConfigEntry<int> ShadowCloneCharges; public static ConfigEntry<float> ShadowCloneRecharge; public static ConfigEntry<int> ShadowCloneCount; public static ConfigEntry<float> ShadowCloneDuration; public static ConfigEntry<float> ShadowCloneAggroRadius; public static ConfigEntry<float> ShadowCloneScale; public static ConfigEntry<int> SageCharges; public static ConfigEntry<float> SageRecharge; public static ConfigEntry<float> SageDuration; public static ConfigEntry<int> SageHealth; public static ConfigEntry<bool> SageSecret; public static ConfigEntry<int> RaijinCharges; public static ConfigEntry<float> RaijinRecharge; public static ConfigEntry<float> RaijinRange; public static ConfigEntry<int> ReaperCharges; public static ConfigEntry<float> ReaperRecharge; public static ConfigEntry<float> ReaperRange; public static ConfigEntry<bool> ReaperSecret; public static ConfigEntry<string> PokeWandName; public static ConfigEntry<string> ThunderPhrase; public static ConfigEntry<string> FireBlastPhrase; public static ConfigEntry<string> HyperBeamPhrase; public static ConfigEntry<string> QuakePhrase; public static ConfigEntry<int> ThunderCharges; public static ConfigEntry<float> ThunderRecharge; public static ConfigEntry<float> ThunderRange; public static ConfigEntry<int> ThunderEnemyDamage; public static ConfigEntry<int> ThunderPlayerDamage; public static ConfigEntry<int> ThunderPropDamage; public static ConfigEntry<int> FireBlastCharges; public static ConfigEntry<float> FireBlastRecharge; public static ConfigEntry<float> FireBlastRange; public static ConfigEntry<float> FireBlastSpeed; public static ConfigEntry<float> FireBlastRadius; public static ConfigEntry<int> FireBlastEnemyDamage; public static ConfigEntry<int> FireBlastPlayerDamage; public static ConfigEntry<int> FireBlastPropDamage; public static ConfigEntry<int> HyperBeamCharges; public static ConfigEntry<float> HyperBeamRecharge; public static ConfigEntry<float> HyperBeamDuration; public static ConfigEntry<float> HyperBeamRange; public static ConfigEntry<int> HyperBeamEnemyDps; public static ConfigEntry<int> HyperBeamPlayerDps; public static ConfigEntry<int> HyperBeamPropDps; public static ConfigEntry<int> QuakeCharges; public static ConfigEntry<float> QuakeRecharge; public static ConfigEntry<float> QuakeRadius; public static ConfigEntry<int> QuakeEnemyDamage; public static ConfigEntry<int> QuakePlayerDamage; public static ConfigEntry<int> QuakePropDamage; public static ConfigEntry<bool> QuakeSecret; public static ConfigEntry<string> BleachWandName; public static ConfigEntry<string> ZabimaruPhrase; public static ConfigEntry<string> FlashStepPhrase; public static ConfigEntry<string> GetsugaPhrase; public static ConfigEntry<string> KurohitsugiPhrase; public static ConfigEntry<int> ZabimaruCharges; public static ConfigEntry<float> ZabimaruRecharge; public static ConfigEntry<float> ZabimaruReach; public static ConfigEntry<float> ZabimaruArc; public static ConfigEntry<int> ZabimaruEnemyDamage; public static ConfigEntry<int> ZabimaruPlayerDamage; public static ConfigEntry<int> ZabimaruPropDamage; public static ConfigEntry<float> ZabimaruForce; public static ConfigEntry<int> FlashStepCharges; public static ConfigEntry<float> FlashStepRecharge; public static ConfigEntry<float> FlashStepDistance; public static ConfigEntry<int> GetsugaCharges; public static ConfigEntry<float> GetsugaRecharge; public static ConfigEntry<float> GetsugaRange; public static ConfigEntry<float> GetsugaSpeed; public static ConfigEntry<float> GetsugaWidth; public static ConfigEntry<int> GetsugaEnemyDamage; public static ConfigEntry<int> GetsugaPlayerDamage; public static ConfigEntry<int> GetsugaPropDamage; public static ConfigEntry<int> KurohitsugiCharges; public static ConfigEntry<float> KurohitsugiRecharge; public static ConfigEntry<float> KurohitsugiRange; public static ConfigEntry<float> KurohitsugiSize; public static ConfigEntry<int> KurohitsugiEnemyDamage; public static ConfigEntry<int> KurohitsugiPlayerDamage; public static ConfigEntry<int> KurohitsugiPropDamage; public static ConfigEntry<bool> KurohitsugiSecret; public static ConfigEntry<string> NenWandName; public static ConfigEntry<string> BungeePhrase; public static ConfigEntry<string> GodspeedPhrase; public static ConfigEntry<string> SpiritualPhrase; public static ConfigEntry<string> GuanyinPhrase; public static ConfigEntry<int> BungeeCharges; public static ConfigEntry<float> BungeeRecharge; public static ConfigEntry<float> BungeeRange; public static ConfigEntry<float> BungeeSpeed; public static ConfigEntry<int> BungeeImpactDamage; public static ConfigEntry<int> BungeePropDamage; public static ConfigEntry<int> GodspeedCharges; public static ConfigEntry<float> GodspeedRecharge; public static ConfigEntry<float> GodspeedDuration; public static ConfigEntry<float> GodspeedMultiplier; public static ConfigEntry<int> SpiritualCharges; public static ConfigEntry<float> SpiritualRecharge; public static ConfigEntry<int> SpiritualCopies; public static ConfigEntry<float> SpiritualDuration; public static ConfigEntry<float> SpiritualLead; public static ConfigEntry<float> SpiritualSpeed; public static ConfigEntry<int> GuanyinCharges; public static ConfigEntry<float> GuanyinRecharge; public static ConfigEntry<float> GuanyinDuration; public static ConfigEntry<float> GuanyinRadius; public static ConfigEntry<float> GuanyinStrikeInterval; public static ConfigEntry<float> GuanyinPalmRadius; public static ConfigEntry<int> GuanyinEnemyDamage; public static ConfigEntry<int> GuanyinPlayerDamage; public static ConfigEntry<int> GuanyinPropDamage; public static ConfigEntry<bool> GuanyinSecret; public static ConfigEntry<bool> GrimoirePages; public static ConfigEntry<string> SasukeWandName; public static ConfigEntry<string> RinneganPhrase; public static ConfigEntry<string> GenjutsuPhrase; public static ConfigEntry<string> AmaterasuPhrase; public static ConfigEntry<string> CurseMarkPhrase; public static ConfigEntry<int> SasukeChidoriCharges; public static ConfigEntry<float> SasukeChidoriRecharge; public static ConfigEntry<float> SasukeChidoriRange; public static ConfigEntry<float> SasukeChidoriSpeed; public static ConfigEntry<float> SasukeChidoriRadius; public static ConfigEntry<int> SasukeChidoriEnemyDamage; public static ConfigEntry<int> SasukeChidoriPlayerDamage; public static ConfigEntry<int> SasukeChidoriPropDamage; public static ConfigEntry<int> RinneganCharges; public static ConfigEntry<float> RinneganRecharge; public static ConfigEntry<float> RinneganGreySeconds; public static ConfigEntry<int> GenjutsuCharges; public static ConfigEntry<float> GenjutsuRecharge; public static ConfigEntry<float> GenjutsuRadius; public static ConfigEntry<float> GenjutsuDuration; public static ConfigEntry<int> GenjutsuMaxIllusions; public static ConfigEntry<int> AmaterasuCharges; public static ConfigEntry<float> AmaterasuRecharge; public static ConfigEntry<float> AmaterasuRange; public static ConfigEntry<int> AmaterasuEnemyDps; public static ConfigEntry<int> AmaterasuPropDps; public static ConfigEntry<int> AmaterasuPlayerDps; public static ConfigEntry<float> AmaterasuMaxSeconds; public static ConfigEntry<int> CurseCharges; public static ConfigEntry<float> CurseRecharge; public static ConfigEntry<float> CurseDuration; public static ConfigEntry<int> CurseHealth; public static ConfigEntry<float> CurseSpeed; public static ConfigEntry<bool> CurseSecret; public static ConfigEntry<string> Poke2WandName; public static ConfigEntry<string> BodySlamPhrase; public static ConfigEntry<string> GunkShotPhrase; public static ConfigEntry<string> TrickRoomPhrase; public static ConfigEntry<string> FlyPhrase; public static ConfigEntry<int> BodySlamCharges; public static ConfigEntry<float> BodySlamRecharge; public static ConfigEntry<float> BodySlamLeap; public static ConfigEntry<float> BodySlamRadius; public static ConfigEntry<int> BodySlamEnemyDamage; public static ConfigEntry<int> BodySlamPlayerDamage; public static ConfigEntry<int> BodySlamPropDamage; public static ConfigEntry<int> GunkCharges; public static ConfigEntry<float> GunkRecharge; public static ConfigEntry<float> GunkRange; public static ConfigEntry<float> GunkSpeed; public static ConfigEntry<float> GunkRadius; public static ConfigEntry<int> GunkEnemyDamage; public static ConfigEntry<int> GunkPlayerDamage; public static ConfigEntry<int> GunkPropDamage; public static ConfigEntry<int> TrickRoomCharges; public static ConfigEntry<float> TrickRoomRecharge; public static ConfigEntry<float> TrickRoomDuration; public static ConfigEntry<float> TrickRoomRadius; public static ConfigEntry<float> TrickRoomEnemySpeed; public static ConfigEntry<float> TrickRoomFriendlySpeed; public static ConfigEntry<int> FlyCharges; public static ConfigEntry<float> FlyRecharge; public static ConfigEntry<float> FlyDuration; public static ConfigEntry<float> FlySpeed; public static ConfigEntry<float> FlyClimb; public static ConfigEntry<bool> FlyThirdPerson; public static ConfigEntry<bool> FlySecret; public static ConfigEntry<string> TransWandName; public static ConfigEntry<string> MiniMePhrase; public static ConfigEntry<string> SuperSizePhrase; public static ConfigEntry<string> CopyPhrase; public static ConfigEntry<string> DuplicatePhrase; public static ConfigEntry<int> MiniMeCharges; public static ConfigEntry<float> MiniMeRecharge; public static ConfigEntry<float> MiniMeDuration; public static ConfigEntry<float> MiniMeScale; public static ConfigEntry<float> MiniMeSpeed; public static ConfigEntry<int> SuperSizeCharges; public static ConfigEntry<float> SuperSizeRecharge; public static ConfigEntry<float> SuperSizeDuration; public static ConfigEntry<float> SuperSizeScale; public static ConfigEntry<int> SuperSizeEnemyDamage; public static ConfigEntry<int> SuperSizePlayerDamage; public static ConfigEntry<int> SuperSizePropDamage; public static ConfigEntry<int> CopyCharges; public static ConfigEntry<float> CopyRecharge; public static ConfigEntry<float> CopyDuration; public static ConfigEntry<float> CopyRange; public static ConfigEntry<bool> CopyThirdPerson; public static ConfigEntry<int> DuplicateCharges; public static ConfigEntry<float> DuplicateRecharge; public static ConfigEntry<float> DuplicateRange; public static ConfigEntry<int> DuplicateCopies; public static ConfigEntry<float> DuplicateBrawlSeconds; public static ConfigEntry<int> DuplicateBrawlDamage; public static ConfigEntry<bool> DuplicateSecret; public static ConfigEntry<string> ShadowWandName; public static ConfigEntry<string> HealBatPhrase; public static ConfigEntry<string> HealPulsePhrase; public static ConfigEntry<string> RevivePhrase; public static ConfigEntry<string> RaiseDeadPhrase; public static ConfigEntry<int> HealBatCharges; public static ConfigEntry<float> HealBatRecharge; public static ConfigEntry<float> HealBatDuration; public static ConfigEntry<float> HealBatInterval; public static ConfigEntry<int> HealBatAmount; public static ConfigEntry<int> HealPulseCharges; public static ConfigEntry<float> HealPulseRecharge; public static ConfigEntry<float> HealPulseRadius; public static ConfigEntry<int> HealPulseAmount; public static ConfigEntry<int> ReviveCharges; public static ConfigEntry<float> ReviveRecharge; public static ConfigEntry<float> ReviveRange; public static ConfigEntry<float> ReviveNearbyRadius; public static ConfigEntry<float> ReviveRitualSeconds; public static ConfigEntry<int> ReviveHealth; public static ConfigEntry<int> RaiseDeadCharges; public static ConfigEntry<float> RaiseDeadRecharge; public static ConfigEntry<int> RaiseDeadCount; public static ConfigEntry<float> RaiseDeadDuration; public static ConfigEntry<int> RaiseDeadDamage; public static ConfigEntry<int> RaiseDeadPropDamage; public static ConfigEntry<int> RaiseDeadHitsToBreak; public static ConfigEntry<bool> RaiseDeadSecret; private const int CurrentSettingsVersion = 1; public static ConfigEntry<int> SettingsVersion; public static ConfigEntry<string> DagonWandName; public static ConfigEntry<string> WaterTorrentPhrase; public static ConfigEntry<string> DeathSwarmPhrase; public static ConfigEntry<string> SharkPhrase; public static ConfigEntry<string> DagonDomainPhrase; public static ConfigEntry<int> WaterTorrentCharges; public static ConfigEntry<float> WaterTorrentRecharge; public static ConfigEntry<float> WaterTorrentRange; public static ConfigEntry<float> WaterTorrentWidth; public static ConfigEntry<float> WaterTorrentDuration; public static ConfigEntry<int> WaterTorrentEnemyDamage; public static ConfigEntry<int> WaterTorrentPlayerDamage; public static ConfigEntry<int> WaterTorrentPropDamage; public static ConfigEntry<float> WaterTorrentForce; public static ConfigEntry<int> DeathSwarmCharges; public static ConfigEntry<float> DeathSwarmRecharge; public static ConfigEntry<float> DeathSwarmRange; public static ConfigEntry<float> DeathSwarmWidth; public static ConfigEntry<float> DeathSwarmSeconds; public static ConfigEntry<int> DeathSwarmEnemyDamage; public static ConfigEntry<int> DeathSwarmPlayerDamage; public static ConfigEntry<int> DeathSwarmPropDamage; public static ConfigEntry<int> SharkCharges; public static ConfigEntry<float> SharkRecharge; public static ConfigEntry<float> SharkRange; public static ConfigEntry<int> SharkDamage; public static ConfigEntry<int> SharkPropDamage; public static ConfigEntry<bool> SharkDrag; public static ConfigEntry<int> DagonDomainCharges; public static ConfigEntry<float> DagonDomainRecharge; public static ConfigEntry<float> DagonDomainDuration; public static ConfigEntry<float> DagonDomainRadius; public static ConfigEntry<int> DagonDomainDamage; public static ConfigEntry<int> DagonDomainPlayerDamage; public static ConfigEntry<int> DagonDomainPropDamage; public static ConfigEntry<int> DagonDomainStunEvery; public static ConfigEntry<bool> DagonDomainSecret; public static ConfigEntry<string> DeidaraWandName; public static ConfigEntry<string> C1Phrase; public static ConfigEntry<string> ClayBirdPhrase; public static ConfigEntry<string> C3Phrase; public static ConfigEntry<string> C0Phrase; public static ConfigEntry<int> C1Charges; public static ConfigEntry<float> C1Recharge; public static ConfigEntry<int> C1Bombs; public static ConfigEntry<float> C1Range; public static ConfigEntry<float> C1Speed; public static ConfigEntry<float> C1MaxSeconds; public static ConfigEntry<float> C1BlastRadius; public static ConfigEntry<int> C1EnemyDamage; public static ConfigEntry<int> C1PlayerDamage; public static ConfigEntry<int> C1PropDamage; public static ConfigEntry<int> ClayBirdCharges; public static ConfigEntry<float> ClayBirdRecharge; public static ConfigEntry<float> ClayBirdDuration; public static ConfigEntry<float> ClayBirdSpeed; public static ConfigEntry<float> ClayBirdClimb; public static ConfigEntry<bool> ClayBirdThirdPerson; public static ConfigEntry<int> C3Charges; public static ConfigEntry<float> C3Recharge; public static ConfigEntry<float> C3Range; public static ConfigEntry<float> C3FallSeconds; public static ConfigEntry<float> C3BlastRadius; public static ConfigEntry<int> C3EnemyDamage; public static ConfigEntry<int> C3PlayerDamage; public static ConfigEntry<int> C3PropDamage; public static ConfigEntry<int> C0Charges; public static ConfigEntry<float> C0Recharge; public static ConfigEntry<float> C0ChargeSeconds; public static ConfigEntry<float> C0HiddenSeconds; public static ConfigEntry<float> C0BlastRadius; public static ConfigEntry<int> C0EnemyDamage; public static ConfigEntry<int> C0PlayerDamage; public static ConfigEntry<int> C0PropDamage; public static ConfigEntry<string> GaaraWandName; public static ConfigEntry<string> SandCoffinPhrase; public static ConfigEntry<string> SandShieldPhrase; public static ConfigEntry<string> SandCloudPhrase; public static ConfigEntry<string> SandTsunamiPhrase; public static ConfigEntry<int> SandCoffinCharges; public static ConfigEntry<float> SandCoffinRecharge; public static ConfigEntry<float> SandCoffinRange; public static ConfigEntry<float> SandCoffinSeconds; public static ConfigEntry<float> SandCoffinCrushInterval; public static ConfigEntry<int> SandCoffinCrushDamage; public static ConfigEntry<int> SandCoffinFinalDamage; public static ConfigEntry<int> SandCoffinPlayerDamage; public static ConfigEntry<int> SandCoffinPropDamage; public static ConfigEntry<int> SandShieldCharges; public static ConfigEntry<float> SandShieldRecharge; public static ConfigEntry<float> SandShieldDuration; public static ConfigEntry<float> SandShieldRadius; public static ConfigEntry<int> SandShieldDamage; public static ConfigEntry<float> SandShieldPushForce; public static ConfigEntry<bool> SandShieldBlocksDamage; public static ConfigEntry<int> SandCloudCharges; public static ConfigEntry<float> SandCloudRecharge; public static ConfigEntry<float> SandCloudDuration; public static ConfigEntry<float> SandCloudSpeed; public static ConfigEntry<float> SandCloudClimb; public static ConfigEntry<bool> SandCloudThirdPerson; public static ConfigEntry<int> SandTsunamiCharges; public static ConfigEntry<float> SandTsunamiRecharge; public static ConfigEntry<float> SandTsunamiLength; public static ConfigEntry<float> SandTsunamiWidth; public static ConfigEntry<float> SandTsunamiSeconds; public static ConfigEntry<int> SandTsunamiEnemyDamage; public static ConfigEntry<int> SandTsunamiPlayerDamage; public static ConfigEntry<int> SandTsunamiPropDamage; public static ConfigEntry<float> SandTsunamiBurySeconds; public static ConfigEntry<float> SandTsunamiForce; public static ConfigEntry<string> JiraiyaWandName; public static ConfigEntry<string> FlameBulletPhrase; public static ConfigEntry<string> NeedleJizoPhrase; public static ConfigEntry<string> ToadSagePhrase; public static ConfigEntry<string> GiantToadPhrase; public static ConfigEntry<int> FlameBulletCharges; public static ConfigEntry<float> FlameBulletRecharge; public static ConfigEntry<float> FlameBulletRange; public static ConfigEntry<int> FlameBulletEnemyDamage; public static ConfigEntry<int> FlameBulletPlayerDamage; public static ConfigEntry<int> FlameBulletPropDamage; public static ConfigEntry<float> FlameBulletFireRadius; public static ConfigEntry<float> FlameBulletFireSeconds; public static ConfigEntry<int> FlameBulletFireEnemyDamage; public static ConfigEntry<int> FlameBulletFirePlayerDamage; public static ConfigEntry<int> FlameBulletFirePropDamage; public static ConfigEntry<int> NeedleJizoCharges; public static ConfigEntry<float> NeedleJizoRecharge; public static ConfigEntry<float> NeedleJizoDuration; public static ConfigEntry<float> NeedleJizoReach; public static ConfigEntry<int> NeedleJizoDamage; public static ConfigEntry<int> NeedleJizoPropDamage; public static ConfigEntry<float> NeedleJizoInterval; public static ConfigEntry<int> ToadSageCharges; public static ConfigEntry<float> ToadSageRecharge; public static ConfigEntry<float> ToadSageDuration; public static ConfigEntry<int> ToadSageHealth; public static ConfigEntry<int> GiantToadCharges; public static ConfigEntry<float> GiantToadRecharge; public static ConfigEntry<float> GiantToadRange; public static ConfigEntry<float> GiantToadDuration; public static ConfigEntry<float> GiantToadLandingRadius; public static ConfigEntry<int> GiantToadLandingEnemyDamage; public static ConfigEntry<int> GiantToadLandingPlayerDamage; public static ConfigEntry<int> GiantToadLandingPropDamage; public static ConfigEntry<float> GiantToadStompRadius; public static ConfigEntry<int> GiantToadStompEnemyDamage; public static ConfigEntry<int> GiantToadStompPropDamage; public static ConfigEntry<float> GiantToadReach; public static ConfigEntry<float> GiantToadLeapInterval; public static ConfigEntry<float> GiantToadSize; public static ConfigEntry<string> JogoWandName; public static ConfigEntry<string> JogoInsectsPhrase; public static ConfigEntry<string> JogoVolcanoPhrase; public static ConfigEntry<string> JogoTornadoPhrase; public static ConfigEntry<string> JogoDomainPhrase; public static ConfigEntry<int> JogoInsectsCharges; public static ConfigEntry<float> JogoInsectsRecharge; public static ConfigEntry<int> JogoInsectsCount; public static ConfigEntry<float> JogoInsectsRange; public static ConfigEntry<float> JogoInsectsSpeed; public static ConfigEntry<float> JogoInsectsLifeSeconds; public static ConfigEntry<float> JogoInsectsBlastRadius; public static ConfigEntry<int> JogoInsectsEnemyDamage; public static ConfigEntry<int> JogoInsectsPlayerDamage; public static ConfigEntry<int> JogoInsectsPropDamage; public static ConfigEntry<int> JogoVolcanoCharges; public static ConfigEntry<float> JogoVolcanoRecharge; public static ConfigEntry<float> JogoVolcanoRange; public static ConfigEntry<int> JogoVolcanoMaxVolcanoes; public static ConfigEntry<float> JogoVolcanoSpread; public static ConfigEntry<float> JogoVolcanoBlastRadius; public static ConfigEntry<int> JogoVolcanoEnemyDamage; public static ConfigEntry<int> JogoVolcanoPlayerDamage; public static ConfigEntry<int> JogoVolcanoPropDamage; public static ConfigEntry<float> JogoVolcanoLavaSeconds; public static ConfigEntry<int> JogoVolcanoLavaDamage; public static ConfigEntry<int> JogoVolcanoLavaPropDamage; public static ConfigEntry<int> JogoTornadoCharges; public static ConfigEntry<float> JogoTornadoRecharge; public static ConfigEntry<float> JogoTornadoBurnRadius; public static ConfigEntry<int> JogoTornadoEnemyDamage; public static ConfigEntry<int> JogoTornadoPlayerDamage; public static ConfigEntry<int> JogoTornadoPropDamage; public static ConfigEntry<int> JogoDomainCharges; public static ConfigEntry<float> JogoDomainRecharge; public static ConfigEntry<float> JogoDomainDuration; public static ConfigEntry<float> JogoDomainRadius; public static ConfigEntry<int> JogoDomainHeatDamage; public static ConfigEntry<int> JogoDomainHeatPlayerDamage; public static ConfigEntry<float> JogoDomainGeyserInterval; public static ConfigEntry<float> JogoDomainGeyserRadius; public static ConfigEntry<int> JogoDomainGeyserDamage; public static ConfigEntry<int> JogoDomainGeyserPlayerDamage; public static ConfigEntry<int> JogoDomainGeyserPropDamage; public static ConfigEntry<bool> JogoDomainSecret; public static ConfigEntry<string> KakashiWandName; public static ConfigEntry<string> KakashiLightningPhrase; public static ConfigEntry<string> KakashiHoundsPhrase; public static ConfigEntry<string> KakashiSharinganPhrase; public static ConfigEntry<string> KakashiKamuiPhrase; public static ConfigEntry<int> KakashiLightningCharges; public static ConfigEntry<float> KakashiLightningRecharge; public static ConfigEntry<float> KakashiLightningRange; public static ConfigEntry<float> KakashiLightningRadius; public static ConfigEntry<int> KakashiLightningEnemyDamage; public static ConfigEntry<int> KakashiLightningPlayerDamage; public static ConfigEntry<int> KakashiLightningPropDamage; public static ConfigEntry<float> KakashiLightningForce; public static ConfigEntry<int> KakashiHoundsCharges; public static ConfigEntry<float> KakashiHoundsRecharge; public static ConfigEntry<float> KakashiHoundsRange; public static ConfigEntry<int> KakashiHoundsCount; public static ConfigEntry<float> KakashiHoundsDuration; public static ConfigEntry<int> KakashiHoundsBiteDamage; public static ConfigEntry<float> KakashiHoundsBiteInterval; public static ConfigEntry<int> KakashiHoundsPropBiteDamage; public static ConfigEntry<int> KakashiSharinganCharges; public static ConfigEntry<float> KakashiSharinganRecharge; public static ConfigEntry<float> KakashiSharinganRadius; public static ConfigEntry<float> KakashiSharinganMemory; public static ConfigEntry<float> KakashiSharinganCopyLifetime; public static ConfigEntry<int> KakashiKamuiCharges; public static ConfigEntry<float> KakashiKamuiRecharge; public static ConfigEntry<float> KakashiKamuiRange; public static ConfigEntry<float> KakashiKamuiSeconds; public static ConfigEntry<bool> GameShading; public static ConfigEntry<bool> GameEffects; public static ConfigEntry<bool> GameCreatures; public static ConfigEntry<bool> LootEnabled; public static ConfigEntry<string> LootWands; public static ConfigEntry<float> LootChance; public static ConfigEntry<string> MegumiWandName; public static ConfigEntry<string> MegumiDogsPhrase; public static ConfigEntry<string> MegumiBirdPhrase; public static ConfigEntry<string> MegumiElephantPhrase; public static ConfigEntry<string> MegumiGardenPhrase; public static ConfigEntry<string> MegumiGeneralPhrase; public static ConfigEntry<int> MegumiDogsCharges; public static ConfigEntry<float> MegumiDogsRecharge; public static ConfigEntry<int> MegumiDogsCount; public static ConfigEntry<float> MegumiDogsDuration; public static ConfigEntry<int> MegumiDogsDamage; public static ConfigEntry<int> MegumiDogsPropDamage; public static ConfigEntry<int> MegumiDogsHitsToBreak; public static ConfigEntry<int> MegumiBirdCharges; public static ConfigEntry<float> MegumiBirdRecharge; public static ConfigEntry<float> MegumiBirdDuration; public static ConfigEntry<float> MegumiBirdRadius; public static ConfigEntry<float> MegumiBirdDiveInterval; public static ConfigEntry<int> MegumiBirdDamage; public static ConfigEntry<int> MegumiBirdPropDamage; public static ConfigEntry<int> MegumiElephantCharges; public static ConfigEntry<float> MegumiElephantRecharge; public static ConfigEntry<float> MegumiElephantRange; public static ConfigEntry<float> MegumiElephantRadius; public static ConfigEntry<int> MegumiElephantEnemyDamage; public static ConfigEntry<int> MegumiElephantPlayerDamage; public static ConfigEntry<int> MegumiElephantPropDamage; public static ConfigEntry<int> MegumiElephantSprayDamage; public static ConfigEntry<float> MegumiElephantSprayForce; public static ConfigEntry<int> MegumiGardenCharges; public static ConfigEntry<float> MegumiGardenRecharge; public static ConfigEntry<float> MegumiGardenDuration; public static ConfigEntry<float> MegumiGardenRadius; public static ConfigEntry<float> MegumiGardenAttackInterval; public static ConfigEntry<int> MegumiGardenDamage; public static ConfigEntry<int> MegumiGardenPropDamage; public static ConfigEntry<float> MegumiGardenSinkSpeed; public static ConfigEntry<bool> MegumiGardenSecret; public static ConfigEntry<int> MegumiGeneralCharges; public static ConfigEntry<float> MegumiGeneralRecharge; public static ConfigEntry<float> MegumiGeneralDuration; public static ConfigEntry<int> MegumiGeneralHealth; public static ConfigEntry<float> MegumiGeneralRange; public static ConfigEntry<int> MegumiGeneralDamage; public static ConfigEntry<int> MegumiGeneralPlayerDamage; public static ConfigEntry<int> MegumiGeneralPropDamage; public static ConfigEntry<int> MegumiGeneralHitsToAdapt; public static ConfigEntry<bool> MegumiGeneralAttacksPlayers; public static ConfigEntry<bool> MegumiGeneralSecret; public static ConfigEntry<string> OrochimaruWandName; public static ConfigEntry<string> ShadowSnakesPhrase; public static ConfigEntry<string> KusanagiPhrase; public static ConfigEntry<string> HeavenCursePhrase; public static ConfigEntry<string> GiantSnakePhrase; public static ConfigEntry<int> ShadowSnakesCharges; public static ConfigEntry<float> ShadowSnakesRecharge; public static ConfigEntry<float> ShadowSnakesRange; public static ConfigEntry<int> ShadowSnakesBiteDamage; public static ConfigEntry<int> ShadowSnakesPoisonDamage; public static ConfigEntry<float> ShadowSnakesPoisonSeconds; public static ConfigEntry<int> ShadowSnakesPropDamage; public static ConfigEntry<bool> ShadowSnakesYank; public static ConfigEntry<int> KusanagiCharges; public static ConfigEntry<float> KusanagiRecharge; public static ConfigEntry<float> KusanagiRange; public static ConfigEntry<int> KusanagiEnemyDamage; public static ConfigEntry<int> KusanagiPlayerDamage; public static ConfigEntry<int> KusanagiPropDamage; public static ConfigEntry<int> HeavenCurseCharges; public static ConfigEntry<float> HeavenCurseRecharge; public static ConfigEntry<float> HeavenCurseRange; public static ConfigEntry<float> HeavenCurseAllySeconds; public static ConfigEntry<float> HeavenCurseDamageMultiplier; public static ConfigEntry<float> HeavenCurseSpeedMultiplier; public static ConfigEntry<float> HeavenCurseEnemySeconds; public static ConfigEntry<float> HeavenCursePainInterval; public static ConfigEntry<int> HeavenCursePainDamage; public static ConfigEntry<int> HeavenCursePropDamage; public static ConfigEntry<int> GiantSnakeCharges; public static ConfigEntry<float> GiantSnakeRecharge; public static ConfigEntry<float> GiantSnakeRange; public static ConfigEntry<float> GiantSnakeDuration; public static ConfigEntry<float> GiantSnakeEruptRadius; public static ConfigEntry<int> GiantSnakeEruptEnemyDamage; public static ConfigEntry<int> GiantSnakeEruptPlayerDamage; public static ConfigEntry<int> GiantSnakeEruptPropDamage; public static ConfigEntry<int> GiantSnakeSqueezeDamage; public static ConfigEntry<float> GiantSnakeSqueezeInterval; public static ConfigEntry<int> GiantSnakePropDamage; public static ConfigEntry<float> GiantSnakeReach; public static ConfigEntry<float> GiantSnakeSize; public static ConfigEntry<string> SaiWandName; public static ConfigEntry<string> SaiLionsPhrase; public static ConfigEntry<string> SaiSnakesPhrase; public static ConfigEntry<string> SaiMicePhrase; public static ConfigEntry<string> SaiBirdPhrase; public static ConfigEntry<int> SaiLionsCharges; public static ConfigEntry<float> SaiLionsRecharge; public static ConfigEntry<int> SaiLionsCount; public static ConfigEntry<float> SaiLionsRange; public static ConfigEntry<float> SaiLionsSpeed; public static ConfigEntry<float> SaiLionsRadius; public static ConfigEntry<int> SaiLionsEnemyDamage; public static ConfigEntry<int> SaiLionsPlayerDamage; public static ConfigEntry<int> SaiLionsPropDamage; public static ConfigEntry<int> SaiSnakesCharges; public static ConfigEntry<float> SaiSnakesRecharge; public static ConfigEntry<float> SaiSnakesRange; public static ConfigEntry<float> SaiSnakesHoldSeconds; public static ConfigEntry<int> SaiSnakesDamage; public static ConfigEntry<int> SaiSnakesPropDamage; public static ConfigEntry<int> SaiMiceCharges; public static ConfigEntry<float> SaiMiceRecharge; public static ConfigEntry<int> SaiMiceCount; public static ConfigEntry<float> SaiMiceRange; public static ConfigEntry<int> SaiMiceMaxRevealed; public static ConfigEntry<float> SaiMiceRevealSeconds; public static ConfigEntry<float> SaiMiceRouteSeconds; public static ConfigEntry<int> SaiBirdCharges; public static ConfigEntry<float> SaiBirdRecharge; public static ConfigEntry<float> SaiBirdDuration; public static ConfigEntry<float> SaiBirdSpeed; public static ConfigEntry<float> SaiBirdClimb; public static ConfigEntry<bool> SaiBirdThirdPerson; public static ConfigEntry<string> SakuraWandName; public static ConfigEntry<string> GroundPoundPhrase; public static ConfigEntry<string> MysticalPalmPhrase; public static ConfigEntry<string> SlugHealPhrase; public static ConfigEntry<string> HundredSealPhrase; public static ConfigEntry<int> GroundPoundCharges; public static ConfigEntry<float> GroundPoundRecharge; public static ConfigEntry<float> GroundPoundRadius; public static ConfigEntry<int> GroundPoundEnemyDamage; public static ConfigEntry<int> GroundPoundPlayerDamage; public static ConfigEntry<int> GroundPoundPropDamage; public static ConfigEntry<float> GroundPoundForce; public static ConfigEntry<int> MysticalPalmCharges; public static ConfigEntry<float> MysticalPalmRecharge; public static ConfigEntry<float> MysticalPalmHealPerSecond; public static ConfigEntry<float> MysticalPalmMaxSeconds; public static ConfigEntry<float> MysticalPalmRange; public static ConfigEntry<float> MysticalPalmMoveTolerance; public static ConfigEntry<int> SlugHealCharges; public static ConfigEntry<float> SlugHealRecharge; public static ConfigEntry<float> SlugHealRadius; public static ConfigEntry<float> SlugHealPerSecond; public static ConfigEntry<float> SlugHealMaxSeconds; public static ConfigEntry<int> HundredSealCharges; public static ConfigEntry<float> HundredSealRecharge; public static ConfigEntry<float> HundredSealDuration; public static ConfigEntry<int> HundredSealHealthPerTick; public static ConfigEntry<float> HundredSealTickSeconds; public static ConfigEntry<float> HundredSealSpeed; public static ConfigEntry<bool> TreeEnabled; public static ConfigEntry<string> TreeWands; public static ConfigEntry<int> TreeWindBranches; public static ConfigEntry<string> YamatoWandName; public static ConfigEntry<string> WoodPrisonPhrase; public static ConfigEntry<string> WoodBarragePhrase; public static ConfigEntry<string> WoodClonePhrase; public static ConfigEntry<string> SuppressionPhrase; public static ConfigEntry<int> WoodPrisonCharges; public static ConfigEntry<float> WoodPrisonRecharge; public static ConfigEntry<float> WoodPrisonRange; public static ConfigEntry<float> WoodPrisonSeconds; public static ConfigEntry<float> WoodPrisonRadius; public static ConfigEntry<int> WoodBarrageCharges; public static ConfigEntry<float> WoodBarrageRecharge; public static ConfigEntry<float> WoodBarrageRadius; public static ConfigEntry<int> WoodBarrageMaxTargets; public static ConfigEntry<int> WoodBarrageEnemyDamage; public static ConfigEntry<int> WoodBarragePlayerDamage; public static ConfigEntry<int> WoodBarragePropDamage; public static ConfigEntry<int> WoodCloneCharges; public static ConfigEntry<float> WoodCloneRecharge; public static ConfigEntry<int> WoodCloneCount; public static ConfigEntry<float> WoodCloneDuration; public static ConfigEntry<int> WoodCloneDamage; public static ConfigEntry<int> WoodClonePropDamage; public static ConfigEntry<int> WoodCloneHitsToBreak; public static ConfigEntry<int> SuppressionCharges; public static ConfigEntry<float> SuppressionRecharge; public static ConfigEntry<float> SuppressionRange; public static ConfigEntry<string> YutaWandName; public static ConfigEntry<string> YutaKatanaPhrase; public static ConfigEntry<string> YutaDashPhrase; public static ConfigEntry<string> YutaReversePhrase; public static ConfigEntry<string> YutaRikaPhrase; public static ConfigEntry<int> YutaKatanaCharges; public static ConfigEntry<float> YutaKatanaRecharge; public static ConfigEntry<float> YutaKatanaDistance; public static ConfigEntry<float> YutaKatanaWidth; public static ConfigEntry<int> YutaKatanaEnemyDamage; public static ConfigEntry<int> YutaKatanaPlayerDamage; public static ConfigEntry<int> YutaKatanaPropDamage; public static ConfigEntry<float> YutaKatanaForce; public static ConfigEntry<int> YutaDashCharges; public static ConfigEntry<float> YutaDashRecharge; public static ConfigEntry<float> YutaDashDuration; public static ConfigEntry<float> YutaDashSpeed; public static ConfigEntry<int> YutaReverseCharges; public static ConfigEntry<float> YutaReverseRecharge; public static ConfigEntry<float> YutaReverseRadius; public static ConfigEntry<int> YutaReverseHealth; public static ConfigEntry<bool> YutaReverseFullHeal; public static ConfigEntry<int> YutaRikaCharges; public static ConfigEntry<float> YutaRikaRecharge; public static ConfigEntry<float> YutaRikaDuration; public static ConfigEntry<float> YutaRikaReach; public static ConfigEntry<float> YutaRikaStrikeInterval; public static ConfigEntry<int> YutaRikaStrikeDamage; public static ConfigEntry<int> YutaRikaPropDamage; public static ConfigEntry<bool> YutaRikaSmashesObjects; public static ConfigEntry<float> YutaRikaScale; public static ConfigEntry<bool> YutaRikaSecret; public static void Bind(ConfigFile c) { SettingsVersion = c.Bind<int>("Internal", "SettingsVersion", 0, "Used by the mod to update old default settings once after an update. Leave it alone."); Price = c.Bind<int>("General", "WandPrice", -1, "Gold cost of each custom wand. -1 = the same price as the game's wand it's built from; 0 = free. Everyone should use the same value."); InShop = c.Bind<ShopMode>("General", "ShopStock", ShopMode.Rotation, "Host only. Rotation = the custom wands come and go in the shop's random stock like the game's wands. Always = always put them in the first wand slots (handy for testing)."); TintWands = c.Bind<bool>("General", "TintWands", true, "Tint the custom wands so they're easy to tell apart."); FriendlyFire = c.Bind<bool>("General", "FriendlyFire", true, "Host only: the custom attack spells can hurt other players, like the game's own damaging spells."); SpellsBreakValuables = c.Bind<bool>("General", "SpellsBreakValuables", true, "Host only. Spells that break objects break valuables (loot) too. Turn off to keep loot safe from your own spells; furniture still breaks."); InventorySlots = c.Bind<int>("General", "InventorySlots", 5, "Inventory slots (game default is 3, max 8). Everyone in the lobby must use the same number. Keys 4 and up select the extra slots."); WandName = c.Bind<string>("JujutsuWand", "WandName", "Jujutsu Wand", "Name shown in the shop and when holding the wand."); BoogiePhrase = c.Bind<string>("Incantations", "BoogieWoogie", "BOOGIE WOOGIE", "Words to say. Every word must be in the speech model's dictionary. Restart the game after changing."); SlicePhrase = c.Bind<string>("Incantations", "Slice", "SLICE", "Words to say. Restart the game after changing."); RikaPhrase = c.Bind<string>("Incantations", "ComeRika", "COME RIKA", "Words to say. Restart the game after changing."); PatronusPhrase = c.Bind<string>("Incantations", "ExpectoPatronum", "EXPECT PATRONUS", "'Expecto' and 'patronum' aren't in the dictionary; saying 'expecto patronum' is heard as these words."); StupefyPhrase = c.Bind<string>("Incantations", "Stupefy", "STUPEFY", "Words to say. Restart the game after changing."); LumosPhrase = c.Bind<string>("Incantations", "Lumos", "LUMOS", "Words to say. Restart the game after changing."); AvadaPhrase = c.Bind<string>("Incantations", "AvadaKedavra", "AVADA CADAVER", "Secret spell. 'Kedavra' isn't in the dictionary; saying 'avada kedavra' is heard as AVADA CADAVER."); BoogieCharges = c.Bind<int>("BoogieWoogie", "Charges", 3, "Max charges."); BoogieRecharge = c.Bind<float>("BoogieWoogie", "RechargeSeconds", 10f, "Seconds for each used charge to come back."); SliceCharges = c.Bind<int>("Slice", "Charges", 10, "Max charges."); SliceRecharge = c.Bind<float>("Slice", "RechargeSeconds", 2f, "Seconds for each used charge to come back."); SliceRange = c.Bind<float>("Slice", "Range", 40f, "How far away the slash can land (meters)."); SliceRadius = c.Bind<float>("Slice", "Radius", 1.6f, "Size of the slashed area (meters)."); SliceEnemyDamage = c.Bind<int>("Slice", "EnemyDamage", 34, "Damage to monsters (most have 100 health)."); SlicePlayerDamage = c.Bind<int>("Slice", "PlayerDamage", 25, "Damage to other players when FriendlyFire is on."); SlicePropDamage = c.Bind<int>("Slice", "PropDamage", 60, "Damage to breakable furniture (most have 100 health)."); SliceForce = c.Bind<float>("Slice", "KnockbackForce", 6f, "Knockback applied to whatever gets slashed."); RikaCharges = c.Bind<int>("ComeRika", "Charges", 1, "Max charges."); RikaRecharge = c.Bind<float>("ComeRika", "RechargeSeconds", 60f, "Seconds for the charge to come back."); RikaDuration = c.Bind<float>("ComeRika", "DurationSeconds", 30f, "How long Rika stays."); RikaGuardRadius = c.Bind<float>("ComeRika", "GuardRadius", 10f, "Rika attacks monsters within this distance of you (meters)."); RikaStrikeInterval = c.Bind<float>("ComeRika", "StrikeIntervalSeconds", 1.5f, "Seconds between Rika's attacks."); RikaStrikeDamage = c.Bind<int>("ComeRika", "StrikeDamage", 20, "Damage per Rika attack (monsters have ~100 health). Each hit also stuns."); RikaPropDamage = c.Bind<int>("ComeRika", "PropDamage", 60, "Damage to breakable objects around whatever Rika claws."); RikaSmashesObjects = c.Bind<bool>("ComeRika", "SmashObjectsWhenNoMonsters", true, "With no monsters near you, Rika claws breakable furniture nearby instead (never valuables)."); RikaScale = c.Bind<float>("ComeRika", "Size", 1f, "Rika's size. 1 = about 3 meters tall (she shrinks to fit under low ceilings)."); RonWandName = c.Bind<string>("RonWand", "WandName", "Ron Weasley's Wand", "Name shown in the shop and when holding the wand."); PatronusCharges = c.Bind<int>("ExpectoPatronum", "Charges", 1, "Max charges."); PatronusRecharge = c.Bind<float>("ExpectoPatronum", "RechargeSeconds", 10f, "Seconds for the charge to come back."); PatronusDuration = c.Bind<float>("ExpectoPatronum", "DurationSeconds", 8f, "How long the stag stays."); PatronusWardRadius = c.Bind<float>("ExpectoPatronum", "WardRadius", 3.5f, "Monsters this close to the stag get knocked back and stunned (meters)."); PatronusPushForce = c.Bind<float>("ExpectoPatronum", "PushForce", 25f, "How hard the stag knocks monsters back."); StupefyCharges = c.Bind<int>("Stupefy", "Charges", 3, "Max charges."); StupefyRecharge = c.Bind<float>("Stupefy", "RechargeSeconds", 10f, "Seconds for each used charge to come back."); LumosCharges = c.Bind<int>("Lumos", "Charges", 1, "Max charges."); LumosRecharge = c.Bind<float>("Lumos", "RechargeSeconds", 20f, "Seconds for the charge to come back."); LumosDuration = c.Bind<float>("Lumos", "DurationSeconds", 10f, "How long the wand light and highlights last."); LumosHighlightRadius = c.Bind<float>("Lumos", "HighlightRadius", 25f, "Breakable items within this distance get highlighted (meters)."); AvadaCharges = c.Bind<int>("AvadaKedavra", "Charges", 1, "Max charges."); AvadaRecharge = c.Bind<float>("AvadaKedavra", "RechargeSeconds", 60f, "Seconds for the charge to come back."); AvadaRange = c.Bind<float>("AvadaKedavra", "Range", 60f, "How far the curse reaches (meters)."); BindDomains(c); BindPookachee(c); BindCrackwand(c); BindNaruto(c); BindBleach(c); BindNen(c); BindSasuke(c); BindPokeyman2(c); BindTransmutation(c); BindShadow(c); BindSakura(c); BindKakashi(c); BindSai(c); BindYamato(c); BindJir