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 GYARMOD v1.0.0
plugins/GYARMOD/ExamplePlugin.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.Logging; using EntityStates; using ExamplePlugin.Items; using ExamplePlugin.Networking; using ExamplePlugin.SkillStates; using ExamplePlugin.Skills; using HG.BlendableTypes; using HG.Reflection; using HarmonyLib; using Microsoft.CodeAnalysis; using On.RoR2.Items; using R2API; using R2API.Networking; using R2API.Networking.Interfaces; using R2API.Utils; using RoR2; using RoR2.ExpansionManagement; using RoR2.Items; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: OptIn] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ExamplePlugin")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+a33a7e4d834d01f7a781f5f54630db30d885d55f")] [assembly: AssemblyProduct("ExamplePlugin")] [assembly: AssemblyTitle("ExamplePlugin")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace ExamplePlugin { public static class Assets { public static AssetBundle mainBundle; public const string bundleName = "mainbundle"; public static string AssetBundlePath => Path.Combine(Path.GetDirectoryName(ExamplePlugin.PInfo.Location), "assetbundles", "mainbundle"); public static void Init() { mainBundle = AssetBundle.LoadFromFile(AssetBundlePath); } } [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("gebwe.GYARMOD", "GYARMOD", "1.0.0")] public class ExamplePlugin : BaseUnityPlugin { public const string PluginGUID = "gebwe.GYARMOD"; public const string PluginAuthor = "gebwe"; public const string PluginName = "GYARMOD"; public const string PluginVersion = "1.0.0"; public static PluginInfo PInfo { get; private set; } public void Awake() { PInfo = ((BaseUnityPlugin)this).Info; Log.Init(((BaseUnityPlugin)this).Logger); Assets.Init(); Language.Init(); Cackadeus.Init(); ColdBlood.Init(); DevilEyes.Init(); Judgement.Init(); } } public static class ItemHelper { public static ItemDef CreateItem(string itemName, string nameToken, string pickupToken, string descriptionToken, string loreToken, string spritePath, string prefabPath, ItemTier itemTier) { //IL_002d: 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) ItemDef val = ScriptableObject.CreateInstance<ItemDef>(); ((Object)val).name = itemName; val.nameToken = itemName; val.pickupToken = pickupToken; val.descriptionToken = descriptionToken; val.loreToken = loreToken; val.deprecatedTier = itemTier; if (!string.IsNullOrEmpty(spritePath)) { Sprite val2 = Assets.mainBundle.LoadAsset<Sprite>(spritePath); if ((Object)(object)val2 == (Object)null) { Log.Error("Failed to load default sprite at path: " + spritePath); } val.pickupIconSprite = val2; } if (!string.IsNullOrEmpty(prefabPath)) { GameObject val3 = Assets.mainBundle.LoadAsset<GameObject>(prefabPath); if ((Object)(object)val3 == (Object)null) { Log.Error("Failed to load default prefab at path: " + prefabPath); } val.pickupModelPrefab = Assets.mainBundle.LoadAsset<GameObject>(prefabPath); } val.canRemove = true; val.hidden = false; return val; } public static void SetupLogbookDisplay(GameObject itemPrefab, float minDistance = 0.5f, float maxDistance = 2f) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_004e: 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_0070: Expected O, but got Unknown //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) ModelPanelParameters val = itemPrefab.GetComponent<ModelPanelParameters>(); if ((Object)(object)val == (Object)null) { val = itemPrefab.AddComponent<ModelPanelParameters>(); } GameObject val2 = new GameObject("FocusPoint"); val2.transform.SetParent(itemPrefab.transform); val2.transform.localPosition = new Vector3(0f, 0f, 0f); val.focusPointTransform = val2.transform; GameObject val3 = new GameObject("CameraPosition"); val3.transform.SetParent(itemPrefab.transform); val3.transform.localPosition = new Vector3(0f, 0f, 2f); val3.transform.localEulerAngles = new Vector3(0f, 90f, 0f); val.cameraPositionTransform = val3.transform; val.minDistance = minDistance; val.maxDistance = maxDistance; } } public static class Language { public const string LanguageFolder = "Languages"; public static void Init() { string path = Path.Combine(Path.GetDirectoryName(ExamplePlugin.PInfo.Location), "Languages"); if (Directory.Exists(path)) { Language.collectLanguageRootFolders += AddLanguageFolder; } else { Log.Error("Language fucked"); } } private static void AddLanguageFolder(List<string> folders) { string item = Path.Combine(Path.GetDirectoryName(ExamplePlugin.PInfo.Location), "Languages"); folders.Add(item); } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } } namespace ExamplePlugin.Skills { public class Judgement { public static SkillDef judgementSkillDef; public static GameObject judgementCutVFXPrefab; public static GameObject judgementCutAirVFXPrefab; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //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) //IL_007c: 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_014a: 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_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Expected O, but got Unknown //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/MercBody.prefab").WaitForCompletion(); judgementSkillDef = ScriptableObject.CreateInstance<SkillDef>(); judgementSkillDef.activationState = new SerializableEntityStateType(typeof(JudgementSkillState)); judgementSkillDef.activationStateMachineName = "Body"; judgementSkillDef.baseMaxStock = 3; judgementSkillDef.baseRechargeInterval = 12f; judgementSkillDef.beginSkillCooldownOnSkillEnd = true; judgementSkillDef.fullRestockOnAssign = true; judgementSkillDef.interruptPriority = (InterruptPriority)0; judgementSkillDef.isCombatSkill = true; judgementSkillDef.mustKeyPress = true; judgementSkillDef.rechargeStock = 1; judgementSkillDef.requiredStock = 3; judgementSkillDef.stockToConsume = 3; judgementSkillDef.cancelSprintingOnActivation = true; judgementSkillDef.icon = Assets.mainBundle.LoadAsset<Sprite>("JudgementCutIcon"); judgementSkillDef.skillName = "MERCENARY_JUDGEMENT_SKILL_NAME"; judgementSkillDef.skillNameToken = "MERCENARY_JUDGEMENT_SKILL_NAME_TOKEN"; judgementSkillDef.skillDescriptionToken = "MERCENARY_JUDGEMENT_SKILL_DESCRIPTION_TOKEN"; judgementSkillDef.keywordTokens = new string[1] { "KEYWORD_EXPOSE" }; ContentAddition.AddSkillDef(judgementSkillDef); bool flag = default(bool); ContentAddition.AddEntityState(typeof(JudgementSkillState), ref flag); ContentAddition.AddEntityState(typeof(FreezeState), ref flag); judgementCutVFXPrefab = Assets.mainBundle.LoadAsset<GameObject>("JudgementCutShort"); judgementCutAirVFXPrefab = Assets.mainBundle.LoadAsset<GameObject>("JudgementCutShortAir"); NetworkingAPI.RegisterMessageType<SetFreezeOnBodyRequest>(); SkillLocator component = val.GetComponent<SkillLocator>(); SkillFamily skillFamily = component.special.skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val2 = new Variant { skillDef = judgementSkillDef }; ((Variant)(ref val2)).viewableNode = new Node(judgementSkillDef.skillNameToken, false, (Node)null); variants[num] = val2; } } public class JudgementSkillState : BaseSkillState { private class ProjectileData { public float originalSpeed; public float timeInRadius; } public static float baseDamageCoefficient = 30f; public static float procCoefficient = 1f; public static float baseDuration = 6.3f; public static float baseRadius = 20f; private const float scanInterval = 0.1f; private float nextScanTime; private float duration; private float fireTime; private float freezeTime; private bool hasFired = false; private bool hasShook = false; private CameraParamsOverrideHandle camOverrideHandle; private Dictionary<ProjectileSimple, ProjectileData> trackedProjectiles = new Dictionary<ProjectileSimple, ProjectileData>(); private CharacterCameraParamsData limitCameraParams = new CharacterCameraParamsData { maxPitch = BlendableFloat.op_Implicit(70f), minPitch = BlendableFloat.op_Implicit(-70f), pivotVerticalOffset = BlendableFloat.op_Implicit(4f), idealLocalCameraPos = BlendableVector3.op_Implicit(new Vector3(0f, 0f, -35f)), wallCushion = BlendableFloat.op_Implicit(0.1f) }; private HashSet<HealthComponent> frozenEnemies = new HashSet<HealthComponent>(); public override void OnEnter() { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_0088: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: 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_0178: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration; fireTime = baseDuration; hasShook = false; freezeTime = 1f; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; ((Behaviour)((EntityState)this).characterMotor).enabled = false; } CameraParamsOverrideRequest val = default(CameraParamsOverrideRequest); val.cameraParamsData = limitCameraParams; val.priority = 0f; CameraParamsOverrideRequest val2 = val; camOverrideHandle = ((EntityState)this).cameraTargetParams.AddParamsOverride(val2, 0.5f); if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.Entangle, duration); ((EntityState)this).characterBody.AddTimedBuff(Buffs.HiddenInvincibility, duration + 1f); } if (((EntityState)this).characterMotor.isGrounded) { GameObject val3 = Object.Instantiate<GameObject>(Judgement.judgementCutVFXPrefab, ((EntityState)this).characterBody.footPosition, Quaternion.identity); val3.transform.parent = ((EntityState)this).transform; if (!((EntityState)this).isAuthority) { DisableShaderEffects(val3); } Util.PlaySound("Play_JudgementCut", ((EntityState)this).gameObject); Object.Destroy((Object)(object)val3, 10f); } else if (!((EntityState)this).characterMotor.isGrounded) { GameObject val4 = Object.Instantiate<GameObject>(Judgement.judgementCutAirVFXPrefab, ((EntityState)this).characterBody.footPosition, Quaternion.identity); val4.transform.parent = ((EntityState)this).transform; if (!((EntityState)this).isAuthority) { DisableShaderEffects(val4); } Util.PlaySound("Play_JudgementCutAir", ((EntityState)this).gameObject); Object.Destroy((Object)(object)val4, 10f); } StartCameraShake(((EntityState)this).characterBody.corePosition, 1.2f, 15f, 0.75f, 30f); } public override void FixedUpdate() { //IL_00a8: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= nextScanTime && ((EntityState)this).fixedAge >= freezeTime) { nextScanTime = ((EntityState)this).fixedAge + 0.1f; Freeze(); SlowProjectiles(); } if (((EntityState)this).fixedAge >= fireTime && !hasFired && ((EntityState)this).isAuthority) { Fire(); hasFired = true; } if (((EntityState)this).fixedAge >= 1f && !hasShook) { StartCameraShake(((EntityState)this).characterBody.corePosition, 2f, 12f, 1f, 35f); hasShook = true; } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_000f: 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_00e6: 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) ((EntityState)this).OnExit(); ((EntityState)this).cameraTargetParams.RemoveParamsOverride(camOverrideHandle, 1f); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((Behaviour)((EntityState)this).characterMotor).enabled = true; } foreach (KeyValuePair<ProjectileSimple, ProjectileData> trackedProjectile in trackedProjectiles) { if ((Object)(object)trackedProjectile.Key != (Object)null && (Object)(object)((Component)trackedProjectile.Key).gameObject != (Object)null) { Rigidbody component = ((Component)trackedProjectile.Key).GetComponent<Rigidbody>(); if ((Object)(object)component != (Object)null) { component.isKinematic = true; component.rotation = Random.rotation; component.isKinematic = false; ((MonoBehaviour)trackedProjectile.Key).StartCoroutine(ResetRigidbodyAfterRotation(component, trackedProjectile)); } else { trackedProjectile.Key.transform.rotation = Random.rotation; } trackedProjectile.Key.SetForwardSpeed(trackedProjectile.Value.originalSpeed); trackedProjectile.Key.desiredForwardSpeed = trackedProjectile.Value.originalSpeed; } } trackedProjectiles.Clear(); frozenEnemies.Clear(); } private void Freeze() { //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_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0045: 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_0120: 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_0108: Expected O, but got Unknown SphereSearch val = new SphereSearch { origin = ((EntityState)this).characterBody.corePosition, radius = baseRadius, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask }; List<HurtBox> list = new List<HurtBox>(); val.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(((EntityState)this).teamComponent.teamIndex)).FilterCandidatesByDistinctHurtBoxEntities() .GetHurtBoxes(list); foreach (HurtBox item in list) { if (!((Object)(object)item.healthComponent?.body != (Object)null)) { continue; } HealthComponent healthComponent = item.healthComponent; if (frozenEnemies.Contains(healthComponent)) { continue; } EntityStateMachine[] components = ((Component)healthComponent.body).GetComponents<EntityStateMachine>(); EntityStateMachine[] array = components; foreach (EntityStateMachine val2 in array) { if (((object)val2.state).GetType() != typeof(Idle)) { val2.SetNextState((EntityState)new Idle()); } } NetMessageExtensions.Send((INetMessage)(object)new SetFreezeOnBodyRequest(healthComponent.body.masterObjectId, duration - ((EntityState)this).fixedAge), (NetworkDestination)2); frozenEnemies.Add(healthComponent); } } private void SlowProjectiles() { //IL_0046: 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_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) ProjectileSimple[] array = Object.FindObjectsOfType<ProjectileSimple>(); ProjectileSimple[] array2 = array; foreach (ProjectileSimple val in array2) { if ((Object)(object)val == (Object)null || !Object.op_Implicit((Object)(object)((Component)val).gameObject)) { continue; } float num = Vector3.Distance(val.transform.position, ((EntityState)this).characterBody.corePosition); if (num <= baseRadius) { if (!trackedProjectiles.ContainsKey(val)) { trackedProjectiles[val] = new ProjectileData { originalSpeed = val.desiredForwardSpeed, timeInRadius = 0f }; } trackedProjectiles[val].timeInRadius += Time.fixedDeltaTime; float num2 = 0.05f; float num3 = Mathf.Clamp01(trackedProjectiles[val].timeInRadius / num2); float num4 = Mathf.Lerp(trackedProjectiles[val].originalSpeed, 0f, num3); ProjectileImpactExplosion component = ((Component)val).GetComponent<ProjectileImpactExplosion>(); if ((Object)(object)component != (Object)null) { component.lifetime = val.lifetime; } val.SetLifetime(val.lifetime); val.desiredForwardSpeed = num4; val.SetForwardSpeed(num4); } } List<ProjectileSimple> list = new List<ProjectileSimple>(); foreach (KeyValuePair<ProjectileSimple, ProjectileData> trackedProjectile in trackedProjectiles) { if ((Object)(object)trackedProjectile.Key == (Object)null || !Object.op_Implicit((Object)(object)((Component)trackedProjectile.Key).gameObject)) { list.Add(trackedProjectile.Key); continue; } float num5 = Vector3.Distance(trackedProjectile.Key.transform.position, ((EntityState)this).characterBody.corePosition); if (num5 > baseRadius) { trackedProjectile.Key.SetForwardSpeed(trackedProjectile.Value.originalSpeed); list.Add(trackedProjectile.Key); } } foreach (ProjectileSimple item in list) { trackedProjectiles.Remove(item); } } private void Fire() { //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_0012: 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_0049: 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_0050: 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_0066: 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) //IL_006d: 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_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_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_0094: Expected O, but got Unknown //IL_009b: 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) BlastAttack val = new BlastAttack { attacker = ((EntityState)this).gameObject, baseDamage = ((BaseState)this).damageStat * baseDamageCoefficient * (1f + (((BaseState)this).attackSpeedStat - 1f) / 3f), crit = ((BaseState)this).RollCrit(), falloffModel = (FalloffModel)0, radius = baseRadius, procCoefficient = 1f, teamIndex = ((BaseState)this).GetTeam(), position = ((EntityState)this).transform.position, damageType = DamageTypeCombo.op_Implicit((DamageType)8388608) }; StartCameraShake(((EntityState)this).characterBody.corePosition, 2f, 5f, 1f, 40f); val.Fire(); } private void StartCameraShake(Vector3 position, float amplitude, float frequency, float duration, float radius) { //IL_0003: 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_001b: 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) Wave val = default(Wave); val.amplitude = amplitude; val.frequency = frequency; Wave val2 = val; ShakeEmitter.CreateSimpleShakeEmitter(position, val2, duration, radius, true); } private void DisableShaderEffects(GameObject vfxInstance) { Transform val = vfxInstance.transform.Find("Blur"); Transform val2 = vfxInstance.transform.Find("ON"); if ((Object)(object)val != (Object)null) { ((Component)val).gameObject.SetActive(false); } if ((Object)(object)val2 != (Object)null) { ((Component)val2).gameObject.SetActive(false); } } private IEnumerator ResetRigidbodyAfterRotation(Rigidbody rb, KeyValuePair<ProjectileSimple, ProjectileData> trackedProjectile) { yield return (object)new WaitForFixedUpdate(); rb.velocity = trackedProjectile.Key.transform.forward * trackedProjectile.Value.originalSpeed; } } } namespace ExamplePlugin.Networking { internal class SetFreezeOnBodyRequest : INetMessage, ISerializableObject { private NetworkInstanceId netID; private float duration; public SetFreezeOnBodyRequest() { } public SetFreezeOnBodyRequest(NetworkInstanceId netID, float duration) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) this.netID = netID; this.duration = duration; } public void Serialize(NetworkWriter writer) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) writer.Write(netID); writer.Write(duration); } public void Deserialize(NetworkReader reader) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) netID = reader.ReadNetworkId(); duration = reader.ReadSingle(); } public void OnReceived() { ForceFreezeState(); } public void ForceFreezeState() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { return; } GameObject val = Util.FindNetworkObject(netID); if (!Object.op_Implicit((Object)(object)val)) { Debug.Log((object)"Specified GameObject not found!"); return; } CharacterMaster component = val.GetComponent<CharacterMaster>(); if (!Object.op_Implicit((Object)(object)component)) { Debug.Log((object)"CharacterMaster not found!"); return; } GameObject bodyObject = component.GetBodyObject(); if (!Object.op_Implicit((Object)(object)bodyObject)) { return; } HealthComponent component2 = bodyObject.GetComponent<HealthComponent>(); if (!((Object)(object)component2 == (Object)null) && !(component2.health <= 0f)) { EntityStateMachine val2 = EntityStateMachine.FindByCustomName(bodyObject, "Body"); if ((Object)(object)val2 != (Object)null) { val2.SetInterruptState((EntityState)(object)new FreezeState { duration = duration }, (InterruptPriority)5); } } } } } namespace ExamplePlugin.SkillStates { public class FreezeState : BaseSkillState { internal float duration; private Animator modelAnimator; public override void OnEnter() { //IL_0079: 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_00c9: 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) //IL_009f: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { ((Behaviour)modelAnimator).enabled = false; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((Behaviour)((EntityState)this).characterMotor).enabled = false; } if (Object.op_Implicit((Object)(object)((EntityState)this).rigidbody) && !((EntityState)this).rigidbody.isKinematic) { ((EntityState)this).rigidbody.velocity = Vector3.zero; if (Object.op_Implicit((Object)(object)((EntityState)this).rigidbodyMotor)) { ((EntityState)this).rigidbodyMotor.moveVector = Vector3.zero; } } if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = ((EntityState)this).characterDirection.forward; } } public override void OnExit() { if (Object.op_Implicit((Object)(object)modelAnimator)) { ((Behaviour)modelAnimator).enabled = true; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((Behaviour)((EntityState)this).characterMotor).enabled = true; } ((EntityState)this).OnExit(); } public override void FixedUpdate() { //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) ((EntityState)this).FixedUpdate(); ((BaseState)this).attackSpeedStat = 0f; if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = ((EntityState)this).characterDirection.forward; } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((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)5; } public override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); writer.Write(duration); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); duration = reader.ReadSingle(); } } } namespace ExamplePlugin.Items { public static class Cackadeus { public class CackadeusBehavior : BaseItemBodyBehavior { [ItemDefAssociation(useOnServer = true, useOnClient = false)] public static ItemDef GetItemDef() { return cackadeusItemDef; } private void OnEnable() { GlobalEventManager.onCharacterDeathGlobal += OnCharacterDeathGlobal; } private void OnDisable() { GlobalEventManager.onCharacterDeathGlobal -= OnCharacterDeathGlobal; } private void OnCharacterDeathGlobal(DamageReport report) { if ((Object)(object)report.attackerBody == (Object)(object)((BaseItemBodyBehavior)this).body && Object.op_Implicit((Object)(object)report.attackerBody.inventory) && Util.CheckRoll(50f, ((BaseItemBodyBehavior)this).body.master)) { float num = 3f + 1f * (float)base.stack; ((BaseItemBodyBehavior)this).body.AddTimedBuff(Buffs.Cloak, num); } } } public static ItemDef cackadeusItemDef; public const float CackadeusChance = 50f; public const float CackadeusBaseDuration = 3f; public const float CackadeusStackDuration = 1f; public static void Init() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown cackadeusItemDef = ItemHelper.CreateItem("ITEM_CACKADEUS_NAME", "ITEM_CACKADEUS_NAME_TOKEN", "ITEM_CACKADEUS_PICKUP_TOKEN", "ITEM_CACKADEUS_DESC_TOKEN", "ITEM_CACKADEUS_LORE_TOKEN", "CackadeusIcon", "MaxwellPrefab", (ItemTier)5); ItemAPI.Add(new CustomItem(cackadeusItemDef, new ItemDisplayRuleDict((ItemDisplayRule[])null))); ItemHelper.SetupLogbookDisplay(cackadeusItemDef.pickupModelPrefab, 3f, 5f); cackadeusItemDef.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)9 }; } } public static class ColdBlood { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients; } public static ItemDef coldBloodItemDef; public static GameObject coldBloodIndicatorPrefab; public static void Init() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Expected O, but got Unknown coldBloodItemDef = ItemHelper.CreateItem("ITEM_COLD_BLOOD_NAME", "ITEM_COLD_BLOOD_NAME_TOKEN", "ITEM_COLD_BLOOD_PICKUP_TOKEN", "ITEM_COLD_BLOOD_DESC_TOKEN", "ITEM_COLD_BLOOD_LORE_TOKEN", "ColdBloodIcon", "ColdBloodPrefab", (ItemTier)0); ItemAPI.Add(new CustomItem(coldBloodItemDef, new ItemDisplayRuleDict((ItemDisplayRule[])null))); coldBloodItemDef.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)1 }; GameObject val = LegacyResourcesAPI.Load<GameObject>("Prefabs/NetworkedObjects/NearbyDamageBonusIndicator"); coldBloodIndicatorPrefab = PrefabAPI.InstantiateClone(val, "ColdBloodIndicatorPrefab", true); Transform child = coldBloodIndicatorPrefab.transform.GetChild(1); ((Renderer)((Component)child).GetComponent<MeshRenderer>()).material.SetColor("_TintColor", new Color(0.05f, 0.05f, 0.05f)); PrefabAPI.RegisterNetworkPrefab(coldBloodIndicatorPrefab); ItemHelper.SetupLogbookDisplay(coldBloodItemDef.pickupModelPrefab, 1.5f, 3f); object obj = <>O.<0>__RecalculateStatsAPI_GetStatCoefficients; if (obj == null) { StatHookEventHandler val2 = RecalculateStatsAPI_GetStatCoefficients; <>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val2; obj = (object)val2; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { ColdBloodBehavior coldBloodBehavior = default(ColdBloodBehavior); if (((Component)sender).TryGetComponent<ColdBloodBehavior>(ref coldBloodBehavior)) { args.critAdd += coldBloodBehavior.cachedBonusCrit; } } } public class ColdBloodBehavior : BaseItemBodyBehavior { internal float cachedBonusCrit; private const float scanInterval = 0.25f; private float nextScanTime; private const float coldBloodBaseCritChance = 4f; private const float coldBloodStackCritBonus = 3f; private const float coldBloodRange = 13f; private GameObject coldBloodIndicator; [ItemDefAssociation] public static ItemDef GetItemDef() { return ColdBlood.coldBloodItemDef; } public void OnEnable() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) nextScanTime = Time.time; if (NetworkServer.active && (Object)(object)coldBloodIndicator == (Object)null) { coldBloodIndicator = Object.Instantiate<GameObject>(ColdBlood.coldBloodIndicatorPrefab, ((BaseItemBodyBehavior)this).body.corePosition, Quaternion.identity); coldBloodIndicator.GetComponent<NetworkedBodyAttachment>().AttachToGameObjectAndSpawn(((Component)this).gameObject, (string)null); } } private void OnDisable() { if ((Object)(object)coldBloodIndicator != (Object)null) { Object.Destroy((Object)(object)coldBloodIndicator); coldBloodIndicator = null; } } public void FixedUpdate() { if (Time.time >= nextScanTime) { nextScanTime = Time.time + 0.25f; UpdateCritBonus(); } } internal void UpdateCritBonus() { int num = CountNearbyEnemies(((BaseItemBodyBehavior)this).body); int itemCount = ((BaseItemBodyBehavior)this).body.inventory.GetItemCount(ColdBlood.coldBloodItemDef); cachedBonusCrit = (4f + 3f * (float)(itemCount - 1)) * (float)num; ((BaseItemBodyBehavior)this).body.RecalculateStats(); } public static int CountNearbyEnemies(CharacterBody body) { //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_0008: 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_0012: 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) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) SphereSearch val = new SphereSearch { origin = body.corePosition, radius = 13f, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask }; List<HurtBox> list = new List<HurtBox>(); val.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(body.teamComponent.teamIndex)).FilterCandidatesByDistinctHurtBoxEntities() .GetHurtBoxes(list); int num = 0; foreach (HurtBox item in list) { if (Object.op_Implicit((Object)(object)item.healthComponent) && item.healthComponent.alive) { num++; } } return num; } } public static class DevilEyes { [CompilerGenerated] private static class <>O { public static hook_Init <0>__AddVoidTransformation; } public static ItemDef DevilEyesItemDef; public static BuffDef devilEyesBuff; public static void Init() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Expected O, but got Unknown //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Expected O, but got Unknown //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_00b8: Expected O, but got Unknown DevilEyesItemDef = ItemHelper.CreateItem("ITEM_DEVIL_EYES_NAME", "ITEM_DEVIL_EYES_NAME_TOKEN", "ITEM_DEVIL_EYES_PICKUP_TOKEN", "ITEM_DEVIL_EYES_DESC_TOKEN", "ITEM_DEVIL_EYES_LORE_TOKEN", "DevilEyesIcon", "DevilEyesPrefab", (ItemTier)8); DevilEyesItemDef.requiredExpansion = ((IEnumerable<ExpansionDef>)(object)ExpansionCatalog.expansionDefs).FirstOrDefault((Func<ExpansionDef, bool>)((ExpansionDef def) => def.nameToken == "DLC1_NAME")); CreateBuff(); ItemAPI.Add(new CustomItem(DevilEyesItemDef, new ItemDisplayRuleDict((ItemDisplayRule[])null))); ItemHelper.SetupLogbookDisplay(DevilEyesItemDef.pickupModelPrefab, 0.5f, 1f); object obj = <>O.<0>__AddVoidTransformation; if (obj == null) { hook_Init val = AddVoidTransformation; <>O.<0>__AddVoidTransformation = val; obj = (object)val; } ContagiousItemManager.Init += (hook_Init)obj; } public static void CreateBuff() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) devilEyesBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)devilEyesBuff).name = "DevilEyesBuff"; devilEyesBuff.buffColor = Color.white; devilEyesBuff.isDebuff = false; devilEyesBuff.canStack = true; devilEyesBuff.isHidden = false; devilEyesBuff.iconSprite = Assets.mainBundle.LoadAsset<Sprite>("DevilEyesBuffIcon"); ContentAddition.AddBuffDef(devilEyesBuff); } private static void AddVoidTransformation(orig_Init orig) { //IL_0003: 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_0022: 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) Pair val = default(Pair); val.itemDef1 = Items.CritDamage; val.itemDef2 = DevilEyesItemDef; Pair val2 = val; ItemCatalog.itemRelationships[ItemRelationshipTypes.ContagiousItem] = CollectionExtensions.AddToArray<Pair>(ItemCatalog.itemRelationships[ItemRelationshipTypes.ContagiousItem], val2); orig.Invoke(); } } public class DevilEyesBehavior : BaseItemBodyBehavior { [ItemDefAssociation] public static ItemDef GetItemDef() { return DevilEyes.DevilEyesItemDef; } private void OnEnable() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown GlobalEventManager.onCharacterDeathGlobal += OnCharacterDeathGlobal; RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(HandleStatCoefficients); } private void OnDisable() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_0035: Unknown result type (might be due to invalid IL or missing references) GlobalEventManager.onCharacterDeathGlobal -= OnCharacterDeathGlobal; RecalculateStatsAPI.GetStatCoefficients -= new StatHookEventHandler(HandleStatCoefficients); ((BaseItemBodyBehavior)this).body.SetBuffCount(BuffCatalog.FindBuffIndex(((Object)DevilEyes.devilEyesBuff).name), 0); } private void HandleStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if ((Object)(object)sender == (Object)(object)((BaseItemBodyBehavior)this).body) { args.critAdd += 1f * (float)((BaseItemBodyBehavior)this).body.GetBuffCount(DevilEyes.devilEyesBuff); } } public void OnCharacterDeathGlobal(DamageReport report) { if ((Object)(object)report.attackerBody == (Object)(object)((BaseItemBodyBehavior)this).body && Object.op_Implicit((Object)(object)report.attackerBody.inventory)) { for (int i = 0; i < ((BaseItemBodyBehavior)this).body.inventory.GetItemCount(DevilEyes.DevilEyesItemDef); i++) { ((BaseItemBodyBehavior)this).body.AddBuff(DevilEyes.devilEyesBuff); } } } } }