icegmod3000.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using DM;
using HarmonyLib;
using Landfall.TABS;
using Landfall.TABS.UnitEditor;
using Landfall.TABS.Workshop;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("Tabs Poof Mod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Tabs Poof Mod")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("8aad4f38-2ad4-4206-bf0b-7d28fb6d5c2e")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace IceGMod;

[BepInPlugin("bayturtleking.icegmod", "IceG Mod", "1.0.0")]
public class plugin : BaseUnityPlugin
{
	public static plugin instance;

	public static ConfigEntry<bool> ucfixenabled;

	public static ConfigEntry<float> ucsweephowoften;

	public static ConfigEntry<bool> basecompatenabled;

	public static ConfigEntry<int> volleyarrowcount;

	public static ConfigEntry<float> volleystagger;

	public static ConfigEntry<float> volleycooldown;

	public static ConfigEntry<float> volleyrange;

	private Harmony harmony;

	private void Awake()
	{
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0106: Expected O, but got Unknown
		instance = this;
		ucfixenabled = ((BaseUnityPlugin)this).Config.Bind<bool>("ucloadthing", "enabled", true, "make uc less laggy");
		ucsweephowoften = ((BaseUnityPlugin)this).Config.Bind<float>("ucloadthing", "sweepintervalminutes", 15f, "when to asset sweep uc so it dont lag");
		basecompatenabled = ((BaseUnityPlugin)this).Config.Bind<bool>("BaseWeaponCompat", "enabled", true, "put hand bone thing into bases that are missing them so weapons can be equipped");
		volleyarrowcount = ((BaseUnityPlugin)this).Config.Bind<int>("IceGVolley", "arrowcount", 8, "how many shots the iceg volley fires");
		volleystagger = ((BaseUnityPlugin)this).Config.Bind<float>("IceGVolley", "waitshot", 0.06f, "delay between each shot in the iceg voll");
		volleycooldown = ((BaseUnityPlugin)this).Config.Bind<float>("IceGVolley", "cooldown", 5f, "ability cooldown (secs)");
		volleyrange = ((BaseUnityPlugin)this).Config.Bind<float>("IceGVolley", "range", 12f, "ability trigger rangee");
		harmony = new Harmony("bayturtleking.icegmod");
		harmony.PatchAll(Assembly.GetExecutingAssembly());
		((Component)this).gameObject.AddComponent<ucloadthing>();
		((MonoBehaviour)this).StartCoroutine(abilityregistrar.registerwhenready());
	}
}
public class ucloadthing : MonoBehaviour
{
	private float sinceplaytimer;

	private void Awake()
	{
		SceneManager.activeSceneChanged += onscenechanged;
	}

	private void OnDestroy()
	{
		SceneManager.activeSceneChanged -= onscenechanged;
	}

	private void onscenechanged(Scene previous, Scene next)
	{
		if (plugin.ucfixenabled.Value)
		{
			string text = ((((Scene)(ref previous)).name == null) ? string.Empty : ((Scene)(ref previous)).name.ToLowerInvariant());
			if (text.Contains("editor") || text.Contains("workshop") || text.Contains("unitcreator"))
			{
				((MonoBehaviour)this).StartCoroutine(sweepassets());
			}
		}
	}

	private void Update()
	{
		if (plugin.ucfixenabled.Value)
		{
			sinceplaytimer += Time.unscaledDeltaTime;
			float num = plugin.ucsweephowoften.Value * 60f;
			if (!(num <= 0f) && !(sinceplaytimer < num))
			{
				sinceplaytimer = 0f;
				((MonoBehaviour)this).StartCoroutine(sweepassets());
			}
		}
	}

