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 SettMod v4.6.2
SettMod.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.Commando; using EntityStates.Huntress; using EntityStates.LemurianBruiserMonster; using EntityStates.Mage; using EntityStates.Merc; using HG; using HG.BlendableTypes; using IL.RoR2; using KinematicCharacterController; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using On.RoR2.UI; using R2API; using R2API.Utils; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.ContentManagement; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using SettMod.Controllers; using SettMod.Modules; using SettMod.Modules.Survivors; using SettMod.SkillStates; using SettMod.SkillStates.BaseStates; using SettMod.SkillStates.Emotes; using SettMod.SkillStates.Keystone; using SettMod.States; using SettMod.States.Emotes; using SettMod.UI; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.Serialization; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SettMod")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("4.6.2.0")] [assembly: AssemblyInformationalVersion("4.6.2+629a5292380ab8dd60bb860fbd6f3ff7a75e9f55")] [assembly: AssemblyProduct("SettMod")] [assembly: AssemblyTitle("SettMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("4.6.2.0")] [module: UnverifiableCode] internal enum SettCameraParams { DEFAULT, EMOTE } internal class BodyInfo { internal string bodyName = ""; internal string bodyNameToken = ""; internal string subtitleNameToken = ""; internal string bodyNameToClone = "Commando"; internal Texture characterPortrait; internal GameObject crosshair; internal GameObject podPrefab; internal float maxHealth = 100f; internal float healthGrowth = 2f; internal float healthRegen; internal float regenGrowth; internal float shield; internal float shieldGrowth; internal float moveSpeed = 7f; internal float moveSpeedGrowth; internal float acceleration = 80f; internal float jumpPower = 15f; internal float jumpPowerGrowth; internal float damage = 12f; internal float damageGrowth; internal float attackSpeed = 1f; internal float attackSpeedGrowth; internal float armor; internal float armorGrowth; internal float crit = 1f; internal float critGrowth; internal int jumpCount = 1; internal Color bodyColor = Color.grey; internal Vector3 aimOriginPosition = new Vector3(0f, 1.8f, 0f); internal Vector3 modelBasePosition = new Vector3(0f, -0.92f, 0f); internal Vector3 cameraPivotPosition = new Vector3(0f, 1.6f, 0f); } internal class CustomRendererInfo { internal string childName; internal Material material; internal bool ignoreOverlays; } internal class SkillDefInfo { public string skillName; public string skillNameToken; public string skillDescriptionToken; public string[] keywordTokens = new string[0]; public Sprite skillIcon; public SerializableEntityStateType activationState; public InterruptPriority interruptPriority; public string activationStateMachineName; public float baseRechargeInterval; public int baseMaxStock = 1; public int rechargeStock = 1; public int requiredStock = 1; public int stockToConsume = 1; public bool isCombatSkill = true; public bool canceledFromSprinting; public bool forceSprintDuringState; public bool cancelSprintingOnActivation = true; public bool beginSkillCooldownOnSkillEnd; public bool fullRestockOnAssign = true; public bool resetCooldownTimerOnUse; public bool mustKeyPress; public SkillDefInfo() { } public SkillDefInfo(string skillNameToken, string skillDescriptionToken, Sprite skillIcon, SerializableEntityStateType activationState, string activationStateMachineName = "Weapon", bool agile = false) { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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) skillName = skillNameToken; this.skillNameToken = skillNameToken; this.skillDescriptionToken = skillDescriptionToken; this.skillIcon = skillIcon; this.activationState = activationState; this.activationStateMachineName = activationStateMachineName; interruptPriority = (InterruptPriority)0; isCombatSkill = true; baseRechargeInterval = 0f; requiredStock = 0; stockToConsume = 0; cancelSprintingOnActivation = !agile; if (agile) { keywordTokens = new string[1] { "KEYWORD_AGILE" }; } } } namespace SettMod { public class MenuSound : MonoBehaviour { private uint playID; private uint playID2; private void OnDestroy() { if (playID != 0) { AkSoundEngine.StopPlayingID(playID); } if (playID2 != 0) { AkSoundEngine.StopPlayingID(playID2); } } private void OnEnable() { ((MonoBehaviour)this).Invoke("PlayEffect", 0.05f); } private void PlayEffect() { if (Config.voiceLines.Value) { playID = Util.PlaySound("SettMenuVO", ((Component)this).gameObject); } playID2 = Util.PlaySound("SettMenuSFX", ((Component)this).gameObject); } } [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.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Lemonlust.Sett", "Sett", "4.6.2")] public class SettPlugin : BaseUnityPlugin { public const string developerPrefix = "SETT"; public const string MODNAME = "Sett"; public const string MODUID = "com.Lemonlust.Sett"; public const string MODVERSION = "4.6.2"; public static SettPlugin instance; public static ModdedDamageType settDamage; internal List<SurvivorBase> Survivors = new List<SurvivorBase>(); private GritGauge gritGauge; public void OnDestroy() { try { UnHooks(); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)(ex.Message + " - " + ex.StackTrace)); } } private void Awake() { //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) instance = this; try { settDamage = DamageAPI.ReserveDamageType(); Assets.Initialize(); Config.ReadConfig(); CameraParams.InitializeParams(); SettMod.Modules.States.RegisterStates(); Buffs.RegisterBuffs(); Projectiles.RegisterProjectiles(); Tokens.AddTokens(); ItemDisplays.PopulateDisplays(); new Sett().Initialize(); new ContentPacks().Initialize(); ContentManager.onContentPacksAssigned += LateSetup; Hook(); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)(ex.Message + " - " + ex.StackTrace)); } } private void CharacterBody_RecalculateStats(orig_RecalculateStats orig, CharacterBody self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)self)) { float num = Mathf.Floor(self.level / 4f); if (self.HasBuff(Buffs.regenBuff)) { float num2 = self.GetBuffCount(Buffs.regenBuff); self.regen += num2 * (0.25f + num * 0.25f); } if (self.HasBuff(Buffs.lethalBuff)) { float num3 = self.GetBuffCount(Buffs.lethalBuff); self.attackSpeed += self.attackSpeed * (num3 * 0.1f); } if (self.HasBuff(Buffs.conquerorBuff)) { float num4 = self.GetBuffCount(Buffs.conquerorBuff); self.damage += num4 * (0.6f + num * 0.045f); } if (self.HasBuff(Buffs.movementSpeedBuff)) { self.moveSpeed += self.moveSpeed * (0.3f + num * 0.05f); } } } private void CreateGritGauge(HUD hud) { //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: 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_00d5: 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_0104: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)gritGauge) && (Object)(object)hud != (Object)null && (Object)(object)hud.mainUIPanel != (Object)null) { gritGauge = hud.mainUIPanel.GetComponentInChildren<GritGauge>(); if (!Object.op_Implicit((Object)(object)gritGauge)) { GameObject val = Object.Instantiate<GameObject>(Assets.mainAssetBundle.LoadAsset<GameObject>("GritGaugePanelNew")); gritGauge = val.AddComponent<GritGauge>(); val.transform.SetParent(hud.mainUIPanel.transform); RectTransform component = val.GetComponent<RectTransform>(); component.anchorMin = new Vector2(0.5f, 0.5f); component.anchorMax = new Vector2(0.5f, 0.5f); component.pivot = new Vector2(0.5f, 0.5f); component.sizeDelta = new Vector2(120f, 120f); component.anchoredPosition = new Vector2(-619f, -478f); ((Transform)component).localRotation = Quaternion.Euler(0f, 354f, 0f); ((Transform)component).localScale = new Vector3(1f, 1f, 1f); val.gameObject.SetActive(false); } } } private void Hook() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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 CharacterBody.RecalculateStats += new hook_RecalculateStats(CharacterBody_RecalculateStats); HUD.Awake += new hook_Awake(HUD_Awake); HUD.onHudTargetChangedGlobal += HUD_onHudTargetChangedGlobal; PickupPickerController.FixedUpdateServer += new hook_FixedUpdateServer(PickupPickerController_FixedUpdateServer); } private void HUD_Awake(orig_Awake orig, HUD self) { CreateGritGauge(self); orig.Invoke(self); } private void HUD_onHudTargetChangedGlobal(HUD obj) { if (Object.op_Implicit((Object)(object)obj) && Object.op_Implicit((Object)(object)obj.targetBodyObject) && Object.op_Implicit((Object)(object)gritGauge)) { GritComponent component = obj.targetBodyObject.GetComponent<GritComponent>(); if (Object.op_Implicit((Object)(object)component)) { ((Component)gritGauge).gameObject.SetActive(true); gritGauge.source = component; } else { ((Component)gritGauge).gameObject.SetActive(false); gritGauge.source = null; } } } private void LateSetup(ReadOnlyArray<ReadOnlyContentPack> obj) { } private void PickupPickerController_FixedUpdateServer(orig_FixedUpdateServer orig, PickupPickerController self) { //IL_003e: 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_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) CharacterMaster currentParticipantMaster = self.networkUIPromptController.currentParticipantMaster; if (!Object.op_Implicit((Object)(object)currentParticipantMaster)) { return; } CharacterBody body = currentParticipantMaster.GetBody(); Interactor val = (Object.op_Implicit((Object)(object)body) ? ((Component)body).GetComponent<Interactor>() : null); if (Object.op_Implicit((Object)(object)body)) { Vector3 val2 = body.inputBank.aimOrigin - ((Component)self).transform.position; if (!((double)((Vector3)(ref val2)).sqrMagnitude > (Object.op_Implicit((Object)(object)val) ? Math.Pow(val.maxInteractionDistance + self.cutoffDistance, 2.0) : ((double)(self.cutoffDistance * self.cutoffDistance))))) { return; } } self.networkUIPromptController.SetParticipantMaster((CharacterMaster)null); } private void UnHooks() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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 CharacterBody.RecalculateStats -= new hook_RecalculateStats(CharacterBody_RecalculateStats); HUD.Awake -= new hook_Awake(HUD_Awake); HUD.onHudTargetChangedGlobal -= HUD_onHudTargetChangedGlobal; PickupPickerController.FixedUpdateServer -= new hook_FixedUpdateServer(PickupPickerController_FixedUpdateServer); } } } namespace SettMod.UI { public class GritGauge : MonoBehaviour { private Image gritBar; private Image gritBarBG; private TextMeshProUGUI currentGritText; private TextMeshProUGUI maxGritText; public GritComponent source { get; set; } public void Update() { UpdateGritGauge(Time.deltaTime); } private void Awake() { Transform obj = ((Component)this).gameObject.GetComponentInChildren<Transform>().Find("Text"); TextMeshProUGUI component = ((Component)((Component)obj).GetComponentInChildren<Transform>().Find("CurrentGrit")).GetComponent<TextMeshProUGUI>(); TextMeshProUGUI component2 = ((Component)((Component)obj).GetComponentInChildren<Transform>().Find("MaxGrit")).GetComponent<TextMeshProUGUI>(); Transform val = ((Component)this).gameObject.GetComponentInChildren<Transform>().Find("Grit"); gritBar = ((Component)val).GetComponent<Image>(); Transform val2 = ((Component)this).gameObject.GetComponentInChildren<Transform>().Find("Background"); gritBarBG = ((Component)val2).GetComponent<Image>(); if (Object.op_Implicit((Object)(object)component)) { currentGritText = component; } if (Object.op_Implicit((Object)(object)component2)) { maxGritText = component2; } } private void Start() { UpdateGritGauge(0f); } private void UpdateGritGauge(float deltaTime) { if (Object.op_Implicit((Object)(object)source) && Object.op_Implicit((Object)(object)gritBar)) { ((TMP_Text)currentGritText).text = ((int)source.GetCurrentGrit()).ToString(); ((TMP_Text)maxGritText).text = ((int)source.GetMaxGrit()).ToString(); gritBar.fillAmount = source.GetCurrentGrit() / source.GetMaxGrit(); } } } } namespace SettMod.States { public class SettMain : GenericCharacterMain { private ChildLocator childLocator; private Animator animator; public LocalUser localUser; public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); childLocator = ((EntityState)this).GetModelChildLocator(); animator = ((EntityState)this).GetModelAnimator(); localUser = LocalUserManager.readOnlyLocalUsersList[0]; } public override void Update() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_007e: 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) ((GenericCharacterMain)this).Update(); if (((EntityState)this).isAuthority && ((EntityState)this).characterMotor.isGrounded && !localUser.isUIFocused) { if (Input.GetKeyDown(Config.tauntKeybind.Value)) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new Taunt(), (InterruptPriority)0); } else if (Input.GetKeyDown(Config.jokeKeybind.Value)) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new Joke(), (InterruptPriority)0); } else if (Input.GetKeyDown(Config.laughKeybind.Value)) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new Laugh(), (InterruptPriority)0); } else if (Input.GetKeyDown(Config.danceKeybind.Value)) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new Dance(), (InterruptPriority)0); } } } public override void FixedUpdate() { ((GenericCharacterMain)this).FixedUpdate(); } public override void OnExit() { ((GenericCharacterMain)this).OnExit(); } } } namespace SettMod.States.Emotes { public class Dance : BaseEmote { public bool spam; public override void OnEnter() { if (spam) { animString = "DanceSpam"; } else { animString = "Dance"; } duration = float.MaxValue; base.OnEnter(); } } public class Joke : BaseEmote { private GameObject mom; public override void OnEnter() { animString = "Joke"; duration = 8.667f; soundString = "SettJoke"; base.OnEnter(); if (!Object.op_Implicit((Object)(object)mom)) { mom = Object.Instantiate<GameObject>(Assets.mainAssetBundle.LoadAsset<GameObject>("momPortrait")); } mom.SetActive(false); } public override void FixedUpdate() { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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) base.FixedUpdate(); if (Object.op_Implicit((Object)(object)mom)) { mom.transform.parent = ((Component)((BaseState)this).FindModelChild("L_Hand")).transform; mom.transform.position = ((Component)((BaseState)this).FindModelChild("L_Hand")).transform.position; mom.transform.localPosition = new Vector3(0.1517885f, 0.1841809f, -0.1253804f); mom.transform.localRotation = Quaternion.Euler(-176.593f, 85.119f, -9.799011f); } if (((EntityState)this).fixedAge >= 2.3f && !mom.activeSelf) { mom.SetActive(true); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)mom)) { EntityState.Destroy((Object)(object)mom.gameObject); } base.OnExit(); } } public class Laugh : BaseEmote { public override void OnEnter() { animString = "Laugh"; duration = 3.667f; soundString = "SettLaugh"; base.OnEnter(); } } public class Taunt : BaseEmote { public override void OnEnter() { animString = "Taunt"; duration = 6.417f; soundString = "SettTaunt"; base.OnEnter(); } } } namespace SettMod.SkillStates { public class Facebreaker : BaseSkillState { public static Vector3 CameraPosition = new Vector3(0f, -1.3f, -10f); public static float pullForce = Config.faceBreakerPullForce.Value; public static float pullRadius = Config.faceBreakerPullRadius.Value; public GameObject blastEffectPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/effects/SonicBoomEffect"); public float duration; public int maximumPullCount = int.MaxValue; public Transform pullOrigin; public AnimationCurve pullStrengthCurve; protected Animator animator; protected float baseDuration = 0.8f; protected float damageCoefficient = 6f; protected string hitboxName = "FaceBreaker"; protected NetworkSoundEventIndex impactSound; protected float startUp = 0.5f; protected float stopwatch; private OverlapAttack attack; private bool back; private Ray downRay; private bool front; private bool hasFired; private bool pulling; private List<CharacterBody> pullList = new List<CharacterBody>(); private Transform slamIndicatorInstance; public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; if (stopwatch >= startUp && !hasFired) { hasFired = true; if (Config.voiceLines.Value) { Util.PlaySound("SettEVO", ((EntityState)this).gameObject); } string text = ""; if (front && back) { text = "Facebreaker_Both"; } else if (back && !front) { text = "Facebreaker_Back"; } else if (front && !back) { text = "Facebreaker_Front"; } else if (!front && !back) { text = "Facebreaker_Miss"; } ((EntityState)this).PlayCrossfade("Fullbody, Override", text, "FaceBreaker.playbackRate", duration, 0.05f); } if (stopwatch <= duration) { PullEnemies(Time.fixedDeltaTime); } if (stopwatch >= duration * startUp && ((EntityState)this).isAuthority && attack.Fire((List<HurtBox>)null)) { OnHitEnemyAuthority(); } if (stopwatch >= duration && ((EntityState)this).isAuthority && hasFired) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } public override void OnEnter() { //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); damageCoefficient = Config.faceBreakerDamageCoefficient.Value; ((EntityState)this).characterBody.SetAimTimer(2f); duration = baseDuration / ((BaseState)this).attackSpeedStat; startUp /= ((BaseState)this).attackSpeedStat; hasFired = false; animator = ((EntityState)this).GetModelAnimator(); ((EntityState)this).PlayCrossfade("Fullbody, Override", "Facebreaker_Start", "FaceBreakerStartUp.playbackRate", startUp, 0.05f); HitBoxGroup val = null; val = Array.Find(((Component)((EntityState)this).GetModelTransform()).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == hitboxName); pullStrengthCurve = AnimationCurve.EaseInOut(0.1f, 0f, 1f, 1f); Util.PlaySound("SettESFX", ((EntityState)this).gameObject); impactSound = Assets.swordHitSoundEvent.index; attack = CreateAttack(val); CreateIndicator(); } public override void OnExit() { if (Object.op_Implicit((Object)(object)slamIndicatorInstance)) { EntityState.Destroy((Object)(object)((Component)slamIndicatorInstance).gameObject); } ((EntityState)this).OnExit(); } public override void Update() { ((EntityState)this).Update(); if (Object.op_Implicit((Object)(object)slamIndicatorInstance)) { UpdateSlamIndicator(); } } protected OverlapAttack CreateAttack(HitBoxGroup hitBoxGroup) { //IL_0000: 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) //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_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Expected O, but got Unknown //IL_00a0: Expected O, but got Unknown OverlapAttack val = new OverlapAttack { damageType = DamageTypeCombo.op_Implicit((DamageType)40), attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = ((BaseState)this).GetTeam(), damage = damageCoefficient * ((BaseState)this).damageStat, procCoefficient = 1f, hitEffectPrefab = Assets.swordHitImpactEffect, forceVector = Vector3.zero, pushAwayForce = 0f, hitBoxGroup = hitBoxGroup, isCrit = ((BaseState)this).RollCrit(), impactSound = impactSound }; DamageAPI.AddModdedDamageType(val, SettPlugin.settDamage); return val; } protected virtual void OnHitEnemyAuthority() { Util.PlaySound("SettHitSFX", ((EntityState)this).gameObject); } private void AddToPullList(GameObject affectedObject) { CharacterBody component = affectedObject.GetComponent<CharacterBody>(); if (!pullList.Contains(component)) { pullList.Add(component); } } private void CreateIndicator() { //IL_0012: 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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: 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_00f9: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)ArrowRain.areaIndicatorPrefab)) { Ray val = default(Ray); ((Ray)(ref val)).direction = Vector3.down; ((Ray)(ref val)).origin = ((EntityState)this).transform.position; downRay = val; slamIndicatorInstance = Object.Instantiate<GameObject>(ArrowRain.areaIndicatorPrefab).transform; slamIndicatorInstance.localScale = Vector3.one * pullRadius; for (int i = 0; i <= 18; i++) { Vector3 val2 = ((EntityState)this).characterBody.footPosition + Random.insideUnitSphere * pullRadius; Vector3 val3 = ((EntityState)this).characterBody.footPosition - val2; Vector3 normalized = ((Vector3)(ref val3)).normalized; val2.y = ((EntityState)this).characterBody.footPosition.y; EffectManager.SpawnEffect(blastEffectPrefab, new EffectData { origin = val2, scale = 1f * pullRadius, rotation = Quaternion.LookRotation(normalized) }, false); } } } private void InitializePull() { //IL_0030: 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_006d: 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) if (pulling) { return; } pulling = true; Collider[] array = Physics.OverlapSphere(Object.op_Implicit((Object)(object)pullOrigin) ? pullOrigin.position : ((EntityState)this).transform.position, pullRadius); int i = 0; int num = 0; for (; i < array.Length; i++) { if (num >= maximumPullCount) { break; } HealthComponent component = ((Component)array[i]).GetComponent<HealthComponent>(); if (Object.op_Implicit((Object)(object)component)) { TeamComponent component2 = ((Component)component).GetComponent<TeamComponent>(); bool flag = false; if (Object.op_Implicit((Object)(object)component2)) { flag = component2.teamIndex == ((BaseState)this).GetTeam(); } if (!flag) { AddToPullList(((Component)component).gameObject); num++; } } } } private void PullEnemies(float deltaTime) { //IL_005d: 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_0063: 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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: 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_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_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_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0147: 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_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0163: 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_017d: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) if (!pulling) { InitializePull(); } for (int i = 0; i < pullList.Count; i++) { CharacterBody val = pullList[i]; if (!Object.op_Implicit((Object)(object)val) || !Object.op_Implicit((Object)(object)val.transform)) { continue; } Vector3 val2 = (Object.op_Implicit((Object)(object)pullOrigin) ? pullOrigin.position : ((EntityState)this).transform.position) - val.corePosition; float num = pullStrengthCurve.Evaluate(((Vector3)(ref val2)).magnitude / pullRadius); Vector3 val3 = ((Vector3)(ref val2)).normalized * num * deltaTime * pullForce; CharacterMotor component = ((Component)val).GetComponent<CharacterMotor>(); Vector3 forward = ((EntityState)this).characterDirection.forward; Vector3 normalized = ((Vector3)(ref forward)).normalized; Vector3 val4 = val.transform.position - (Object.op_Implicit((Object)(object)pullOrigin) ? pullOrigin.position : ((EntityState)this).transform.position); if (Object.op_Implicit((Object)(object)component)) { component.rootMotion += val3; if (component.useGravity) { component.rootMotion.y -= Physics.gravity.y * deltaTime * num; if (Vector3.Dot(normalized, val4) < 0f) { back = true; } else if (Vector3.Dot(normalized, val4) > 0f) { front = true; } else if (Vector3.Dot(normalized, val4) == 0f) { front = true; } } continue; } Rigidbody component2 = ((Component)val).GetComponent<Rigidbody>(); if (Object.op_Implicit((Object)(object)component2)) { component2.velocity += val3; if (Vector3.Dot(normalized, val4) < 0f) { back = true; } else if (Vector3.Dot(normalized, val4) > 0f) { front = true; } else if (Vector3.Dot(normalized, val4) == 0f) { front = true; } } } } private void UpdateSlamIndicator() { //IL_0019: 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_0033: 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_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0051: 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_0086: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)slamIndicatorInstance)) { float num = 250f; Ray val = default(Ray); ((Ray)(ref val)).direction = Vector3.down; ((Ray)(ref val)).origin = ((EntityState)this).transform.position; downRay = val; RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(downRay, ref val2, num, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { ((Component)slamIndicatorInstance).transform.position = ((RaycastHit)(ref val2)).point; ((Component)slamIndicatorInstance).transform.up = ((RaycastHit)(ref val2)).normal; } } } } public class SettGrabController : MonoBehaviour { public Transform pivotTransform; private CharacterBody body; private CapsuleCollider capsuleCollider; private CharacterDirection direction; private ModelLocator modelLocator; private Transform modelTransform; private CharacterMotor motor; private Quaternion originalRotation; private SphereCollider sphereCollider; public void Release() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)modelLocator)) { ((Behaviour)modelLocator).enabled = true; } if (Object.op_Implicit((Object)(object)modelTransform)) { modelTransform.rotation = originalRotation; } if (Object.op_Implicit((Object)(object)direction)) { ((Behaviour)direction).enabled = true; } if (Object.op_Implicit((Object)(object)capsuleCollider)) { ((Collider)capsuleCollider).enabled = true; } if (Object.op_Implicit((Object)(object)sphereCollider)) { ((Collider)sphereCollider).enabled = true; } Object.Destroy((Object)(object)this); } private void Awake() { //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) body = ((Component)this).GetComponent<CharacterBody>(); motor = ((Component)this).GetComponent<CharacterMotor>(); direction = ((Component)this).GetComponent<CharacterDirection>(); modelLocator = ((Component)this).GetComponent<ModelLocator>(); capsuleCollider = ((Component)this).GetComponent<CapsuleCollider>(); sphereCollider = ((Component)this).GetComponent<SphereCollider>(); if (Object.op_Implicit((Object)(object)direction)) { ((Behaviour)direction).enabled = false; } if (Object.op_Implicit((Object)(object)capsuleCollider)) { ((Collider)capsuleCollider).enabled = false; } if (Object.op_Implicit((Object)(object)sphereCollider)) { ((Collider)sphereCollider).enabled = false; } if (Object.op_Implicit((Object)(object)modelLocator) && Object.op_Implicit((Object)(object)modelLocator.modelTransform)) { modelTransform = modelLocator.modelTransform; originalRotation = modelTransform.rotation; if (((Object)((Component)modelLocator).gameObject).name == "GreaterWispBody(Clone)") { modelLocator.dontReleaseModelOnDeath = true; modelLocator.dontDetatchFromParent = true; } ((Behaviour)modelLocator).enabled = false; } } private void FixedUpdate() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_004a: 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_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)motor)) { motor.disableAirControlUntilCollision = true; motor.velocity = Vector3.zero; motor.rootMotion = Vector3.zero; ((BaseCharacterController)motor).Motor.SetPosition(pivotTransform.position, true); } if (Object.op_Implicit((Object)(object)pivotTransform)) { ((Component)this).transform.position = pivotTransform.position; } else { Release(); } if (Object.op_Implicit((Object)(object)modelTransform)) { modelTransform.position = pivotTransform.position; modelTransform.rotation = pivotTransform.rotation; } } } public class HayMaker : BaseSkillState { public static Vector3 CameraPosition = new Vector3(1.8f, -2.4f, -8f); public static float hayMakerDamageCoefficient = Config.hayMakerDamageCoefficient.Value; public static float hayMakerForce = 1000f; public static float hayMakerGritBonus = Config.hayMakerGritBonus.Value; public static float hayMakerGritBonusPer4 = Config.hayMakerGritBonusPer4.Value; public static float hayMakerProcCoefficient = 1f; public static float hayMakerRadius = 55f; public GameObject blastEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/Treebot/SonicBoomEffect.prefab").WaitForCompletion(); public float duration; protected Animator animator; protected float baseDuration = 1.51f; protected float EarlyExitTime = 1.2f; protected float startUp = 0.78f; protected float stopwatch; private float gritSnapShot; private bool hasFired; private float maxGritSnapShot; private Transform slamIndicatorInstance; private TemporaryOverlay temporaryOverlay; public override void FixedUpdate() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: 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_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); stopwatch += Time.fixedDeltaTime; Ray aimRay = ((BaseState)this).GetAimRay(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) && ((Ray)(ref aimRay)).direction != Vector3.zero) { ((EntityState)this).characterDirection.moveVector = ((Ray)(ref aimRay)).direction; } if (!Object.op_Implicit((Object)(object)slamIndicatorInstance)) { CreateIndicator(); } UpdateSlamIndicator(); if (stopwatch >= startUp && !hasFired) { hasFired = true; if (Config.voiceLines.Value) { Util.PlaySound("SettWVO", ((EntityState)this).gameObject); } if (NetworkServer.active) { Fire(); } for (int i = 0; i <= 25; i++) { float num = 45f; Vector3 val = Util.ApplySpread(((Ray)(ref aimRay)).direction, 10f, num, 1f, 1f, 0f, 0f); EffectManager.SpawnEffect(blastEffectPrefab, new EffectData { origin = ((EntityState)this).characterBody.corePosition, scale = 100f, rotation = Util.QuaternionSafeLookRotation(val) }, false); } } if (stopwatch >= EarlyExitTime && ((EntityState)this).isAuthority && hasFired) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } public override void OnEnter() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); ((BaseState)this).StartAimMode(baseDuration, false); animator = ((EntityState)this).GetModelAnimator(); hasFired = false; duration = baseDuration; ((EntityState)this).characterMotor.velocity = Vector3.zero; GritComponent component = ((EntityState)this).GetComponent<GritComponent>(); float currentGrit = component.GetCurrentGrit(); float maxGrit = component.GetMaxGrit(); gritSnapShot = currentGrit; maxGritSnapShot = maxGrit; ((EntityState)this).healthComponent.AddBarrierAuthority(currentGrit); ((EntityState)this).GetComponent<GritComponent>().AddGritAuthority(0f - currentGrit); if (gritSnapShot >= maxGritSnapShot) { ((EntityState)this).PlayCrossfade("Fullbody, Override", "HayMaker2", "HayMaker.playbackRate", duration, 0.2f); Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { CharacterModel component2 = ((Component)modelTransform).GetComponent<CharacterModel>(); if (Object.op_Implicit((Object)(object)component2)) { temporaryOverlay = ((EntityState)this).gameObject.AddComponent<TemporaryOverlay>(); Material originalMaterial = Object.Instantiate<Material>(LegacyResourcesAPI.Load<Material>("Materials/matVagrantEnergized")); temporaryOverlay.originalMaterial = originalMaterial; temporaryOverlay.AddToCharacerModel(component2); } } } else { ((EntityState)this).PlayCrossfade("Fullbody, Override", "HayMaker", "HayMaker.playbackRate", duration, 0.2f); } Util.PlaySound("SettWSFX", ((EntityState)this).gameObject); if (!Object.op_Implicit((Object)(object)slamIndicatorInstance)) { CreateIndicator(); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)slamIndicatorInstance)) { EntityState.Destroy((Object)(object)((Component)slamIndicatorInstance).gameObject); } if (Object.op_Implicit((Object)(object)temporaryOverlay)) { EntityState.Destroy((Object)(object)temporaryOverlay); } ((EntityState)this).OnExit(); } protected virtual void OnHitEnemyAuthority() { } private void Fire() { //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_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_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_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: 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_01de: 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_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Expected O, but got Unknown new List<HurtBox>(); foreach (HurtBox item in new SphereSearch { radius = 15f, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask, origin = ((Component)slamIndicatorInstance).transform.position }.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(((EntityState)this).teamComponent.teamIndex)).FilterCandidatesByDistinctHurtBoxEntities() .GetHurtBoxes() .ToList()) { float num = Mathf.Floor(((EntityState)this).characterBody.level / 4f); float num2 = hayMakerGritBonus + num * hayMakerGritBonusPer4; Vector3 val = ((Component)item).gameObject.transform.position - ((EntityState)this).characterBody.corePosition; Vector3 normalized = ((Vector3)(ref val)).normalized; DamageInfo val2 = new DamageInfo(); val2.damage = ((BaseState)this).damageStat * hayMakerDamageCoefficient + gritSnapShot * num2; val2.attacker = ((EntityState)this).gameObject; val2.inflictor = ((EntityState)this).gameObject; val2.force = Vector3.zero + normalized * 3000f; val2.crit = ((BaseState)this).RollCrit(); val2.procCoefficient = hayMakerProcCoefficient; val2.position = ((Component)item).gameObject.transform.position; val2.damageType = DamageTypeCombo.op_Implicit((DamageType)2); DamageAPI.AddModdedDamageType(val2, SettPlugin.settDamage); item.healthComponent.TakeDamage(val2); GlobalEventManager.instance.OnHitEnemy(val2, ((Component)item.healthComponent).gameObject); GlobalEventManager.instance.OnHitAll(val2, ((Component)item.healthComponent).gameObject); GameObject swordHitImpactEffect = Assets.swordHitImpactEffect; if (Object.op_Implicit((Object)(object)swordHitImpactEffect)) { EffectManager.SpawnEffect(swordHitImpactEffect, new EffectData { origin = ((Component)item.healthComponent).gameObject.transform.position, rotation = Quaternion.identity, networkSoundEventIndex = Assets.swordHitSoundEvent.index }, true); } } } private void CreateIndicator() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: 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_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005e: 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) if (Object.op_Implicit((Object)(object)ArrowRain.areaIndicatorPrefab)) { float num = 13f; Ray aimRay = ((BaseState)this).GetAimRay(); ((Ray)(ref aimRay)).origin = ((BaseState)this).FindModelChild("R_Hand").position; Vector3 point = ((Ray)(ref aimRay)).GetPoint(num); slamIndicatorInstance = Object.Instantiate<GameObject>(ArrowRain.areaIndicatorPrefab).transform; slamIndicatorInstance.localScale = Vector3.one * 15f; ((Component)slamIndicatorInstance).transform.position = point; } } private void UpdateSlamIndicator() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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) if (Object.op_Implicit((Object)(object)slamIndicatorInstance)) { float num = 13f; Ray aimRay = ((BaseState)this).GetAimRay(); ((Ray)(ref aimRay)).origin = ((BaseState)this).FindModelChild("R_Hand").position; Vector3 point = ((Ray)(ref aimRay)).GetPoint(num); ((Component)slamIndicatorInstance).transform.position = point; } } } public class Dash : BaseSkillState { public static float duration = 0.4f; public static float maxSpeed = 35f; public static float minSpeed = 15f; public static string dodgeSoundString = "SettDash"; public static float dodgeFOV = DodgeState.dodgeFOV; protected Vector3 dashVelocity; public float dashSpeed { get; private set; } public override void OnEnter() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_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_007c: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); ((EntityState)this).characterMotor.disableAirControlUntilCollision = false; Vector3 velocity = ((EntityState)this).characterMotor.velocity; Ray aimRay = ((BaseState)this).GetAimRay(); dashVelocity = CalculateLungeVelocity(velocity, ((Ray)(ref aimRay)).direction, duration, minSpeed, maxSpeed); ((EntityState)this).characterMotor.velocity = dashVelocity; ((EntityState)this).characterDirection.forward = ((Vector3)(ref ((EntityState)this).characterMotor.velocity)).normalized; dashSpeed = ((Vector3)(ref ((EntityState)this).characterMotor.velocity)).magnitude; ((EntityState)this).PlayCrossfade("FullBody, Override", "Roll", "Roll.playbackRate", 0.7f, 0.05f); Util.PlaySound(dodgeSoundString, ((EntityState)this).gameObject); } public static Vector3 CalculateLungeVelocity(Vector3 currentVelocity, Vector3 aimDirection, float charge, float minLungeSpeed, float maxLungeSpeed) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: 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_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) currentVelocity = ((Vector3.Dot(currentVelocity, aimDirection) < 0f) ? Vector3.zero : Vector3.Project(currentVelocity, aimDirection)); return currentVelocity + aimDirection * Mathf.Lerp(minLungeSpeed, maxLungeSpeed, charge); } private void AttemptSlam() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: 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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).GetAimRay(); BullseyeSearch val = new BullseyeSearch { teamMaskFilter = TeamMask.GetEnemyTeams(((BaseState)this).GetTeam()), filterByLoS = true, searchOrigin = ((EntityState)this).transform.position, searchDirection = Random.onUnitSphere, sortMode = (SortMode)1, maxDistanceFilter = 8f, maxAngleFilter = 360f }; val.RefreshCandidates(); val.FilterOutGameObject(((EntityState)this).gameObject); HurtBox val2 = val.GetResults().FirstOrDefault(); if (Object.op_Implicit((Object)(object)val2) && Object.op_Implicit((Object)(object)val2.healthComponent) && Object.op_Implicit((Object)(object)val2.healthComponent.body)) { ((EntityState)this).outer.SetNextState((EntityState)(object)new ShowStopper()); } } public override void FixedUpdate() { //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) //IL_0051: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { ((EntityState)this).cameraTargetParams.fovOverride = Mathf.Lerp(dodgeFOV, 60f, ((EntityState)this).fixedAge / duration); } ((EntityState)this).characterMotor.velocity = dashVelocity; ((EntityState)this).characterDirection.forward = dashVelocity; ((EntityState)this).characterBody.isSprinting = true; AttemptSlam(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { ((EntityState)this).cameraTargetParams.fovOverride = -1f; } ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } public class ShowStopper : BaseSkillState { public static float bonusHealthCoefficient = Config.bonusHealthCoefficient.Value; public static Vector3 CameraPosition = new Vector3(0f, 3f, -25f); public static float dodgeFOV; public static float dropForce = 80f; public static float jumpDuration = 0.6f; public static float slamDamageCoefficient = Config.slamDamageCoefficient.Value; public static float slamForce = Config.slamForce.Value; public static float slamProcCoefficient = 1f; public static float slamRadius = Config.slamRadius.Value; protected Animator animator; protected float bonusDamage; private bool detonateNextFrame; private Ray downRay; private Vector3 flyVector = Vector3.zero; private SettGrabController grabController; private bool hasDropped; private float initialTime; private Transform modelTransform; private Transform slamCenterIndicatorInstance; private Transform slamIndicatorInstance; private CameraParamsOverrideHandle handle; public override void FixedUpdate() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: 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_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_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_0074: 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_007d: 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_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: 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) ((EntityState)this).FixedUpdate(); CameraTargetParams cameraTargetParams = ((EntityState)this).cameraTargetParams; CharacterCameraParamsData currentCameraParamsData = cameraTargetParams.currentCameraParamsData; float num = 1f + Time.fixedTime - initialTime; float num2 = 8f / Mathf.Pow(num, 2f); Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(0f, 0f, -1f); currentCameraParamsData.idealLocalCameraPos = BlendableVector3.op_Implicit(CameraPosition + num2 * val); CameraParamsOverrideRequest val2 = default(CameraParamsOverrideRequest); val2.cameraParamsData = currentCameraParamsData; val2.priority = 0f; CameraParamsOverrideRequest val3 = val2; handle = cameraTargetParams.AddParamsOverride(val3, 0.2f); ((EntityState)this).cameraTargetParams.RemoveParamsOverride(handle, 0.2f); if (!hasDropped) { CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += flyVector * (8f * FlyUpState.speedCoefficientCurve.Evaluate(((EntityState)this).fixedAge / jumpDuration) * Time.fixedDeltaTime); ((EntityState)this).characterMotor.velocity.y = 0f; AttemptGrab(10f); } if (((EntityState)this).fixedAge >= 0.25f * jumpDuration && !Object.op_Implicit((Object)(object)slamIndicatorInstance)) { CreateIndicator(); } if (((EntityState)this).fixedAge >= jumpDuration && !hasDropped) { StartDrop(); } if (hasDropped && ((EntityState)this).isAuthority && (detonateNextFrame || (((BaseCharacterController)((EntityState)this).characterMotor).Motor.GroundingStatus.IsStableOnGround && !((BaseCharacterController)((EntityState)this).characterMotor).Motor.LastGroundingStatus.IsStableOnGround))) { LandingImpact(); ((EntityState)this).outer.SetNextStateToMain(); } if (((EntityState)this).fixedAge >= 5f && ((EntityState)this).isAuthority && hasDropped) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } public override void OnEnter() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: 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_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); ((EntityState)this).characterMotor.onMovementHit += new MovementHitDelegate(OnMovementHit); modelTransform = ((EntityState)this).GetModelTransform(); flyVector = Vector3.up; hasDropped = false; initialTime = Time.fixedTime; string[] array = new string[3] { "ShowStopper", "ShowStopper2", "ShowStopper3" }; int num = new Random().Next(array.Length); ((EntityState)this).PlayCrossfade("FullBody, Override", array[num], "HighJump.playbackRate", jumpDuration, 0.05f); Util.PlaySound("SettRSFX", ((EntityState)this).gameObject); if (Config.voiceLines.Value) { Util.PlaySound("SettRVO", ((EntityState)this).gameObject); } ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); ((EntityState)this).characterMotor.velocity = ((EntityState)this).characterMotor.velocity * 0.65f; CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1); ((EntityState)this).gameObject.layer = LayerIndex.fakeActor.intVal; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.RebuildCollidableLayers(); } public override void OnExit() { //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0077: 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_00e1: Expected O, but got Unknown //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)grabController)) { grabController.Release(); } if (Object.op_Implicit((Object)(object)slamIndicatorInstance)) { EntityState.Destroy((Object)(object)((Component)slamIndicatorInstance).gameObject); } if (Object.op_Implicit((Object)(object)slamCenterIndicatorInstance)) { EntityState.Destroy((Object)(object)((Component)slamCenterIndicatorInstance).gameObject); } ((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty"); CharacterBody characterBody = ((EntityState)this).characterBody; characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2); if (NetworkServer.active && ((EntityState)this).characterBody.HasBuff(Buffs.HiddenInvincibility)) { ((EntityState)this).characterBody.RemoveBuff(Buffs.HiddenInvincibility); } ((EntityState)this).gameObject.layer = LayerIndex.defaultLayer.intVal; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.RebuildCollidableLayers(); ((EntityState)this).characterMotor.onMovementHit -= new MovementHitDelegate(OnMovementHit); ((EntityState)this).cameraTargetParams.RemoveParamsOverride(handle, 0.2f); } public void StartDrop() { hasDropped = true; ((EntityState)this).characterMotor.disableAirControlUntilCollision = true; ((EntityState)this).characterMotor.velocity.y = 0f - dropForce; AttemptGrab(15f); } public override void Update() { ((EntityState)this).Update(); if (Object.op_Implicit((Object)(object)slamIndicatorInstance)) { UpdateSlamIndicator(); } } private void AttemptGrab(float grabRadius) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: 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_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0067: 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) if (Object.op_Implicit((Object)(object)grabController)) { return; } ((BaseState)this).GetAimRay(); BullseyeSearch val = new BullseyeSearch { teamMaskFilter = TeamMask.GetEnemyTeams(((BaseState)this).GetTeam()), filterByLoS = false, searchOrigin = ((EntityState)this).transform.position, searchDirection = Random.onUnitSphere, sortMode = (SortMode)1, maxDistanceFilter = grabRadius, maxAngleFilter = 360f }; val.RefreshCandidates(); val.FilterOutGameObject(((EntityState)this).gameObject); HurtBox val2 = (from candidate in val.GetResults() orderby GetHurtBoxFullCombinedHealth(candidate) descending select candidate).ToList().FirstOrDefault(); if (Object.op_Implicit((Object)(object)val2) && Object.op_Implicit((Object)(object)val2.healthComponent) && Object.op_Implicit((Object)(object)val2.healthComponent.body)) { if (BodyMeetsGrabConditions(val2.healthComponent.body)) { bonusDamage = val2.healthComponent.fullCombinedHealth * bonusHealthCoefficient; grabController = ((Component)val2.healthComponent.body).gameObject.AddComponent<SettGrabController>(); grabController.pivotTransform = ((BaseState)this).FindModelChild("R_Hand"); } if (NetworkServer.active && !((EntityState)this).characterBody.HasBuff(Buffs.HiddenInvincibility)) { ((EntityState)this).characterBody.AddBuff(Buffs.HiddenInvincibility); } } } private float GetHurtBoxFullCombinedHealth(HurtBox hurtBox) { return hurtBox.healthComponent.fullCombinedHealth; } private bool BodyMeetsGrabConditions(CharacterBody targetBody) { return true; } private void CreateIndicator() { //IL_0012: 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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0086: 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_009a: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)ArrowRain.areaIndicatorPrefab)) { Ray val = default(Ray); ((Ray)(ref val)).direction = Vector3.down; ((Ray)(ref val)).origin = ((EntityState)this).transform.position; downRay = val; slamIndicatorInstance = Object.Instantiate<GameObject>(ArrowRain.areaIndicatorPrefab).transform; slamIndicatorInstance.localScale = Vector3.one * slamRadius; slamCenterIndicatorInstance = Object.Instantiate<GameObject>(ArrowRain.areaIndicatorPrefab).transform; slamCenterIndicatorInstance.localScale = Vector3.one * slamRadius / 3f; } } private void LandingImpact() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Expected O, but got Unknown //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: 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_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Expected O, but got Unknown //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_013f: Expected O, but got Unknown //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)grabController)) { grabController.Release(); } ((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty"); CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity *= 0.1f; BlastAttack val = new BlastAttack(); val.radius = slamRadius; val.procCoefficient = slamProcCoefficient; val.position = ((EntityState)this).characterBody.footPosition; val.procChainMask = default(ProcChainMask); val.attacker = ((EntityState)this).gameObject; val.crit = ((BaseState)this).RollCrit(); val.baseDamage = ((BaseState)this).damageStat * slamDamageCoefficient; val.falloffModel = (FalloffModel)1; val.baseForce = slamForce; val.teamIndex = TeamComponent.GetObjectTeam(val.attacker); val.damageType = DamageTypeCombo.op_Implicit((DamageType)32); val.attackerFiltering = (AttackerFiltering)2; DamageAPI.AddModdedDamageType(val, SettPlugin.settDamage); val.Fire(); if (NetworkServer.active) { HitPoint[] array = val.CollectHits(); foreach (HitPoint val2 in array) { HealthComponent val3 = (Object.op_Implicit((Object)(object)val2.hurtBox) ? val2.hurtBox.healthComponent : null); if (Object.op_Implicit((Object)(object)val3)) { DamageInfo val4 = new DamageInfo(); val4.damage = bonusDamage; val4.damageColorIndex = (DamageColorIndex)3; val4.force = Vector3.zero; val4.crit = false; val4.position = ((Component)val3).transform.position; val4.damageType = DamageTypeCombo.op_Implicit((DamageType)2); val3.TakeDamage(val4); } } } Util.PlaySound("SettRImpact", ((EntityState)this).gameObject); for (int j = 0; j <= 4; j++) { Vector3 origin = ((EntityState)this).characterBody.footPosition + Random.insideUnitSphere * 2f; origin.y = ((EntityState)this).characterBody.footPosition.y; EffectManager.SpawnEffect(SpawnState.spawnEffectPrefab, new EffectData { origin = origin, scale = 0.25f }, false); } Vector3 val5 = default(Vector3); ((Vector3)(ref val5))..ctor(((EntityState)this).characterBody.footPosition.x, ((EntityState)this).characterBody.footPosition.y + 4f, ((EntityState)this).characterBody.footPosition.z); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((BaseCharacterController)((EntityState)this).characterMotor).Motor.SetPosition(val5, true); } if (NetworkServer.active && ((EntityState)this).characterBody.HasBuff(Buffs.HiddenInvincibility)) { ((EntityState)this).characterBody.RemoveBuff(Buffs.HiddenInvincibility); } } private void OnMovementHit(ref MovementHitInfo movementHitInfo) { detonateNextFrame = true; } private void UpdateSlamIndicator() { //IL_0019: 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_0033: 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_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0051: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)slamIndicatorInstance)) { float num = 250f; Ray val = default(Ray); ((Ray)(ref val)).direction = Vector3.down; ((Ray)(ref val)).origin = ((EntityState)this).transform.position; downRay = val; RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(downRay, ref val2, num, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { ((Component)slamIndicatorInstance).transform.position = ((RaycastHit)(ref val2)).point; ((Component)slamIndicatorInstance).transform.up = ((RaycastHit)(ref val2)).normal; ((Component)slamCenterIndicatorInstance).transform.position = ((RaycastHit)(ref val2)).point; ((Component)slamCenterIndicatorInstance).transform.up = ((RaycastHit)(ref val2)).normal; } } } } } namespace SettMod.SkillStates.Keystone { public class ElectrocuteHandler : MonoBehaviour { public CharacterBody attackerBody; public float electrocuteCD = 5f; public float stopwatch; private static readonly int maxElectrocuteStacks = 3; private CharacterBody body; private int electrocuteStacks; private bool fired; private HurtBox hurtBox; public void AddStack() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) if (GetStacks() < maxElectrocuteStacks && !fired) { body.AddTimedBuff(Buffs.electrocuteDebuff.buffIndex, 3f); GetStacks(); } } public int GetStacks() { electrocuteStacks = body.GetBuffCount(Buffs.electrocuteDebuff); return electrocuteStacks; } public void SetStacks(int num) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) body.SetBuffCount(Buffs.electrocuteDebuff.buffIndex, num); GetStacks(); } private void Awake() { body = ((Component)this).GetComponent<CharacterBody>(); hurtBox = body.mainHurtBox; AddStack(); } private void FireLightning() { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: 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_00d1: Expected O, but got Unknown if (GetStacks() >= maxElectrocuteStacks) { SetStacks(0); fired = true; float num = Mathf.Floor(attackerBody.level / 4f); if (Object.op_Implicit((Object)(object)hurtBox)) { float num2 = 6f + num * 0.75f; OrbManager.instance.AddOrb((Orb)new SimpleLightningStrikeOrb { attacker = ((Component)attackerBody).gameObject, damageColorIndex = (DamageColorIndex)3, damageValue = attackerBody.damage * num2, isCrit = Util.CheckRoll(attackerBody.crit, attackerBody.master), procChainMask = default(ProcChainMask), procCoefficient = 1f, target = hurtBox }); } } } private void FixedUpdate() { if (!fired && NetworkServer.active) { FireLightning(); } if (stopwatch < electrocuteCD) { stopwatch += Time.fixedDeltaTime; } if (stopwatch >= electrocuteCD) { Object.Destroy((Object)(object)this); } } } public class KeyStoneHandler : NetworkBehaviour, IOnDamageDealtServerReceiver, IOnTakeDamageServerReceiver { public enum KeyStones { None = 0, Conqueror = 1, Lethal = 2, PhaseRush = 4, Electrocute = 8 } public float conquerorMaxStacks = 12f; [FormerlySerializedAs("Keystone")] public GenericSkill keyStone; public KeyStones keyStoneType; public float lethalMaxStacks = 6f; public float UptimeStopwatch; private CharacterBody body; private float conquerorUpTime = 4f; private HealthComponent healthComponent; private float lethalUpTime = 6f; private float MaxthrottleTime = 0.5f; private EntityStateMachine outer; private float throttleUpdateTime; protected bool isAuthority => Util.HasEffectiveAuthority(outer.networkIdentity); public void Awake() { body = ((Component)this).GetComponent<CharacterBody>(); outer = ((Component)this).GetComponent<EntityStateMachine>(); healthComponent = ((Component)this).GetComponent<HealthComponent>(); GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal; } private void GlobalEventManager_onCharacterDeathGlobal(DamageReport damageReport) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Invalid comparison between Unknown and I4 if (damageReport != null && damageReport.victimBody != null && damageReport.attackerBody != null && (int)damageReport.victimTeamIndex != 1 && damageReport.attackerBody.GetBuffCount(Buffs.movementSpeedBuff) < 1 && damageReport.attackerBody.baseNameToken == "SETT_NAME" && ((Component)damageReport.attackerBody).GetComponent<KeyStoneHandler>().keyStoneType == KeyStones.PhaseRush) { damageReport.attackerBody.AddTimedBuff(Buffs.movementSpeedBuff, 3f); } } public void OnDamageDealtServer(DamageReport damageReport) { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) if (damageReport == null || !Object.op_Implicit((Object)(object)damageReport.victimBody) || !Object.op_Implicit((Object)(object)damageReport.attacker) || !(damageReport.attackerBody.baseNameToken == "SETT_NAME") || !DamageAPI.HasModdedDamageType(damageReport.damageInfo, SettPlugin.settDamage)) { return; } UptimeStopwatch = 0f; if (keyStoneType == KeyStones.PhaseRush) { if (damageReport.victimBody.GetBuffCount(Buffs.phaseRushDebuff) < 3) { damageReport.victimBody.AddTimedBuff(Buffs.phaseRushDebuff, 4f); } if (damageReport.victimBody.GetBuffCount(Buffs.phaseRushDebuff) >= 3 && body.GetBuffCount(Buffs.movementSpeedBuff) < 1) { body.AddTimedBuff(Buffs.movementSpeedBuff, 3f); } } if (keyStoneType == KeyStones.Electrocute) { ElectrocuteHandler component = ((Component)damageReport.victimBody).gameObject.GetComponent<ElectrocuteHandler>(); if (!Object.op_Implicit((Object)(object)component)) { ((Component)damageReport.victimBody).gameObject.AddComponent<ElectrocuteHandler>().attackerBody = damageReport.attackerBody; } else { component.AddStack(); } } AddKeyStoneBuff(); if (keyStoneType == KeyStones.Conqueror && GetKeyStoneBuffCount() >= GetKeyStoneMaxStacks()) { float num = damageReport.damageDealt * 0.06f; healthComponent.Heal(num, default(ProcChainMask), true); } } public void OnTakeDamageServer(DamageReport damageReport) { } private void AddKeyStoneBuff() { if (GetKeyStoneBuffCount() < GetKeyStoneMaxStacks()) { if (keyStoneType == KeyStones.Conqueror) { body.AddBuff(Buffs.conquerorBuff); } if (keyStoneType == KeyStones.Lethal) { body.AddBuff(Buffs.lethalBuff); } } } private void AuthorityFixedUpdate() { } private void CheckKeyStone() { if (keyStone.skillNameToken == "SETT_CONQUEROR_NAME") { keyStoneType = KeyStones.Conqueror; } if (keyStone.skillNameToken == "SETT_LETHAL_NAME") { keyStoneType = KeyStones.Lethal; } if (keyStone.skillNameToken == "SETT_PHASE_RUSH_NAME") { keyStoneType = KeyStones.PhaseRush; } if (keyStone.skillNameToken == "SETT_ELECTROCUTE_NAME") { keyStoneType = KeyStones.Electrocute; } } private void FixedUpdate() { if (NetworkServer.active) { ServerFixedUpdate(); } if (isAuthority) { AuthorityFixedUpdate(); } } private float GetKeyStoneBuffCount() { if (keyStoneType == KeyStones.Conqueror) { return body.GetBuffCount(Buffs.conquerorBuff); } if (keyStoneType == KeyStones.Lethal) { return body.GetBuffCount(Buffs.lethalBuff); } return 0f; } private float GetKeyStoneMaxStacks() { if (keyStoneType == KeyStones.Conqueror) { return conquerorMaxStacks; } if (keyStoneType == KeyStones.Lethal) { return lethalMaxStacks; } return 6f; } private float GetKeyStoneUpTime() { if (keyStoneType == KeyStones.Conqueror) { return conquerorUpTime; } if (keyStoneType == KeyStones.Lethal) { return lethalUpTime; } return 5f; } private void RemoveKeyStoneBuff() { if (keyStoneType == KeyStones.Conqueror) { body.RemoveBuff(Buffs.conquerorBuff); } if (keyStoneType == KeyStones.Lethal) { body.RemoveBuff(Buffs.lethalBuff); } } private void ServerFixedUpdate() { if (UptimeStopwatch < GetKeyStoneUpTime()) { UptimeStopwatch += Time.fixedDeltaTime; } if (throttleUpdateTime < MaxthrottleTime) { throttleUpdateTime += Time.fixedDeltaTime; } if (throttleUpdateTime >= MaxthrottleTime && UptimeStopwatch > GetKeyStoneUpTime() && GetKeyStoneBuffCount() > 0f) { RemoveKeyStoneBuff(); throttleUpdateTime = 0f; } if (GetKeyStoneBuffCount() <= 0f) { UptimeStopwatch = 0f; } } private void Update() { CheckKeyStone(); } } } namespace SettMod.SkillStates.Emotes { public class BaseEmote : BaseState { public string soundString; public string animString; public float duration; public float animDuration; public bool normalizeModel; private uint activePlayID; private Animator animator; protected ChildLocator childLocator; private CameraParamsOverrideHandle handle; public LocalUser localUser; public override void OnEnter() { //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); childLocator = ((EntityState)this).GetModelChildLocator(); localUser = LocalUserManager.readOnlyLocalUsersList[0]; ((EntityState)this).characterBody.hideCrosshair = true; if (Object.op_Implicit((Object)(object)((EntityState)this).GetAimAnimator())) { ((Behaviour)((EntityState)this).GetAimAnimator()).enabled = false; } animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 0f); animator.SetLayerWeight(animator.GetLayerIndex("AimYaw"), 0f); if (animDuration == 0f && duration != 0f) { animDuration = duration; } if (duration > 0f) { ((EntityState)this).PlayAnimation("FullBody, Override", animString, "Emote.playbackRate", duration, 0f); } else { ((EntityState)this).PlayAnimation("FullBody, Override", animString, "Emote.playbackRate", animDuration, 0f); } if (Config.voiceLines.Value) { activePlayID = Util.PlaySound(soundString, ((EntityState)this).gameObject); } if (normalizeModel && Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { ((EntityState)this).modelLocator.normalizeToFloor = true; } handle = CameraParams.OverrideSettCameraParams(((EntityState)this).cameraTargetParams, SettCameraParams.EMOTE); } public override void OnExit() { //IL_000d: 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) ((EntityState)this).OnExit(); ((EntityState)this).cameraTargetParams.RemoveParamsOverride(handle, 0.2f); if (Object.op_Implicit((Object)(object)((EntityState)this).GetAimAnimator())) { ((Behaviour)((EntityState)this).GetAimAnimator()).enabled = true; } if (Object.op_Implicit((Object)(object)animator)) { animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 1f); animator.SetLayerWeight(animator.GetLayerIndex("AimYaw"), 1f); } if (normalizeModel && Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { ((EntityState)this).modelLocator.normalizeToFloor = false; } ((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty"); if (activePlayID != 0) { AkSoundEngine.StopPlayingID(activePlayID); } } public override void FixedUpdate() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); bool flag = false; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { if (!((EntityState)this).characterMotor.isGrounded) { flag = true; } if (((EntityState)this).characterMotor.velocity != Vector3.zero) { flag = true; } } if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { if (((EntityState)this).inputBank.skill1.down) { flag = true; } if (((EntityState)this).inputBank.skill2.down) { flag = true; } if (((EntityState)this).inputBank.skill3.down) { flag = true; } if (((EntityState)this).inputBank.skill4.down) { flag = true; } if (((EntityState)this).inputBank.jump.down) { flag = true; } if (((EntityState)this).inputBank.moveVector != Vector3.zero) { flag = true; } } if (((EntityState)this).isAuthority && ((EntityState)this).characterMotor.isGrounded && !localUser.isUIFocused) { if (Input.GetKeyDown(Config.tauntKeybind.Value)) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new Taunt(), (InterruptPriority)0); return; } if (Input.GetKeyDown(Config.jokeKeybind.Value)) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new Joke(), (InterruptPriority)0); return; } if (Input.GetKeyDown(Config.laughKeybind.Value)) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new Laugh(), (InterruptPriority)0); return; } if (Input.GetKeyDown(Config.danceKeybind.Value)) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new Dance { spam = (((EntityState)this).outer.state is Dance) }, (InterruptPriority)0); return; } } if (duration > 0f && ((EntityState)this).fixedAge >= duration) { flag = true; } if (flag) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)0; } } } namespace SettMod.SkillStates.BaseStates { internal class Death : GenericCharacterDeath { public override void FixedUpdate() { ((GenericCharacterDeath)this).FixedUpdate(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)7; } public override void OnEnter() { ((GenericCharacterDeath)this).OnEnter(); Util.PlaySound("SettDeath", ((EntityState)this).gameObject); Animator modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { modelAnimator.CrossFadeInFixedTime("Death", 0.1f); } } public override void OnExit() { ((GenericCharacterDeath)this).OnExit(); } } public class KnuckleDown : BaseSkillState { public static float baseDurationBeforeInterruptable; public float duration; public int swingIndex; protected Animator animator; protected float attackRecoil = 1f; protected float baseDuration = 0.7f; protected float baseEarlyExitTime = 0.48f; protected Vector3 bonusForce = Vector3.zero; protected float damageCoefficient = 3.5f; protected DamageType damageType; protected string hitboxName = "Sword"; protected GameObject hitEffectPrefab; protected float hitHopVelocity = 4f; protected string hitSoundString = "SettHitSFX"; protected NetworkSoundEventIndex impactSound = Assets.swordHitSoundEvent.index; protected bool inHitPause; protected string muzzleString = "SwingCenter"; protected float procCoefficient = 1f; protected float pushForce = 300f; protected float stopwatch; protected GameObject swingEffectPrefab = Assets.swordSwingEffect; protected string swingSoundString = "SettHitVO"; private OverlapAttack attack; private float earlyExitDuration; private bool extraDamage; private bool hasFired; private bool hasHopped; private float hitPauseTimer; private HitStopCachedState hitStopCachedState; private Transform modelBaseTransform; private Vector3 storedVelocity; public override void FixedUpdate() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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) ((EntityState)this).FixedUpdate(); hitPauseTimer -= Time.fixedDeltaTime; if (hitPauseTimer <= 0f && inHitPause) { ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); inHitPause = false; ((EntityState)this).characterMotor.velocity = storedVelocity; } if (!inHitPause) { stopwatch += Time.fixedDeltaTime; } else { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((Entit