Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Clay Men v1.5.9
plugins/Moffein-ClayMen/ClayMen.dll
Decompiled a year agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.ClaymanMonster; using EntityStates.MoffeinClayMan; using On.EntityStates.ClaymanMonster; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.Navigation; using SneedUtils; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using Zio.FileSystems; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ClayMen")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+337127dd63d488ebcb31d24d4fc9b48ea04ee2e0")] [assembly: AssemblyProduct("ClayMen")] [assembly: AssemblyTitle("ClayMen")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace SneedUtils { public class SneedUtils { public static int FindEnemiesInSphere(float radius, Vector3 position, TeamIndex team, bool airborneOnly = false) { //IL_0009: 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_00a3: 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) int num = 0; List<HealthComponent> list = new List<HealthComponent>(); Collider[] array = Physics.OverlapSphere(position, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); if (!Object.op_Implicit((Object)(object)component)) { continue; } HealthComponent healthComponent = component.healthComponent; if (Object.op_Implicit((Object)(object)healthComponent) && !list.Contains(healthComponent)) { list.Add(healthComponent); if (Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.teamComponent) && healthComponent.body.teamComponent.teamIndex != team && (!airborneOnly || healthComponent.body.isFlying || (Object.op_Implicit((Object)(object)healthComponent.body.characterMotor) && !healthComponent.body.characterMotor.isGrounded))) { num++; } } } return num; } public static void RemoveItemTag(ItemDef itemDef, ItemTag tag) { //IL_0002: 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) if (itemDef.ContainsTag(tag)) { List<ItemTag> list = itemDef.tags.ToList(); list.Remove(tag); itemDef.tags = list.ToArray(); } } public static void AddItemTag(ItemDef itemDef, ItemTag tag) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) if (!itemDef.ContainsTag(tag)) { List<ItemTag> list = itemDef.tags.ToList(); list.Add(tag); itemDef.tags = list.ToArray(); } } public static void DumpEntityStateConfig(EntityStateConfiguration esc) { for (int i = 0; i < esc.serializedFieldsCollection.serializedFields.Length; i++) { if (Object.op_Implicit(esc.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue)) { Debug.Log((object)(esc.serializedFieldsCollection.serializedFields[i].fieldName + " - " + (object)esc.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue)); } else { Debug.Log((object)(esc.serializedFieldsCollection.serializedFields[i].fieldName + " - " + esc.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue)); } } } public static void DumpEntityStateConfig(string entityStateName) { EntityStateConfiguration esc = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); DumpEntityStateConfig(esc); } public static Object GetEntityStateFieldObject(string entityStateName, string fieldName) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue; } } return null; } public static string GetEntityStateFieldString(string entityStateName, string fieldName) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue; } } return string.Empty; } public static bool SetEntityStateField(string entityStateName, string fieldName, Object newObject) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue = newObject; return true; } } return false; } public static bool SetEntityStateField(string entityStateName, string fieldName, string value) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue = value; return true; } } return false; } } } namespace EntityStates.MoffeinClayMan { public class DeathState : GenericCharacterDeath { public static GameObject initialExplosion = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impacteffects/claypotprojectileexplosion"); public override void OnEnter() { //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) ((GenericCharacterDeath)this).OnEnter(); if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelBaseTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelBaseTransform).gameObject); } if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator.modelTransform)) { EntityState.Destroy((Object)(object)((Component)((EntityState)this).modelLocator.modelTransform).gameObject); } } if (NetworkServer.active) { EffectManager.SimpleEffect(initialExplosion, ((EntityState)this).transform.position, ((EntityState)this).transform.rotation, true); EntityState.Destroy((Object)(object)((EntityState)this).gameObject); } } } public class SwipeForwardTar : BaseState { public static float baseDuration = 1f; public static float damageCoefficient = 1.5f; public static float forceMagnitude = 1000f; public static float selfForceMagnitude = 1800f; public static GameObject hitEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/impacteffects/squidturrethiteffect"); public static GameObject swingEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/claymanswordswing"); public static string attackString = "Play_merc_sword_swing"; private OverlapAttack attack; private Animator modelAnimator; private float duration; private bool hasSlashed; public override void OnEnter() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //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_00bf: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; modelAnimator = ((EntityState)this).GetModelAnimator(); Transform modelTransform = ((EntityState)this).GetModelTransform(); attack = new OverlapAttack(); attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = ((BaseState)this).GetTeam(); attack.damage = damageCoefficient * base.damageStat; attack.hitEffectPrefab = hitEffectPrefab; attack.isCrit = ((BaseState)this).RollCrit(); attack.procCoefficient = 1f; attack.damageType.damageSource = (DamageSource)1; Util.PlaySound(attackString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)modelTransform)) { attack.hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == "Sword"); } if (Object.op_Implicit((Object)(object)modelAnimator)) { ((EntityState)this).PlayAnimation("Gesture, Override", "SwipeForward", "SwipeForward.playbackRate", duration, 0f); ((EntityState)this).PlayAnimation("Gesture, Additive", "SwipeForward", "SwipeForward.playbackRate", duration, 0f); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(2f); } } public override void FixedUpdate() { //IL_00b1: 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_00c0: 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) ((EntityState)this).FixedUpdate(); if (NetworkServer.active && Object.op_Implicit((Object)(object)modelAnimator) && modelAnimator.GetFloat("SwipeForward.hitBoxActive") > 0.1f) { if (!hasSlashed) { EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, "SwingCenter", true); HealthComponent healthComponent = ((EntityState)this).characterBody.healthComponent; CharacterDirection characterDirection = ((EntityState)this).characterDirection; if (Object.op_Implicit((Object)(object)healthComponent)) { healthComponent.TakeDamageForce(selfForceMagnitude * characterDirection.forward, true, false); } hasSlashed = true; } attack.forceVector = ((EntityState)this).transform.forward * forceMagnitude; attack.Fire((List<HurtBox>)null); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } } namespace ClayMen { public class ClayMenContent : IContentPackProvider { public static ContentPack content = new ContentPack(); public static GameObject ClayManObject; public static GameObject ClayManMaster; public static UnlockableDef ClayManLogbookUnlockable; public static DirectorCardHolder ClayManCard; public static DirectorCardHolder ClayManLoopCard; public string identifier => "MoffeinClayMen.content"; public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(content, args.output); yield break; } public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { content.entityStateTypes.Add(new Type[2] { typeof(SwipeForwardTar), typeof(DeathState) }); content.bodyPrefabs.Add((GameObject[])(object)new GameObject[1] { ClayManObject }); content.masterPrefabs.Add((GameObject[])(object)new GameObject[1] { ClayManMaster }); content.unlockableDefs.Add((UnlockableDef[])(object)new UnlockableDef[1] { ClayManLogbookUnlockable }); yield break; } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Moffein.ClayMen", "Clay Men", "1.5.9")] [R2APISubmoduleDependency(new string[] { "DirectorAPI", "PrefabAPI" })] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class ClayMenPlugin : BaseUnityPlugin { public static Transform headTransform; public static PluginInfo pluginInfo; public static List<StageSpawnInfo> StageList = new List<StageSpawnInfo>(); public void LateSetup() { ItemDisplays.DisplayRules(ClayMenContent.ClayManObject); } public void ReadConfig() { //IL_0011: 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_0030: Expected O, but got Unknown //IL_0030: Expected O, but got Unknown //IL_0046: 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: Expected O, but got Unknown //IL_0065: Expected O, but got Unknown //IL_017e: Unknown result type (might be due to invalid IL or missing references) string value = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Spawns", "Stage List"), "goolake, ancientloft, wispgraveyard, sulfurpools, arena, itgoolake, itancientloft, village - loop, villagenight, habitat, habitatfall, ", new ConfigDescription("What stages the monster will show up on. Add a '- loop' after the stagename to make it only spawn after looping. List of stage names can be found at https://github.com/risk-of-thunder/R2Wiki/wiki/List-of-scene-names", (AcceptableValueBase)null, Array.Empty<object>())).Value; string value2 = ((BaseUnityPlugin)this).Config.Bind<string>(new ConfigDefinition("Spawns", "Remove Imps"), "wispgraveyard", new ConfigDescription("Remove Imps from these stages to prevent role overlap.", (AcceptableValueBase)null, Array.Empty<object>())).Value; value = new string((from c in value.ToCharArray() where !char.IsWhiteSpace(c) select c).ToArray()); string[] array = value.Split(','); string[] array2 = array; foreach (string text in array2) { string[] array3 = text.Split('-'); string stageName = array3[0]; int minStages = 0; if (array3.Length > 1) { minStages = 5; } StageList.Add(new StageSpawnInfo(stageName, minStages)); } value2 = new string((from c in value2.ToCharArray() where !char.IsWhiteSpace(c) select c).ToArray()); string[] array4 = value.Split(','); string[] array5 = array4; foreach (string text2 in array5) { string[] array6 = text2.Split('-'); string text3 = array6[0]; SceneDef val = ScriptableObject.CreateInstance<SceneDef>(); val.baseSceneNameOverride = text3; Helpers.RemoveExistingMonsterFromStage(MonsterNames.Imp, DirectorAPI.GetStageEnumFromSceneDef(val), text3); } } private void SetEntityStateFieldValues() { global::SneedUtils.SneedUtils.SetEntityStateField("EntityStates.ClaymanMonster.Leap", "verticalJumpSpeed", "20"); global::SneedUtils.SneedUtils.SetEntityStateField("EntityStates.ClaymanMonster.Leap", "horizontalJumpSpeedCoefficient", "2.3"); global::SneedUtils.SneedUtils.SetEntityStateField("EntityStates.ClaymanMonster.SpawnState", "duration", "3.2"); } public void Awake() { //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Expected O, but got Unknown pluginInfo = ((BaseUnityPlugin)this).Info; new LanguageTokens(); ReadConfig(); ClayMenContent.ClayManObject = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/characterbodies/ClayBody"), "MoffeinClayManBody", true); ClayMenContent.ClayManMaster = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("prefabs/charactermasters/ClaymanMaster"), "MoffeinClayManMaster", true); SetEntityStateFieldValues(); Prefab.Modify(ClayMenContent.ClayManObject); ModifyAI(); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(LateSetup)); Director.Setup(); ModifySkills(ClayMenContent.ClayManObject); ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); } private void ModifySkills(GameObject bodyObject) { //IL_002d: 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) SkillLocator component = bodyObject.GetComponent<SkillLocator>(); component.primary.skillFamily.variants[0].skillDef.activationState = new SerializableEntityStateType(typeof(SwipeForwardTar)); component.primary.skillFamily.variants[0].skillDef.isCombatSkill = true; component.primary.skillFamily.variants[0].skillDef.baseRechargeInterval = 1.4f; } private void ModifyAI() { AISkillDriver component = ClayMenContent.ClayManMaster.GetComponent<AISkillDriver>(); component.maxDistance = 12f; ClayMenContent.ClayManMaster.GetComponent<CharacterMaster>().bodyPrefab = ClayMenContent.ClayManObject; } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)new ClayMenContent()); } } public class StageSpawnInfo { private string stageName; private int minStages; public StageSpawnInfo(string stageName, int minStages) { this.stageName = stageName; this.minStages = minStages; } public string GetStageName() { return stageName; } public int GetMinStages() { return minStages; } } public class Director { public static void Setup() { //IL_0048: 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_0056: 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_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0097: 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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: 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_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Expected O, but got Unknown //IL_00f5: 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_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Expected O, but got Unknown //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) CharacterSpawnCard val = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscBeetle"); CharacterSpawnCard val2 = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscImp"); CharacterSpawnCard val3 = LegacyResourcesAPI.Load<CharacterSpawnCard>("SpawnCards/CharacterSpawnCards/cscLesserWisp"); CharacterSpawnCard val4 = ScriptableObject.CreateInstance<CharacterSpawnCard>(); ((Object)val4).name = "cscClayMan"; ((SpawnCard)val4).prefab = ClayMenContent.ClayManMaster; ((SpawnCard)val4).sendOverNetwork = true; ((SpawnCard)val4).hullSize = (HullClassification)0; ((SpawnCard)val4).nodeGraphType = (GraphType)0; ((SpawnCard)val4).requiredFlags = (NodeFlags)0; ((SpawnCard)val4).forbiddenFlags = (NodeFlags)4; ((SpawnCard)val4).directorCreditCost = 28; ((SpawnCard)val4).occupyPosition = false; val4.loadout = new SerializableLoadout(); val4.noElites = false; val4.forbiddenAsBoss = false; DirectorCard val5 = new DirectorCard { spawnCard = (SpawnCard)(object)val4, selectionWeight = 1, preventOverhead = false, minimumStageCompletions = 0, spawnDistance = (MonsterSpawnDistance)0 }; DirectorCardHolder clayManCard = new DirectorCardHolder { Card = val5, MonsterCategory = (MonsterCategory)2 }; DirectorCard card = new DirectorCard { spawnCard = (SpawnCard)(object)val4, selectionWeight = 1, preventOverhead = false, minimumStageCompletions = 5, spawnDistance = (MonsterSpawnDistance)0 }; DirectorCardHolder clayManLoopCard = new DirectorCardHolder { Card = card, MonsterCategory = (MonsterCategory)2 }; ClayMenContent.ClayManCard = clayManCard; ClayMenContent.ClayManLoopCard = clayManLoopCard; DirectorCardCategorySelection val6 = Addressables.LoadAssetAsync<DirectorCardCategorySelection>((object)"RoR2/Base/MixEnemy/dccsMixEnemy.asset").WaitForCompletion(); int num = FindCategoryIndexByName(val6, "Basic Monsters"); if (num >= 0) { val6.AddCard(num, val5); } foreach (StageSpawnInfo stage in ClayMenPlugin.StageList) { DirectorCardHolder val7 = ((stage.GetMinStages() == 0) ? ClayMenContent.ClayManCard : ClayMenContent.ClayManLoopCard); SceneDef val8 = ScriptableObject.CreateInstance<SceneDef>(); val8.baseSceneNameOverride = stage.GetStageName(); Helpers.AddNewMonsterToStage(val7, false, DirectorAPI.GetStageEnumFromSceneDef(val8), stage.GetStageName()); } } public static int FindCategoryIndexByName(DirectorCardCategorySelection dcs, string categoryName) { for (int i = 0; i < dcs.categories.Length; i++) { if (string.CompareOrdinal(dcs.categories[i].name, categoryName) == 0) { return i; } } return -1; } } internal class ItemDisplays { private static Dictionary<string, GameObject> itemDisplayPrefabs = new Dictionary<string, GameObject>(); public static List<KeyAssetRuleGroup> equipmentList; public static Transform headTransform; public static void DisplayRules(GameObject clayObject) { //IL_0030: 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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0071: 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_0099: 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_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0113: 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_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0126: 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_013a: 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_0162: 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_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_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_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: 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_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0335: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_0361: Unknown result type (might be due to invalid IL or missing references) //IL_0366: Unknown result type (might be due to invalid IL or missing references) //IL_036e: Unknown result type (might be due to invalid IL or missing references) //IL_0373: Unknown result type (might be due to invalid IL or missing references) //IL_0375: Unknown result type (might be due to invalid IL or missing references) //IL_037e: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_03ba: Unknown result type (might be due to invalid IL or missing references) //IL_03bf: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: Unknown result type (might be due to invalid IL or missing references) //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_03e6: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: Unknown result type (might be due to invalid IL or missing references) //IL_03f0: Unknown result type (might be due to invalid IL or missing references) //IL_03f8: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Unknown result type (might be due to invalid IL or missing references) //IL_0410: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_0435: Unknown result type (might be due to invalid IL or missing references) //IL_0447: Unknown result type (might be due to invalid IL or missing references) //IL_0450: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_0488: Unknown result type (might be due to invalid IL or missing references) //IL_049e: Unknown result type (might be due to invalid IL or missing references) //IL_04a3: Unknown result type (might be due to invalid IL or missing references) //IL_04b9: Unknown result type (might be due to invalid IL or missing references) //IL_04be: Unknown result type (might be due to invalid IL or missing references) //IL_04c6: Unknown result type (might be due to invalid IL or missing references) //IL_04cb: Unknown result type (might be due to invalid IL or missing references) //IL_04cd: Unknown result type (might be due to invalid IL or missing references) //IL_04d6: Unknown result type (might be due to invalid IL or missing references) //IL_04df: Unknown result type (might be due to invalid IL or missing references) //IL_0512: Unknown result type (might be due to invalid IL or missing references) //IL_0517: Unknown result type (might be due to invalid IL or missing references) //IL_052d: Unknown result type (might be due to invalid IL or missing references) //IL_0532: Unknown result type (might be due to invalid IL or missing references) //IL_0548: Unknown result type (might be due to invalid IL or missing references) //IL_054d: Unknown result type (might be due to invalid IL or missing references) //IL_0555: Unknown result type (might be due to invalid IL or missing references) //IL_055a: Unknown result type (might be due to invalid IL or missing references) //IL_055c: Unknown result type (might be due to invalid IL or missing references) //IL_0566: Unknown result type (might be due to invalid IL or missing references) //IL_0568: Unknown result type (might be due to invalid IL or missing references) //IL_056d: Unknown result type (might be due to invalid IL or missing references) //IL_057c: Unknown result type (might be due to invalid IL or missing references) //IL_0597: Unknown result type (might be due to invalid IL or missing references) //IL_05a9: Unknown result type (might be due to invalid IL or missing references) //IL_05b2: Unknown result type (might be due to invalid IL or missing references) //IL_05e5: Unknown result type (might be due to invalid IL or missing references) //IL_05ea: Unknown result type (might be due to invalid IL or missing references) //IL_05f1: Unknown result type (might be due to invalid IL or missing references) //IL_05f6: Unknown result type (might be due to invalid IL or missing references) //IL_05fd: Unknown result type (might be due to invalid IL or missing references) //IL_0602: Unknown result type (might be due to invalid IL or missing references) //IL_060a: Unknown result type (might be due to invalid IL or missing references) //IL_060f: Unknown result type (might be due to invalid IL or missing references) //IL_0611: Unknown result type (might be due to invalid IL or missing references) //IL_061b: Unknown result type (might be due to invalid IL or missing references) //IL_061d: Unknown result type (might be due to invalid IL or missing references) //IL_0622: Unknown result type (might be due to invalid IL or missing references) //IL_0631: Unknown result type (might be due to invalid IL or missing references) //IL_064c: Unknown result type (might be due to invalid IL or missing references) //IL_065e: Unknown result type (might be due to invalid IL or missing references) //IL_0667: Unknown result type (might be due to invalid IL or missing references) //IL_069a: Unknown result type (might be due to invalid IL or missing references) //IL_069f: Unknown result type (might be due to invalid IL or missing references) //IL_06b5: Unknown result type (might be due to invalid IL or missing references) //IL_06ba: Unknown result type (might be due to invalid IL or missing references) //IL_06c6: Unknown result type (might be due to invalid IL or missing references) //IL_06cb: Unknown result type (might be due to invalid IL or missing references) //IL_06d0: Unknown result type (might be due to invalid IL or missing references) //IL_06d8: Unknown result type (might be due to invalid IL or missing references) //IL_06dd: Unknown result type (might be due to invalid IL or missing references) //IL_06df: Unknown result type (might be due to invalid IL or missing references) //IL_06e9: Unknown result type (might be due to invalid IL or missing references) //IL_06eb: Unknown result type (might be due to invalid IL or missing references) //IL_06f0: Unknown result type (might be due to invalid IL or missing references) //IL_06ff: Unknown result type (might be due to invalid IL or missing references) //IL_071a: Unknown result type (might be due to invalid IL or missing references) //IL_072c: Unknown result type (might be due to invalid IL or missing references) //IL_0735: Unknown result type (might be due to invalid IL or missing references) //IL_0768: Unknown result type (might be due to invalid IL or missing references) //IL_076d: Unknown result type (might be due to invalid IL or missing references) //IL_0783: Unknown result type (might be due to invalid IL or missing references) //IL_0788: Unknown result type (might be due to invalid IL or missing references) //IL_079e: Unknown result type (might be due to invalid IL or missing references) //IL_07a3: Unknown result type (might be due to invalid IL or missing references) //IL_07ab: Unknown result type (might be due to invalid IL or missing references) //IL_07b0: Unknown result type (might be due to invalid IL or missing references) //IL_07b2: Unknown result type (might be due to invalid IL or missing references) //IL_07bc: Unknown result type (might be due to invalid IL or missing references) //IL_07be: Unknown result type (might be due to invalid IL or missing references) //IL_07c3: Unknown result type (might be due to invalid IL or missing references) //IL_07d2: Unknown result type (might be due to invalid IL or missing references) //IL_07ed: Unknown result type (might be due to invalid IL or missing references) //IL_07ff: Unknown result type (might be due to invalid IL or missing references) //IL_0808: Unknown result type (might be due to invalid IL or missing references) //IL_083b: Unknown result type (might be due to invalid IL or missing references) //IL_0840: Unknown result type (might be due to invalid IL or missing references) //IL_0856: Unknown result type (might be due to invalid IL or missing references) //IL_085b: Unknown result type (might be due to invalid IL or missing references) //IL_0871: Unknown result type (might be due to invalid IL or missing references) //IL_0876: Unknown result type (might be due to invalid IL or missing references) //IL_087e: Unknown result type (might be due to invalid IL or missing references) //IL_0883: Unknown result type (might be due to invalid IL or missing references) //IL_0885: Unknown result type (might be due to invalid IL or missing references) //IL_088f: Unknown result type (might be due to invalid IL or missing references) //IL_0891: Unknown result type (might be due to invalid IL or missing references) //IL_0896: Unknown result type (might be due to invalid IL or missing references) ChildLocator componentInChildren = clayObject.GetComponentInChildren<ChildLocator>(); Array.Resize(ref componentInChildren.transformPairs, componentInChildren.transformPairs.Length + 1); componentInChildren.transformPairs[componentInChildren.transformPairs.Length - 1] = new NameTransformPair { name = "Head", transform = headTransform }; PopulateDisplays(); ItemDisplayRuleSet val = ScriptableObject.CreateInstance<ItemDisplayRuleSet>(); equipmentList = new List<KeyAssetRuleGroup>(); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixPoison, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteUrchinCrown"), childName = "Head", localPos = new Vector3(0f, 0.4f, 0f), localAngles = new Vector3(255f, 0f, 0f), localScale = 0.07f * Vector3.one, limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixHaunted, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteStealthCrown"), childName = "Head", localPos = new Vector3(0f, 0.3f, 0f), localAngles = new Vector3(260f, 0f, 0f), localScale = 0.07f * Vector3.one, limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixWhite, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteIceCrown"), childName = "Head", localPos = new Vector3(0f, 0.33f, -0.05f), localAngles = new Vector3(260f, 0f, 0f), localScale = 0.035f * Vector3.one, limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixBlue, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteRhinoHorn"), childName = "Head", localPos = new Vector3(0f, 0.28f, 0.1f), localAngles = new Vector3(-20f, 0f, 0f), localScale = 0.18f * Vector3.one, limbMask = (LimbFlags)0 }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteRhinoHorn"), childName = "Head", localPos = new Vector3(0f, 0.21f, 0.1f), localAngles = new Vector3(-10f, 0f, 0f), localScale = 0.25f * Vector3.one, limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Equipment.AffixRed, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteHorn"), childName = "Head", localPos = new Vector3(-0.1f, 0.25f, -0.1f), localAngles = new Vector3(0f, 20f, 0f), localScale = new Vector3(-0.1f, 0.1f, 0.1f), limbMask = (LimbFlags)0 }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteHorn"), childName = "Head", localPos = new Vector3(0.1f, 0.25f, -0.1f), localAngles = new Vector3(0f, -20f, 0f), localScale = new Vector3(0.1f, 0.1f, 0.1f), limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Earth.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteMendingAntlers"), childName = "Head", localPos = new Vector3(0f, 0.25f, 0f), localAngles = Vector3.zero, localScale = Vector3.one, limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Void.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayAffixVoid"), childName = "Head", localPos = new Vector3(0f, 0.14f, 0.15f), localAngles = new Vector3(90f, 0f, 0f), localScale = 0.2f * Vector3.one, limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Aurelionite.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteAurelioniteEquipment"), childName = "Head", localPos = new Vector3(0f, 0.28f, 0.14f), localAngles = new Vector3(0f, 0f, 0f), localScale = new Vector3(0.4f, 0.4f, 0.4f), limbMask = (LimbFlags)0 } } } }); equipmentList.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Elites.Bead.eliteEquipmentDef, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = LoadDisplay("DisplayEliteBeadSpike"), childName = "Head", localPos = new Vector3(0f, 0.3f, -0.075f), localAngles = new Vector3(326f, 0f, 0f), localScale = new Vector3(0.025f, 0.025f, 0.025f), limbMask = (LimbFlags)0 } } } }); val.keyAssetRuleGroups = equipmentList.ToArray(); CharacterModel component = ((Component)clayObject.GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>(); component.itemDisplayRuleSet = val; component.itemDisplayRuleSet.GenerateRuntimeValues(); itemDisplayPrefabs.Clear(); } internal static void PopulateDisplays() { ItemDisplayRuleSet itemDisplayRuleSet = ((Component)LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>().itemDisplayRuleSet; KeyAssetRuleGroup[] keyAssetRuleGroups = itemDisplayRuleSet.keyAssetRuleGroups; for (int i = 0; i < keyAssetRuleGroups.Length; i++) { ItemDisplayRule[] rules = keyAssetRuleGroups[i].displayRuleGroup.rules; if (rules == null) { continue; } for (int j = 0; j < rules.Length; j++) { GameObject followerPrefab = rules[j].followerPrefab; if (Object.op_Implicit((Object)(object)followerPrefab)) { string key = ((Object)followerPrefab).name?.ToLower(); if (!itemDisplayPrefabs.ContainsKey(key)) { itemDisplayPrefabs[key] = followerPrefab; } } } } } public static GameObject LoadDisplay(string name) { if (itemDisplayPrefabs.ContainsKey(name.ToLower()) && Object.op_Implicit((Object)(object)itemDisplayPrefabs[name.ToLower()])) { return itemDisplayPrefabs[name.ToLower()]; } return null; } } internal class LanguageTokens { public static SubFileSystem fileSystem; internal static string languageRoot => Path.Combine(assemblyDir, "language"); internal static string assemblyDir => Path.GetDirectoryName(ClayMenPlugin.pluginInfo.Location); public LanguageTokens() { RegisterLanguageTokens(); } public static void RegisterLanguageTokens() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown Language.SetFolders += new hook_SetFolders(fixme); } private static void fixme(orig_SetFolders orig, Language self, IEnumerable<string> newFolders) { if (Directory.Exists(languageRoot)) { IEnumerable<string> second = Directory.EnumerateDirectories(Path.Combine(languageRoot), self.name); orig.Invoke(self, newFolders.Union(second)); } else { orig.Invoke(self, newFolders); } } } public class Prefab { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnEnter <>9__0_0; internal void <Modify>b__0_0(orig_OnEnter orig, SpawnState self) { orig.Invoke(self); Util.PlayAttackSpeedSound("Play_clayBruiser_attack2_shoot", ((Component)((EntityState)self).outer).gameObject, 1f); } } public static void Modify(GameObject clayObject) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Expected O, but got Unknown clayObject.AddComponent<Interactor>().maxInteractionDistance = 3f; clayObject.AddComponent<InteractionDriver>(); ModelLocator component = clayObject.GetComponent<ModelLocator>(); ((Component)component.modelTransform).gameObject.layer = LayerIndex.entityPrecise.intVal; Transform modelTransform = component.modelTransform; modelTransform.localScale *= 1.4f; component.noCorpse = true; CharacterDeathBehavior component2 = clayObject.GetComponent<CharacterDeathBehavior>(); component2.deathState = new SerializableEntityStateType(typeof(DeathState)); CharacterBody component3 = clayObject.GetComponent<CharacterBody>(); component3.baseNameToken = "MOFFEIN_CLAY_BODY_NAME"; component3.baseJumpPower = 22f; component3.baseMaxHealth = 140f; component3.levelMaxHealth = component3.baseMaxHealth * 0.3f; component3.baseArmor = 0f; component3.baseDamage = 12f; component3.levelDamage = component3.baseDamage * 0.2f; component3.baseMoveSpeed = 10f; component3.baseRegen = 0f; component3.levelRegen = 0f; component3.bodyFlags = (BodyFlags)8; SfxLocator component4 = clayObject.GetComponent<SfxLocator>(); component4.deathSound = "Play_clayboss_M1_explo"; component4.barkSound = ""; EntityLocator val = clayObject.AddComponent<EntityLocator>(); val.entity = clayObject; FixHitbox(clayObject, component); AddSSoH(clayObject); DeathRewards component5 = clayObject.GetComponent<DeathRewards>(); ClayMenContent.ClayManLogbookUnlockable = ScriptableObject.CreateInstance<UnlockableDef>(); ClayMenContent.ClayManLogbookUnlockable.nameToken = "UNLOCKABLE_LOG_MOFFEIN_CLAY_BODY"; ClayMenContent.ClayManLogbookUnlockable.cachedName = "MOFFEIN_CLAY_BODY_NAME"; component5.logUnlockableDef = ClayMenContent.ClayManLogbookUnlockable; object obj = <>c.<>9__0_0; if (obj == null) { hook_OnEnter val2 = delegate(orig_OnEnter orig, SpawnState self) { orig.Invoke(self); Util.PlayAttackSpeedSound("Play_clayBruiser_attack2_shoot", ((Component)((EntityState)self).outer).gameObject, 1f); }; <>c.<>9__0_0 = val2; obj = (object)val2; } SpawnState.OnEnter += (hook_OnEnter)obj; } public static void FixHitbox(GameObject enemyObject, ModelLocator modelLocator) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) Component[] componentsInChildren = (Component[])(object)enemyObject.GetComponentsInChildren<Transform>(); Component[] array = componentsInChildren; Transform val = null; Transform val2 = null; Transform val3 = null; Component[] array2 = array; for (int i = 0; i < array2.Length; i++) { Transform val4 = (Transform)array2[i]; if (((Object)val4).name == "chest") { val = val4; } else if (((Object)val4).name == "head") { val2 = val4; } else if (((Object)val4).name == "Hitbox") { val3 = val4; } if ((Object)(object)val != (Object)null && (Object)(object)val2 != (Object)null && (Object)(object)val3 != (Object)null) { break; } } ItemDisplays.headTransform = val2; HurtBoxGroup val5 = ((Component)modelLocator.modelTransform).gameObject.AddComponent<HurtBoxGroup>(); val3.localScale = new Vector3(1f, 3.4f, 1.6f); ChildLocator component = ((Component)modelLocator.modelTransform).GetComponent<ChildLocator>(); Transform val6 = component.FindChild("SwingCenter"); val6.localPosition += new Vector3(0f, 0.7f, 1.8f); ((Component)val2).gameObject.layer = LayerIndex.entityPrecise.intVal; CapsuleCollider val7 = ((Component)val2).gameObject.AddComponent<CapsuleCollider>(); val7.height = 2f; val7.radius = 0.4f; val7.center = new Vector3(0f, -0.5f, 0f); HurtBox val8 = ((Component)val2).gameObject.AddComponent<HurtBox>(); val8.isBullseye = true; val8.healthComponent = enemyObject.GetComponent<HealthComponent>(); val8.damageModifier = (DamageModifier)0; val8.hurtBoxGroup = val5; val8.indexInGroup = 0; val8.isSniperTarget = true; HurtBox[] hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val8 }; val5.mainHurtBox = val8; val5.hurtBoxes = hurtBoxes; } private static void AddSSoH(GameObject enemyObject) { //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) EntityStateMachine targetStateMachine = null; EntityStateMachine val = null; EntityStateMachine[] components = enemyObject.GetComponents<EntityStateMachine>(); EntityStateMachine[] array = components; foreach (EntityStateMachine val2 in array) { string customName = val2.customName; string text = customName; if (!(text == "Body")) { if (text == "Weapon") { val = val2; } } else { targetStateMachine = val2; } } SetStateOnHurt val3 = enemyObject.AddComponent<SetStateOnHurt>(); val3.canBeFrozen = true; val3.canBeStunned = true; val3.canBeHitStunned = true; val3.hitThreshold = 0.35f; val3.targetStateMachine = targetStateMachine; val3.idleStateMachine = (EntityStateMachine[])(object)new EntityStateMachine[1] { val }; val3.hurtState = new SerializableEntityStateType(typeof(HurtState)); } } }