	private IEnumerator sweepassets()
	{
		yield return Resources.UnloadUnusedAssets();
		GC.Collect();
	}
}
[HarmonyPatch(typeof(Unit), "Awake")]
public class compatabpatch
{
	private static void Postfix(Unit __instance)
	{
		//IL_008d: 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)
		if (plugin.basecompatenabled.Value && __instance != null && !((Object)(object)((Component)__instance).GetComponentInChildren<UnitRig>() != (Object)null) && !((Object)(object)__instance.data == (Object)null) && !((Object)(object)__instance.data.mainRig == (Object)null))
		{
			Transform transform = ((Component)__instance.data.mainRig).transform;
			UnitRig val = ((Component)__instance).gameObject.AddComponent<UnitRig>();
			Transform val2 = transform.Find("Rigidbodies");
			if ((Object)(object)val2 == (Object)null)
			{
				val2 = new GameObject("Rigidbodies").transform;
			}
			val2.SetParent(transform, false);
			val2.localPosition = Vector3.zero;
			Transform parent = createbone("M_Armature", val2);
			val.m_waist = createbone("M_Hip", parent);
			val.m_torso = createbone("M_Torso", val.m_waist);
			val.m_neck = createbone("M_Neck", val.m_torso);
			val.m_head = createbone("M_Head", val.m_neck);
			val.m_legLeft = createbone("M_Leg_Left", val.m_waist);
			val.m_footLeft = createbone("M_Foot_Left", val.m_legLeft);
			val.m_legRight = createbone("M_Leg_Right", val.m_waist);
			val.m_footRight = createbone("M_Foot_Right", val.m_legRight);
			val.m_armLeft = createbone("M_Arm_Left", val.m_torso);
			val.m_shoulderLeft = createbone("M_Shoulder_Left", val.m_armLeft);
			val.m_wristLeft = createbone("M_Wrist_Left", val.m_shoulderLeft);
			Transform val3 = createbone("M_Hand_Left", val.m_wristLeft);
			val.m_armRight = createbone("M_Arm_Right", val.m_torso);
			val.m_shoulderRight = createbone("M_Shoulder_Right", val.m_armRight);
			val.m_wristRight = createbone("M_Wrist_Right", val.m_shoulderRight);
			Transform val4 = createbone("M_Hand_Right", val.m_wristRight);
			if ((Object)(object)((Component)val3).GetComponent<HandLeft>() == (Object)null)
			{
				((Component)val3).gameObject.AddComponent<HandLeft>();
			}
			if ((Object)(object)((Component)val4).GetComponent<HandRight>() == (Object)null)
			{
				((Component)val4).gameObject.AddComponent<HandRight>();
			}
			ensureweaponcomponents(__instance);
		}
	}

	private static void ensureweaponcomponents(Unit unit)
	{
		WeaponHandler componentInChildren = ((Component)unit).GetComponentInChildren<WeaponHandler>();
		if ((Object)(object)componentInChildren == (Object)null)
		{
			componentInChildren = ((Component)unit.data).gameObject.AddComponent<WeaponHandler>();
			unit.WeaponHandler = componentInChildren;
		}
		HoldingHandler componentInChildren2 = ((Component)unit).GetComponentInChildren<HoldingHandler>();
		if ((Object)(object)componentInChildren2 == (Object)null)
		{
			componentInChildren2 = ((Component)unit.data).gameObject.AddComponent<HoldingHandler>();
			unit.holdingHandler = componentInChildren2;
		}
	}

	private static Transform createbone(string bonename, Transform parent)
	{
		//IL_0014: 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_0026: 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)
		Transform val = parent.Find(bonename);
		if ((Object)(object)val != (Object)null)
		{
			return val;
		}
		GameObject val2 = new GameObject(bonename);
		val2.transform.SetParent(parent, false);
		val2.transform.localPosition = Vector3.zero;
		return val2.transform;
	}
}
public static class abilityregistrar
{
	public static IEnumerator registerwhenready()
	{
		while (ContentDatabase.Instance() == null)
		{
			yield return null;
		}
		icegvolreg.register();
		icegtposeregistration.register();
	}

	public static GameObject addabilitatrat(string name, int localid)
	{
		//IL_0001: Unknown result type (might be due to invalid IL or missing references)
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0013: Expected O, but got Unknown
		//IL_0013: 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_0022: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: 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_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Expected O, but got Unknown
		//IL_006d: Unknown result type (might be due to invalid IL or missing references)
		//IL_007f: Expected O, but got Unknown
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		GameObject val = new GameObject(name);
		val.SetActive(false);
		Object.DontDestroyOnLoad((Object)val);
		((Object)val).hideFlags = (HideFlags)52;
		val.AddComponent<SpecialAbility>();
		CharacterItem component = val.GetComponent<CharacterItem>();
		if ((Object)(object)component != (Object)null)
		{
			component.tags = new List<Tag>
			{
				new Tag((TagType)0, "IceG Abilities")
			};
		}
		setprivatefield(value: (object)new DatabaseEntity((WorkshopContentType)0)
		{
			GUID = new DatabaseID(738209400, localid),
			Name = name
		}, obj: val.GetComponent<SpecialAbility>(), fieldname: "m_entity");
		return val;
	}

	public static void randajcooldown(GameObject obj, float cooldown, float range, UnityAction listener)
	{
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Expected O, but got Unknown
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_002a: Expected O, but got Unknown
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0035: Expected O, but got Unknown
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Expected O, but got Unknown
		//IL_0049: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0050: Unknown result type (might be due to invalid IL or missing references)
		//IL_0055: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0063: 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_0072: Expected O, but got Unknown
		//IL_0074: 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_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_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_0089: Unknown result type (might be due to invalid IL or missing references)
		//IL_008e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0095: Unknown result type (might be due to invalid IL or missing references)
		//IL_009d: Expected O, but got Unknown
		ConditionalEvent val = obj.AddComponent<ConditionalEvent>();
		((Behaviour)val).enabled = false;
		ConditionalEventInstance val2 = new ConditionalEventInstance();
		val2.delay = 0f;
		val2.turnOnEvent = new UnityEvent();
		val2.turnOffEvent = new UnityEvent();
		val2.continuousEvent = new UnityEvent();
		val2.conditions = (EventCondition[])(object)new EventCondition[2]
		{
			new EventCondition
			{
				conditionType = (ConditionType)0,
				startOnCD = true,
				alwaysResetCounter = true,
				value = cooldown,
				counter = cooldown
			},
			new EventCondition
			{
				conditionType = (ConditionType)1,
				whichRange = (WhichRange)0,
				valueType = (ValueType)1,
				value = range,
				startOnCD = true
			}
		};
		val2.turnOnEvent.AddListener(listener);
		val.events = (ConditionalEventInstance[])(object)new ConditionalEventInstance[1] { val2 };
	}

	public static void registerintodatabase(GameObject obj, DatabaseID guid)
	{
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		LandfallContentDatabase landfallContentDatabase = ContentDatabase.Instance().LandfallContentDatabase;
		Dictionary<DatabaseID, Object> dictionary = getprivatefield<Dictionary<DatabaseID, Object>>(ContentDatabase.Instance().AssetLoader, "m_nonStreamableAssets");
		Dictionary<DatabaseID, GameObject> dictionary2 = getprivatefield<Dictionary<DatabaseID, GameObject>>(landfallContentDatabase, "m_combatMoves");
		if (dictionary != null)
		{
			dictionary[guid] = (Object)(object)obj;
		}
		if (dictionary2 != null)
		{
			dictionary2[guid] = obj;
		}
		try
		{
			obj.SetActive(true);
		}
		catch (NullReferenceException)
		{
		}
	}

	public static void setprivatefield(object obj, string fieldname, object value)
	{
		findfield(obj.GetType(), fieldname)?.SetValue(obj, value);
	}

	public static T getprivatefield<T>(object obj, string fieldname)
	{
		FieldInfo fieldInfo = findfield(obj.GetType(), fieldname);
		if (fieldInfo == null)
		{
			return default(T);
		}
		return (T)fieldInfo.GetValue(obj);
	}

	private static FieldInfo findfield(Type t, string fieldname)
	{
		while (t != null)
		{
			FieldInfo field = t.GetField(fieldname, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			if (field != null)
			{
				return field;
			}
			t = t.BaseType;
		}
		return null;
	}
}
public class icegonlyifequip : MonoBehaviour
{
	private void Awake()
	{
		recheck();
	}

	private void OnEnable()
	{
		recheck();
	}

	private void recheck()
	{
		bool enabled = (Object)(object)((Component)this).GetComponent<Unit>() != (Object)null || (Object)(object)((Component)((Component)this).transform.root).GetComponent<Unit>() != (Object)null;
		MonoBehaviour[] components = ((Component)this).GetComponents<MonoBehaviour>();
		for (int i = 0; i < components.Length; i++)
		{
			if (components[i] is icegvolleyball || components[i] is hetpose || components[i] is thiswassupposedtobeatpose)
			{
				((Behaviour)components[i]).enabled = enabled;
			}
		}
		ConditionalEvent component = ((Component)this).GetComponent<ConditionalEvent>();
		if ((Object)(object)component != (Object)null)
		{
			((Behaviour)component).enabled = enabled;
		}
	}
}
public class icegvolleyball : MonoBehaviour
{
	public float range = 12f;

	private DataHandler dadada;

	private RangeWeapon[] rangeweapons;

	private Unit unit_self;

	private void Awake()
	{
		dadada = ((Component)((Component)this).transform.root).GetComponentInChildren<DataHandler>();
		unit_self = ((Component)((Component)this).transform.root).GetComponent<Unit>();
		Unit obj = unit_self;
		rangeweapons = ((obj != null) ? ((Component)obj).GetComponentsInChildren<RangeWeapon>() : null);
	}

	public void TriggerFromEvent()
	{
		Rigidbody val = nearestotorso(range);
		if (!((Object)(object)val == (Object)null))
		{
			if ((rangeweapons == null || rangeweapons.Length == 0) && (Object)(object)unit_self != (Object)null)
			{
				rangeweapons = ((Component)unit_self).GetComponentsInChildren<RangeWeapon>();
			}
			if (rangeweapons != null && rangeweapons.Length != 0)
			{
				((MonoBehaviour)this).StartCoroutine(firvol(val));
			}
		}
	}

	private IEnumerator firvol(Rigidbody targetrig)
	{
		int shots = Mathf.Max(1, plugin.volleyarrowcount.Value);
		float stagger = Mathf.Max(0f, plugin.volleystagger.Value);
		for (int i = 0; i < shots; i++)
		{
			if ((Object)(object)targetrig == (Object)null)
			{
				break;
			}
			RangeWeapon val = rangeweapons[i % rangeweapons.Length];
			if ((Object)(object)val != (Object)null && ((Behaviour)val).isActiveAndEnabled)
			{
				Vector3 val2 = targetrig.position - ((Component)val).transform.position;
				Vector3 normalized = ((Vector3)(ref val2)).normalized;
				((Weapon)val).Attack(((Component)val).transform.position, targetrig, normalized, false);
			}
			if (stagger > 0f)
			{
				yield return (object)new WaitForSeconds(stagger);
			}
			else
			{
				yield return null;
			}
		}
	}

	private Rigidbody nearestotorso(float searchradius)
	{
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: 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_0097: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)dadada == (Object)null || (Object)(object)dadada.torso == (Object)null)
		{
			return null;
		}
		Vector3 position = dadada.torso.position;
		Collider[] array = Physics.OverlapSphere(position, searchradius);
		Rigidbody result = null;
		float num = float.MaxValue;
		for (int i = 0; i < array.Length; i++)
		{
			Unit componentInParent = ((Component)array[i]).GetComponentInParent<Unit>();
			if ((Object)(object)componentInParent == (Object)null || (Object)(object)componentInParent == (Object)(object)unit_self)
			{
				continue;
			}
			DataHandler componentInChildren = ((Component)componentInParent).GetComponentInChildren<DataHandler>();
			if (!((Object)(object)componentInChildren == (Object)null) && !((Object)(object)componentInChildren.torso == (Object)null))
			{
				float num2 = Vector3.Distance(position, componentInChildren.torso.position);
				if (num2 < num)
				{
					num = num2;
					result = ((Component)componentInChildren.torso).GetComponent<Rigidbody>();
				}
			}
		}
		return result;
	}
}
public static class icegvolreg
{
	public static void register()
	{
		//IL_0045: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Expected O, but got Unknown
		//IL_0063: Unknown result type (might be due to invalid IL or missing references)
		GameObject obj = abilityregistrar.addabilitatrat("IceG Volley", 1);
		icegvolleyball icegvolleyball2 = obj.AddComponent<icegvolleyball>();
		icegvolleyball2.range = plugin.volleyrange.Value;
		((Behaviour)icegvolleyball2).enabled = false;
		abilityregistrar.randajcooldown(obj, plugin.volleycooldown.Value, plugin.volleyrange.Value, new UnityAction(icegvolleyball2.TriggerFromEvent));
		obj.AddComponent<icegonlyifequip>();
		DatabaseID guid = default(DatabaseID);
		((DatabaseID)(ref guid))..ctor(738209400, 1);
		abilityregistrar.registerintodatabase(obj, guid);
	}
}
public class hetpose : MonoBehaviour
{
	private DataHandler dadada;

	private Rigidbody[] lockedrigs;

	private SetGlobalJointSettings jointSettings;

	private void Awake()
	{
		dadada = ((Component)((Component)this).transform.root).GetComponentInChildren<DataHandler>();
		Unit component = ((Component)((Component)this).transform.root).GetComponent<Unit>();
		if ((Object)(object)component != (Object)null)
		{
			jointSettings = ((Component)component).GetComponent<SetGlobalJointSettings>();
		}
	}

	private void OnEnable()
	{
		lockhimup();
	}

	private void OnDisable()
	{
		letloose();
	}

	private void FixedUpdate()
	{
		//IL_0070: Unknown result type (might be due to invalid IL or missing references)
		//IL_007a: Unknown result type (might be due to invalid IL or missing references)
		//IL_008d: 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)
		if ((Object)(object)dadada == (Object)null)
		{
			dadada = ((Component)((Component)this).transform.root).GetComponentInChildren<DataHandler>();
			return;
		}
		if (lockedrigs == null)
		{
			lockhimup();
		}
		dadada.cantFallForSeconds = Mathf.Max(dadada.cantFallForSeconds, 0.5f);
		for (int i = 0; i < lockedrigs.Length; i++)
		{
			if (!((Object)(object)lockedrigs[i] == (Object)null))
			{
				Rigidbody obj = lockedrigs[i];
				obj.velocity *= 0f;
				Rigidbody obj2 = lockedrigs[i];
				obj2.angularVelocity *= 0f;
			}
		}
	}

	private void lockhimup()
	{
		//IL_009d: 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)
		if ((Object)(object)dadada == (Object)null || (Object)(object)dadada.allRigs == (Object)null || dadada.allRigs.AllRigs == null)
		{
			return;
		}
		lockedrigs = dadada.allRigs.AllRigs;
		if ((Object)(object)jointSettings != (Object)null)
		{
			jointSettings.SetJointConstraints(true);
		}
		for (int i = 0; i < lockedrigs.Length; i++)
		{
			if (!((Object)(object)lockedrigs[i] == (Object)null))
			{
				lockedrigs[i].freezeRotation = true;
				lockedrigs[i].constraints = (RigidbodyConstraints)126;
				lockedrigs[i].angularVelocity = Vector3.zero;
				lockedrigs[i].velocity = Vector3.zero;
			}
		}
	}

	private void letloose()
	{
		if (lockedrigs == null)
		{
			return;
		}
		for (int i = 0; i < lockedrigs.Length; i++)
		{
			if ((Object)(object)lockedrigs[i] != (Object)null)
			{
				lockedrigs[i].freezeRotation = false;
				lockedrigs[i].constraints = (RigidbodyConstraints)0;
			}
		}
		if ((Object)(object)jointSettings != (Object)null)
		{
			jointSettings.SetJointConstraints(false);
		}
		lockedrigs = null;
	}
}
public class thiswassupposedtobeatpose : MonoBehaviour
{
	private DataHandler dadada;

	private Rigidbody[] lockedrigs;

	private void Awake()
	{
		dadada = ((Component)((Component)this).transform.root).GetComponentInChildren<DataHandler>();
	}

	private void OnEnable()
	{
		lockhimup();
	}

	private void OnDisable()
	{
		letloose();
	}

	private void FixedUpdate()
	{
		if ((Object)(object)dadada == (Object)null)
		{
			dadada = ((Component)((Component)this).transform.root).GetComponentInChildren<DataHandler>();
			return;
		}
		if (lockedrigs == null)
		{
			lockhimup();
		}
		dadada.cantFallForSeconds = Mathf.Max(dadada.cantFallForSeconds, 0.5f);
	}

	private void lockhimup()
	{
		//IL_0074: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)dadada == (Object)null || (Object)(object)dadada.allRigs == (Object)null || dadada.allRigs.AllRigs == null)
		{
			return;
		}
		lockedrigs = dadada.allRigs.AllRigs;
		for (int i = 0; i < lockedrigs.Length; i++)
		{
			if (!((Object)(object)lockedrigs[i] == (Object)null))
			{
				lockedrigs[i].freezeRotation = true;
				lockedrigs[i].angularVelocity = Vector3.zero;
			}
		}
	}

	private void letloose()
	{
		if (lockedrigs == null)
		{
			return;
		}
		for (int i = 0; i < lockedrigs.Length; i++)
		{
			if ((Object)(object)lockedrigs[i] != (Object)null)
			{
				lockedrigs[i].freezeRotation = false;
			}
		}
		lockedrigs = null;
	}
}
public static class icegtposeregistration
{
	public static void register()
	{
		//IL_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_005c: Unknown result type (might be due to invalid IL or missing references)
		GameObject obj = abilityregistrar.addabilitatrat("T-Pose", 3);
		((Behaviour)obj.AddComponent<hetpose>()).enabled = false;
		obj.AddComponent<icegonlyifequip>();
		DatabaseID guid = default(DatabaseID);
		((DatabaseID)(ref guid))..ctor(738209400, 3);
		abilityregistrar.registerintodatabase(obj, guid);
		GameObject obj2 = abilityregistrar.addabilitatrat("how iceg be moving", 2);
		((Behaviour)obj2.AddComponent<thiswassupposedtobeatpose>()).enabled = false;
		obj2.AddComponent<icegonlyifequip>();
		DatabaseID guid2 = default(DatabaseID);
		((DatabaseID)(ref guid2))..ctor(738209400, 2);
		abilityregistrar.registerintodatabase(obj2, guid2);
	}
}