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.Versioning; using System.Security; using System.Security.Permissions; using AncientScepter; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EmotesAPI; using EntityStates; using EntityStates.AI.Walker; using EntityStates.Commando.CommandoWeapon; using HG; using HG.BlendableTypes; using OfficialScoutMod.Modules; using OfficialScoutMod.Modules.Achievements; using OfficialScoutMod.Modules.BaseStates; using OfficialScoutMod.Modules.Characters; using OfficialScoutMod.Modules.Components; using OfficialScoutMod.Scout; using OfficialScoutMod.Scout.Components; using OfficialScoutMod.Scout.Content; using OfficialScoutMod.Scout.SkillStates; using On.RoR2; using On.RoR2.UI; using R2API; using R2API.Networking; using R2API.Networking.Interfaces; using R2API.Utils; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.EntityLogic; using RoR2.HudOverlay; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using ThreeEyedGames; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("OfficialScoutMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+9394b556754849734b12c430655b2a8f5c8d91b8")] [assembly: AssemblyProduct("OfficialScoutMod")] [assembly: AssemblyTitle("OfficialScoutMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace OfficialScoutMod { internal static class Log { internal static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void ErrorAssetBundle(string assetName, string bundleName) { Error("failed to load asset, " + assetName + ", because it does not exist in asset bundle, " + bundleName); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.kenko.Scout", "Scout", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class ScoutPlugin : BaseUnityPlugin { public const string MODUID = "com.kenko.Scout"; public const string MODNAME = "Scout"; public const string MODVERSION = "1.0.0"; public const string DEVELOPER_PREFIX = "KENKO"; public static ScoutPlugin instance; public static bool emotesInstalled => Chainloader.PluginInfos.ContainsKey("com.weliveinasociety.CustomEmotesAPI"); public static bool scepterInstalled => Chainloader.PluginInfos.ContainsKey("com.DestroyedClone.AncientScepter"); private void Awake() { instance = this; NetworkingAPI.RegisterMessageType(); Log.Init(((BaseUnityPlugin)this).Logger); Language.Init(); new ScoutSurvivor().Initialize(); new ContentPacks().Initialize(); } } } namespace OfficialScoutMod.Scout { public class ScoutSurvivor : SurvivorBase { public static class EmotesAPICompat { [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public static void Emotes() { GameObject val = ScoutAssets.mainAssetBundle.LoadAsset("scout_emoteskeleton"); CustomEmotesAPI.ImportArmature(characterPrefab, val, 0, true); } } public const string SCOUT_PREFIX = "KENKO_SCOUT_"; internal static GameObject characterPrefab; public static SkillDef swapScepterSkillDef; public override string assetBundleName => "scout"; public override string bodyName => "ScoutBody"; public override string masterName => "ScoutMonsterMaster"; public override string modelPrefabName => "mdlScout"; public override string displayPrefabName => "ScoutDisplay"; public override string survivorTokenPrefix => "KENKO_SCOUT_"; public override BodyInfo bodyInfo => new BodyInfo { bodyName = bodyName, bodyNameToken = "KENKO_SCOUT_NAME", subtitleNameToken = "KENKO_SCOUT_SUBTITLE", characterPortrait = assetBundle.LoadAsset("texScoutIcon"), bodyColor = new Color(0.72156864f, 0.8862745f, 0.23921569f), sortPosition = 7f, crosshair = CharacterAssets.LoadCrosshair("SimpleDot"), podPrefab = LegacyResourcesAPI.Load("Prefabs/NetworkedObjects/SurvivorPod"), damage = ScoutConfig.damage.Value, damageGrowth = ScoutConfig.damageGrowth.Value * ScoutConfig.damage.Value, attackSpeed = ScoutConfig.attackSpeed.Value, attackSpeedGrowth = ScoutConfig.attackSpeedGrowth.Value, crit = ScoutConfig.crit.Value, critGrowth = ScoutConfig.critGrowth.Value, maxHealth = ScoutConfig.maxHealth.Value, healthGrowth = ScoutConfig.healthGrowth.Value * ScoutConfig.maxHealth.Value, healthRegen = ScoutConfig.healthRegen.Value, regenGrowth = ScoutConfig.regenGrowth.Value * ScoutConfig.healthRegen.Value, shield = ScoutConfig.shield.Value, shieldGrowth = ScoutConfig.shieldGrowth.Value * ScoutConfig.shield.Value, armor = ScoutConfig.armor.Value, armorGrowth = ScoutConfig.armorGrowth.Value * ScoutConfig.armor.Value, moveSpeed = ScoutConfig.moveSpeed.Value, moveSpeedGrowth = ScoutConfig.moveSpeedGrowth.Value * ScoutConfig.moveSpeed.Value, jumpPower = ScoutConfig.jumpPower.Value, jumpPowerGrowth = ScoutConfig.jumpPowerGrowth.Value * ScoutConfig.jumpPower.Value, acceleration = ScoutConfig.acceleration.Value, jumpCount = ScoutConfig.jumpCount.Value, autoCalculateLevelStats = ScoutConfig.autoCalculateLevelStats.Value }; public override CustomRendererInfo[] customRendererInfos => new CustomRendererInfo[4] { new CustomRendererInfo { childName = "Model" }, new CustomRendererInfo { childName = "ScatterGunMesh" }, new CustomRendererInfo { childName = "BackBatMesh" }, new CustomRendererInfo { childName = "BatMesh" } }; public override UnlockableDef characterUnlockableDef => ScoutUnlockables.characterUnlockableDef; public override ItemDisplaysBase itemDisplays => new ScoutItemDisplays(); public override AssetBundle assetBundle { get; protected set; } public override GameObject bodyPrefab { get; protected set; } public override CharacterBody prefabCharacterBody { get; protected set; } public override GameObject characterModelObject { get; protected set; } public override CharacterModel prefabCharacterModel { get; protected set; } public override GameObject displayPrefab { get; protected set; } public override void Initialize() { base.Initialize(); } public override void InitializeCharacter() { ScoutConfig.Init(); ScoutUnlockables.Init(); base.InitializeCharacter(); ChildLocator componentInChildren = bodyPrefab.GetComponentInChildren(); ((Component)componentInChildren.FindChild("BatMesh")).gameObject.SetActive(false); DamageTypes.Init(); ScoutStates.Init(); ScoutTokens.Init(); ScoutAssets.Init(assetBundle); ScoutBuffs.Init(assetBundle); InitializeEntityStateMachines(); InitializeSkills(); InitializeSkins(); InitializeCharacterMaster(); AdditionalBodySetup(); characterPrefab = bodyPrefab; AddHooks(); } private void AdditionalBodySetup() { //IL_0022: 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_003d: Expected O, but got Unknown //IL_003d: Expected O, but got Unknown AddHitboxes(); bodyPrefab.AddComponent(); TempVisualEffectAPI.AddTemporaryVisualEffect(ScoutAssets.atomicEffect, new EffectRadius(pee), new EffectCondition(tempAdd), ""); static float pee(CharacterBody body) { return 2f * body.radius; } static bool tempAdd(CharacterBody body) { return body.HasBuff(ScoutBuffs.scoutAtomicBuff); } } public void AddHitboxes() { Prefabs.SetupHitBoxGroup(characterModelObject, "Bat", "BatHitbox"); } public override void InitializeEntityStateMachines() { Prefabs.ClearEntityStateMachines(bodyPrefab); Prefabs.AddMainEntityStateMachine(bodyPrefab, "Body", typeof(MainState), typeof(SpawnTeleporterState)); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon"); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon2"); } public override void InitializeSkills() { bodyPrefab.AddComponent(); bodyPrefab.AddComponent(); Skills.CreateSkillFamilies(bodyPrefab); AddPassiveSkills(); AddPrimarySkills(); AddSecondarySkills(); AddUtilitySkills(); AddSpecialSkills(); if (ScoutPlugin.scepterInstalled) { InitializeScepter(); } } private void AddPassiveSkills() { //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) ScoutPassive component = bodyPrefab.GetComponent(); SkillLocator component2 = bodyPrefab.GetComponent(); component2.passiveSkill.enabled = false; component.doubleJumpPassive = Skills.CreateSkillDef(new SkillDefInfo { skillName = "KENKO_SCOUT_PASSIVE_NAME", skillNameToken = "KENKO_SCOUT_PASSIVE_NAME", skillDescriptionToken = "KENKO_SCOUT_PASSIVE_DESCRIPTION", skillIcon = assetBundle.LoadAsset("texDoubleJumpIcon"), keywordTokens = new string[0], activationState = new SerializableEntityStateType(typeof(Idle)), activationStateMachineName = "", baseMaxStock = 1, baseRechargeInterval = 0f, beginSkillCooldownOnSkillEnd = false, canceledFromSprinting = false, forceSprintDuringState = false, fullRestockOnAssign = true, interruptPriority = (InterruptPriority)0, resetCooldownTimerOnUse = false, isCombatSkill = false, mustKeyPress = false, cancelSprintingOnActivation = false, rechargeStock = 1, requiredStock = 2, stockToConsume = 1 }); Skills.AddPassiveSkills(component.passiveSkillSlot.skillFamily, component.doubleJumpPassive); } private void AddPrimarySkills() { //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019d: 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_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) ScoutSwap component = bodyPrefab.GetComponent(); ReloadSkillDefInfo reloadSkillDefInfo = new ReloadSkillDefInfo(); reloadSkillDefInfo.skillName = "SplatterGun"; reloadSkillDefInfo.skillNameToken = "KENKO_SCOUT_PRIMARY_SPLATTERGUN_NAME"; reloadSkillDefInfo.skillDescriptionToken = "KENKO_SCOUT_PRIMARY_SPLATTERGUN_DESCRIPTION"; reloadSkillDefInfo.keywordTokens = new string[1] { Tokens.agileKeyword }; reloadSkillDefInfo.skillIcon = assetBundle.LoadAsset("texShotgunIcon"); reloadSkillDefInfo.activationState = new SerializableEntityStateType(typeof(Shoot)); reloadSkillDefInfo.reloadState = new SerializableEntityStateType(typeof(EnterReload)); reloadSkillDefInfo.activationStateMachineName = "Weapon"; reloadSkillDefInfo.interruptPriority = (InterruptPriority)1; reloadSkillDefInfo.reloadInterruptPriority = (InterruptPriority)0; reloadSkillDefInfo.baseMaxStock = 2; reloadSkillDefInfo.baseRechargeInterval = 0f; reloadSkillDefInfo.rechargeStock = 0; reloadSkillDefInfo.requiredStock = 1; reloadSkillDefInfo.stockToConsume = 1; reloadSkillDefInfo.graceDuration = 0.1f; reloadSkillDefInfo.resetCooldownTimerOnUse = false; reloadSkillDefInfo.fullRestockOnAssign = false; reloadSkillDefInfo.dontAllowPastMaxStocks = false; reloadSkillDefInfo.beginSkillCooldownOnSkillEnd = false; reloadSkillDefInfo.mustKeyPress = true; reloadSkillDefInfo.isCombatSkill = true; reloadSkillDefInfo.canceledFromSprinting = false; reloadSkillDefInfo.cancelSprintingOnActivation = false; reloadSkillDefInfo.forceSprintDuringState = false; ReloadSkillDef val = Skills.CreateReloadSkillDef(reloadSkillDefInfo); Skills.AddPrimarySkills(bodyPrefab, (SkillDef)val); reloadSkillDefInfo = new ReloadSkillDefInfo(); reloadSkillDefInfo.skillName = "Rifle"; reloadSkillDefInfo.skillNameToken = "KENKO_SCOUT_PRIMARY_RIFLE_NAME"; reloadSkillDefInfo.skillDescriptionToken = "KENKO_SCOUT_PRIMARY_RIFLE_DESCRIPTION"; reloadSkillDefInfo.keywordTokens = new string[0]; reloadSkillDefInfo.skillIcon = assetBundle.LoadAsset("texRifleIcon"); reloadSkillDefInfo.activationState = new SerializableEntityStateType(typeof(ShootRifle)); reloadSkillDefInfo.reloadState = new SerializableEntityStateType(typeof(EnterRifleReload)); reloadSkillDefInfo.activationStateMachineName = "Weapon"; reloadSkillDefInfo.interruptPriority = (InterruptPriority)1; reloadSkillDefInfo.reloadInterruptPriority = (InterruptPriority)0; reloadSkillDefInfo.baseMaxStock = 7; reloadSkillDefInfo.baseRechargeInterval = 0f; reloadSkillDefInfo.rechargeStock = 0; reloadSkillDefInfo.requiredStock = 1; reloadSkillDefInfo.stockToConsume = 1; reloadSkillDefInfo.graceDuration = 5f; reloadSkillDefInfo.resetCooldownTimerOnUse = false; reloadSkillDefInfo.fullRestockOnAssign = false; reloadSkillDefInfo.dontAllowPastMaxStocks = false; reloadSkillDefInfo.beginSkillCooldownOnSkillEnd = false; reloadSkillDefInfo.mustKeyPress = false; reloadSkillDefInfo.isCombatSkill = true; reloadSkillDefInfo.canceledFromSprinting = false; reloadSkillDefInfo.cancelSprintingOnActivation = true; reloadSkillDefInfo.forceSprintDuringState = false; ReloadSkillDef val2 = Skills.CreateReloadSkillDef(reloadSkillDefInfo); Skills.AddPrimarySkills(bodyPrefab, (SkillDef)val2); component.batSkillDef = Skills.CreateSkillDef(new SkillDefInfo("Bonk", "KENKO_SCOUT_PRIMARY_BONK_NAME", "KENKO_SCOUT_PRIMARY_BONK_DESCRIPTION", assetBundle.LoadAsset("texSwingIcon"), new SerializableEntityStateType(typeof(Swing)))); component.batSkillDef.stepCount = 2; component.batSkillDef.stepGraceDuration = 1f; Skills.AddAdditionalSkills(component.batSkillSlot.skillFamily, (SkillDef)component.batSkillDef); } private void AddSecondarySkills() { //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) ScoutSwap component = bodyPrefab.GetComponent(); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Toxic Cleaver"; skillDefInfo.skillNameToken = "KENKO_SCOUT_SECONDARY_CLEAVER_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SCOUT_SECONDARY_CLEAVER_DESCRIPTION"; skillDefInfo.keywordTokens = new string[1] { Tokens.agileKeyword }; skillDefInfo.skillIcon = assetBundle.LoadAsset("texButcherKnifeIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(ThrowCleaver)); skillDefInfo.activationStateMachineName = "Weapon2"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseMaxStock = 1; skillDefInfo.baseRechargeInterval = 6f; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 1; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = false; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.mustKeyPress = false; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; SkillDef val = Skills.CreateSkillDef(skillDefInfo); Skills.AddSecondarySkills(bodyPrefab, val); component.ballSkillDef = Skills.CreateSkillDef(new SkillDefInfo { skillName = "Atomic Spikeball", skillNameToken = "KENKO_SCOUT_SECONDARY_SPIKEDBALL_NAME", skillDescriptionToken = "KENKO_SCOUT_SECONDARY_SPIKEDBALL_DESCRIPTION", keywordTokens = new string[1] { Tokens.agileKeyword }, skillIcon = assetBundle.LoadAsset("texBaseballIcon"), activationState = new SerializableEntityStateType(typeof(HitBaseball)), activationStateMachineName = "Weapon2", interruptPriority = (InterruptPriority)1, baseMaxStock = 1, baseRechargeInterval = 6f, rechargeStock = 1, requiredStock = 1, stockToConsume = 1, resetCooldownTimerOnUse = false, fullRestockOnAssign = false, dontAllowPastMaxStocks = false, beginSkillCooldownOnSkillEnd = false, mustKeyPress = false, isCombatSkill = true, canceledFromSprinting = false, cancelSprintingOnActivation = false, forceSprintDuringState = false }); Skills.AddAdditionalSkills(component.ballSkillSlot.skillFamily, component.ballSkillDef); } private void AddUtilitySkills() { //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_007c: Unknown result type (might be due to invalid IL or missing references) SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Atomic Blast"; skillDefInfo.skillNameToken = "KENKO_SCOUT_UTILITY_ATOMICBLAST_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SCOUT_UTILITY_ATOMICBLAST_DESCRIPTION"; skillDefInfo.keywordTokens = new string[2] { Tokens.agileKeyword, Tokens.miniCritsKeyword }; skillDefInfo.skillIcon = assetBundle.LoadAsset("texAtomicIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(ActivateAtomic)); skillDefInfo.activationStateMachineName = "Weapon2"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 0; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; SkillDef val = Skills.CreateSkillDef(skillDefInfo); Skills.AddUtilitySkills(bodyPrefab, val); } private void AddSpecialSkills() { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Swap"; skillDefInfo.skillNameToken = "KENKO_SCOUT_SPECIAL_SWAP_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SCOUT_SPECIAL_SWAP_DESCRIPTION"; skillDefInfo.keywordTokens = new string[0]; skillDefInfo.skillIcon = assetBundle.LoadAsset("texSwapIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(SwapWeapon)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = false; skillDefInfo.dontAllowPastMaxStocks = true; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; SkillDef val = Skills.CreateSkillDef(skillDefInfo); Skills.AddSpecialSkills(bodyPrefab, val); } private void InitializeScepter() { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Swap Scepter"; skillDefInfo.skillNameToken = "KENKO_SCOUT_SPECIAL_SCEPTER_SWAP_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SCOUT_SPECIAL_SCEPTER_SWAP_DESCRIPTION"; skillDefInfo.keywordTokens = new string[0]; skillDefInfo.skillIcon = assetBundle.LoadAsset("texSwapIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(SwapWeapon)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = true; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; swapScepterSkillDef = Skills.CreateSkillDef(skillDefInfo); ItemBase.instance.RegisterScepterSkill(swapScepterSkillDef, bodyName, (SkillSlot)3, 0); } public override void InitializeSkins() { ModelSkinController val = ((Component)prefabCharacterModel).gameObject.AddComponent(); ChildLocator component = ((Component)prefabCharacterModel).GetComponent(); RendererInfo[] baseRendererInfos = prefabCharacterModel.baseRendererInfos; List list = new List(); SkinDef val2 = Skins.CreateSkinDef("DEFAULT_SKIN", assetBundle.LoadAsset("texDefaultSkin"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject); val2.meshReplacements = Skins.getMeshReplacements(assetBundle, baseRendererInfos, "meshScout", "meshSuperShotgun", "meshBackBat", "meshBat"); list.Add(val2); val.skins = list.ToArray(); } public override void InitializeCharacterMaster() { ScoutAI.Init(bodyPrefab, masterName); } private void AddHooks() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown HUD.onHudTargetChangedGlobal += HUDSetup; RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); LoadoutPanelController.Rebuild += new hook_Rebuild(LoadoutPanelController_Rebuild); HealthComponent.TakeDamageProcess += new hook_TakeDamageProcess(HealthComponent_TakeDamageProcess); SurvivorCatalog.Init += new hook_Init(SurvivorCatalog_Init); } private void SurvivorCatalog_Init(orig_Init orig) { orig.Invoke(); if (ScoutPlugin.emotesInstalled) { EmotesAPICompat.Emotes(); } } private static void LoadoutPanelController_Rebuild(orig_Rebuild orig, LoadoutPanelController self) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); int num = 0; if (self.currentDisplayData.bodyIndex != BodyCatalog.FindBodyIndex("ScoutBody")) { return; } LanguageTextMeshController[] componentsInChildren = ((Component)self).gameObject.GetComponentsInChildren(); foreach (LanguageTextMeshController val in componentsInChildren) { if (Object.op_Implicit((Object)(object)val) && val.token == "LOADOUT_SKILL_MISC") { if (num == 0) { val.token = "Passive"; num++; } if (num == 1) { val.token = "Swap"; } } } } private void HealthComponent_TakeDamageProcess(orig_TakeDamageProcess orig, HealthComponent self, DamageInfo damageInfo) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0058: 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_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_0138: 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_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_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_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) CharacterBody body = self.body; EntityStateMachine component = ((Component)body).GetComponent(); if (Object.op_Implicit((Object)(object)body) && body.bodyIndex == BodyCatalog.FindBodyIndex("ScoutBody")) { ScoutController component2 = ((Component)body).GetComponent(); if (!component2.InGracePeriod()) { component2.FillAtomic(-10f, isCrit: false); } } if (DamageAPI.HasModdedDamageType(damageInfo, DamageTypes.AtomicCrits)) { damageInfo.damage *= 1.25f; damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)16384); } if (DamageAPI.HasModdedDamageType(damageInfo, DamageTypes.CleaverBonus) && Object.op_Implicit((Object)(object)component) && (component.state is StunState || body.HasBuff(ScoutBuffs.scoutStunMarker))) { damageInfo.crit = true; damageInfo.damageType &= DamageTypeCombo.op_Implicit((DamageType)(-1048577)); damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)4096); Util.PlaySound("sfx_driver_blood_gurgle", ((Component)self).gameObject); } orig.Invoke(self, damageInfo); if (Object.op_Implicit((Object)(object)body) && body.bodyIndex == BodyCatalog.FindBodyIndex("ScoutBody")) { body.RecalculateStats(); } } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { ScoutController component = ((Component)sender).GetComponent(); HealthComponent component2 = ((Component)sender).GetComponent(); SkillLocator component3 = ((Component)sender).GetComponent(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component2) && !sender.HasBuff(ScoutBuffs.scoutAtomicBuff)) { if (component.atomicGauge > 0f) { args.baseMoveSpeedAdd += Util.Remap(component.atomicGauge, 0f, component.maxAtomicGauge, 0f, 3f); } } else if (sender.HasBuff(ScoutBuffs.scoutAtomicBuff)) { args.baseMoveSpeedAdd += 3f; args.attackSpeedMultAdd += 1f; } } internal static void HUDSetup(HUD hud) { //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0367: Unknown result type (might be due to invalid IL or missing references) //IL_0383: Unknown result type (might be due to invalid IL or missing references) //IL_039f: Unknown result type (might be due to invalid IL or missing references) //IL_03a4: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)hud.targetBodyObject) && Object.op_Implicit((Object)(object)hud.targetMaster) && (Object)(object)hud.targetMaster.bodyPrefab == (Object)(object)characterPrefab && ((NetworkBehaviour)hud.targetMaster).hasAuthority) { Transform parent = ((Component)hud.equipmentIcons[0]).gameObject.transform.parent; Transform val = ((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("SpringCanvas") .Find("BottomLeftCluster") .Find("BarRoots") .Find("LevelDisplayCluster"); GameObject val2 = Object.Instantiate(((Component)val).gameObject, ((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("SpringCanvas") .Find("BottomLeftCluster")); ((Object)val2).name = "AmmoTracker"; val2.transform.SetParent(((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("CrosshairCanvas") .Find("CrosshairExtras")); Object.DestroyImmediate((Object)(object)((Component)val2.transform.GetChild(0)).gameObject); Object.Destroy((Object)(object)val2.GetComponentInChildren()); Object.Destroy((Object)(object)val2.GetComponentInChildren()); ((Component)val2.transform.Find("LevelDisplayRoot").Find("ValueText")).gameObject.SetActive(false); Object.DestroyImmediate((Object)(object)((Component)val2.transform.Find("ExpBarRoot")).gameObject); ((Component)val2.transform.Find("LevelDisplayRoot")).GetComponent().anchoredPosition = new Vector2(-12f, 0f); RectTransform component = val2.GetComponent(); ((Transform)component).localScale = new Vector3(0.8f, 0.8f, 1f); component.anchorMin = new Vector2(0f, 0f); component.anchorMax = new Vector2(0f, 0f); component.offsetMin = new Vector2(120f, -40f); component.offsetMax = new Vector2(120f, -40f); component.pivot = new Vector2(0.5f, 0f); component.anchoredPosition = new Vector2(50f, 0f); ((Transform)component).localPosition = new Vector3(120f, -40f, 0f); GameObject val3 = Object.Instantiate(ScoutAssets.mainAssetBundle.LoadAsset("WeaponChargeBar")); ((Object)val3).name = "AtomicGauge"; val3.transform.SetParent(((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("CrosshairCanvas") .Find("CrosshairExtras")); component = val3.GetComponent(); ((Transform)component).localScale = new Vector3(0.75f, 0.1f, 1f); component.anchorMin = new Vector2(100f, 2f); component.anchorMax = new Vector2(100f, 2f); component.pivot = new Vector2(0.5f, 0f); component.anchoredPosition = new Vector2(100f, 2f); ((Transform)component).localPosition = new Vector3(100f, 2f, 0f); ((Transform)component).rotation = Quaternion.Euler(new Vector3(0f, 0f, 90f)); AtomicGauge atomicGauge = val2.AddComponent(); atomicGauge.targetHUD = hud; atomicGauge.targetText = ((Component)val2.transform.Find("LevelDisplayRoot").Find("PrefixText")).gameObject.GetComponent(); atomicGauge.durationDisplay = val3; atomicGauge.durationBar = ((Component)val3.transform.GetChild(1)).gameObject.GetComponent(); atomicGauge.durationBarRed = ((Component)val3.transform.GetChild(0)).gameObject.GetComponent(); } } } } namespace OfficialScoutMod.Scout.SkillStates { public class ActivateAtomic : BaseScoutSkillState { public override void OnEnter() { //IL_00b0: 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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0116: 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_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: 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_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_0209: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02f2: Expected O, but got Unknown RefreshState(); base.OnEnter(); if (((EntityState)this).characterBody.HasBuff(ScoutBuffs.scoutAtomicBuff) || scoutController.atomicGauge < 1f || !Object.op_Implicit((Object)(object)scoutController)) { return; } scoutController.ActivateAtomic(); if (scoutController.atomicGauge >= 10f) { if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.HiddenInvincibility, 1.5f); } if (((EntityState)this).isAuthority) { DamageTypeCombo val = DamageTypeCombo.op_Implicit((DamageType)131072); val |= DamageTypeCombo.op_Implicit((DamageType)((scoutController.atomicGauge >= scoutController.maxAtomicGauge / 2f) ? 32 : 0)); val.damageSource = (DamageSource)4; Result val2 = new BlastAttack { attacker = ((EntityState)this).gameObject, procChainMask = default(ProcChainMask), impactEffect = (EffectIndex)(-1), losType = (LoSType)0, damageColorIndex = (DamageColorIndex)0, damageType = val, procCoefficient = Util.Remap(scoutController.atomicGauge, 10f, scoutController.maxAtomicGauge, 0.1f, 1f), bonusForce = Util.Remap(scoutController.atomicGauge, 10f, scoutController.maxAtomicGauge, 50f, 400f) * Vector3.up, baseForce = Util.Remap(scoutController.atomicGauge, 10f, scoutController.maxAtomicGauge, 250f, 2000f), baseDamage = Util.Remap(scoutController.atomicGauge, 10f, scoutController.maxAtomicGauge, 1f * ((BaseState)this).damageStat, ScoutConfig.atomicBlastDamageCoefficient.Value * ((BaseState)this).damageStat), falloffModel = (FalloffModel)0, radius = Util.Remap(scoutController.atomicGauge, 10f, scoutController.maxAtomicGauge, 1f, 16f), position = ((EntityState)this).characterBody.corePosition, attackerFiltering = (AttackerFiltering)2, teamIndex = ((BaseState)this).GetTeam(), inflictor = ((EntityState)this).gameObject, crit = ((BaseState)this).RollCrit() }.Fire(); EffectManager.SpawnEffect(ScoutAssets.atomicImpactEffect, new EffectData { origin = ((EntityState)this).transform.position + Vector3.up * 1.8f, rotation = Quaternion.identity, scale = Util.Remap(scoutController.atomicGauge, 10f, scoutController.maxAtomicGauge, 0.2f, 3f) }, false); } } if (((EntityState)this).isAuthority) { if (!((BaseState)this).isGrounded) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, Util.Remap(scoutController.atomicGauge, 10f, scoutController.maxAtomicGauge, 1f, 16f)); } ((EntityState)this).outer.SetNextStateToMain(); } } } public class EnterReload : BaseScoutSkillState { public static float baseDuration = 0.1f; private float duration => baseDuration / ((BaseState)this).attackSpeedStat; public override void OnEnter() { base.OnEnter(); } public override void FixedUpdate() { base.FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Reload()); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } public class EnterRifleReload : BaseScoutSkillState { public static float baseDuration = 0.1f; public override void OnEnter() { base.OnEnter(); } public override void FixedUpdate() { //IL_005a: 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_006e: Unknown result type (might be due to invalid IL or missing references) base.FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= baseDuration) { Util.PlaySound("sfx_scout_ooa", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)scoutController)) { scoutController.DropCasing(-((Component)((EntityState)this).GetModelBaseTransform()).transform.right * (float)(-Random.Range(4, 12))); } if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new RifleReload()); } } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } public class HitBaseball : GenericProjectileBaseState { public static float baseDuration = 0.2f; public static float baseDelayDuration = 0.1f * baseDuration; public GameObject ballPrefab = ScoutAssets.baseballPrefab; public ScoutController scoutController; public override void OnEnter() { scoutController = ((EntityState)this).gameObject.GetComponent(); base.attackSoundString = "sfx_scout_baseball_hit"; base.baseDuration = baseDuration; base.baseDelayBeforeFiringProjectile = baseDelayDuration; base.damageCoefficient = base.damageCoefficient; base.force = 120f; base.projectilePitchBonus = -3.5f; base.recoilAmplitude = 0.1f; base.bloom = 10f; ((GenericProjectileBaseState)this).OnEnter(); scoutController.SetupStockSecondary2(); } public override void FireProjectile() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0079: 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) //IL_0108: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { Ray val = ((BaseState)this).GetAimRay(); val = ((GenericProjectileBaseState)this).ModifyProjectileAimRay(val); ((Ray)(ref val)).direction = Util.ApplySpread(((Ray)(ref val)).direction, 0f, 0f, 1f, 1f, 0f, base.projectilePitchBonus); ProjectileDamage component = ballPrefab.GetComponent(); if (scoutController.ModdedDamageType == DamageTypes.AtomicCrits) { DamageAPI.AddModdedDamageType(ref component.damageType, DamageTypes.AtomicCrits); } ProjectileManager.instance.FireProjectile(ballPrefab, ((Ray)(ref val)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref val)).direction), ((EntityState)this).gameObject, ((BaseState)this).damageStat * ScoutConfig.baseballDamageCoefficient.Value, base.force, ((BaseState)this).RollCrit(), (DamageColorIndex)(scoutController.atomicDraining ? 3 : 0), (GameObject)null, -1f, (DamageTypeCombo?)null); if (DamageAPI.HasModdedDamageType(ref component.damageType, DamageTypes.AtomicCrits)) { DamageAPI.RemoveModdedDamageType(ref component.damageType, DamageTypes.AtomicCrits); } } } public override void FixedUpdate() { ((GenericProjectileBaseState)this).FixedUpdate(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } public override void PlayAnimation(float duration) { if (Object.op_Implicit((Object)(object)((EntityState)this).GetModelAnimator())) { ((EntityState)this).PlayAnimation("Gesture, Override", "BatSwing1", "Swing.playbackRate", base.duration * 4.5f, 0f); } } public override void OnExit() { ((GenericProjectileBaseState)this).OnExit(); } } public class MainState : GenericCharacterMain { private Animator animator; public LocalUser localUser; public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); animator = ((BaseCharacterMain)this).modelAnimator; FindLocalUser(); } private void FindLocalUser() { if (localUser != null || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { return; } foreach (LocalUser readOnlyLocalUsers in LocalUserManager.readOnlyLocalUsersList) { if ((Object)(object)readOnlyLocalUsers.cachedBody == (Object)(object)((EntityState)this).characterBody) { localUser = readOnlyLocalUsers; break; } } } public override void FixedUpdate() { ((GenericCharacterMain)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)animator)) { bool flag = false; if (!((EntityState)this).characterBody.outOfDanger || !((EntityState)this).characterBody.outOfCombat) { flag = true; } animator.SetBool("inCombat", flag); if (((BaseState)this).isGrounded) { animator.SetFloat("airBlend", 0f); } else { animator.SetFloat("airBlend", 1f); } } } public override void ProcessJump() { //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Expected O, but got Unknown //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Expected O, but got Unknown //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Expected O, but got Unknown if (!((BaseCharacterMain)this).hasCharacterMotor) { return; } bool flag = false; bool flag2 = false; if (!base.jumpInputReceived || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody) || ((EntityState)this).characterMotor.jumpCount >= ((EntityState)this).characterBody.maxJumpCount) { return; } int itemCount = ((EntityState)this).characterBody.inventory.GetItemCount(Items.JumpBoost); float num = 1f; float num2 = 1f; if (((EntityState)this).characterMotor.jumpCount >= ((EntityState)this).characterBody.baseJumpCount) { flag = true; num = 1.5f; num2 = 1.5f; } else if (itemCount > 0 && ((EntityState)this).characterBody.isSprinting) { float num3 = ((EntityState)this).characterBody.acceleration * ((EntityState)this).characterMotor.airControl; if (((EntityState)this).characterBody.moveSpeed > 0f && num3 > 0f) { flag2 = true; float num4 = Mathf.Sqrt(10f * (float)itemCount / num3); float num5 = ((EntityState)this).characterBody.moveSpeed / num3; num = (num4 + num5) / num5; } } if (((EntityState)this).characterMotor.jumpCount == ((EntityState)this).characterBody.baseJumpCount - 1) { Util.PlaySound("sfx_driver_air_dodge", ((EntityState)this).gameObject); } GenericCharacterMain.ApplyJumpVelocity(((EntityState)this).characterMotor, ((EntityState)this).characterBody, num, num2, false); if (((BaseCharacterMain)this).hasModelAnimator) { int layerIndex = ((BaseCharacterMain)this).modelAnimator.GetLayerIndex("Body"); if (layerIndex >= 0) { if (((EntityState)this).characterBody.isSprinting) { ((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("SprintJump", ((BaseCharacterMain)this).smoothingParameters.intoJumpTransitionTime, layerIndex); } else if (flag) { ((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("BonusJump", ((BaseCharacterMain)this).smoothingParameters.intoJumpTransitionTime, layerIndex); } else { ((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("Jump", ((BaseCharacterMain)this).smoothingParameters.intoJumpTransitionTime, layerIndex); } } } if (flag) { EffectManager.SpawnEffect(LegacyResourcesAPI.Load("Prefabs/Effects/FeatherEffect"), new EffectData { origin = ((EntityState)this).characterBody.footPosition }, true); } else if (((EntityState)this).characterMotor.jumpCount > 0) { EffectManager.SpawnEffect(LegacyResourcesAPI.Load("Prefabs/Effects/ImpactEffects/CharacterLandImpact"), new EffectData { origin = ((EntityState)this).characterBody.footPosition, scale = ((EntityState)this).characterBody.radius }, true); } if (flag2) { EffectManager.SpawnEffect(LegacyResourcesAPI.Load("Prefabs/Effects/BoostJumpEffect"), new EffectData { origin = ((EntityState)this).characterBody.footPosition, rotation = Util.QuaternionSafeLookRotation(((EntityState)this).characterMotor.velocity) }, true); } CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.jumpCount++; } } public class Reload : BaseScoutSkillState { public static float baseDuration = 1.4f; private float duration; private float startReload; private bool startReloadPlayed = false; private float startShell; private bool startReloadShell = false; private float shellsIn; private bool endReloadShell = false; private bool dontPlay = false; private bool hasGivenStock; public override void OnEnter() { base.OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; if (scoutController.stagedReload > 0f) { duration = scoutController.stagedReload; } else { scoutController.stagedReload = duration; } startReload = 0.04f * duration; startShell = 0.05f * duration; shellsIn = 0.5f * duration; dontPlay = scoutController.isSwapped; if (dontPlay && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); return; } ((EntityState)this).PlayCrossfade("Gesture, Override", "ReloadShotgun", "Shoot.playbackRate", duration, 0.05f); Util.PlayAttackSpeedSound("sfx_scout_start_reload", ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); } public override void FixedUpdate() { base.FixedUpdate(); if (dontPlay && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); return; } if (((EntityState)this).fixedAge >= startReload && !startReloadPlayed) { scoutController.stagedReload = duration - startReload; startReloadPlayed = true; Util.PlayAttackSpeedSound("sfx_scout_start_reload", ((EntityState)this).gameObject, 1f); } if (((EntityState)this).fixedAge >= startShell && !startReloadShell) { scoutController.stagedReload = duration - startShell; startReloadShell = true; Util.PlayAttackSpeedSound("sfx_scout_shells_out", ((EntityState)this).gameObject, 1f); } if (((EntityState)this).fixedAge >= shellsIn && !endReloadShell) { scoutController.stagedReload = duration - shellsIn; endReloadShell = true; Util.PlayAttackSpeedSound("sfx_scout_shells_in", ((EntityState)this).gameObject, 1f); } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { Util.PlayAttackSpeedSound("sfx_scout_end_reload", ((EntityState)this).gameObject, 1f); GiveStock(); scoutController.stagedReload = 0f; ((EntityState)this).outer.SetNextStateToMain(); } } private void GiveStock() { if (!hasGivenStock) { for (int i = ((EntityState)this).skillLocator.primary.stock; i < ((EntityState)this).skillLocator.primary.maxStock; i++) { ((EntityState)this).skillLocator.primary.AddOneStock(); } hasGivenStock = true; } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } public class RifleReload : BaseScoutSkillState { public static float baseDuration = 1.4f; private float duration; private bool dontPlay = false; private bool hasGivenStock; public override void OnEnter() { base.OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; if (scoutController.stagedReload > 0f) { duration = scoutController.stagedReload; } else { scoutController.stagedReload = duration; } dontPlay = Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.secondary) == scoutController.isSwapped; if (dontPlay && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); return; } ((EntityState)this).PlayAnimation("Gesture, Override", "ReloadRifle", "Shoot.playbackRate", duration, 0f); Util.PlayAttackSpeedSound("sfx_scout_start_reload_rifle", ((EntityState)this).gameObject, 1f); } public override void FixedUpdate() { base.FixedUpdate(); if (dontPlay && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } else if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { Util.PlayAttackSpeedSound("sfx_scout_finish_rifle_reload", ((EntityState)this).gameObject, 1f); GiveStock(); scoutController.stagedReload = 0f; ((EntityState)this).outer.SetNextStateToMain(); } } private void GiveStock() { if (!hasGivenStock) { for (int i = ((EntityState)this).skillLocator.primary.stock; i < ((EntityState)this).skillLocator.primary.maxStock; i++) { ((EntityState)this).skillLocator.primary.AddOneStock(); } hasGivenStock = true; } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } public class Shoot : BaseScoutSkillState { public static float damageCoefficient = ScoutConfig.shotgunDamageCoefficient.Value; public static float procCoefficient = 0.7f; public float baseDuration = 1.2f; public static int bulletCount = 12; public static float bulletSpread = 8f; public static float bulletRecoil = ScoutConfig.adjustShotgunRecoil.Value; public static float bulletRange = 150f; public static float bulletThiccness = 1f; public float selfForce = 3000f; private float earlyExitTime; protected float duration; protected float fireDuration; protected bool hasFired; private bool isCrit; protected string muzzleString; public override void OnEnter() { base.OnEnter(); ((EntityState)this).characterBody.SetAimTimer(5f); muzzleString = "GunMuzzle"; hasFired = false; duration = baseDuration / ((BaseState)this).attackSpeedStat; isCrit = ((BaseState)this).RollCrit(); earlyExitTime = 0.5f * duration; if (isCrit) { Util.PlaySound("sfx_scout_shoot_crit", ((EntityState)this).gameObject); } else { Util.PlaySound("sfx_scout_shoot", ((EntityState)this).gameObject); } ((EntityState)this).PlayAnimation("Gesture, Override", "FireShotgun", "Shoot.playbackRate", duration * 1.5f, 0f); fireDuration = 0f; } public virtual void FireBullet() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_004e: 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_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011c: 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_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_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_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: 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_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: 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_01f9: 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_0209: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Expected O, but got Unknown //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_02fc: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) if (hasFired) { return; } hasFired = true; if (Object.op_Implicit((Object)(object)scoutController)) { scoutController.DropShell(-((Component)((EntityState)this).GetModelBaseTransform()).transform.right * (float)(-Random.Range(4, 12))); } float num = bulletRecoil / ((BaseState)this).attackSpeedStat; base.AddRecoil2(-0.4f * num, -0.8f * num, -0.3f * num, 0.3f * num); ((EntityState)this).characterBody.AddSpreadBloom(4f); EffectManager.SimpleMuzzleFlash(FireBarrage.effectPrefab, ((EntityState)this).gameObject, muzzleString, false); GameObject tracerEffectPrefab = ScoutAssets.scoutTracer; if (isCrit) { tracerEffectPrefab = ScoutAssets.scoutTracerCrit; } if (((EntityState)this).isAuthority) { float damage = damageCoefficient * ((BaseState)this).damageStat; Ray aimRay = ((BaseState)this).GetAimRay(); float num2 = bulletSpread; float radius = bulletThiccness; float force = 50f; BulletAttack val = new BulletAttack { aimVector = ((Ray)(ref aimRay)).direction, origin = ((Ray)(ref aimRay)).origin, damage = damage, damageColorIndex = (DamageColorIndex)(scoutController.atomicDraining ? 3 : 0), damageType = DamageTypeCombo.op_Implicit((DamageType)0), falloffModel = (FalloffModel)1, maxDistance = bulletRange, force = force, hitMask = CommonMasks.bullet, isCrit = isCrit, owner = ((EntityState)this).gameObject, muzzleName = muzzleString, smartCollision = true, procChainMask = default(ProcChainMask), procCoefficient = procCoefficient, radius = radius, sniper = false, stopperMask = CommonMasks.bullet, weapon = null, tracerEffectPrefab = tracerEffectPrefab, spreadPitchScale = 1f, spreadYawScale = 1f, queryTriggerInteraction = (QueryTriggerInteraction)0, hitEffectPrefab = FireBarrage.hitEffectPrefab, HitEffectNormal = false }; val.damageType.damageSource = (DamageSource)1; DamageAPI.AddModdedDamageType(val, scoutController.ModdedDamageType); DamageAPI.AddModdedDamageType(val, DamageTypes.FillAtomicShotgun); val.minSpread = 0f; val.maxSpread = 0f; val.bulletCount = 1u; val.Fire(); uint num3 = (uint)(Mathf.CeilToInt((float)bulletCount / 2f) - 1); val.minSpread = 0f; val.maxSpread = num2 / 1.45f; val.bulletCount = num3; val.Fire(); val.minSpread = num2 / 1.45f; val.maxSpread = num2; val.bulletCount = (uint)Mathf.FloorToInt((float)bulletCount / 2f); val.Fire(); if (!((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).characterMotor.ApplyForce(((Ray)(ref aimRay)).direction * (0f - selfForce) * 0.5f, false, false); } } } public override void FixedUpdate() { base.FixedUpdate(); if (((EntityState)this).fixedAge >= fireDuration) { FireBullet(); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Reload()); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_001b: 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_001e: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).fixedAge >= earlyExitTime) { return (InterruptPriority)0; } return (InterruptPriority)1; } } public class ShootRifle : BaseScoutSkillState { public float damageCoefficient = ScoutConfig.rifleDamageCoefficient.Value; public static float procCoefficient = 1f; public static float baseDuration = 0.8f; public static float force = 200f; public static float recoil = ScoutConfig.adjustRifleRecoil.Value; public static float range = 9000f; protected float duration; protected string muzzleString; protected bool isCrit; protected int diamondbackStacks; public string shootSoundString = "sfx_scout_rifle_shoot"; private CameraParamsOverrideHandle camParamsOverrideHandle; private OverlayController overlayController; private float fireTimer; public bool hasFired; protected virtual GameObject tracerPrefab => isCrit ? ScoutAssets.scoutTracerCrit : ScoutAssets.scoutTracer; public virtual FalloffModel falloff => (FalloffModel)0; public override void OnEnter() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) RefreshState(); base.OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).characterBody.SetAimTimer(4f); muzzleString = "GunMuzzle"; isCrit = ((BaseState)this).RollCrit(); shootSoundString = "sfx_scout_rifle_shoot"; overlayController = HudOverlayManager.AddOverlay(((EntityState)this).gameObject, new OverlayCreationParams { prefab = ScoutAssets.headshotOverlay, childLocatorEntry = "ScopeContainer" }); } public override void FixedUpdate() { //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: 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_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) RefreshState(); base.FixedUpdate(); if (!(scoutController.jamTimer <= 0f)) { return; } fireTimer += Time.fixedDeltaTime; if (!hasFired) { hasFired = true; if (((EntityState)this).isAuthority) { Fire(); } } if (!((EntityState)this).inputBank.skill1.down && fireTimer >= duration) { if (((EntityState)this).skillLocator.primary.stock <= 0) { Util.PlaySound("sfx_scout_ooa", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)scoutController)) { scoutController.DropCasing(-((Component)((EntityState)this).GetModelBaseTransform()).transform.right * (float)(-Random.Range(4, 12))); } if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new RifleReload()); } } else if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } else { if (!((EntityState)this).inputBank.skill1.down || !(fireTimer >= duration)) { return; } if (((EntityState)this).skillLocator.primary.stock <= 0) { Util.PlaySound("sfx_scout_ooa", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)scoutController)) { scoutController.DropCasing(-((Component)((EntityState)this).GetModelBaseTransform()).transform.right * (float)(-Random.Range(4, 12))); } if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new RifleReload()); } } else { ((EntityState)this).characterBody.SetAimTimer(4f); GenericSkill primary = ((EntityState)this).skillLocator.primary; int stock = primary.stock; primary.stock = stock - 1; Fire(); } } } public void Fire() { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: 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_01b5: 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_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_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_01ea: 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_0201: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Expected O, but got Unknown //IL_0226: 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_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Expected O, but got Unknown ((EntityState)this).characterBody.isSprinting = false; ((EntityState)this).PlayAnimation("Gesture, Override", "FireRifle", "Shoot.playbackRate", duration * 1.5f, 0f); if (Object.op_Implicit((Object)(object)scoutController)) { scoutController.DropShell(-((Component)((EntityState)this).GetModelBaseTransform()).transform.right * (float)(-Random.Range(4, 12))); } fireTimer = 0f; EffectManager.SimpleMuzzleFlash(FirePistol2.muzzleEffectPrefab, ((EntityState)this).gameObject, muzzleString, false); Util.PlaySound(shootSoundString, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); base.AddRecoil2(-1f * recoil, -2f * recoil, -0.5f * recoil, 0.5f * recoil); BulletAttack val = new BulletAttack { bulletCount = 1u, aimVector = ((Ray)(ref aimRay)).direction, origin = ((Ray)(ref aimRay)).origin, damage = damageCoefficient * ((BaseState)this).damageStat, damageColorIndex = (DamageColorIndex)0, falloffModel = falloff, maxDistance = range, force = force, hitMask = CommonMasks.bullet, minSpread = 0f, maxSpread = ((EntityState)this).characterBody.spreadBloomAngle * 2f, isCrit = isCrit, owner = ((EntityState)this).gameObject, muzzleName = muzzleString, smartCollision = true, procChainMask = default(ProcChainMask), procCoefficient = procCoefficient, radius = 0.75f, sniper = false, stopperMask = CommonMasks.bullet, weapon = null, tracerEffectPrefab = tracerPrefab, spreadPitchScale = 1f, spreadYawScale = 1f, queryTriggerInteraction = (QueryTriggerInteraction)0, hitEffectPrefab = FirePistol2.hitEffectPrefab }; val.damageType.damageSource = (DamageSource)1; DamageAPI.AddModdedDamageType(val, scoutController.ModdedDamageType); DamageAPI.AddModdedDamageType(val, DamageTypes.FillAtomic); val.modifyOutgoingDamageCallback = (ModifyOutgoingDamageCallback)delegate(BulletAttack _bulletAttack, ref BulletHit hitInfo, DamageInfo damageInfo) { //IL_0022: 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_003a: 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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown //IL_0073: 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) if (BulletAttack.IsSniperTargetHit(ref hitInfo)) { damageInfo.damage *= 2f; DamageAPI.AddModdedDamageType(damageInfo, DamageTypes.FillAtomicHeadshot); damageInfo.damageColorIndex = (DamageColorIndex)12; EffectData val2 = new EffectData { origin = hitInfo.point, rotation = Quaternion.LookRotation(-hitInfo.direction) }; val2.SetHurtBoxReference(hitInfo.hitHurtBox); EffectManager.SpawnEffect(Addressables.LoadAssetAsync((object)"RoR2/Junk/Common/VFX/WeakPointProcEffect.prefab").WaitForCompletion(), val2, true); Util.PlaySound("sfx_driver_headshot", ((EntityState)this).gameObject); } }; val.Fire(); } ((EntityState)this).characterBody.AddSpreadBloom(1.25f); duration = baseDuration / ((EntityState)this).characterBody.attackSpeed; } public override void OnExit() { ((EntityState)this).OnExit(); if (overlayController != null) { HudOverlayManager.RemoveOverlay(overlayController); overlayController = null; } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_001b: 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_001e: Unknown result type (might be due to invalid IL or missing references) if (fireTimer >= duration) { return (InterruptPriority)0; } return (InterruptPriority)2; } } public class SwapWeapon : BaseScoutSkillState { public override void OnEnter() { RefreshState(); base.OnEnter(); Util.PlaySound("sfx_scout_swap_weapon", ((EntityState)this).gameObject); if (scoutController.isSwapped) { ((EntityState)this).PlayAnimation("Gesture, Override", "SwapToGun", "Swap.playbackRate", 0.65f / ((EntityState)this).characterBody.attackSpeed, 0f); scoutController.SwitchLayer(""); ((EntityState)this).skillLocator.primary.UnsetSkillOverride((object)((EntityState)this).gameObject, (SkillDef)(object)scoutSwapPassive.batSkillDef, (SkillOverridePriority)4); ((EntityState)this).skillLocator.secondary.UnsetSkillOverride((object)((EntityState)this).gameObject, scoutSwapPassive.ballSkillDef, (SkillOverridePriority)4); if (((EntityState)this).isAuthority) { ((EntityState)this).skillLocator.secondary.RemoveAllStocks(); for (int i = 0; i < scoutController.currentSecondary1Stock; i++) { ((EntityState)this).skillLocator.secondary.AddOneStock(); } } if (((EntityState)this).skillLocator.secondary.stock < ((EntityState)this).skillLocator.secondary.maxStock) { ((EntityState)this).skillLocator.secondary.rechargeStopwatch = scoutController.secondary1CdTimer; } } else { ((EntityState)this).PlayAnimation("Gesture, Override", "SwapToBat", "Swap.playbackRate", 0.65f / ((EntityState)this).characterBody.attackSpeed, 0f); scoutController.SwitchLayer("Body, Bat"); scoutController.jamTimer = ShootRifle.baseDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).skillLocator.primary.SetSkillOverride((object)((EntityState)this).gameObject, (SkillDef)(object)scoutSwapPassive.batSkillDef, (SkillOverridePriority)4); ((EntityState)this).skillLocator.secondary.SetSkillOverride((object)((EntityState)this).gameObject, scoutSwapPassive.ballSkillDef, (SkillOverridePriority)4); if (((EntityState)this).isAuthority) { ((EntityState)this).skillLocator.secondary.RemoveAllStocks(); for (int j = 0; j < scoutController.currentSecondary2Stock; j++) { ((EntityState)this).skillLocator.secondary.AddOneStock(); } } if (((EntityState)this).skillLocator.secondary.stock < ((EntityState)this).skillLocator.secondary.maxStock) { ((EntityState)this).skillLocator.secondary.rechargeStopwatch = scoutController.secondary2CdTimer; } } if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } } public class Swing : BaseMeleeAttack { public override void OnEnter() { //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_0021: Unknown result type (might be due to invalid IL or missing references) //IL_004d: 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_013f: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) RefreshState(); hitboxGroupName = "Bat"; damageType = DamageTypeCombo.op_Implicit((DamageType)0); damageSource = (DamageSource)1; damageCoefficient = ScoutConfig.swingDamageCoefficient.Value; procCoefficient = 1f; pushForce = 300f; bonusForce = Vector3.zero; baseDuration = 1.5f; attackStartPercentTime = 0.2f; attackEndPercentTime = 0.3f; earlyExitPercentTime = 0.5f; hitStopDuration = 0.012f; attackRecoil = 0.5f; hitHopVelocity = 4f; swingSoundString = "sfx_driver_swing"; hitSoundString = ""; muzzleString = ((swingIndex % 2 == 0) ? "SwingMuzzle1" : "SwingMuzzle2"); playbackRateParam = "Swing.playbackRate"; swingEffectPrefab = (isAtomic ? ScoutAssets.atomicSwingEffect : ScoutAssets.batSwingEffect); if (isAtomic) { moddedDamageTypeHolder.Add(scoutController.ModdedDamageType); damageType |= DamageTypeCombo.op_Implicit((DamageType)16384); } moddedDamageTypeHolder.Add(DamageTypes.FillAtomic); hitEffectPrefab = ScoutAssets.batHitEffect; impactSound = ScoutAssets.batImpactSoundDef.index; base.OnEnter(); } protected override void OnHitEnemyAuthority() { base.OnHitEnemyAuthority(); } protected override void FireAttack() { //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_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_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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 (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; direction.y = Mathf.Max(direction.y, direction.y * 0.5f); ((BaseState)this).FindModelChild("MeleePivot").rotation = Util.QuaternionSafeLookRotation(direction); } base.FireAttack(); } protected override void PlaySwingEffect() { Util.PlaySound(swingSoundString, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)swingEffectPrefab)) { Transform val = ((BaseState)this).FindModelChild(muzzleString); if (Object.op_Implicit((Object)(object)val)) { swingEffectPrefab = Object.Instantiate(swingEffectPrefab, val); } } } protected override void PlayAttackAnimation() { ((EntityState)this).PlayCrossfade("Gesture, Override", "BatSwing" + (1 + swingIndex), playbackRateParam, duration * 1.2f, 0.05f); } } public class ThrowCleaver : GenericProjectileBaseState { public static float baseDuration = 0.2f; public static float baseDelayDuration = 0.1f * baseDuration; public GameObject cleaverPrefab = ScoutAssets.cleaverPrefab; public ScoutController scoutController; public override void OnEnter() { scoutController = ((EntityState)this).gameObject.GetComponent(); base.attackSoundString = "sfx_scout_cleaver_throw"; base.baseDuration = baseDuration; base.baseDelayBeforeFiringProjectile = baseDelayDuration; base.damageCoefficient = base.damageCoefficient; base.force = 120f; base.projectilePitchBonus = -3.5f; ((GenericProjectileBaseState)this).OnEnter(); scoutController.SetupStockSecondary1(); } public override void FireProjectile() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0079: 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) //IL_0108: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { Ray val = ((BaseState)this).GetAimRay(); val = ((GenericProjectileBaseState)this).ModifyProjectileAimRay(val); ((Ray)(ref val)).direction = Util.ApplySpread(((Ray)(ref val)).direction, 0f, 0f, 1f, 1f, 0f, base.projectilePitchBonus); ProjectileDamage component = cleaverPrefab.GetComponent(); if (scoutController.ModdedDamageType == DamageTypes.AtomicCrits) { DamageAPI.AddModdedDamageType(ref component.damageType, DamageTypes.AtomicCrits); } ProjectileManager.instance.FireProjectile(cleaverPrefab, ((Ray)(ref val)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref val)).direction), ((EntityState)this).gameObject, ((BaseState)this).damageStat * ScoutConfig.cleaverDamageCoefficient.Value, base.force, ((BaseState)this).RollCrit(), (DamageColorIndex)(scoutController.atomicDraining ? 3 : 0), (GameObject)null, -1f, (DamageTypeCombo?)null); if (DamageAPI.HasModdedDamageType(ref component.damageType, DamageTypes.AtomicCrits)) { DamageAPI.RemoveModdedDamageType(ref component.damageType, DamageTypes.AtomicCrits); } } } public override void FixedUpdate() { ((GenericProjectileBaseState)this).FixedUpdate(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } public override void PlayAnimation(float duration) { if (Object.op_Implicit((Object)(object)((EntityState)this).GetModelAnimator())) { ((EntityState)this).PlayAnimation("Gesture, Override", "ThrowCleaver", "Cleaver.playbackRate", base.duration * 4.5f, 0f); } } } } namespace OfficialScoutMod.Scout.Content { public static class DamageTypes { public static ModdedDamageType Default; public static ModdedDamageType FillAtomic; public static ModdedDamageType FillAtomicShotgun; public static ModdedDamageType FillAtomicHeadshot; public static ModdedDamageType AtomicCrits; public static ModdedDamageType BallStun; public static ModdedDamageType CleaverBonus; internal static void Init() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_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) //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_003d: 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) Default = DamageAPI.ReserveDamageType(); FillAtomic = DamageAPI.ReserveDamageType(); FillAtomicShotgun = DamageAPI.ReserveDamageType(); FillAtomicHeadshot = DamageAPI.ReserveDamageType(); CleaverBonus = DamageAPI.ReserveDamageType(); AtomicCrits = DamageAPI.ReserveDamageType(); BallStun = DamageAPI.ReserveDamageType(); Hook(); } private static void Hook() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt; SetStateOnHurt.OnTakeDamageServer += new hook_OnTakeDamageServer(SetStateOnHurt_OnTakeDamageServer); } private static void SetStateOnHurt_OnTakeDamageServer(orig_OnTakeDamageServer orig, SetStateOnHurt self, DamageReport damageReport) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { orig.Invoke(self, damageReport); DamageInfo damageInfo = damageReport.damageInfo; GameObject inflictor = damageInfo.inflictor; if (DamageAPI.HasModdedDamageType(damageInfo, BallStun)) { self.SetStun(inflictor.GetComponent().timer * 2f + 1.5f); } } } private static void GlobalEventManager_onServerDamageDealt(DamageReport damageReport) { //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) DamageInfo damageInfo = damageReport.damageInfo; if (!Object.op_Implicit((Object)(object)damageReport.attackerBody) || !Object.op_Implicit((Object)(object)damageReport.victimBody)) { return; } HealthComponent victim = damageReport.victim; GameObject inflictor = damageInfo.inflictor; CharacterBody victimBody = damageReport.victimBody; EntityStateMachine component = ((Component)victimBody).GetComponent(); CharacterBody attackerBody = damageReport.attackerBody; GameObject gameObject = damageReport.attacker.gameObject; ScoutController component2 = ((Component)attackerBody).GetComponent(); if (!NetworkServer.active || !Object.op_Implicit((Object)(object)component2)) { return; } if (DamageAPI.HasModdedDamageType(damageInfo, FillAtomic)) { if (DamageAPI.HasModdedDamageType(damageInfo, FillAtomicHeadshot)) { component2.FillAtomic(10f / attackerBody.skillLocator.utility.cooldownScale + attackerBody.skillLocator.utility.flatCooldownReduction, damageInfo.crit); } else { component2.FillAtomic(5f / attackerBody.skillLocator.utility.cooldownScale + attackerBody.skillLocator.utility.flatCooldownReduction, damageInfo.crit); } attackerBody.RecalculateStats(); } else if (DamageAPI.HasModdedDamageType(damageInfo, FillAtomicShotgun)) { component2.FillAtomic(1f / attackerBody.skillLocator.utility.cooldownScale + attackerBody.skillLocator.utility.flatCooldownReduction, damageInfo.crit); attackerBody.RecalculateStats(); } if (DamageAPI.HasModdedDamageType(damageInfo, BallStun) && Object.op_Implicit((Object)(object)inflictor)) { damageReport.victimBody.AddTimedBuff(ScoutBuffs.scoutStunMarker, inflictor.GetComponent().timer * 2f + 1.5f); } } } public static class ScoutAI { public static void Init(GameObject bodyPrefab, string masterName) { //IL_003a: 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_00d0: 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_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Unknown result type (might be due to invalid IL or missing references) GameObject val = Prefabs.CreateBlankMasterPrefab(bodyPrefab, masterName); BaseAI component = val.GetComponent(); component.aimVectorDampTime = 0.1f; component.aimVectorMaxSpeed = 360f; AISkillDriver val2 = val.AddComponent(); val2.customName = "Use Primary Swing"; val2.skillSlot = (SkillSlot)0; val2.requiredSkill = null; val2.requireSkillReady = false; val2.requireEquipmentReady = false; val2.minUserHealthFraction = float.NegativeInfinity; val2.maxUserHealthFraction = float.PositiveInfinity; val2.minTargetHealthFraction = float.NegativeInfinity; val2.maxTargetHealthFraction = float.PositiveInfinity; val2.minDistance = 0f; val2.maxDistance = 8f; val2.selectionRequiresTargetLoS = false; val2.selectionRequiresOnGround = false; val2.selectionRequiresAimTarget = false; val2.maxTimesSelected = -1; val2.moveTargetType = (TargetType)0; val2.activationRequiresTargetLoS = false; val2.activationRequiresAimTargetLoS = false; val2.activationRequiresAimConfirmation = false; val2.movementType = (MovementType)1; val2.moveInputScale = 1f; val2.aimType = (AimType)1; val2.ignoreNodeGraph = false; val2.shouldSprint = false; val2.shouldFireEquipment = false; val2.buttonPressType = (ButtonPressType)0; val2.driverUpdateTimerOverride = -1f; val2.resetCurrentEnemyOnNextDriverSelection = false; val2.noRepeat = false; val2.nextHighPriorityOverride = null; AISkillDriver val3 = val.AddComponent(); val3.customName = "Use Secondary Shoot"; val3.skillSlot = (SkillSlot)1; val3.requireSkillReady = true; val3.minDistance = 0f; val3.maxDistance = 25f; val3.selectionRequiresTargetLoS = false; val3.selectionRequiresOnGround = false; val3.selectionRequiresAimTarget = false; val3.maxTimesSelected = -1; val3.moveTargetType = (TargetType)0; val3.activationRequiresTargetLoS = false; val3.activationRequiresAimTargetLoS = false; val3.activationRequiresAimConfirmation = true; val3.movementType = (MovementType)1; val3.moveInputScale = 1f; val3.aimType = (AimType)1; val3.buttonPressType = (ButtonPressType)0; AISkillDriver val4 = val.AddComponent(); val4.customName = "Use Utility Roll"; val4.skillSlot = (SkillSlot)2; val4.requireSkillReady = true; val4.minDistance = 8f; val4.maxDistance = 20f; val4.selectionRequiresTargetLoS = true; val4.selectionRequiresOnGround = false; val4.selectionRequiresAimTarget = false; val4.maxTimesSelected = -1; val4.moveTargetType = (TargetType)0; val4.activationRequiresTargetLoS = false; val4.activationRequiresAimTargetLoS = false; val4.activationRequiresAimConfirmation = false; val4.movementType = (MovementType)2; val4.moveInputScale = 1f; val4.aimType = (AimType)1; val4.buttonPressType = (ButtonPressType)0; AISkillDriver val5 = val.AddComponent(); val5.customName = "Use Special bomb"; val5.skillSlot = (SkillSlot)3; val5.requireSkillReady = true; val5.minDistance = 0f; val5.maxDistance = 20f; val5.selectionRequiresTargetLoS = false; val5.selectionRequiresOnGround = false; val5.selectionRequiresAimTarget = false; val5.maxTimesSelected = -1; val5.moveTargetType = (TargetType)0; val5.activationRequiresTargetLoS = false; val5.activationRequiresAimTargetLoS = false; val5.activationRequiresAimConfirmation = false; val5.movementType = (MovementType)1; val5.moveInputScale = 1f; val5.aimType = (AimType)1; val5.buttonPressType = (ButtonPressType)0; AISkillDriver val6 = val.AddComponent(); val6.customName = "Chase"; val6.skillSlot = (SkillSlot)(-1); val6.requireSkillReady = false; val6.minDistance = 0f; val6.maxDistance = float.PositiveInfinity; val6.moveTargetType = (TargetType)0; val6.activationRequiresTargetLoS = false; val6.activationRequiresAimTargetLoS = false; val6.activationRequiresAimConfirmation = false; val6.movementType = (MovementType)1; val6.moveInputScale = 1f; val6.aimType = (AimType)1; val6.buttonPressType = (ButtonPressType)0; } } public static class ScoutAssets { internal static AssetBundle mainAssetBundle; internal static Material commandoMat; internal static Shader hotpoo = Resources.Load("Shaders/Deferred/HGStandard"); internal static GameObject atomicEffect; internal static GameObject atomicEndEffect; internal static GameObject atomicImpactEffect; internal static GameObject bloodSplatterEffect; internal static GameObject scoutTracer; internal static GameObject scoutTracerCrit; internal static GameObject batSwingEffect; internal static GameObject atomicSwingEffect; internal static GameObject batHitEffect; internal static GameObject scoutZoom; internal static GameObject scoutMaxGauge; internal static GameObject headshotOverlay; internal static GameObject headshotVisualizer; internal static GameObject shotgunShell; internal static GameObject bullet; internal static GameObject casing; internal static GameObject cleaverPrefab; internal static GameObject baseballPrefab; internal static Mesh meshRifle; internal static NetworkSoundEventDef batImpactSoundDef; public static void Init(AssetBundle assetBundle) { mainAssetBundle = assetBundle; CreateMaterials(); CreateModels(); CreateEffects(); CreateSounds(); CreateProjectiles(); } private static void CleanChildren(Transform startingTrans) { for (int num = startingTrans.childCount - 1; num >= 0; num--) { if (startingTrans.GetChild(num).childCount > 0) { CleanChildren(startingTrans.GetChild(num)); } Object.DestroyImmediate((Object)(object)((Component)startingTrans.GetChild(num)).gameObject); } } private static void CreateMaterials() { } private static void CreateModels() { shotgunShell = mainAssetBundle.LoadAsset("ShotgunShell"); ((Renderer)shotgunShell.GetComponentInChildren()).material = mainAssetBundle.LoadAsset("matShotgunShell"); shotgunShell.AddComponent(); bullet = mainAssetBundle.LoadAsset("Bullet"); ((Renderer)bullet.GetComponentInChildren()).material = mainAssetBundle.LoadAsset("matShotgun"); bullet.AddComponent(); casing = mainAssetBundle.LoadAsset("Casing"); ((Renderer)casing.GetComponentInChildren()).material = mainAssetBundle.LoadAsset("matShotgun"); casing.AddComponent(); meshRifle = mainAssetBundle.LoadAsset("meshGarand"); } private static void CreateEffects() { //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_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: 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_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: 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_01d9: 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_01f4: Expected O, but got Unknown //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Unknown result type (might be due to invalid IL or missing references) //IL_04c1: Unknown result type (might be due to invalid IL or missing references) //IL_04c6: Unknown result type (might be due to invalid IL or missing references) //IL_0522: Unknown result type (might be due to invalid IL or missing references) //IL_0566: Unknown result type (might be due to invalid IL or missing references) //IL_0591: Unknown result type (might be due to invalid IL or missing references) //IL_0596: Unknown result type (might be due to invalid IL or missing references) //IL_05a9: Unknown result type (might be due to invalid IL or missing references) //IL_05ae: Unknown result type (might be due to invalid IL or missing references) //IL_05bb: Unknown result type (might be due to invalid IL or missing references) //IL_05c0: Unknown result type (might be due to invalid IL or missing references) //IL_05c5: Unknown result type (might be due to invalid IL or missing references) //IL_05cf: Unknown result type (might be due to invalid IL or missing references) //IL_05d4: Unknown result type (might be due to invalid IL or missing references) //IL_0611: Unknown result type (might be due to invalid IL or missing references) //IL_0616: Unknown result type (might be due to invalid IL or missing references) //IL_061a: Unknown result type (might be due to invalid IL or missing references) //IL_061f: Unknown result type (might be due to invalid IL or missing references) //IL_0644: Unknown result type (might be due to invalid IL or missing references) //IL_0649: Unknown result type (might be due to invalid IL or missing references) //IL_065c: Unknown result type (might be due to invalid IL or missing references) //IL_0661: Unknown result type (might be due to invalid IL or missing references) //IL_069f: Unknown result type (might be due to invalid IL or missing references) //IL_06f9: Unknown result type (might be due to invalid IL or missing references) //IL_0709: Unknown result type (might be due to invalid IL or missing references) //IL_070e: Unknown result type (might be due to invalid IL or missing references) //IL_0734: Unknown result type (might be due to invalid IL or missing references) //IL_0792: Unknown result type (might be due to invalid IL or missing references) //IL_0797: Unknown result type (might be due to invalid IL or missing references) //IL_07d7: Unknown result type (might be due to invalid IL or missing references) //IL_07e1: Unknown result type (might be due to invalid IL or missing references) //IL_0810: Unknown result type (might be due to invalid IL or missing references) //IL_0815: Unknown result type (might be due to invalid IL or missing references) //IL_084d: Unknown result type (might be due to invalid IL or missing references) //IL_0852: Unknown result type (might be due to invalid IL or missing references) //IL_09ca: Unknown result type (might be due to invalid IL or missing references) //IL_09cf: Unknown result type (might be due to invalid IL or missing references) //IL_0a7e: Unknown result type (might be due to invalid IL or missing references) //IL_0467: Unknown result type (might be due to invalid IL or missing references) //IL_047e: Unknown result type (might be due to invalid IL or missing references) //IL_048b: Unknown result type (might be due to invalid IL or missing references) headshotOverlay = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/DLC1/Railgunner/RailgunnerScopeLightOverlay.prefab").WaitForCompletion(), "ScoutHeadshotOverlay", false); SniperTargetViewer componentInChildren = headshotOverlay.GetComponentInChildren(); ((Component)headshotOverlay.transform.Find("ScopeOverlay")).gameObject.SetActive(false); headshotVisualizer = PrefabAPI.InstantiateClone(componentInChildren.visualizerPrefab, "ScoutHeadshotVisualizer", false); Image component = ((Component)headshotVisualizer.transform.Find("Scaler/Rectangle")).GetComponent(); ((Component)headshotVisualizer.transform.Find("Scaler/Outer")).gameObject.SetActive(false); ((Graphic)component).color = Color.red; componentInChildren.visualizerPrefab = headshotVisualizer; batHitEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Loader/OmniImpactVFXLoader.prefab").WaitForCompletion(), "BatHitEffect"); batHitEffect.AddComponent(); OfficialScoutMod.Modules.Content.CreateAndAddEffectDef(batHitEffect); batSwingEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Merc/MercSwordSlash.prefab").WaitForCompletion(), "ScoutBatSwing", false); ((Renderer)((Component)batSwingEffect.transform.GetChild(0)).GetComponent()).material = Addressables.LoadAssetAsync((object)"RoR2/Base/Huntress/matHuntressSwingTrail.mat").WaitForCompletion(); MainModule main = ((Component)batSwingEffect.transform.GetChild(0)).GetComponent().main; ((MainModule)(ref main)).startLifetimeMultiplier = ((MainModule)(ref main)).startLifetimeMultiplier * 2f; atomicSwingEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Merc/MercSwordSlash.prefab").WaitForCompletion(), "ScoutAtomicSwing", false); ((Renderer)((Component)atomicSwingEffect.transform.GetChild(0)).GetComponent()).material = Addressables.LoadAssetAsync((object)"RoR2/Base/Parent/matParentMeleeSwing.mat").WaitForCompletion(); main = ((Component)atomicSwingEffect.transform.GetChild(0)).GetComponent().main; ((MainModule)(ref main)).startLifetimeMultiplier = ((MainModule)(ref main)).startLifetimeMultiplier * 2f; GameObject val = new GameObject(); scoutZoom = PrefabAPI.InstantiateClone(val, "ScoutTrail", false); TrailRenderer val2 = scoutZoom.AddComponent(); val2.startWidth = 4f; val2.endWidth = 1f; val2.time = 0.3f; val2.emitting = true; val2.numCornerVertices = 0; val2.numCapVertices = 0; ((Renderer)val2).material = Addressables.LoadAssetAsync((object)"RoR2/Base/Beetle/matBeetleSpitTrail2.mat").WaitForCompletion(); val2.startColor = new Color(0.72156864f, 0.8862745f, 0.23921569f, 0.5f); val2.endColor = Color.white; val2.alignment = (LineAlignment)1; scoutTracer = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/TracerCommandoShotgun"), "ScoutShotgunTracer", true); if (!Object.op_Implicit((Object)(object)scoutTracer.GetComponent())) { scoutTracer.AddComponent(); } if (!Object.op_Implicit((Object)(object)scoutTracer.GetComponent())) { scoutTracer.AddComponent(); } if (!Object.op_Implicit((Object)(object)scoutTracer.GetComponent())) { scoutTracer.AddComponent(); } Material val3 = null; LineRenderer[] componentsInChildren = scoutTracer.GetComponentsInChildren(); foreach (LineRenderer val4 in componentsInChildren) { if (Object.op_Implicit((Object)(object)val4)) { val3 = Object.Instantiate(((Renderer)val4).material); val3.SetColor("_TintColor", Color.green); ((Renderer)val4).material = val3; val4.startColor = Color.green; val4.endColor = Color.yellow; } } scoutTracerCrit = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/TracerCommandoShotgun"), "ScoutShotgunTracerCritical", true); if (!Object.op_Implicit((Object)(object)scoutTracerCrit.GetComponent())) { scoutTracerCrit.AddComponent(); } if (!Object.op_Implicit((Object)(object)scoutTracerCrit.GetComponent())) { scoutTracerCrit.AddComponent(); } if (!Object.op_Implicit((Object)(object)scoutTracerCrit.GetComponent())) { scoutTracerCrit.AddComponent(); } LineRenderer[] componentsInChildren2 = scoutTracerCrit.GetComponentsInChildren(); foreach (LineRenderer val5 in componentsInChildren2) { if (Object.op_Implicit((Object)(object)val5)) { val3 = Object.Instantiate(((Renderer)val5).material); val3.SetColor("_TintColor", Color.green); ((Renderer)val5).material = val3; val5.startColor = Color.green; val5.endColor = Color.yellow; } } OfficialScoutMod.Modules.Content.CreateAndAddEffectDef(scoutTracer); OfficialScoutMod.Modules.Content.CreateAndAddEffectDef(scoutTracerCrit); atomicEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/KillEliteFrenzy/NoCooldownEffect.prefab").WaitForCompletion(), "ScoutAtomicEffect"); atomicEffect.AddComponent(); ((Renderer)((Component)atomicEffect.transform.GetChild(0).GetChild(0)).gameObject.GetComponent()).material.SetColor("_TintColor", new Color(1f / 3f, 0.7372549f, 0f)); ((Renderer)((Component)atomicEffect.transform.GetChild(0).GetChild(1)).gameObject.GetComponent()).material.SetColor("_TintColor", new Color(1f / 3f, 0.7372549f, 0f)); MainModule main2 = ((Component)atomicEffect.transform.GetChild(0).GetChild(0)).gameObject.GetComponent().main; ((MainModule)(ref main2)).startColor = MinMaxGradient.op_Implicit(new Color(0.72156864f, 0.8862745f, 0.23921569f)); MinMaxGradient startColor = ((MainModule)(ref main2)).startColor; startColor.m_Mode = (ParticleSystemGradientMode)0; atomicEndEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/LunarSkillReplacements/LunarDetonatorConsume.prefab").WaitForCompletion(), "ScoutAtomicEnd"); atomicEndEffect.AddComponent(); MainModule main3 = ((Component)atomicEndEffect.transform.GetChild(0)).gameObject.GetComponent().main; ((MainModule)(ref main3)).startColor = MinMaxGradient.op_Implicit(Color.black); main3 = ((Component)atomicEndEffect.transform.GetChild(1)).gameObject.GetComponent().main; ((MainModule)(ref main3)).startColor = MinMaxGradient.op_Implicit(new Color(0.72156864f, 0.8862745f, 0.23921569f)); ((Renderer)((Component)atomicEndEffect.transform.GetChild(2)).gameObject.GetComponent()).material.SetColor("_TintColor", new Color(0.72156864f, 0.8862745f, 0.23921569f)); ((Component)atomicEndEffect.transform.GetChild(3)).gameObject.SetActive(false); ((Renderer)((Component)atomicEndEffect.transform.GetChild(4)).gameObject.GetComponent()).material.SetColor("_TintColor", new Color(0.72156864f, 0.8862745f, 0.23921569f)); Material val6 = Object.Instantiate(Addressables.LoadAssetAsync((object)"RoR2/Base/LunarSkillReplacements/matLunarNeedleImpactEffect.mat").WaitForCompletion()); val6.SetColor("_TintColor", new Color(0.72156864f, 0.8862745f, 0.23921569f)); ((Renderer)((Component)atomicEndEffect.transform.GetChild(5)).gameObject.GetComponent()).material = val6; ((Component)atomicEndEffect.transform.GetChild(6)).gameObject.SetActive(false); Object.Destroy((Object)(object)atomicEndEffect.GetComponent()); scoutMaxGauge = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Engi/EngiGrenadeExplosion.prefab").WaitForCompletion(), "ScoutMaxGaugeEffect", true); scoutMaxGauge.AddComponent(); Transform transform = ((Component)scoutMaxGauge.transform.GetChild(0).GetChild(1)).transform; transform.localScale *= 2f; scoutMaxGauge.GetComponent().soundName = ""; OfficialScoutMod.Modules.Content.CreateAndAddEffectDef(scoutMaxGauge); atomicImpactEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/GreaterWisp/OmniExplosionVFXGreaterWisp.prefab").WaitForCompletion(), "ScoutImpactExplosion"); atomicImpactEffect.GetComponent().applyScale = true; OfficialScoutMod.Modules.Content.CreateAndAddEffectDef(atomicImpactEffect); bloodSplatterEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Brother/BrotherSlamImpact.prefab").WaitForCompletion(), "ScoutSplat", true); bloodSplatterEffect.AddComponent(); ((Component)bloodSplatterEffect.transform.GetChild(0)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(1)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(2)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(3)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(4)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(5)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(6)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(7)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(8)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(9)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(10)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.Find("Decal")).GetComponent().Material = Addressables.LoadAssetAsync((object)"RoR2/Base/Imp/matImpDecal.mat").WaitForCompletion(); ((Component)bloodSplatterEffect.transform.Find("Decal")).GetComponent().timeMax = 10f; ((Component)bloodSplatterEffect.transform.GetChild(12)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(13)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(14)).gameObject.SetActive(false); ((Component)bloodSplatterEffect.transform.GetChild(15)).gameObject.SetActive(false); bloodSplatterEffect.transform.localScale = Vector3.one; OfficialScoutMod.Modules.Content.CreateAndAddEffectDef(bloodSplatterEffect); } private static void CreateProjectiles() { //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_0094: 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_00a4: 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_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0374: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03d5: Unknown result type (might be due to invalid IL or missing references) //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_0446: Unknown result type (might be due to invalid IL or missing references) //IL_044b: Unknown result type (might be due to invalid IL or missing references) //IL_04f9: Unknown result type (might be due to invalid IL or missing references) //IL_04fe: Unknown result type (might be due to invalid IL or missing references) //IL_050e: Unknown result type (might be due to invalid IL or missing references) //IL_051a: Unknown result type (might be due to invalid IL or missing references) cleaverPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Bandit2/Bandit2ShivProjectile.prefab").WaitForCompletion(), "ScoutCleaver"); if (!Object.op_Implicit((Object)(object)cleaverPrefab.GetComponent())) { cleaverPrefab.AddComponent(); } cleaverPrefab.GetComponent().hitSoundString = "sfx_scout_cleaver_miss"; cleaverPrefab.GetComponent().enemyHitSoundString = "sfx_scout_cleaver_hit"; cleaverPrefab.GetComponent().radius = 1.5f; ProjectileDamage component = cleaverPrefab.GetComponent(); component.damageType = DamageTypeCombo.op_Implicit((DamageType)1048576); DamageAPI.AddModdedDamageType(ref component.damageType, DamageTypes.CleaverBonus); DamageAPI.AddModdedDamageType(ref component.damageType, DamageTypes.FillAtomic); component.damageType.damageSource = (DamageSource)2; cleaverPrefab.GetComponent().ghostPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Bandit2/Bandit2ShivGhostAlt.prefab").WaitForCompletion(), "ScoutCleaverGhost"); cleaverPrefab.GetComponent().ghostPrefab.AddComponent(); cleaverPrefab.GetComponent().desiredForwardSpeed = 120f; TrailRenderer val = cleaverPrefab.AddComponent(); val.startWidth = 0.5f; val.endWidth = 0.1f; val.time = 0.5f; val.emitting = true; val.numCornerVertices = 0; val.numCapVertices = 0; ((Renderer)val).material = Addressables.LoadAssetAsync((object)"RoR2/Base/Common/VFX/matSmokeTrail.mat").WaitForCompletion(); val.startColor = Color.white; val.endColor = Color.gray; val.alignment = (LineAlignment)1; ((Component)cleaverPrefab.GetComponent().ghostPrefab.transform.GetChild(0)).gameObject.GetComponent().mesh = mainAssetBundle.LoadAsset("scoutCleaver").GetComponent().mesh; cleaverPrefab.GetComponent().ghostPrefab.transform.GetChild(0).localRotation = new Quaternion(90f, 0f, 90f, Quaternion.identity.w); cleaverPrefab.GetComponent().ghostPrefab.transform.GetChild(0).localScale = Vector3.one * 0.015f; ((Renderer)((Component)cleaverPrefab.GetComponent().ghostPrefab.transform.GetChild(0)).gameObject.GetComponent()).material = CreateMaterial("matScout"); cleaverPrefab.GetComponent().allowPrediction = false; OfficialScoutMod.Modules.Content.AddProjectilePrefab(cleaverPrefab); baseballPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Bandit2/Bandit2ShivProjectile.prefab").WaitForCompletion(), "ScoutBaseball"); if (!Object.op_Implicit((Object)(object)baseballPrefab.GetComponent())) { baseballPrefab.AddComponent(); } ((Behaviour)baseballPrefab.GetComponent()).enabled = false; baseballPrefab.GetComponent().radius = 1.5f; ((Behaviour)baseballPrefab.GetComponent()).enabled = false; baseballPrefab.GetComponent().impactEffect = batHitEffect; baseballPrefab.GetComponent().hitSoundString = "sfx_scout_baseball_miss"; baseballPrefab.GetComponent().enemyHitSoundString = "sfx_scout_baseball_impact"; ProjectileDamage component2 = baseballPrefab.GetComponent(); baseballPrefab.GetComponent().damageType = DamageTypeCombo.op_Implicit((DamageType)0); DamageAPI.AddModdedDamageType(ref component2.damageType, DamageTypes.BallStun); DamageAPI.AddModdedDamageType(ref component2.damageType, DamageTypes.FillAtomic); component2.damageType.damageSource = (DamageSource)2; baseballPrefab.GetComponent().desiredForwardSpeed = 120f; baseballPrefab.AddComponent(); baseballPrefab.GetComponent().ghostPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Bell/BellBallSmallGhost.prefab").WaitForCompletion(), "ScoutBaseballGhost"); baseballPrefab.GetComponent().ghostPrefab.AddComponent(); ((Renderer)baseballPrefab.GetComponent().ghostPrefab.GetComponentInChildren()).materials = (Material[])(object)new Material[1]; ((Renderer)baseballPrefab.GetComponent().ghostPrefab.GetComponentInChildren()).materials[0] = Object.Instantiate(Addressables.LoadAssetAsync((object)"RoR2/DLC1/EliteEarth/matEliteAffixEarthPickup.mat").WaitForCompletion()); baseballPrefab.GetComponent().allowPrediction = false; Object.Destroy((Object)(object)((Component)baseballPrefab.transform.GetChild(0).GetChild(0)).gameObject); Object.Destroy((Object)(object)((Component)baseballPrefab.transform.GetChild(0).GetChild(1)).gameObject); TrailRenderer val2 = baseballPrefab.AddComponent(); val2.startWidth = 0.5f; val2.endWidth = 0.1f; val2.time = 0.5f; val2.emitting = true; val2.numCornerVertices = 0; val2.numCapVertices = 0; ((Renderer)val2).material = Addressables.LoadAssetAsync((object)"RoR2/Base/Common/VFX/matSmokeTrail.mat").WaitForCompletion(); val2.startColor = Color.white; val2.endColor = Color.gray; val2.alignment = (LineAlignment)1; OfficialScoutMod.Modules.Content.AddProjectilePrefab(baseballPrefab); } private static void CreateSounds() { LoadSoundbank(); batImpactSoundDef = OfficialScoutMod.Modules.Content.CreateAndAddNetworkSoundEventDef("sfx_scout_bat_impact"); } internal static void LoadSoundbank() { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OfficialScoutMod.scout_bank.bnk"); byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); SoundBanks.Add(array); } private static GameObject CreateImpactExplosionEffect(string effectName, Material bloodMat, Material decal, float scale = 1f) { //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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0142: 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_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Brother/BrotherSlamImpact.prefab").WaitForCompletion(), effectName, true); ((Component)val.transform.Find("Spikes, Small")).gameObject.SetActive(false); ((Component)val.transform.Find("PP")).gameObject.SetActive(false); ((Component)val.transform.Find("Point light")).gameObject.SetActive(false); ((Renderer)((Component)val.transform.Find("Flash Lines")).GetComponent()).material = Addressables.LoadAssetAsync((object)"RoR2/Base/Common/VFX/matOpaqueDustLargeDirectional.mat").WaitForCompletion(); ((Renderer)((Component)val.transform.GetChild(3)).GetComponent()).material = bloodMat; ((Renderer)((Component)val.transform.Find("Flash Lines, Fire")).GetComponent()).material = bloodMat; ((Renderer)((Component)val.transform.GetChild(6)).GetComponent()).material = bloodMat; ((Renderer)((Component)val.transform.Find("Fire")).GetComponent()).material = bloodMat; MainModule main = ((Component)val.transform.Find("Fire")).GetComponent().main; ((MainModule)(ref main)).startLifetimeMultiplier = 0.5f; main = ((Component)val.transform.Find("Flash Lines, Fire")).GetComponent().main; ((MainModule)(ref main)).startLifetimeMultiplier = 0.3f; main = ((Component)val.transform.GetChild(6)).GetComponent().main; ((MainModule)(ref main)).startLifetimeMultiplier = 0.4f; ((Renderer)((Component)val.transform.Find("Physics")).GetComponent()).material = Addressables.LoadAssetAsync((object)"RoR2/Base/MagmaWorm/matFracturedGround.mat").WaitForCompletion(); ((Component)val.transform.Find("Decal")).GetComponent().Material = decal; ((Component)val.transform.Find("Decal")).GetComponent().timeMax = 10f; ((Component)val.transform.Find("FoamSplash")).gameObject.SetActive(false); ((Component)val.transform.Find("FoamBilllboard")).gameObject.SetActive(false); ((Component)val.transform.Find("Dust")).gameObject.SetActive(false); ((Component)val.transform.Find("Dust, Directional")).gameObject.SetActive(false); val.transform.localScale = Vector3.one * scale; val.AddComponent(); ParticleSystemColorFromEffectData val2 = val.AddComponent(); val2.particleSystems = (ParticleSystem[])(object)new ParticleSystem[4] { ((Component)val.transform.Find("Fire")).GetComponent(), ((Component)val.transform.Find("Flash Lines, Fire")).GetComponent(), ((Component)val.transform.GetChild(6)).GetComponent(), ((Component)val.transform.GetChild(3)).GetComponent() }; val2.effectComponent = val.GetComponent(); OfficialScoutMod.Modules.Content.CreateAndAddEffectDef(val); return val; } public static Material CreateMaterial(string materialName, float emission, Color emissionColor, float normalStrength) { //IL_0077: 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) if (!Object.op_Implicit((Object)(object)commandoMat)) { commandoMat = Resources.Load("Prefabs/CharacterBodies/CommandoBody").GetComponentInChildren().baseRendererInfos[0].defaultMaterial; } Material val = Object.Instantiate(commandoMat); Material val2 = mainAssetBundle.LoadAsset(materialName); if (!Object.op_Implicit((Object)(object)val2)) { return commandoMat; } ((Object)val).name = materialName; val.SetColor("_Color", val2.GetColor("_Color")); val.SetTexture("_MainTex", val2.GetTexture("_MainTex")); val.SetColor("_EmColor", emissionColor); val.SetFloat("_EmPower", emission); val.SetTexture("_EmTex", val2.GetTexture("_EmissionMap")); val.SetFloat("_NormalStrength", normalStrength); return val; } public static Material CreateMaterial(string materialName) { return CreateMaterial(materialName, 0f); } public static Material CreateMaterial(string materialName, float emission) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) return CreateMaterial(materialName, emission, Color.black); } public static Material CreateMaterial(string materialName, float emission, Color emissionColor) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) return CreateMaterial(materialName, emission, emissionColor, 0f); } } public static class ScoutBuffs { public static BuffDef scoutAtomicBuff; public static BuffDef scoutStunMarker; public static void Init(AssetBundle assetBundle) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) scoutAtomicBuff = OfficialScoutMod.Modules.Content.CreateAndAddBuff("ScoutAtomicBuff", assetBundle.LoadAsset("texBuffAtomic"), Color.yellow, canStack: false, isDebuff: false, isCooldown: false); scoutStunMarker = OfficialScoutMod.Modules.Content.CreateAndAddBuff("ScoutStunBuff", Addressables.LoadAssetAsync((object)"RoR2/Base/UI/texSniperCharge.tif").WaitForCompletion(), Color.white, canStack: false, isDebuff: false, isCooldown: false); } } public static class ScoutConfig { public static ConfigEntry forceUnlock; public static ConfigEntry gainAtomicGaugeDuringAtomicBlast; public static ConfigEntry adjustShotgunRecoil; public static ConfigEntry adjustRifleRecoil; public static ConfigEntry maxHealth; public static ConfigEntry healthRegen; public static ConfigEntry armor; public static ConfigEntry shield; public static ConfigEntry jumpCount; public static ConfigEntry damage; public static ConfigEntry attackSpeed; public static ConfigEntry crit; public static ConfigEntry moveSpeed; public static ConfigEntry acceleration; public static ConfigEntry jumpPower; public static ConfigEntry autoCalculateLevelStats; public static ConfigEntry healthGrowth; public static ConfigEntry regenGrowth; public static ConfigEntry armorGrowth; public static ConfigEntry shieldGrowth; public static ConfigEntry damageGrowth; public static ConfigEntry attackSpeedGrowth; public static ConfigEntry critGrowth; public static ConfigEntry moveSpeedGrowth; public static ConfigEntry jumpPowerGrowth; public static ConfigEntry shotgunDamageCoefficient; public static ConfigEntry baseballDamageCoefficient; public static ConfigEntry cleaverDamageCoefficient; public static ConfigEntry swingDamageCoefficient; public static ConfigEntry atomicBlastDamageCoefficient; public static ConfigEntry rifleDamageCoefficient; public static void Init() { string section = "Stats - 01"; string section2 = "QOL - 02"; damage = Config.BindAndOptions(section, "Change Base Damage Value", 12f); maxHealth = Config.BindAndOptions(section, "Change Max Health Value", 110f); healthRegen = Config.BindAndOptions(section, "Change Health Regen Value", 1f); armor = Config.BindAndOptions(section, "Change Armor Value", 0f); shield = Config.BindAndOptions(section, "Change Shield Value", 0f); jumpCount = Config.BindAndOptions(section, "Change Jump Count", 2); attackSpeed = Config.BindAndOptions(section, "Change Attack Speed Value", 1f); crit = Config.BindAndOptions(section, "Change Crit Value", 1f); moveSpeed = Config.BindAndOptions(section, "Change Move Speed Value", 7f); acceleration = Config.BindAndOptions(section, "Change Acceleration Value", 80f); jumpPower = Config.BindAndOptions(section, "Change Jump Power Value", 15f); autoCalculateLevelStats = Config.BindAndOptions(section, "Auto Calculate Level Stats", defaultValue: true); healthGrowth = Config.BindAndOptions(section, "Change Health Growth Value", 0.3f); regenGrowth = Config.BindAndOptions(section, "Change Regen Growth Value", 0.2f); armorGrowth = Config.BindAndOptions(section, "Change Armor Growth Value", 0f); shieldGrowth = Config.BindAndOptions(section, "Change Shield Growth Value", 0f); damageGrowth = Config.BindAndOptions(section, "Change Damage Growth Value", 0.2f); attackSpeedGrowth = Config.BindAndOptions(section, "Change Attack Speed Growth Value", 0f); critGrowth = Config.BindAndOptions(section, "Change Crit Growth Value", 0f); moveSpeedGrowth = Config.BindAndOptions(section, "Change Move Speed Growth Value", 0f); jumpPowerGrowth = Config.BindAndOptions(section, "Change Jump Power Growth Value", 0f); shotgunDamageCoefficient = Config.BindAndOptions(section, "Change Splattergun Damage Coefficient", 0.65f); rifleDamageCoefficient = Config.BindAndOptions(section, "Change Dastardly Dwarf Damage Coefficient", 2.4f); baseballDamageCoefficient = Config.BindAndOptions(section, "Change Spike Ball Damage Coefficient", 3f); cleaverDamageCoefficient = Config.BindAndOptions(section, "Change Toxic Cleaver Damage Coefficient", 4f); swingDamageCoefficient = Config.BindAndOptions(section, "Change Elephants Foot Damage Coefficient", 3.2f); atomicBlastDamageCoefficient = Config.BindAndOptions(section, "Change Atomic Blast Damage Coefficient", 10f); forceUnlock = Config.BindAndOptions(section2, "Unlock Scout", defaultValue: false, "Unlock Scout.", restartRequired: true); gainAtomicGaugeDuringAtomicBlast = Config.BindAndOptions(section2, "Gain Gauge During Atomic", defaultValue: false, "Lets you fill Atomic Core while it drains."); adjustShotgunRecoil = Config.BindAndOptions(section2, "Adjust Shotgun Recoil", 40f, "Adjust the screen shake of the shotgun."); adjustRifleRecoil = Config.BindAndOptions(section2, "Adjust Rifle Recoil", 4f, "Adjust the screen shake of the Rifle."); } } public static class ScoutCrosshair { internal static GameObject scoutCrosshair; private static AssetBundle _assetBundle; public static void Init(AssetBundle assetBundle) { _assetBundle = assetBundle; CreateCrosshair(); } private static void CreateCrosshair() { //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) scoutCrosshair = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/Mage/MageCrosshair.prefab").WaitForCompletion(), "ScoutCrosshair", false); } } public class ScoutItemDisplays : ItemDisplaysBase { protected override void SetItemDisplayRules(List itemDisplayRules) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Unknown result type (might be due to invalid IL or missing references) //IL_0393: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_03ac: Unknown result type (might be due to invalid IL or missing references) //IL_03b1: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03f7: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_0424: Unknown result type (might be due to invalid IL or missing references) //IL_0429: Unknown result type (might be due to invalid IL or missing references) //IL_042e: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_0497: Unknown result type (might be due to invalid IL or missing references) //IL_049c: Unknown result type (might be due to invalid IL or missing references) //IL_04a1: Unknown result type (might be due to invalid IL or missing references) //IL_04a6: Unknown result type (might be due to invalid IL or missing references) //IL_04e7: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: Unknown result type (might be due to invalid IL or missing references) //IL_050f: Unknown result type (might be due to invalid IL or missing references) //IL_0514: Unknown result type (might be due to invalid IL or missing references) //IL_0519: Unknown result type (might be due to invalid IL or missing references) //IL_051e: Unknown result type (might be due to invalid IL or missing references) //IL_055f: Unknown result type (might be due to invalid IL or missing references) //IL_0573: Unknown result type (might be due to invalid IL or missing references) //IL_0587: Unknown result type (might be due to invalid IL or missing references) //IL_058c: Unknown result type (might be due to invalid IL or missing references) //IL_0591: Unknown result type (might be due to invalid IL or missing references) //IL_0596: Unknown result type (might be due to invalid IL or missing references) //IL_05d7: Unknown result type (might be due to invalid IL or missing references) //IL_05eb: Unknown result type (might be due to invalid IL or missing references) //IL_05ff: Unknown result type (might be due to invalid IL or missing references) //IL_0604: Unknown result type (might be due to invalid IL or missing references) //IL_0609: Unknown result type (might be due to invalid IL or missing references) //IL_060e: Unknown result type (might be due to invalid IL or missing references) //IL_064f: Unknown result type (might be due to invalid IL or missing references) //IL_0663: Unknown result type (might be due to invalid IL or missing references) //IL_0677: Unknown result type (might be due to invalid IL or missing references) //IL_067c: Unknown result type (might be due to invalid IL or missing references) //IL_0681: Unknown result type (might be due to invalid IL or missing references) //IL_0686: Unknown result type (might be due to invalid IL or missing references) //IL_06c7: Unknown result type (might be due to invalid IL or missing references) //IL_06db: Unknown result type (might be due to invalid IL or missing references) //IL_06ef: Unknown result type (might be due to invalid IL or missing references) //IL_06f4: Unknown result type (might be due to invalid IL or missing references) //IL_06f9: Unknown result type (might be due to invalid IL or missing references) //IL_06fe: Unknown result type (might be due to invalid IL or missing references) //IL_073f: Unknown result type (might be due to invalid IL or missing references) //IL_0753: Unknown result type (might be due to invalid IL or missing references) //IL_0767: Unknown result type (might be due to invalid IL or missing references) //IL_076c: Unknown result type (might be due to invalid IL or missing references) //IL_0771: Unknown result type (might be due to invalid IL or missing references) //IL_0776: Unknown result type (might be due to invalid IL or missing references) //IL_07b7: Unknown result type (might be due to invalid IL or missing references) //IL_07cb: Unknown result type (might be due to invalid IL or missing references) //IL_07df: Unknown result type (might be due to invalid IL or missing references) //IL_07e4: Unknown result type (might be due to invalid IL or missing references) //IL_07e9: Unknown result type (might be due to invalid IL or missing references) //IL_07ee: Unknown result type (might be due to invalid IL or missing references) //IL_082f: Unknown result type (might be due to invalid IL or missing references) //IL_0843: Unknown result type (might be due to invalid IL or missing references) //IL_0857: Unknown result type (might be due to invalid IL or missing references) //IL_085c: Unknown result type (might be due to invalid IL or missing references) //IL_0861: Unknown result type (might be due to invalid IL or missing references) //IL_0866: Unknown result type (might be due to invalid IL or missing references) //IL_08a7: Unknown result type (might be due to invalid IL or missing references) //IL_08bb: Unknown result type (might be due to invalid IL or missing references) //IL_08cf: Unknown result type (might be due to invalid IL or missing references) //IL_08d4: Unknown result type (might be due to invalid IL or missing references) //IL_08d9: Unknown result type (might be due to invalid IL or missing references) //IL_08de: Unknown result type (might be due to invalid IL or missing references) //IL_091f: Unknown result type (might be due to invalid IL or missing references) //IL_0933: Unknown result type (might be due to invalid IL or missing references) //IL_0947: Unknown result type (might be due to invalid IL or missing references) //IL_094c: Unknown result type (might be due to invalid IL or missing references) //IL_0951: Unknown result type (might be due to invalid IL or missing references) //IL_0956: Unknown result type (might be due to invalid IL or missing references) //IL_0997: Unknown result type (might be due to invalid IL or missing references) //IL_09ab: Unknown result type (might be due to invalid IL or missing references) //IL_09bf: Unknown result type (might be due to invalid IL or missing references) //IL_09c4: Unknown result type (might be due to invalid IL or missing references) //IL_09c9: Unknown result type (might be due to invalid IL or missing references) //IL_09ce: Unknown result type (might be due to invalid IL or missing references) //IL_0a0f: Unknown result type (might be due to invalid IL or missing references) //IL_0a23: Unknown result type (might be due to invalid IL or missing references) //IL_0a37: Unknown result type (might be due to invalid IL or missing references) //IL_0a3c: Unknown result type (might be due to invalid IL or missing references) //IL_0a41: Unknown result type (might be due to invalid IL or missing references) //IL_0a46: Unknown result type (might be due to invalid IL or missing references) //IL_0a87: Unknown result type (might be due to invalid IL or missing references) //IL_0a9b: Unknown result type (might be due to invalid IL or missing references) //IL_0aaf: Unknown result type (might be due to invalid IL or missing references) //IL_0ab4: Unknown result type (might be due to invalid IL or missing references) //IL_0ab9: Unknown result type (might be due to invalid IL or missing references) //IL_0abe: Unknown result type (might be due to invalid IL or missing references) //IL_0aff: Unknown result type (might be due to invalid IL or missing references) //IL_0b13: Unknown result type (might be due to invalid IL or missing references) //IL_0b27: Unknown result type (might be due to invalid IL or missing references) //IL_0b2c: Unknown result type (might be due to invalid IL or missing references) //IL_0b31: Unknown result type (might be due to invalid IL or missing references) //IL_0b36: Unknown result type (might be due to invalid IL or missing references) //IL_0b77: Unknown result type (might be due to invalid IL or missing references) //IL_0b8b: Unknown result type (might be due to invalid IL or missing references) //IL_0b9f: Unknown result type (might be due to invalid IL or missing references) //IL_0ba4: Unknown result type (might be due to invalid IL or missing references) //IL_0ba9: Unknown result type (might be due to invalid IL or missing references) //IL_0bae: Unknown result type (might be due to invalid IL or missing references) //IL_0bef: Unknown result type (might be due to invalid IL or missing references) //IL_0c03: Unknown result type (might be due to invalid IL or missing references) //IL_0c17: Unknown result type (might be due to invalid IL or missing references) //IL_0c1c: Unknown result type (might be due to invalid IL or missing references) //IL_0c21: Unknown result type (might be due to invalid IL or missing references) //IL_0c26: Unknown result type (might be due to invalid IL or missing references) //IL_0c67: Unknown result type (might be due to invalid IL or missing references) //IL_0c7b: Unknown result type (might be due to invalid IL or missing references) //IL_0c8f: Unknown result type (might be due to invalid IL or missing references) //IL_0c94: Unknown result type (might be due to invalid IL or missing references) //IL_0c99: Unknown result type (might be due to invalid IL or missing references) //IL_0c9e: Unknown result type (might be due to invalid IL or missing references) //IL_0cdf: Unknown result type (might be due to invalid IL or missing references) //IL_0cf3: Unknown result type (might be due to invalid IL or missing references) //IL_0d07: Unknown result type (might be due to invalid IL or missing references) //IL_0d0c: Unknown result type (might be due to invalid IL or missing references) //IL_0d11: Unknown result type (might be due to invalid IL or missing references) //IL_0d16: Unknown result type (might be due to invalid IL or missing references) //IL_0d57: Unknown result type (might be due to invalid IL or missing references) //IL_0d6b: Unknown result type (might be due to invalid IL or missing references) //IL_0d7f: Unknown result type (might be due to invalid IL or missing references) //IL_0d84: Unknown result type (might be due to invalid IL or missing references) //IL_0d89: Unknown result type (might be due to invalid IL or missing references) //IL_0d8e: Unknown result type (might be due to invalid IL or missing references) //IL_0dcf: Unknown result type (might be due to invalid IL or missing references) //IL_0de3: Unknown result type (might be due to invalid IL or missing references) //IL_0df7: Unknown result type (might be due to invalid IL or missing references) //IL_0dfc: Unknown result type (might be due to invalid IL or missing references) //IL_0e01: Unknown result type (might be due to invalid IL or missing references) //IL_0e06: Unknown result type (might be due to invalid IL or missing references) //IL_0e47: Unknown result type (might be due to invalid IL or missing references) //IL_0e5b: Unknown result type (might be due to invalid IL or missing references) //IL_0e6f: Unknown result type (might be due to invalid IL or missing references) //IL_0e74: Unknown result type (might be due to invalid IL or missing references) //IL_0e79: Unknown result type (might be due to invalid IL or missing references) //IL_0e7e: Unknown result type (might be due to invalid IL or missing references) //IL_0ea2: Unknown result type (might be due to invalid IL or missing references) //IL_0ea7: Unknown result type (might be due to invalid IL or missing references) //IL_0ecc: Unknown result type (might be due to invalid IL or missing references) //IL_0ee0: Unknown result type (might be due to invalid IL or missing references) //IL_0ef4: Unknown result type (might be due to invalid IL or missing references) //IL_0ef9: Unknown result type (might be due to invalid IL or missing references) //IL_0efe: Unknown result type (might be due to invalid IL or missing references) //IL_0f23: Unknown result type (might be due to invalid IL or missing references) //IL_0f37: Unknown result type (might be due to invalid IL or missing references) //IL_0f4b: Unknown result type (might be due to invalid IL or missing references) //IL_0f50: Unknown result type (might be due to invalid IL or missing references) //IL_0f55: Unknown result type (might be due to invalid IL or missing references) //IL_0f5a: Unknown result type (might be due to invalid IL or missing references) //IL_0f9b: Unknown result type (might be due to invalid IL or missing references) //IL_0faf: Unknown result type (might be due to invalid IL or missing references) //IL_0fc3: Unknown result type (might be due to invalid IL or missing references) //IL_0fc8: Unknown result type (might be due to invalid IL or missing references) //IL_0fcd: Unknown result type (might be due to invalid IL or missing references) //IL_0fd2: Unknown result type (might be due to invalid IL or missing references) //IL_1013: Unknown result type (might be due to invalid IL or missing references) //IL_1027: Unknown result type (might be due to invalid IL or missing references) //IL_103b: Unknown result type (might be due to invalid IL or missing references) //IL_1040: Unknown result type (might be due to invalid IL or missing references) //IL_1045: Unknown result type (might be due to invalid IL or missing references) //IL_104a: Unknown result type (might be due to invalid IL or missing references) //IL_108b: Unknown result type (might be due to invalid IL or missing references) //IL_109f: Unknown result type (might be due to invalid IL or missing references) //IL_10b3: Unknown result type (might be due to invalid IL or missing references) //IL_10b8: Unknown result type (might be due to invalid IL or missing references) //IL_10bd: Unknown result type (might be due to invalid IL or missing references) //IL_10c2: Unknown result type (might be due to invalid IL or missing references) //IL_1103: Unknown result type (might be due to invalid IL or missing references) //IL_1117: Unknown result type (might be due to invalid IL or missing references) //IL_112b: Unknown result type (might be due to invalid IL or missing references) //IL_1130: Unknown result type (might be due to invalid IL or missing references) //IL_1135: Unknown result type (might be due to invalid IL or missing references) //IL_113a: Unknown result type (might be due to invalid IL or missing references) //IL_117b: Unknown result type (might be due to invalid IL or missing references) //IL_118f: Unknown result type (might be due to invalid IL or missing references) //IL_11a3: Unknown result type (might be due to invalid IL or missing references) //IL_11a8: Unknown result type (might be due to invalid IL or missing references) //IL_11ad: Unknown result type (might be due to invalid IL or missing references) //IL_11b2: Unknown result type (might be due to invalid IL or missing references) //IL_11f3: Unknown result type (might be due to invalid IL or missing references) //IL_1207: Unknown result type (might be due to invalid IL or missing references) //IL_121b: Unknown result type (might be due to invalid IL or missing references) //IL_1220: Unknown result type (might be due to invalid IL or missing references) //IL_1225: Unknown result type (might be due to invalid IL or missing references) //IL_122a: Unknown result type (might be due to invalid IL or missing references) //IL_126b: Unknown result type (might be due to invalid IL or missing references) //IL_127f: Unknown result type (might be due to invalid IL or missing references) //IL_1293: Unknown result type (might be due to invalid IL or missing references) //IL_1298: Unknown result type (might be due to invalid IL or missing references) //IL_129d: Unknown result type (might be due to invalid IL or missing references) //IL_12a2: Unknown result type (might be due to invalid IL or missing references) //IL_12e3: Unknown result type (might be due to invalid IL or missing references) //IL_12f7: Unknown result type (might be due to invalid IL or missing references) //IL_130b: Unknown result type (might be due to invalid IL or missing references) //IL_1310: Unknown result type (might be due to invalid IL or missing references) //IL_1315: Unknown result type (might be due to invalid IL or missing references) //IL_131a: Unknown result type (might be due to invalid IL or missing references) //IL_135b: Unknown result type (might be due to invalid IL or missing references) //IL_136f: Unknown result type (might be due to invalid IL or missing references) //IL_1383: Unknown result type (might be due to invalid IL or missing references) //IL_1388: Unknown result type (might be due to invalid IL or missing references) //IL_138d: Unknown result type (might be due to invalid IL or missing references) //IL_13b2: Unknown result type (might be due to invalid IL or missing references) //IL_13c6: Unknown result type (might be due to invalid IL or missing references) //IL_13da: Unknown result type (might be due to invalid IL or missing references) //IL_13df: Unknown result type (might be due to invalid IL or missing references) //IL_13e4: Unknown result type (might be due to invalid IL or missing references) //IL_13e9: Unknown result type (might be due to invalid IL or missing references) //IL_142a: Unknown result type (might be due to invalid IL or missing references) //IL_143e: Unknown result type (might be due to invalid IL or missing references) //IL_1452: Unknown result type (might be due to invalid IL or missing references) //IL_1457: Unknown result type (might be due to invalid IL or missing references) //IL_145c: Unknown result type (might be due to invalid IL or missing references) //IL_1461: Unknown result type (might be due to invalid IL or missing references) //IL_14a2: Unknown result type (might be due to invalid IL or missing references) //IL_14b6: Unknown result type (might be due to invalid IL or missing references) //IL_14ca: Unknown result type (might be due to invalid IL or missing references) //IL_14cf: Unknown result type (might be due to invalid IL or missing references) //IL_14d4: Unknown result type (might be due to invalid IL or missing references) //IL_14d9: Unknown result type (might be due to invalid IL or missing references) //IL_151a: Unknown result type (might be due to invalid IL or missing references) //IL_152e: Unknown result type (might be due to invalid IL or missing references) //IL_1542: Unknown result type (might be due to invalid IL or missing references) //IL_1547: Unknown result type (might be due to invalid IL or missing references) //IL_154c: Unknown result type (might be due to invalid IL or missing references) //IL_1551: Unknown result type (might be due to invalid IL or missing references) //IL_1592: Unknown result type (might be due to invalid IL or missing references) //IL_15a6: Unknown result type (might be due to invalid IL or missing references) //IL_15ba: Unknown result type (might be due to invalid IL or missing references) //IL_15bf: Unknown result type (might be due to invalid IL or missing references) //IL_15c4: Unknown result type (might be due to invalid IL or missing references) //IL_15c9: Unknown result type (might be due to invalid IL or missing references) //IL_160a: Unknown result type (might be due to invalid IL or missing references) //IL_161e: Unknown result type (might be due to invalid IL or missing references) //IL_1632: Unknown result type (might be due to invalid IL or missing references) //IL_1637: Unknown result type (might be due to invalid IL or missing references) //IL_163c: Unknown result type (might be due to invalid IL or missing references) //IL_1641: Unknown result type (might be due to invalid IL or missing references) //IL_1682: Unknown result type (might be due to invalid IL or missing references) //IL_1696: Unknown result type (might be due to invalid IL or missing references) //IL_16aa: Unknown result type (might be due to invalid IL or missing references) //IL_16af: Unknown result type (might be due to invalid IL or missing references) //IL_16b4: Unknown result type (might be due to invalid IL or missing references) //IL_16b9: Unknown result type (might be due to invalid IL or missing references) //IL_16fa: Unknown result type (might be due to invalid IL or missing references) //IL_170e: Unknown result type (might be due to invalid IL or missing references) //IL_1722: Unknown result type (might be due to invalid IL or missing references) //IL_1727: Unknown result type (might be due to invalid IL or missing references) //IL_172c: Unknown result type (might be due to invalid IL or missing references) //IL_1731: Unknown result type (might be due to invalid IL or missing references) //IL_1772: Unknown result type (might be due to invalid IL or missing references) //IL_1786: Unknown result type (might be due to invalid IL or missing references) //IL_179a: Unknown result type (might be due to invalid IL or missing references) //IL_179f: Unknown result type (might be due to invalid IL or missing references) //IL_17a4: Unknown result type (might be due to invalid IL or missing references) //IL_17a9: Unknown result type (might be due to invalid IL or missing references) //IL_17ea: Unknown result type (might be due to invalid IL or missing references) //IL_17fe: Unknown result type (might be due to invalid IL or missing references) //IL_1812: Unknown result type (might be due to invalid IL or missing references) //IL_1817: Unknown result type (might be due to invalid IL or missing references) //IL_181c: Unknown result type (might be due to invalid IL or missing references) //IL_1821: Unknown result type (might be due to invalid IL or missing references) //IL_1862: Unknown result type (might be due to invalid IL or missing references) //IL_1876: Unknown result type (might be due to invalid IL or missing references) //IL_188a: Unknown result type (might be due to invalid IL or missing references) //IL_188f: Unknown result type (might be due to invalid IL or missing references) //IL_1894: Unknown result type (might be due to invalid IL or missing references) //IL_1899: Unknown result type (might be due to invalid IL or missing references) //IL_18da: Unknown result type (might be due to invalid IL or missing references) //IL_18ee: Unknown result type (might be due to invalid IL or missing references) //IL_1902: Unknown result type (might be due to invalid IL or missing references) //IL_1907: Unknown result type (might be due to invalid IL or missing references) //IL_190c: Unknown result type (might be due to invalid IL or missing references) //IL_1911: Unknown result type (might be due to invalid IL or missing references) //IL_1952: Unknown result type (might be due to invalid IL or missing references) //IL_1966: Unknown result type (might be due to invalid IL or missing references) //IL_197a: Unknown result type (might be due to invalid IL or missing references) //IL_197f: Unknown result type (might be due to invalid IL or missing references) //IL_1984: Unknown result type (might be due to invalid IL or missing references) //IL_1989: Unknown result type (might be due to invalid IL or missing references) //IL_19ca: Unknown result type (might be due to invalid IL or missing references) //IL_19de: Unknown result type (might be due to invalid IL or missing references) //IL_19f2: Unknown result type (might be due to invalid IL or missing references) //IL_19f7: Unknown result type (might be due to invalid IL or missing references) //IL_19fc: Unknown result type (might be due to invalid IL or missing references) //IL_1a01: Unknown result type (might be due to invalid IL or missing references) //IL_1a42: Unknown result type (might be due to invalid IL or missing references) //IL_1a56: Unknown result type (might be due to invalid IL or missing references) //IL_1a6a: Unknown result type (might be due to invalid IL or missing references) //IL_1a6f: Unknown result type (might be due to invalid IL or missing references) //IL_1a74: Unknown result type (might be due to invalid IL or missing references) //IL_1a79: Unknown result type (might be due to invalid IL or missing references) //IL_1aba: Unknown result type (might be due to invalid IL or missing references) //IL_1ace: Unknown result type (might be due to invalid IL or missing references) //IL_1ae2: Unknown result type (might be due to invalid IL or missing references) //IL_1ae7: Unknown result type (might be due to invalid IL or missing references) //IL_1aec: Unknown result type (might be due to invalid IL or missing references) //IL_1af1: Unknown result type (might be due to invalid IL or missing references) //IL_1b32: Unknown result type (might be due to invalid IL or missing references) //IL_1b46: Unknown result type (might be due to invalid IL or missing references) //IL_1b5a: Unknown result type (might be due to invalid IL or missing references) //IL_1b5f: Unknown result type (might be due to invalid IL or missing references) //IL_1b64: Unknown result type (might be due to invalid IL or missing references) //IL_1b69: Unknown result type (might be due to invalid IL or missing references) //IL_1baa: Unknown result type (might be due to invalid IL or missing references) //IL_1bbe: Unknown result type (might be due to invalid IL or missing references) //IL_1bd2: Unknown result type (might be due to invalid IL or missing references) //IL_1bd7: Unknown result type (might be due to invalid IL or missing references) //IL_1bdc: Unknown result type (might be due to invalid IL or missing references) //IL_1be1: Unknown result type (might be due to invalid IL or missing references) //IL_1c22: Unknown result type (might be due to invalid IL or missing references) //IL_1c36: Unknown result type (might be due to invalid IL or missing references) //IL_1c4a: Unknown result type (might be due to invalid IL or missing references) //IL_1c4f: Unknown result type (might be due to invalid IL or missing references) //IL_1c54: Unknown result type (might be due to invalid IL or missing references) //IL_1c5c: Unknown result type (might be due to invalid IL or missing references) //IL_1c61: Unknown result type (might be due to invalid IL or missing references) //IL_1c66: Unknown result type (might be due to invalid IL or missing references) //IL_1ca7: Unknown result type (might be due to invalid IL or missing references) //IL_1cbb: Unknown result type (might be due to invalid IL or missing references) //IL_1ccf: Unknown result type (might be due to invalid IL or missing references) //IL_1cd4: Unknown result type (might be due to invalid IL or missing references) //IL_1cd9: Unknown result type (might be due to invalid IL or missing references) //IL_1cde: Unknown result type (might be due to invalid IL or missing references) //IL_1d1f: Unknown result type (might be due to invalid IL or missing references) //IL_1d33: Unknown result type (might be due to invalid IL or missing references) //IL_1d47: Unknown result type (might be due to invalid IL or missing references) //IL_1d4c: Unknown result type (might be due to invalid IL or missing references) //IL_1d51: Unknown result type (might be due to invalid IL or missing references) //IL_1d56: Unknown result type (might be due to invalid IL or missing references) //IL_1d97: Unknown result type (might be due to invalid IL or missing references) //IL_1dab: Unknown result type (might be due to invalid IL or missing references) //IL_1dbf: Unknown result type (might be due to invalid IL or missing references) //IL_1dc4: Unknown result type (might be due to invalid IL or missing references) //IL_1dc9: Unknown result type (might be due to invalid IL or missing references) //IL_1dce: Unknown result type (might be due to invalid IL or missing references) //IL_1e0f: Unknown result type (might be due to invalid IL or missing references) //IL_1e23: Unknown result type (might be due to invalid IL or missing references) //IL_1e37: Unknown result type (might be due to invalid IL or missing references) //IL_1e3c: Unknown result type (might be due to invalid IL or missing references) //IL_1e41: Unknown result type (might be due to invalid IL or missing references) //IL_1e46: Unknown result type (might be due to invalid IL or missing references) //IL_1e87: Unknown result type (might be due to invalid IL or missing references) //IL_1e9b: Unknown result type (might be due to invalid IL or missing references) //IL_1eaf: Unknown result type (might be due to invalid IL or missing references) //IL_1eb4: Unknown result type (might be due to invalid IL or missing references) //IL_1eb9: Unknown result type (might be due to invalid IL or missing references) //IL_1ede: Unknown result type (might be due to invalid IL or missing references) //IL_1ef2: Unknown result type (might be due to invalid IL or missing references) //IL_1f06: Unknown result type (might be due to invalid IL or missing references) //IL_1f0b: Unknown result type (might be due to invalid IL or missing references) //IL_1f10: Unknown result type (might be due to invalid IL or missing references) //IL_1f15: Unknown result type (might be due to invalid IL or missing references) //IL_1f56: Unknown result type (might be due to invalid IL or missing references) //IL_1f6a: Unknown result type (might be due to invalid IL or missing references) //IL_1f7e: Unknown result type (might be due to invalid IL or missing references) //IL_1f83: Unknown result type (might be due to invalid IL or missing references) //IL_1f88: Unknown result type (might be due to invalid IL or missing references) //IL_1f8d: Unknown result type (might be due to invalid IL or missing references) //IL_1fce: Unknown result type (might be due to invalid IL or missing references) //IL_1fe2: Unknown result type (might be due to invalid IL or missing references) //IL_1ff6: Unknown result type (might be due to invalid IL or missing references) //IL_1ffb: Unknown result type (might be due to invalid IL or missing references) //IL_2000: Unknown result type (might be due to invalid IL or missing references) //IL_2005: Unknown result type (might be due to invalid IL or missing references) //IL_2046: Unknown result type (might be due to invalid IL or missing references) //IL_205a: Unknown result type (might be due to invalid IL or missing references) //IL_206e: Unknown result type (might be due to invalid IL or missing references) //IL_2073: Unknown result type (might be due to invalid IL or missing references) //IL_2078: Unknown result type (might be due to invalid IL or missing references) //IL_207d: Unknown result type (might be due to invalid IL or missing references) //IL_20be: Unknown result type (might be due to invalid IL or missing references) //IL_20d2: Unknown result type (might be due to invalid IL or missing references) //IL_20e6: Unknown result type (might be due to invalid IL or missing references) //IL_20eb: Unknown result type (might be due to invalid IL or missing references) //IL_20f0: Unknown result type (might be due to invalid IL or missing references) //IL_20f5: Unknown result type (might be due to invalid IL or missing references) //IL_2136: Unknown result type (might be due to invalid IL or missing references) //IL_214a: Unknown result type (might be due to invalid IL or missing references) //IL_215e: Unknown result type (might be due to invalid IL or missing references) //IL_2163: Unknown result type (might be due to invalid IL or missing references) //IL_2168: Unknown result type (might be due to invalid IL or missing references) //IL_216d: Unknown result type (might be due to invalid IL or missing references) //IL_21ae: Unknown result type (might be due to invalid IL or missing references) //IL_21c2: Unknown result type (might be due to invalid IL or missing references) //IL_21d6: Unknown result type (might be due to invalid IL or missing references) //IL_21db: Unknown result type (might be due to invalid IL or missing references) //IL_21e0: Unknown result type (might be due to invalid IL or missing references) //IL_21e5: Unknown result type (might be due to invalid IL or missing references) //IL_2226: Unknown result type (might be due to invalid IL or missing references) //IL_223a: Unknown result type (might be due to invalid IL or missing references) //IL_224e: Unknown result type (might be due to invalid IL or missing references) //IL_2253: Unknown result type (might be due to invalid IL or missing references) //IL_2258: Unknown result type (might be due to invalid IL or missing references) //IL_225d: Unknown result type (might be due to invalid IL or missing references) //IL_229e: Unknown result type (might be due to invalid IL or missing references) //IL_22b2: Unknown result type (might be due to invalid IL or missing references) //IL_22c6: Unknown result type (might be due to invalid IL or missing references) //IL_22cb: Unknown result type (might be due to invalid IL or missing references) //IL_22d0: Unknown result type (might be due to invalid IL or missing references) //IL_22d5: Unknown result type (might be due to invalid IL or missing references) //IL_2316: Unknown result type (might be due to invalid IL or missing references) //IL_232a: Unknown result type (might be due to invalid IL or missing references) //IL_233e: Unknown result type (might be due to invalid IL or missing references) //IL_2343: Unknown result type (might be due to invalid IL or missing references) //IL_2348: Unknown result type (might be due to invalid IL or missing references) //IL_234d: Unknown result type (might be due to invalid IL or missing references) //IL_238e: Unknown result type (might be due to invalid IL or missing references) //IL_23a2: Unknown result type (might be due to invalid IL or missing references) //IL_23b6: Unknown result type (might be due to invalid IL or missing references) //IL_23bb: Unknown result type (might be due to invalid IL or missing references) //IL_23c0: Unknown result type (might be due to invalid IL or missing references) //IL_23c5: Unknown result type (might be due to invalid IL or missing references) //IL_2406: Unknown result type (might be due to invalid IL or missing references) //IL_241a: Unknown result type (might be due to invalid IL or missing references) //IL_242e: Unknown result type (might be due to invalid IL or missing references) //IL_2433: Unknown result type (might be due to invalid IL or missing references) //IL_2438: Unknown result type (might be due to invalid IL or missing references) //IL_243d: Unknown result type (might be due to invalid IL or missing references) //IL_247e: Unknown result type (might be due to invalid IL or missing references) //IL_2492: Unknown result type (might be due to invalid IL or missing references) //IL_24a6: Unknown result type (might be due to invalid IL or missing references) //IL_24ab: Unknown result type (might be due to invalid IL or missing references) //IL_24b0: Unknown result type (might be due to invalid IL or missing references) //IL_24b5: Unknown result type (might be due to invalid IL or missing references) //IL_24f6: Unknown result type (might be due to invalid IL or missing references) //IL_250a: Unknown result type (might be due to invalid IL or missing references) //IL_251e: Unknown result type (might be due to invalid IL or missing references) //IL_2523: Unknown result type (might be due to invalid IL or missing references) //IL_2528: Unknown result type (might be due to invalid IL or missing references) //IL_252d: Unknown result type (might be due to invalid IL or missing references) //IL_256e: Unknown result type (might be due to invalid IL or missing references) //IL_2582: Unknown result type (might be due to invalid IL or missing references) //IL_2596: Unknown result type (might be due to invalid IL or missing references) //IL_259b: Unknown result type (might be due to invalid IL or missing references) //IL_25a0: Unknown result type (might be due to invalid IL or missing references) //IL_25a5: Unknown result type (might be due to invalid IL or missing references) //IL_25e6: Unknown result type (might be due to invalid IL or missing references) //IL_25fa: Unknown result type (might be due to invalid IL or missing references) //IL_260e: Unknown result type (might be due to invalid IL or missing references) //IL_2613: Unknown result type (might be due to invalid IL or missing references) //IL_2618: Unknown result type (might be due to invalid IL or missing references) //IL_261d: Unknown result type (might be due to invalid IL or missing references) //IL_265e: Unknown result type (might be due to invalid IL or missing references) //IL_2672: Unknown result type (might be due to invalid IL or missing references) //IL_2686: Unknown result type (might be due to invalid IL or missing references) //IL_268b: Unknown result type (might be due to invalid IL or missing references) //IL_2690: Unknown result type (might be due to invalid IL or missing references) //IL_2695: Unknown result type (might be due to invalid IL or missing references) //IL_26d6: Unknown result type (might be due to invalid IL or missing references) //IL_26ea: Unknown result type (might be due to invalid IL or missing references) //IL_26fe: Unknown result type (might be due to invalid IL or missing references) //IL_2703: Unknown result type (might be due to invalid IL or missing references) //IL_2708: Unknown result type (might be due to invalid IL or missing references) //IL_270d: Unknown result type (might be due to invalid IL or missing references) //IL_274e: Unknown result type (might be due to invalid IL or missing references) //IL_2762: Unknown result type (might be due to invalid IL or missing references) //IL_2776: Unknown result type (might be due to invalid IL or missing references) //IL_277b: Unknown result type (might be due to invalid IL or missing references) //IL_2780: Unknown result type (might be due to invalid IL or missing references) //IL_2785: Unknown result type (might be due to invalid IL or missing references) //IL_27c6: Unknown result type (might be due to invalid IL or missing references) //IL_27da: Unknown result type (might be due to invalid IL or missing references) //IL_27ee: Unknown result type (might be due to invalid IL or missing references) //IL_27f3: Unknown result type (might be due to invalid IL or missing references) //IL_27f8: Unknown result type (might be due to invalid IL or missing references) //IL_27fd: Unknown result type (might be due to invalid IL or missing references) //IL_283e: Unknown result type (might be due to invalid IL or missing references) //IL_2852: Unknown result type (might be due to invalid IL or missing references) //IL_2866: Unknown result type (might be due to invalid IL or missing references) //IL_286b: Unknown result type (might be due to invalid IL or missing references) //IL_2870: Unknown result type (might be due to invalid IL or missing references) //IL_2875: Unknown result type (might be due to invalid IL or missing references) //IL_28b6: Unknown result type (might be due to invalid IL or missing references) //IL_28ca: Unknown result type (might be due to invalid IL or missing references) //IL_28de: Unknown result type (might be due to invalid IL or missing references) //IL_28e3: Unknown result type (might be due to invalid IL or missing references) //IL_28e8: Unknown result type (might be due to invalid IL or missing references) //IL_28ed: Unknown result type (might be due to invalid IL or missing references) //IL_292e: Unknown result type (might be due to invalid IL or missing references) //IL_2942: Unknown result type (might be due to invalid IL or missing references) //IL_2956: Unknown result type (might be due to invalid IL or missing references) //IL_295b: Unknown result type (might be due to invalid IL or missing references) //IL_2960: Unknown result type (might be due to invalid IL or missing references) //IL_2965: Unknown result type (might be due to invalid IL or missing references) //IL_29a6: Unknown result type (might be due to invalid IL or missing references) //IL_29ba: Unknown result type (might be due to invalid IL or missing references) //IL_29ce: Unknown result type (might be due to invalid IL or missing references) //IL_29d3: Unknown result type (might be due to invalid IL or missing references) //IL_29d8: Unknown result type (might be due to invalid IL or missing references) //IL_29dd: Unknown result type (might be due to invalid IL or missing references) //IL_2a1e: Unknown result type (might be due to invalid IL or missing references) //IL_2a32: Unknown result type (might be due to invalid IL or missing references) //IL_2a46: Unknown result type (might be due to invalid IL or missing references) //IL_2a4b: Unknown result type (might be due to invalid IL or missing references) //IL_2a50: Unknown result type (might be due to invalid IL or missing references) //IL_2a75: Unknown result type (might be due to invalid IL or missing references) //IL_2a89: Unknown result type (might be due to invalid IL or missing references) //IL_2a9d: Unknown result type (might be due to invalid IL or missing references) //IL_2aa2: Unknown result type (might be due to invalid IL or missing references) //IL_2aa7: Unknown result type (might be due to invalid IL or missing references) //IL_2aac: Unknown result type (might be due to invalid IL or missing references) //IL_2aed: Unknown result type (might be due to invalid IL or missing references) //IL_2b01: Unknown result type (might be due to invalid IL or missing references) //IL_2b15: Unknown result type (might be due to invalid IL or missing references) //IL_2b1a: Unknown result type (might be due to invalid IL or missing references) //IL_2b1f: Unknown result type (might be due to invalid IL or missing references) //IL_2b24: Unknown result type (might be due to invalid IL or missing references) //IL_2b65: Unknown result type (might be due to invalid IL or missing references) //IL_2b79: Unknown result type (might be due to invalid IL or missing references) //IL_2b8d: Unknown result type (might be due to invalid IL or missing references) //IL_2b92: Unknown result type (might be due to invalid IL or missing references) //IL_2b97: Unknown result type (might be due to invalid IL or missing references) //IL_2b9c: Unknown result type (might be due to invalid IL or missing references) //IL_2bdd: Unknown result type (might be due to invalid IL or missing references) //IL_2bf1: Unknown result type (might be due to invalid IL or missing references) //IL_2c05: Unknown result type (might be due to invalid IL or missing references) //IL_2c0a: Unknown result type (might be due to invalid IL or missing references) //IL_2c0f: Unknown result type (might be due to invalid IL or missing references) //IL_2c14: Unknown result type (might be due to invalid IL or missing references) //IL_2c55: Unknown result type (might be due to invalid IL or missing references) //IL_2c69: Unknown result type (might be due to invalid IL or missing references) //IL_2c7d: Unknown result type (might be due to invalid IL or missing references) //IL_2c82: Unknown result type (might be due to invalid IL or missing references) //IL_2c87: Unknown result type (might be due to invalid IL or missing references) //IL_2c8c: Unknown result type (might be due to invalid IL or missing references) //IL_2ccd: Unknown result type (might be due to invalid IL or missing references) //IL_2ce1: Unknown result type (might be due to invalid IL or missing references) //IL_2cf5: Unknown result type (might be due to invalid IL or missing references) //IL_2cfa: Unknown result type (might be due to invalid IL or missing references) //IL_2cff: Unknown result type (might be due to invalid IL or missing references) //IL_2d04: Unknown result type (might be due to invalid IL or missing references) //IL_2d45: Unknown result type (might be due to invalid IL or missing references) //IL_2d59: Unknown result type (might be due to invalid IL or missing references) //IL_2d6d: Unknown result type (might be due to invalid IL or missing references) //IL_2d72: Unknown result type (might be due to invalid IL or missing references) //IL_2d77: Unknown result type (might be due to invalid IL or missing references) //IL_2d7c: Unknown result type (might be due to invalid IL or missing references) //IL_2dbd: Unknown result type (might be due to invalid IL or missing references) //IL_2dd1: Unknown result type (might be due to invalid IL or missing references) //IL_2de5: Unknown result type (might be due to invalid IL or missing references) //IL_2dea: Unknown result type (might be due to invalid IL or missing references) //IL_2def: Unknown result type (might be due to invalid IL or missing references) //IL_2df4: Unknown result type (might be due to invalid IL or missing references) //IL_2e35: Unknown result type (might be due to invalid IL or missing references) //IL_2e49: Unknown result type (might be due to invalid IL or missing references) //IL_2e5d: Unknown result type (might be due to invalid IL or missing references) //IL_2e62: Unknown result type (might be due to invalid IL or missing references) //IL_2e67: Unknown result type (might be due to invalid IL or missing references) //IL_2e6c: Unknown result type (might be due to invalid IL or missing references) //IL_2ead: Unknown result type (might be due to invalid IL or missing references) //IL_2ec1: Unknown result type (might be due to invalid IL or missing references) //IL_2ed5: Unknown result type (might be due to invalid IL or missing references) //IL_2eda: Unknown result type (might be due to invalid IL or missing references) //IL_2edf: Unknown result type (might be due to invalid IL or missing references) //IL_2ee4: Unknown result type (might be due to invalid IL or missing references) //IL_2f25: Unknown result type (might be due to invalid IL or missing references) //IL_2f39: Unknown result type (might be due to invalid IL or missing references) //IL_2f4d: Unknown result type (might be due to invalid IL or missing references) //IL_2f52: Unknown result type (might be due to invalid IL or missing references) //IL_2f57: Unknown result type (might be due to invalid IL or missing references) //IL_2f5c: Unknown result type (might be due to invalid IL or missing references) //IL_2f9d: Unknown result type (might be due to invalid IL or missing references) //IL_2fb1: Unknown result type (might be due to invalid IL or missing references) //IL_2fc5: Unknown result type (might be due to invalid IL or missing references) //IL_2fca: Unknown result type (might be due to invalid IL or missing references) //IL_2fcf: Unknown result type (might be due to invalid IL or missing references) //IL_2fd4: Unknown result type (might be due to invalid IL or missing references) //IL_3015: Unknown result type (might be due to invalid IL or missing references) //IL_3029: Unknown result type (might be due to invalid IL or missing references) //IL_303d: Unknown result type (might be due to invalid IL or missing references) //IL_3042: Unknown result type (might be due to invalid IL or missing references) //IL_3047: Unknown result type (might be due to invalid IL or missing references) //IL_304c: Unknown result type (might be due to invalid IL or missing references) //IL_308d: Unknown result type (might be due to invalid IL or missing references) //IL_30a1: Unknown result type (might be due to invalid IL or missing references) //IL_30b5: Unknown result type (might be due to invalid IL or missing references) //IL_30ba: Unknown result type (might be due to invalid IL or missing references) //IL_30bf: Unknown result type (might be due to invalid IL or missing references) //IL_30c4: Unknown result type (might be due to invalid IL or missing references) //IL_3105: Unknown result type (might be due to invalid IL or missing references) //IL_3119: Unknown result type (might be due to invalid IL or missing references) //IL_312d: Unknown result type (might be due to invalid IL or missing references) //IL_3132: Unknown result type (might be due to invalid IL or missing references) //IL_3137: Unknown result type (might be due to invalid IL or missing references) //IL_313c: Unknown result type (might be due to invalid IL or missing references) //IL_317d: Unknown result type (might be due to invalid IL or missing references) //IL_3191: Unknown result type (might be due to invalid IL or missing references) //IL_31a5: Unknown result type (might be due to invalid IL or missing references) //IL_31aa: Unknown result type (might be due to invalid IL or missing references) //IL_31af: Unknown result type (might be due to invalid IL or missing references) //IL_31b4: Unknown result type (might be due to invalid IL or missing references) //IL_31f5: Unknown result type (might be due to invalid IL or missing references) //IL_3209: Unknown result type (might be due to invalid IL or missing references) //IL_321d: Unknown result type (might be due to invalid IL or missing references) //IL_3222: Unknown result type (might be due to invalid IL or missing references) //IL_3227: Unknown result type (might be due to invalid IL or missing references) //IL_322c: Unknown result type (might be due to invalid IL or missing references) //IL_326d: Unknown result type (might be due to invalid IL or missing references) //IL_3281: Unknown result type (might be due to invalid IL or missing references) //IL_3295: Unknown result type (might be due to invalid IL or missing references) //IL_329a: Unknown result type (might be due to invalid IL or missing references) //IL_329f: Unknown result type (might be due to invalid IL or missing references) //IL_32c4: Unknown result type (might be due to invalid IL or missing references) //IL_32d8: Unknown result type (might be due to invalid IL or missing references) //IL_32ec: Unknown result type (might be due to invalid IL or missing references) //IL_32f1: Unknown result type (might be due to invalid IL or missing references) //IL_32f6: Unknown result type (might be due to invalid IL or missing references) //IL_32fb: Unknown result type (might be due to invalid IL or missing references) //IL_333c: Unknown result type (might be due to invalid IL or missing references) //IL_3350: Unknown result type (might be due to invalid IL or missing references) //IL_3364: Unknown result type (might be due to invalid IL or missing references) //IL_3369: Unknown result type (might be due to invalid IL or missing references) //IL_336e: Unknown result type (might be due to invalid IL or missing references) //IL_3373: Unknown result type (might be due to invalid IL or missing references) //IL_33b4: Unknown result type (might be due to invalid IL or missing references) //IL_33c8: Unknown result type (might be due to invalid IL or missing references) //IL_33dc: Unknown result type (might be due to invalid IL or missing references) //IL_33e1: Unknown result type (might be due to invalid IL or missing references) //IL_33e6: Unknown result type (might be due to invalid IL or missing references) //IL_33eb: Unknown result type (might be due to invalid IL or missing references) //IL_342c: Unknown result type (might be due to invalid IL or missing references) //IL_3440: Unknown result type (might be due to invalid IL or missing references) //IL_3454: Unknown result type (might be due to invalid IL or missing references) //IL_3459: Unknown result type (might be due to invalid IL or missing references) //IL_345e: Unknown result type (might be due to invalid IL or missing references) //IL_3463: Unknown result type (might be due to invalid IL or missing references) //IL_34a4: Unknown result type (might be due to invalid IL or missing references) //IL_34b8: Unknown result type (might be due to invalid IL or missing references) //IL_34cc: Unknown result type (might be due to invalid IL or missing references) //IL_34d1: Unknown result type (might be due to invalid IL or missing references) //IL_34d6: Unknown result type (might be due to invalid IL or missing references) //IL_34db: Unknown result type (might be due to invalid IL or missing references) //IL_351c: Unknown result type (might be due to invalid IL or missing references) //IL_3530: Unknown result type (might be due to invalid IL or missing references) //IL_3544: Unknown result type (might be due to invalid IL or missing references) //IL_3549: Unknown result type (might be due to invalid IL or missing references) //IL_354e: Unknown result type (might be due to invalid IL or missing references) //IL_3553: Unknown result type (might be due to invalid IL or missing references) //IL_3594: Unknown result type (might be due to invalid IL or missing references) //IL_35a8: Unknown result type (might be due to invalid IL or missing references) //IL_35bc: Unknown result type (might be due to invalid IL or missing references) //IL_35c1: Unknown result type (might be due to invalid IL or missing references) //IL_35c6: Unknown result type (might be due to invalid IL or missing references) //IL_35cb: Unknown result type (might be due to invalid IL or missing references) //IL_360c: Unknown result type (might be due to invalid IL or missing references) //IL_3620: Unknown result type (might be due to invalid IL or missing references) //IL_3634: Unknown result type (might be due to invalid IL or missing references) //IL_3639: Unknown result type (might be due to invalid IL or missing references) //IL_363e: Unknown result type (might be due to invalid IL or missing references) //IL_3643: Unknown result type (might be due to invalid IL or missing references) //IL_3684: Unknown result type (might be due to invalid IL or missing references) //IL_3698: Unknown result type (might be due to invalid IL or missing references) //IL_36ac: Unknown result type (might be due to invalid IL or missing references) //IL_36b1: Unknown result type (might be due to invalid IL or missing references) //IL_36b6: Unknown result type (might be due to invalid IL or missing references) //IL_36bb: Unknown result type (might be due to invalid IL or missing references) //IL_36fc: Unknown result type (might be due to invalid IL or missing references) //IL_3710: Unknown result type (might be due to invalid IL or missing references) //IL_3724: Unknown result type (might be due to invalid IL or missing references) //IL_3729: Unknown result type (might be due to invalid IL or missing references) //IL_372e: Unknown result type (might be due to invalid IL or missing references) //IL_3733: Unknown result type (might be due to invalid IL or missing references) //IL_3774: Unknown result type (might be due to invalid IL or missing references) //IL_3788: Unknown result type (might be due to invalid IL or missing references) //IL_379c: Unknown result type (might be due to invalid IL or missing references) //IL_37a1: Unknown result type (might be due to invalid IL or missing references) //IL_37a6: Unknown result type (might be due to invalid IL or missing references) //IL_37ab: Unknown result type (might be due to invalid IL or missing references) //IL_37ec: Unknown result type (might be due to invalid IL or missing references) //IL_3800: Unknown result type (might be due to invalid IL or missing references) //IL_3814: Unknown result type (might be due to invalid IL or missing references) //IL_3819: Unknown result type (might be due to invalid IL or missing references) //IL_381e: Unknown result type (might be due to invalid IL or missing references) //IL_3823: Unknown result type (might be due to invalid IL or missing references) //IL_3864: Unknown result type (might be due to invalid IL or missing references) //IL_3878: Unknown result type (might be due to invalid IL or missing references) //IL_388c: Unknown result type (might be due to invalid IL or missing references) //IL_3891: Unknown result type (might be due to invalid IL or missing references) //IL_3896: Unknown result type (might be due to invalid IL or missing references) //IL_389b: Unknown result type (might be due to invalid IL or missing references) //IL_38dc: Unknown result type (might be due to invalid IL or missing references) //IL_38f0: Unknown result type (might be due to invalid IL or missing references) //IL_3904: Unknown result type (might be due to invalid IL or missing references) //IL_3909: Unknown result type (might be due to invalid IL or missing references) //IL_390e: Unknown result type (might be due to invalid IL or missing references) //IL_3913: Unknown result type (might be due to invalid IL or missing references) //IL_3954: Unknown result type (might be due to invalid IL or missing references) //IL_3968: Unknown result type (might be due to invalid IL or missing references) //IL_397c: Unknown result type (might be due to invalid IL or missing references) //IL_3981: Unknown result type (might be due to invalid IL or missing references) //IL_3986: Unknown result type (might be due to invalid IL or missing references) //IL_398b: Unknown result type (might be due to invalid IL or missing references) //IL_39cc: Unknown result type (might be due to invalid IL or missing references) //IL_39e0: Unknown result type (might be due to invalid IL or missing references) //IL_39f4: Unknown result type (might be due to invalid IL or missing references) //IL_39f9: Unknown result type (might be due to invalid IL or missing references) //IL_39fe: Unknown result type (might be due to invalid IL or missing references) //IL_3a03: Unknown result type (might be due to invalid IL or missing references) //IL_3a44: Unknown result type (might be due to invalid IL or missing references) //IL_3a58: Unknown result type (might be due to invalid IL or missing references) //IL_3a6c: Unknown result type (might be due to invalid IL or missing references) //IL_3a71: Unknown result type (might be due to invalid IL or missing references) //IL_3a76: Unknown result type (might be due to invalid IL or missing references) //IL_3a7b: Unknown result type (might be due to invalid IL or missing references) //IL_3abc: Unknown result type (might be due to invalid IL or missing references) //IL_3ad0: Unknown result type (might be due to invalid IL or missing references) //IL_3ae4: Unknown result type (might be due to invalid IL or missing references) //IL_3ae9: Unknown result type (might be due to invalid IL or missing references) //IL_3aee: Unknown result type (might be due to invalid IL or missing references) //IL_3af3: Unknown result type (might be due to invalid IL or missing references) //IL_3b34: Unknown result type (might be due to invalid IL or missing references) //IL_3b48: Unknown result type (might be due to invalid IL or missing references) //IL_3b5c: Unknown result type (might be due to invalid IL or missing references) //IL_3b61: Unknown result type (might be due to invalid IL or missing references) //IL_3b66: Unknown result type (might be due to invalid IL or missing references) //IL_3b6b: Unknown result type (might be due to invalid IL or missing references) //IL_3bac: Unknown result type (might be due to invalid IL or missing references) //IL_3bc0: Unknown result type (might be due to invalid IL or missing references) //IL_3bd4: Unknown result type (might be due to invalid IL or missing references) //IL_3bd9: Unknown result type (might be due to invalid IL or missing references) //IL_3bde: Unknown result type (might be due to invalid IL or missing references) //IL_3c03: Unknown result type (might be due to invalid IL or missing references) //IL_3c17: Unknown result type (might be due to invalid IL or missing references) //IL_3c2b: Unknown result type (might be due to invalid IL or missing references) //IL_3c30: Unknown result type (might be due to invalid IL or missing references) //IL_3c35: Unknown result type (might be due to invalid IL or missing references) //IL_3c5a: Unknown result type (might be due to invalid IL or missing references) //IL_3c6e: Unknown result type (might be due to invalid IL or missing references) //IL_3c82: Unknown result type (might be due to invalid IL or missing references) //IL_3c87: Unknown result type (might be due to invalid IL or missing references) //IL_3c8c: Unknown result type (might be due to invalid IL or missing references) //IL_3cb1: Unknown result type (might be due to invalid IL or missing references) //IL_3cc5: Unknown result type (might be due to invalid IL or missing references) //IL_3cd9: Unknown result type (might be due to invalid IL or missing references) //IL_3cde: Unknown result type (might be due to invalid IL or missing references) //IL_3ce3: Unknown result type (might be due to invalid IL or missing references) //IL_3d08: Unknown result type (might be due to invalid IL or missing references) //IL_3d1c: Unknown result type (might be due to invalid IL or missing references) //IL_3d30: Unknown result type (might be due to invalid IL or missing references) //IL_3d35: Unknown result type (might be due to invalid IL or missing references) //IL_3d3a: Unknown result type (might be due to invalid IL or missing references) //IL_3d5f: Unknown result type (might be due to invalid IL or missing references) //IL_3d73: Unknown result type (might be due to invalid IL or missing references) //IL_3d87: Unknown result type (might be due to invalid IL or missing references) //IL_3d8c: Unknown result type (might be due to invalid IL or missing references) //IL_3d91: Unknown result type (might be due to invalid IL or missing references) //IL_3d96: Unknown result type (might be due to invalid IL or missing references) //IL_3dd7: Unknown result type (might be due to invalid IL or missing references) //IL_3deb: Unknown result type (might be due to invalid IL or missing references) //IL_3dff: Unknown result type (might be due to invalid IL or missing references) //IL_3e04: Unknown result type (might be due to invalid IL or missing references) //IL_3e09: Unknown result type (might be due to invalid IL or missing references) //IL_3e0e: Unknown result type (might be due to invalid IL or missing references) //IL_3e4f: Unknown result type (might be due to invalid IL or missing references) //IL_3e63: Unknown result type (might be due to invalid IL or missing references) //IL_3e77: Unknown result type (might be due to invalid IL or missing references) //IL_3e7c: Unknown result type (might be due to invalid IL or missing references) //IL_3e81: Unknown result type (might be due to invalid IL or missing references) //IL_3e86: Unknown result type (might be due to invalid IL or missing references) //IL_3ec7: Unknown result type (might be due to invalid IL or missing references) //IL_3edb: Unknown result type (might be due to invalid IL or missing references) //IL_3eef: Unknown result type (might be due to invalid IL or missing references) //IL_3ef4: Unknown result type (might be due to invalid IL or missing references) //IL_3ef9: Unknown result type (might be due to invalid IL or missing references) //IL_3f1e: Unknown result type (might be due to invalid IL or missing references) //IL_3f32: Unknown result type (might be due to invalid IL or missing references) //IL_3f46: Unknown result type (might be due to invalid IL or missing references) //IL_3f4b: Unknown result type (might be due to invalid IL or missing references) //IL_3f50: Unknown result type (might be due to invalid IL or missing references) //IL_3f55: Unknown result type (might be due to invalid IL or missing references) //IL_3f96: Unknown result type (might be due to invalid IL or missing references) //IL_3faa: Unknown result type (might be due to invalid IL or missing references) //IL_3fbe: Unknown result type (might be due to invalid IL or missing references) //IL_3fc3: Unknown result type (might be due to invalid IL or missing references) //IL_3fc8: Unknown result type (might be due to invalid IL or missing references) //IL_3fcd: Unknown result type (might be due to invalid IL or missing references) //IL_400e: Unknown result type (might be due to invalid IL or missing references) //IL_4022: Unknown result type (might be due to invalid IL or missing references) //IL_4036: Unknown result type (might be due to invalid IL or missing references) //IL_403b: Unknown result type (might be due to invalid IL or missing references) //IL_4040: Unknown result type (might be due to invalid IL or missing references) //IL_4045: Unknown result type (might be due to invalid IL or missing references) //IL_4086: Unknown result type (might be due to invalid IL or missing references) //IL_409a: Unknown result type (might be due to invalid IL or missing references) //IL_40ae: Unknown result type (might be due to invalid IL or missing references) //IL_40b3: Unknown result type (might be due to invalid IL or missing references) //IL_40b8: Unknown result type (might be due to invalid IL or missing references) //IL_40bd: Unknown result type (might be due to invalid IL or missing references) //IL_40fe: Unknown result type (might be due to invalid IL or missing references) //IL_4112: Unknown result type (might be due to invalid IL or missing references) //IL_4126: Unknown result type (might be due to invalid IL or missing references) //IL_412b: Unknown result type (might be due to invalid IL or missing references) //IL_4130: Unknown result type (might be due to invalid IL or missing references) //IL_4135: Unknown result type (might be due to invalid IL or missing references) //IL_4176: Unknown result type (might be due to invalid IL or missing references) //IL_418a: Unknown result type (might be due to invalid IL or missing references) //IL_419e: Unknown result type (might be due to invalid IL or missing references) //IL_41a3: Unknown result type (might be due to invalid IL or missing references) //IL_41a8: Unknown result type (might be due to invalid IL or missing references) //IL_41ad: Unknown result type (might be due to invalid IL or missing references) //IL_41ee: Unknown result type (might be due to invalid IL or missing references) //IL_4202: Unknown result type (might be due to invalid IL or missing references) //IL_4216: Unknown result type (might be due to invalid IL or missing references) //IL_421b: Unknown result type (might be due to invalid IL or missing references) //IL_4220: Unknown result type (might be due to invalid IL or missing references) //IL_4245: Unknown result type (might be due to invalid IL or missing references) //IL_4259: Unknown result type (might be due to invalid IL or missing references) //IL_426d: Unknown result type (might be due to invalid IL or missing references) //IL_4272: Unknown result type (might be due to invalid IL or missing references) //IL_4277: Unknown result type (might be due to invalid IL or missing references) //IL_427c: Unknown result type (might be due to invalid IL or missing references) //IL_42bd: Unknown result type (might be due to invalid IL or missing references) //IL_42d1: Unknown result type (might be due to invalid IL or missing references) //IL_42e5: Unknown result type (might be due to invalid IL or missing references) //IL_42ea: Unknown result type (might be due to invalid IL or missing references) //IL_42ef: Unknown result type (might be due to invalid IL or missing references) //IL_42f4: Unknown result type (might be due to invalid IL or missing references) //IL_4335: Unknown result type (might be due to invalid IL or missing references) //IL_4349: Unknown result type (might be due to invalid IL or missing references) //IL_435d: Unknown result type (might be due to invalid IL or missing references) //IL_4362: Unknown result type (might be due to invalid IL or missing references) //IL_4367: Unknown result type (might be due to invalid IL or missing references) //IL_436c: Unknown result type (might be due to invalid IL or missing references) //IL_43ad: Unknown result type (might be due to invalid IL or missing references) //IL_43c1: Unknown result type (might be due to invalid IL or missing references) //IL_43d5: Unknown result type (might be due to invalid IL or missing references) //IL_43da: Unknown result type (might be due to invalid IL or missing references) //IL_43df: Unknown result type (might be due to invalid IL or missing references) //IL_43e4: Unknown result type (might be due to invalid IL or missing references) //IL_4425: Unknown result type (might be due to invalid IL or missing references) //IL_4439: Unknown result type (might be due to invalid IL or missing references) //IL_444d: Unknown result type (might be due to invalid IL or missing references) //IL_4452: Unknown result type (might be due to invalid IL or missing references) //IL_4457: Unknown result type (might be due to invalid IL or missing references) //IL_445c: Unknown result type (might be due to invalid IL or missing references) //IL_449d: Unknown result type (might be due to invalid IL or missing references) //IL_44b1: Unknown result type (might be due to invalid IL or missing references) //IL_44c5: Unknown result type (might be due to invalid IL or missing references) //IL_44ca: Unknown result type (might be due to invalid IL or missing references) //IL_44cf: Unknown result type (might be due to invalid IL or missing references) //IL_44d4: Unknown result type (might be due to invalid IL or missing references) //IL_4515: Unknown result type (might be due to invalid IL or missing references) //IL_4529: Unknown result type (might be due to invalid IL or missing references) //IL_453d: Unknown result type (might be due to invalid IL or missing references) //IL_4542: Unknown result type (might be due to invalid IL or missing references) //IL_4547: Unknown result type (might be due to invalid IL or missing references) //IL_454c: Unknown result type (might be due to invalid IL or missing references) //IL_458d: Unknown result type (might be due to invalid IL or missing references) //IL_45a1: Unknown result type (might be due to invalid IL or missing references) //IL_45b5: Unknown result type (might be due to invalid IL or missing references) //IL_45ba: Unknown result type (might be due to invalid IL or missing references) //IL_45bf: Unknown result type (might be due to invalid IL or missing references) //IL_45c4: Unknown result type (might be due to invalid IL or missing references) //IL_4605: Unknown result type (might be due to invalid IL or missing references) //IL_4619: Unknown result type (might be due to invalid IL or missing references) //IL_462d: Unknown result type (might be due to invalid IL or missing references) //IL_4632: Unknown result type (might be due to invalid IL or missing references) //IL_4637: Unknown result type (might be due to invalid IL or missing references) //IL_463c: Unknown result type (might be due to invalid IL or missing references) //IL_467d: Unknown result type (might be due to invalid IL or missing references) //IL_4691: Unknown result type (might be due to invalid IL or missing references) //IL_46a5: Unknown result type (might be due to invalid IL or missing references) //IL_46aa: Unknown result type (might be due to invalid IL or missing references) //IL_46af: Unknown result type (might be due to invalid IL or missing references) //IL_46b4: Unknown result type (might be due to invalid IL or missing references) //IL_46f5: Unknown result type (might be due to invalid IL or missing references) //IL_4709: Unknown result type (might be due to invalid IL or missing references) //IL_471d: Unknown result type (might be due to invalid IL or missing references) //IL_4722: Unknown result type (might be due to invalid IL or missing references) //IL_4727: Unknown result type (might be due to invalid IL or missing references) //IL_474c: Unknown result type (might be due to invalid IL or missing references) //IL_4760: Unknown result type (might be due to invalid IL or missing references) //IL_4774: Unknown result type (might be due to invalid IL or missing references) //IL_4779: Unknown result type (might be due to invalid IL or missing references) //IL_477e: Unknown result type (might be due to invalid IL or missing references) //IL_4783: Unknown result type (might be due to invalid IL or missing references) //IL_47c4: Unknown result type (might be due to invalid IL or missing references) //IL_47d8: Unknown result type (might be due to invalid IL or missing references) //IL_47ec: Unknown result type (might be due to invalid IL or missing references) //IL_47f1: Unknown result type (might be due to invalid IL or missing references) //IL_47f6: Unknown result type (might be due to invalid IL or missing references) //IL_47fb: Unknown result type (might be due to invalid IL or missing references) //IL_483c: Unknown result type (might be due to invalid IL or missing references) //IL_4850: Unknown result type (might be due to invalid IL or missing references) //IL_4864: Unknown result type (might be due to invalid IL or missing references) //IL_4869: Unknown result type (might be due to invalid IL or missing references) //IL_486e: Unknown result type (might be due to invalid IL or missing references) //IL_4873: Unknown result type (might be due to invalid IL or missing references) //IL_48b4: Unknown result type (might be due to invalid IL or missing references) //IL_48c8: Unknown result type (might be due to invalid IL or missing references) //IL_48dc: Unknown result type (might be due to invalid IL or missing references) //IL_48e1: Unknown result type (might be due to invalid IL or missing references) //IL_48e6: Unknown result type (might be due to invalid IL or missing references) //IL_490b: Unknown result type (might be due to invalid IL or missing references) //IL_491f: Unknown result type (might be due to invalid IL or missing references) //IL_4933: Unknown result type (might be due to invalid IL or missing references) //IL_4938: Unknown result type (might be due to invalid IL or missing references) //IL_493d: Unknown result type (might be due to invalid IL or missing references) //IL_4942: Unknown result type (might be due to invalid IL or missing references) //IL_4983: Unknown result type (might be due to invalid IL or missing references) //IL_4997: Unknown result type (might be due to invalid IL or missing references) //IL_49ab: Unknown result type (might be due to invalid IL or missing references) //IL_49b0: Unknown result type (might be due to invalid IL or missing references) //IL_49b5: Unknown result type (might be due to invalid IL or missing references) //IL_49ba: Unknown result type (might be due to invalid IL or missing references) //IL_49fb: Unknown result type (might be due to invalid IL or missing references) //IL_4a0f: Unknown result type (might be due to invalid IL or missing references) //IL_4a23: Unknown result type (might be due to invalid IL or missing references) //IL_4a28: Unknown result type (might be due to invalid IL or missing references) //IL_4a2d: Unknown result type (might be due to invalid IL or missing references) //IL_4a32: Unknown result type (might be due to invalid IL or missing references) //IL_4a73: Unknown result type (might be due to invalid IL or missing references) //IL_4a87: Unknown result type (might be due to invalid IL or missing references) //IL_4a9b: Unknown result type (might be due to invalid IL or missing references) //IL_4aa0: Unknown result type (might be due to invalid IL or missing references) //IL_4aa5: Unknown result type (might be due to invalid IL or missing references) //IL_4aaa: Unknown result type (might be due to invalid IL or missing references) //IL_4aeb: Unknown result type (might be due to invalid IL or missing references) //IL_4aff: Unknown result type (might be due to invalid IL or missing references) //IL_4b13: Unknown result type (might be due to invalid IL or missing references) //IL_4b18: Unknown result type (might be due to invalid IL or missing references) //IL_4b1d: Unknown result type (might be due to invalid IL or missing references) //IL_4b22: Unknown result type (might be due to invalid IL or missing references) //IL_4b63: Unknown result type (might be due to invalid IL or missing references) //IL_4b77: Unknown result type (might be due to invalid IL or missing references) //IL_4b8b: Unknown result type (might be due to invalid IL or missing references) //IL_4b90: Unknown result type (might be due to invalid IL or missing references) //IL_4b95: Unknown result type (might be due to invalid IL or missing references) //IL_4b9a: Unknown result type (might be due to invalid IL or missing references) //IL_4bdb: Unknown result type (might be due to invalid IL or missing references) //IL_4bef: Unknown result type (might be due to invalid IL or missing references) //IL_4c03: Unknown result type (might be due to invalid IL or missing references) //IL_4c08: Unknown result type (might be due to invalid IL or missing references) //IL_4c0d: Unknown result type (might be due to invalid IL or missing references) //IL_4c12: Unknown result type (might be due to invalid IL or missing references) //IL_4c53: Unknown result type (might be due to invalid IL or missing references) //IL_4c67: Unknown result type (might be due to invalid IL or missing references) //IL_4c7b: Unknown result type (might be due to invalid IL or missing references) //IL_4c80: Unknown result type (might be due to invalid IL or missing references) //IL_4c85: Unknown result type (might be due to invalid IL or missing references) //IL_4c8a: Unknown result type (might be due to invalid IL or missing references) //IL_4ccb: Unknown result type (might be due to invalid IL or missing references) //IL_4cdf: Unknown result type (might be due to invalid IL or missing references) //IL_4cf3: Unknown result type (might be due to invalid IL or missing references) //IL_4cf8: Unknown result type (might be due to invalid IL or missing references) //IL_4cfd: Unknown result type (might be due to invalid IL or missing references) //IL_4d02: Unknown result type (might be due to invalid IL or missing references) //IL_4d43: Unknown result type (might be due to invalid IL or missing references) //IL_4d57: Unknown result type (might be due to invalid IL or missing references) //IL_4d6b: Unknown result type (might be due to invalid IL or missing references) //IL_4d70: Unknown result type (might be due to invalid IL or missing references) //IL_4d75: Unknown result type (might be due to invalid IL or missing references) //IL_4d7a: Unknown result type (might be due to invalid IL or missing references) //IL_4dbb: Unknown result type (might be due to invalid IL or missing references) //IL_4dcf: Unknown result type (might be due to invalid IL or missing references) //IL_4de3: Unknown result type (might be due to invalid IL or missing references) //IL_4de8: Unknown result type (might be due to invalid IL or missing references) //IL_4ded: Unknown result type (might be due to invalid IL or missing references) //IL_4df2: Unknown result type (might be due to invalid IL or missing references) //IL_4e33: Unknown result type (might be due to invalid IL or missing references) //IL_4e47: Unknown result type (might be due to invalid IL or missing references) //IL_4e5b: Unknown result type (might be due to invalid IL or missing references) //IL_4e60: Unknown result type (might be due to invalid IL or missing references) //IL_4e65: Unknown result type (might be due to invalid IL or missing references) //IL_4e6a: Unknown result type (might be due to invalid IL or missing references) //IL_4eab: Unknown result type (might be due to invalid IL or missing references) //IL_4ebf: Unknown result type (might be due to invalid IL or missing references) //IL_4ed3: Unknown result type (might be due to invalid IL or missing references) //IL_4ed8: Unknown result type (might be due to invalid IL or missing references) //IL_4edd: Unknown result type (might be due to invalid IL or missing references) //IL_4ee2: Unknown result type (might be due to invalid IL or missing references) //IL_4f23: Unknown result type (might be due to invalid IL or missing references) //IL_4f37: Unknown result type (might be due to invalid IL or missing references) //IL_4f4b: Unknown result type (might be due to invalid IL or missing references) //IL_4f50: Unknown result type (might be due to invalid IL or missing references) //IL_4f55: Unknown result type (might be due to invalid IL or missing references) //IL_4f5d: Unknown result type (might be due to invalid IL or missing references) //IL_4f62: Unknown result type (might be due to invalid IL or missing references) //IL_4f67: Unknown result type (might be due to invalid IL or missing references) //IL_4fa8: Unknown result type (might be due to invalid IL or missing references) //IL_4fbc: Unknown result type (might be due to invalid IL or missing references) //IL_4fd0: Unknown result type (might be due to invalid IL or missing references) //IL_4fd5: Unknown result type (might be due to invalid IL or missing references) //IL_4fda: Unknown result type (might be due to invalid IL or missing references) //IL_4fdf: Unknown result type (might be due to invalid IL or missing references) //IL_5020: Unknown result type (might be due to invalid IL or missing references) //IL_5034: Unknown result type (might be due to invalid IL or missing references) //IL_5048: Unknown result type (might be due to invalid IL or missing references) //IL_504d: Unknown result type (might be due to invalid IL or missing references) //IL_5052: Unknown result type (might be due to invalid IL or missing references) //IL_5057: Unknown result type (might be due to invalid IL or missing references) //IL_5098: Unknown result type (might be due to invalid IL or missing references) //IL_50ac: Unknown result type (might be due to invalid IL or missing references) //IL_50c0: Unknown result type (might be due to invalid IL or missing references) //IL_50c5: Unknown result type (might be due to invalid IL or missing references) //IL_50ca: Unknown result type (might be due to invalid IL or missing references) //IL_50cf: Unknown result type (might be due to invalid IL or missing references) //IL_5110: Unknown result type (might be due to invalid IL or missing references) //IL_5124: Unknown result type (might be due to invalid IL or missing references) //IL_5138: Unknown result type (might be due to invalid IL or missing references) //IL_513d: Unknown result type (might be due to invalid IL or missing references) //IL_5142: Unknown result type (might be due to invalid IL or missing references) //IL_5147: Unknown result type (might be due to invalid IL or missing references) //IL_5188: Unknown result type (might be due to invalid IL or missing references) //IL_519c: Unknown result type (might be due to invalid IL or missing references) //IL_51b0: Unknown result type (might be due to invalid IL or missing references) //IL_51b5: Unknown result type (might be due to invalid IL or missing references) //IL_51ba: Unknown result type (might be due to invalid IL or missing references) //IL_51bf: Unknown result type (might be due to invalid IL or missing references) //IL_5200: Unknown result type (might be due to invalid IL or missing references) //IL_5214: Unknown result type (might be due to invalid IL or missing references) //IL_5228: Unknown result type (might be due to invalid IL or missing references) //IL_522d: Unknown result type (might be due to invalid IL or missing references) //IL_5232: Unknown result type (might be due to invalid IL or missing references) //IL_5237: Unknown result type (might be due to invalid IL or missing references) //IL_5278: Unknown result type (might be due to invalid IL or missing references) //IL_528c: Unknown result type (might be due to invalid IL or missing references) //IL_52a0: Unknown result type (might be due to invalid IL or missing references) //IL_52a5: Unknown result type (might be due to invalid IL or missing references) //IL_52aa: Unknown result type (might be due to invalid IL or missing references) //IL_52af: Unknown result type (might be due to invalid IL or missing references) //IL_52f0: Unknown result type (might be due to invalid IL or missing references) //IL_5304: Unknown result type (might be due to invalid IL or missing references) //IL_5318: Unknown result type (might be due to invalid IL or missing references) //IL_531d: Unknown result type (might be due to invalid IL or missing references) //IL_5322: Unknown result type (might be due to invalid IL or missing references) //IL_5327: Unknown result type (might be due to invalid IL or missing references) //IL_5368: Unknown result type (might be due to invalid IL or missing references) //IL_537c: Unknown result type (might be due to invalid IL or missing references) //IL_5390: Unknown result type (might be due to invalid IL or missing references) //IL_5395: Unknown result type (might be due to invalid IL or missing references) //IL_539a: Unknown result type (might be due to invalid IL or missing references) //IL_539f: Unknown result type (might be due to invalid IL or missing references) //IL_53e0: Unknown result type (might be due to invalid IL or missing references) //IL_53f4: Unknown result type (might be due to invalid IL or missing references) //IL_5408: Unknown result type (might be due to invalid IL or missing references) //IL_540d: Unknown result type (might be due to invalid IL or missing references) //IL_5412: Unknown result type (might be due to invalid IL or missing references) //IL_5417: Unknown result type (might be due to invalid IL or missing references) //IL_5458: Unknown result type (might be due to invalid IL or missing references) //IL_546c: Unknown result type (might be due to invalid IL or missing references) //IL_5480: Unknown result type (might be due to invalid IL or missing references) //IL_5485: Unknown result type (might be due to invalid IL or missing references) //IL_548a: Unknown result type (might be due to invalid IL or missing references) //IL_548f: Unknown result type (might be due to invalid IL or missing references) itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AlienHead"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAlienHead"), "Chest", new Vector3(-0.22836f, -0.0607f, 0.02364f), new Vector3(275.4761f, 39.75848f, 230.3732f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ArmorPlate"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRepulsionArmorPlate"), "Chest", new Vector3(0.04097f, 0.23346f, -0.18211f), new Vector3(270f, 180f, 0f), new Vector3(0.32704f, 0.32704f, 0.32704f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ArmorReductionOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarhammer"), "Chest", new Vector3(0.21537f, 0.50305f, -0.28929f), new Vector3(307.5285f, 92.8965f, 267.7022f), new Vector3(0.38161f, 0.38161f, 0.38161f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AttackSpeedAndMoveSpeed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCoffee"), "Chest", new Vector3(-0.24289f, 0.01405f, 0.02006f), new Vector3(347.9057f, 8.53998f, 352.3178f), new Vector3(0.15865f, 0.15865f, 0.15865f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AttackSpeedOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWolfPelt"), "Head", new Vector3(0f, 0.27047f, 0.06131f), new Vector3(0f, 0f, 0f), new Vector3(0.49893f, 0.49893f, 0.49893f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AutoCastEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFossil"), "Chest", new Vector3(-0.28162f, 0.35172f, -0.11873f), new Vector3(0.16693f, 1.06436f, 342.1766f), new Vector3(0.61133f, 0.61133f, 0.61133f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Bandolier"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBandolier"), "Chest", new Vector3(0.00239f, -0.12299f, -0.00737f), new Vector3(270f, 0f, 0f), new Vector3(0.46002f, 0.46002f, 0.46002f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrierOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrooch"), "Chest", new Vector3(-0.28731f, 0.33665f, -0.12407f), new Vector3(70.78168f, 255.7213f, 346.0124f), new Vector3(0.72337f, 0.72337f, 0.72337f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrierOnOverHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAegis"), "Base", new Vector3(0.01287f, 0.30071f, 0.27752f), new Vector3(0f, 0f, 180f), new Vector3(0.32972f, 0.32972f, 0.32972f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Bear"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBear"), "Chest", new Vector3(-0.15314f, 0.5001f, -0.04922f), new Vector3(0.09832f, 359.1789f, 13.65848f), new Vector3(0.15402f, 0.15402f, 0.15402f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BearVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBearVoid"), "Chest", new Vector3(-0.15314f, 0.5001f, -0.04922f), new Vector3(0.09832f, 359.1789f, 13.65848f), new Vector3(0.15402f, 0.15402f, 0.15402f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BeetleGland"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBeetleGland"), "Chest", new Vector3(0.26902f, -0.16111f, 0.00791f), new Vector3(356.2571f, 152.9436f, 311.4961f), new Vector3(0.10258f, 0.10578f, 0.10578f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Behemoth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBehemoth"), "Gun", new Vector3(-0.00416f, 0.04763f, 0.07932f), new Vector3(0f, 351.7302f, 180f), new Vector3(0.06758f, 0.06758f, 0.06758f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTriTip"), "Gun", new Vector3(-0.01933f, 0.22514f, 0.00288f), new Vector3(270.6881f, 0f, 0f), new Vector3(0.41163f, 0.41163f, 0.41163f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHitAndExplode"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBleedOnHitAndExplode"), "Chest", new Vector3(-0.16044f, -0.2267f, -0.10126f), new Vector3(334.84f, 1.71427f, 340.8119f), new Vector3(0.10397f, 0.10397f, 0.10397f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHitVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTriTipVoid"), "Gun", new Vector3(-0.00155f, -0.01315f, -0.00019f), new Vector3(272.7347f, 292.3364f, 55.18313f), new Vector3(0.38047f, 0.38047f, 0.62126f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BonusGoldPackOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTome"), "ThighL", new Vector3(0.14704f, 0.17491f, 0.02078f), new Vector3(5.77171f, 73.43825f, 186.8631f), new Vector3(0.0973f, 0.0973f, 0.0973f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAPRound"), "Chest", new Vector3(-0.01351f, -0.14645f, 0.16207f), new Vector3(90f, 351.3999f, 0f), new Vector3(0.37249f, 0.37249f, 0.37249f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BounceNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHook"), "Chest", new Vector3(0.19872f, 0.39747f, -0.05928f), new Vector3(0f, 0f, 340.2585f), new Vector3(0.24562f, 0.24562f, 0.24562f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ChainLightning"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayUkulele"), "Chest", new Vector3(-0.0715f, 0.22055f, -0.34052f), new Vector3(0.02289f, 186.5719f, 35.4724f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ChainLightningVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayUkuleleVoid"), "Chest", new Vector3(-0.0715f, 0.22055f, -0.34052f), new Vector3(0.02289f, 186.5719f, 35.4724f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Clover"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayClover"), "Chest", new Vector3(0.01866f, 0.82636f, 0.04321f), new Vector3(0f, 0f, 0f), new Vector3(0.78719f, 0.78719f, 0.78719f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CloverVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCloverVoid"), "Chest", new Vector3(0f, 0.81989f, 0.04976f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CooldownOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySkull"), "Finger42R", new Vector3(0.02337f, -0.01204f, 0.00126f), new Vector3(52.80724f, 88.56924f, 2.5003f), new Vector3(0.04065f, 0.04065f, 0.04065f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritDamage"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLaserSight"), "Gun", new Vector3(-0.00402f, 0.13794f, 0.10269f), new Vector3(2.13648f, 267.8749f, 270.4373f), new Vector3(0.08767f, 0.08767f, 0.08767f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritGlasses"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlasses"), "Head", new Vector3(0f, 0.23573f, 0.17499f), new Vector3(0f, 0f, 0f), new Vector3(0.23784f, 0.23784f, 0.23784f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritGlassesVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlassesVoid"), "Head", new Vector3(0f, 0.23573f, 0.17499f), new Vector3(0f, 0f, 0f), new Vector3(0.23784f, 0.23784f, 0.23784f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Crowbar"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCrowbar"), "Chest", new Vector3(-0.03712f, -5E-05f, -0.23938f), new Vector3(0f, 0f, 326.3258f), new Vector3(0.50935f, 0.50935f, 0.50935f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Dagger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDagger"), "UpperArmR", new Vector3(0.06125f, -0.10136f, 0.01567f), new Vector3(354.5378f, 303.1844f, 145.2471f), new Vector3(0.91742f, 0.91742f, 0.91742f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DeathMark"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDeathMark"), "Head", new Vector3(0f, 0.27984f, 0.05198f), new Vector3(275.0362f, 0.00022f, -0.00022f), new Vector3(0.0837f, 0.0837f, 0.08f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ElementalRingVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVoidRing"), "HandR", new Vector3(0.0082f, 0.00239f, 0.00011f), new Vector3(282.1854f, 270.6395f, 170.7254f), new Vector3(0.54468f, 0.54468f, 0.54468f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EmpowerAlways"], ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)1), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySunHeadNeck"), "Chest", new Vector3(0f, 0.40649f, 0.02492f), new Vector3(23.3864f, 22.63947f, 12.33223f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySunHead"), "Chest", new Vector3(-0.28531f, -0.16089f, 0.01824f), new Vector3(0f, 0f, 0f), new Vector3(0.788f, 0.788f, 0.788f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EnergizedOnEquipmentUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarHorn"), "Head", new Vector3(0.10626f, 0.09779f, 0.27158f), new Vector3(2.48558f, 315.6647f, 1.04667f), new Vector3(0.25889f, 0.25889f, 0.25889f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EquipmentMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBattery"), "Chest", new Vector3(0.06608f, -0.11833f, 0.13534f), new Vector3(78.29298f, 19.26927f, 54.05775f), new Vector3(0.07648f, 0.07648f, 0.07648f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EquipmentMagazineVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFuelCellVoid"), "Chest", new Vector3(0.06608f, -0.11833f, 0.13534f), new Vector3(78.29298f, 19.26927f, 54.05775f), new Vector3(0.07648f, 0.07648f, 0.07648f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExecuteLowHealthElite"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGuillotine"), "ThighL", new Vector3(0.14302f, 0.11044f, 0.01145f), new Vector3(78.28942f, 217.458f, 324.143f), new Vector3(0.23425f, 0.23425f, 0.23425f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExplodeOnDeath"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWilloWisp"), "Chest", new Vector3(0.27888f, -0.1854f, 0.00737f), new Vector3(2.85769f, 359.4591f, 11.87494f), new Vector3(0.10542f, 0.10542f, 0.10542f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExplodeOnDeathVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWillowWispVoid"), "Chest", new Vector3(0.2714f, -0.14995f, 0.00907f), new Vector3(2.85769f, 359.459f, 11.87494f), new Vector3(0.11938f, 0.11938f, 0.11938f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExtraLife"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHippo"), "Chest", new Vector3(-0.22058f, 0.45386f, -0.05491f), new Vector3(349.3331f, 337.7769f, 10.13284f), new Vector3(0.1464f, 0.1464f, 0.1464f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExtraLifeVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHippoVoid"), "Chest", new Vector3(-0.18824f, 0.45137f, -0.11074f), new Vector3(346.1329f, 270.6207f, 7.90792f), new Vector3(0.15503f, 0.15503f, 0.15503f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FallBoots"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravBoots"), "FootL", new Vector3(0.00169f, -0.01231f, 0.03811f), new Vector3(60.92217f, 179.3294f, 357.576f), new Vector3(0.19788f, 0.19788f, 0.19788f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravBoots"), "FootR", new Vector3(0.00169f, -0.01231f, 0.03811f), new Vector3(60.92215f, 179.3294f, 357.576f), new Vector3(0.19788f, 0.19788f, 0.19788f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Feather"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFeather"), "Chest", new Vector3(0f, -0.20114f, 0.00407f), new Vector3(294.8356f, 203.3323f, 180.8631f), new Vector3(0.06371f, 0.06371f, 0.06371f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireRing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFireRing"), "HandR", new Vector3(0.0082f, 0.00239f, 0.00011f), new Vector3(282.1854f, 270.6395f, 170.7254f), new Vector3(0.54468f, 0.54468f, 0.54468f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireballsOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFireballsOnHit"), "Gun", new Vector3(-6E-05f, 0.34057f, 0.11171f), new Vector3(270f, 180f, 0f), new Vector3(0.07659f, 0.07659f, 0.07659f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Firework"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFirework"), "Chest", new Vector3(0.11208f, -0.13512f, 0.10882f), new Vector3(283.2318f, 212.4988f, 118.4696f), new Vector3(0.18998f, 0.18998f, 0.18998f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FlatHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySteakCurved"), "Chest", new Vector3(-0.19051f, -0.0172f, 0.11292f), new Vector3(346.0077f, 297.5741f, 84.91856f), new Vector3(0.08683f, 0.08683f, 0.08683f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FocusConvergence"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFocusedConvergence"), "Chest", new Vector3(-0.43774f, 0.42938f, -0.10831f), new Vector3(0f, 0f, 0f), new Vector3(0.06349f, 0.06349f, 0.06349f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FragileDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDelicateWatch"), "HandR", new Vector3(0f, 1E-05f, -0.00383f), new Vector3(90f, 270f, 0f), new Vector3(0.34198f, 0.5758f, 0.32066f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FreeChest"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShippingRequestForm"), "ThighL", new Vector3(0.18999f, 0.1918f, 0.03936f), new Vector3(279.9932f, 19.45694f, 232.4752f), new Vector3(0.62927f, 0.62927f, 0.62927f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GhostOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMask"), "Head", new Vector3(0.00161f, 0.22703f, 0.11234f), new Vector3(0f, 0f, 0f), new Vector3(0.78024f, 0.78024f, 0.78024f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBoneCrown"), "Head", new Vector3(0.0017f, 0.24946f, 0.07578f), new Vector3(8.59304f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldOnHurt"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRollOfPennies"), "Chest", new Vector3(-0.11694f, -0.13282f, 0.13604f), new Vector3(0f, 0f, 0f), new Vector3(0.34955f, 0.34955f, 0.34955f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HalfAttackSpeedHalfCooldowns"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarShoulderNature"), "UpperArmR", new Vector3(0.00676f, 0.03388f, 0.01492f), new Vector3(354.5445f, 103.0057f, 221.2348f), new Vector3(0.69622f, 0.69622f, 0.69622f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HalfSpeedDoubleHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarShoulderStone"), "UpperArmL", new Vector3(-0.029f, 0.01144f, -0.01382f), new Vector3(6.77242f, 62.84494f, 203.6213f), new Vector3(0.69622f, 0.69622f, 0.69622f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HeadHunter"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySkullcrown"), "Head", new Vector3(0f, 0.29472f, 0.05169f), new Vector3(0f, 0f, 0f), new Vector3(0.45493f, 0.2365f, 0.09086f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScythe"), "Gun", new Vector3(-0.01428f, 0.18089f, 0.0242f), new Vector3(85.7634f, 0f, 270f), new Vector3(0.38442f, 0.38442f, 0.38442f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealWhileSafe"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySnail"), "Chest", new Vector3(-0.20324f, -0.14697f, 0.1256f), new Vector3(7.24479f, 129.7015f, 6.88009f), new Vector3(0.05975f, 0.05975f, 0.05975f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealingPotion"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHealingPotion"), "Chest", new Vector3(0.23457f, -0.03661f, -0.11816f), new Vector3(16.88081f, 0f, 7.98853f), new Vector3(0.05569f, 0.05569f, 0.05569f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Hoof"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHoof"), "CalfR", new Vector3(-0.01794f, 0.34936f, -0.05554f), new Vector3(78.87335f, 9.84849f, 340.4441f), new Vector3(0.07894f, 0.07894f, 0.07894f)), ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)8))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IceRing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayIceRing"), "HandL", new Vector3(0.0082f, 0.00239f, 0.00011f), new Vector3(282.1852f, 270.6395f, 170.725f), new Vector3(0.54468f, 0.54468f, 0.54468f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Icicle"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFrostRelic"), "Chest", new Vector3(0.32419f, 0.45696f, -0.0838f), new Vector3(62.26155f, 80.99998f, 180f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IgniteOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGasoline"), "Chest", new Vector3(-0.03808f, 0.15311f, -0.24884f), new Vector3(270.3f, 270f, 180f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ImmuneToDebuff"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRainCoatBelt"), "Chest", new Vector3(-0.03061f, -0.2341f, -1E-05f), new Vector3(0f, 0f, 0f), new Vector3(1.32459f, 1.32459f, 1.32459f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IncreaseHealing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAntler"), "Head", new Vector3(-0.07838f, 0.31546f, 0.068f), new Vector3(0f, 90f, 180f), new Vector3(-0.33047f, -0.33047f, -0.33047f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAntler"), "Head", new Vector3(0.07838f, 0.31552f, 0.068f), new Vector3(0f, 90f, 0f), new Vector3(0.33047f, 0.33047f, 0.33047f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Incubator"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAncestralIncubator"), "Chest", new Vector3(0.31286f, -0.28976f, 0f), new Vector3(0f, 0f, 13.79489f), new Vector3(0.03338f, 0.03338f, 0.03338f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Infusion"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayInfusion"), "Chest", new Vector3(-0.05905f, 0.23041f, 0.1367f), new Vector3(0f, 353.612f, 0f), new Vector3(0.27402f, 0.27402f, 0.27402f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["JumpBoost"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWaxBird"), "Head", new Vector3(0f, -0.21772f, 0f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["KillEliteFrenzy"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrainstalk"), "Head", new Vector3(0f, 0.19609f, 1E-05f), new Vector3(0f, 0f, 0f), new Vector3(0.3178f, 0.42325f, 0.3178f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Knurl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKnurl"), "Chest", new Vector3(0.25657f, -0.14036f, 0.00563f), new Vector3(274.7333f, -2E-05f, 349.4195f), new Vector3(0.08402f, 0.08402f, 0.08402f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LaserTurbine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLaserTurbine"), "UpperArmL", new Vector3(-0.0155f, 0.02429f, -0.05585f), new Vector3(351.0468f, 348.7645f, 354.0932f), new Vector3(0.28394f, 0.28394f, 0.28394f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LightningStrikeOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayChargedPerforator"), "Gun", new Vector3(0f, 0.277f, 0.09152f), new Vector3(-1E-05f, 1E-05f, 180f), new Vector3(1.39348f, 1.39348f, 1.39348f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarDagger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarDagger"), "HandR", new Vector3(0.03414f, 0.08954f, -0.04024f), new Vector3(48.57396f, 179.2072f, 284.3542f), new Vector3(0.58518f, 0.58518f, 0.58518f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarPrimaryReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdEye"), "Head", new Vector3(-0.06836f, 0.2429f, 0.15176f), new Vector3(276.1996f, 353.8826f, 6.7643f), new Vector3(0.13369f, 0.13369f, 0.13369f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarSecondaryReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdClaw"), "Chest", new Vector3(-0.19486f, 0.44745f, -0.16692f), new Vector3(3.02249f, 300.4318f, 14.50103f), new Vector3(0.59643f, 0.59643f, 0.59643f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarSpecialReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdHeart"), "Chest", new Vector3(0.28593f, -0.15073f, 0.03255f), new Vector3(329.3064f, 0f, -1E-05f), new Vector3(0.2171f, 0.2171f, 0.2171f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarTrinket"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBeads"), "HandL", new Vector3(-0.01284f, 0.02157f, 0.00697f), new Vector3(345.1651f, 346.1463f, 257.587f), new Vector3(0.75225f, 0.75225f, 0.75225f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarUtilityReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdFoot"), "CalfL", new Vector3(0.03068f, -0.10339f, -0.14674f), new Vector3(355.1452f, 81.06728f, 178.9519f), new Vector3(0.5531f, 0.5531f, 0.5531f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Medkit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMedkit"), "Chest", new Vector3(-0.01602f, -0.10701f, -0.23254f), new Vector3(271.952f, 99.71703f, 80.27746f), new Vector3(0.85179f, 0.85179f, 0.85179f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MinorConstructOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDefenseNucleus"), "Chest", new Vector3(-0.5381f, -0.17721f, 0.01895f), new Vector3(0f, 270f, 0f), new Vector3(0.38849f, 0.38849f, 0.38849f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Missile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileLauncher"), "Chest", new Vector3(0.31562f, 0.65102f, -0.07466f), new Vector3(0f, 0f, 329.4084f), new Vector3(0.0861f, 0.0861f, 0.0861f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MissileVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileLauncherVoid"), "Chest", new Vector3(0.31562f, 0.65102f, -0.07466f), new Vector3(0f, 0f, 329.4084f), new Vector3(0.0861f, 0.0861f, 0.0861f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MonstersOnShrineUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMonstersOnShrineUse"), "Chest", new Vector3(0.0814f, 0.22734f, 0.12036f), new Vector3(51.67438f, 112.4063f, 359.5639f), new Vector3(0.05146f, 0.05146f, 0.05146f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MoreMissile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayICBM"), "Chest", new Vector3(0.28669f, 0.60376f, 0.16045f), new Vector3(0f, 90f, 90f), new Vector3(0.09915f, 0.09915f, 0.09915f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MoveSpeedOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGrappleHook"), "Base", new Vector3(0.25968f, 0.00197f, -0.13753f), new Vector3(289.068f, 58.73866f, 98.66002f), new Vector3(0.23818f, 0.23818f, 0.23818f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Mushroom"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMushroom"), "Chest", new Vector3(-0.14549f, -0.00755f, 0.12128f), new Vector3(359.4753f, 45.76885f, 34.50196f), new Vector3(0.03679f, 0.03679f, 0.03679f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MushroomVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMushroomVoid"), "Chest", new Vector3(-0.14549f, -0.00755f, 0.12128f), new Vector3(359.4753f, 45.76885f, 34.50196f), new Vector3(0.03679f, 0.03679f, 0.03679f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NearbyDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDiamond"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NovaOnHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDevilHorns"), "Head", new Vector3(0f, 0.25221f, 0f), new Vector3(90f, 180f, 0f), new Vector3(-1f, -1f, -1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDevilHorns"), "Head", new Vector3(0f, 0.25221f, 0f), new Vector3(270f, 180f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NovaOnLowHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayJellyGuts"), "UpperArmL", new Vector3(-0.03174f, 0.01256f, -0.01002f), new Vector3(7.43732f, 26.7055f, 7.51749f), new Vector3(0.12972f, 0.12972f, 0.12972f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["OutOfCombatArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayOddlyShapedOpal"), "Base", new Vector3(0.3029f, 0.0034f, -0.28644f), new Vector3(3.40159f, 245.6042f, 270.0852f), new Vector3(0.44379f, 0.44379f, 0.44379f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ParentEgg"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayParentEgg"), "Chest", new Vector3(0.32548f, -0.21432f, 0.03154f), new Vector3(0f, 0f, 10.80585f), new Vector3(0.06853f, 0.06853f, 0.06853f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Pearl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPearl"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(90f, 0f, 0f), new Vector3(0.30283f, 0.30283f, 0.30283f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PermanentDebuffOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScorpion"), "UpperArmR", new Vector3(0f, 0f, 0f), new Vector3(316.3237f, 39.42264f, 94.26131f), new Vector3(0.7299f, 0.7299f, 0.7299f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PersonalShield"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldGenerator"), "ThighR", new Vector3(0.02663f, 0.26137f, 0.04122f), new Vector3(273.0673f, 227.1822f, 161.4063f), new Vector3(0.19646f, 0.19646f, 0.19646f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Phasing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStealthkit"), "HandR", new Vector3(-0.02613f, -0.05109f, 4E-05f), new Vector3(283.0133f, 270.1691f, -8E-05f), new Vector3(0.14103f, 0.16558f, 0.13319f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Plant"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayInterstellarDeskPlant"), "Head", new Vector3(0f, 0.38934f, 0.09732f), new Vector3(270f, 0f, 0f), new Vector3(0.07318f, 0.07318f, 0.07318f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PrimarySkillShuriken"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShuriken"), "Chest", new Vector3(0f, 0.24774f, -0.29413f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomDamageZone"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRandomDamageZone"), "Chest", new Vector3(0f, 0.23193f, -0.23779f), new Vector3(0f, 0f, 0f), new Vector3(0.14503f, 0.14503f, 0.14503f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomEquipmentTrigger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBottledChaos"), "Base", new Vector3(0.25024f, 0.11146f, -0.14331f), new Vector3(349.7761f, 81.03706f, 91.60354f), new Vector3(0.22944f, 0.22944f, 0.22944f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomlyLunar"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDomino"), "Chest", new Vector3(-0.81269f, 0.52026f, -0.13413f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RegeneratingScrap"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRegeneratingScrap"), "Base", new Vector3(-0.39015f, 0.21397f, 0.00993f), new Vector3(356.7812f, 276.3944f, 265.1483f), new Vector3(0.21911f, 0.21911f, 0.21911f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RepeatHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCorpseflower"), "Chest", new Vector3(-0.27556f, -0.13433f, -0.01425f), new Vector3(54.54063f, 5.57165f, 64.82538f), new Vector3(0.44177f, 0.44177f, 0.44177f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SecondarySkillMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDoubleMag"), "Gun", new Vector3(0f, 0.21663f, 0.01896f), new Vector3(270f, 180f, 0f), new Vector3(0.03565f, 0.03565f, 0.03565f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Seed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySeed"), "Chest", new Vector3(-0.15906f, -0.0129f, 0.1785f), new Vector3(335.8303f, 287.7627f, 12.86907f), new Vector3(0.04447f, 0.04447f, 0.04447f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShieldOnly"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldBug"), "Head", new Vector3(-0.07012f, 0.3751f, 0.07925f), new Vector3(-1E-05f, 270f, 180f), new Vector3(-0.2f, -0.2f, -0.2f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldBug"), "Head", new Vector3(0.07012f, 0.37511f, 0.07911f), new Vector3(0f, 270f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShinyPearl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShinyPearl"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(90f, 0f, 0f), new Vector3(0.30283f, 0.30283f, 0.30283f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShockNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTeslaCoil"), "Chest", new Vector3(0f, 0.28457f, -0.19648f), new Vector3(270f, 0f, 0f), new Vector3(0.53835f, 0.53835f, 0.53835f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SiphonOnLowHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySiphonOnLowHealth"), "Base", new Vector3(0.29801f, 0.15162f, -0.32532f), new Vector3(334.8931f, 90.00002f, 89.99997f), new Vector3(0.09927f, 0.09927f, 0.09927f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SlowOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBauble"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SlowOnHitVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBaubleVoid"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBuckler"), "LowerArmL", new Vector3(-0.00246f, 0.06145f, 0.00224f), new Vector3(0f, 272.9158f, 0f), new Vector3(0.17913f, 0.17913f, 0.22066f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySoda"), "Base", new Vector3(-0.23992f, 0.00851f, 0.13479f), new Vector3(0f, 19.63885f, 0f), new Vector3(0.28406f, 0.28406f, 0.28406f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintOutOfCombat"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWhip"), "ThighL", new Vector3(0.10968f, 0.16505f, 0.01777f), new Vector3(0f, 155.2993f, 182.6342f), new Vector3(0.49425f, 0.49425f, 0.49425f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintWisp"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrokenMask"), "UpperArmL", new Vector3(-0.00752f, -0.02743f, -0.00199f), new Vector3(3.7307f, 151.9851f, 195.2243f), new Vector3(0.18229f, 0.18229f, 0.18229f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Squid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySquidTurret"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StickyBomb"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStickyBomb"), "Chest", new Vector3(0.04208f, -0.22255f, 0.14066f), new Vector3(6.83458f, 6.25651f, 181.4485f), new Vector3(0.21205f, 0.21205f, 0.21205f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StrengthenBurn"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGasTank"), "Chest", new Vector3(-0.16429f, 0.28743f, -0.23413f), new Vector3(0f, 0f, 0f), new Vector3(0.25374f, 0.25374f, 0.25374f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StunChanceOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStunGrenade"), "Base", new Vector3(-0.01112f, -0.14963f, 0.02578f), new Vector3(0f, 0f, 0f), new Vector3(0.4014f, 0.4014f, 0.4014f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Syringe"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySyringeCluster"), "UpperArmR", new Vector3(0.0175f, -0.01663f, 0.03199f), new Vector3(332.2023f, 180f, 180f), new Vector3(0.21584f, 0.21584f, 0.21584f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TPHealingNova"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlowFlower"), "Chest", new Vector3(0.0752f, 0.30443f, 0.11042f), new Vector3(340.2215f, 0f, 0f), new Vector3(0.15092f, 0.15092f, 0.15092f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Talisman"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTalisman"), "Chest", new Vector3(0.93072f, 0.16602f, 0.0963f), new Vector3(0f, 0f, 0f), new Vector3(0.97727f, 0.97727f, 0.97727f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Thorns"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRazorwireLeft"), "Chest", new Vector3(2f, 2f, 2f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TitanGoldDuringTP"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGoldHeart"), "Base", new Vector3(0.31111f, -0.02173f, -4E-05f), new Vector3(0f, 90f, 0f), new Vector3(0.18704f, 0.18704f, 0.18704f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Tooth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothNecklaceDecal"), "Chest", new Vector3(0f, 0.45338f, 0f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshLarge"), "Chest", new Vector3(0f, 0.29659f, 0.16196f), new Vector3(0f, 0f, 0f), new Vector3(2f, 2f, 2f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall1"), "Chest", new Vector3(0.04753f, 0.32086f, 0.13925f), new Vector3(0f, 0f, 47.25098f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall2"), "Chest", new Vector3(-0.04753f, 0.32086f, 0.13925f), new Vector3(0f, 0f, 312.749f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall2"), "Chest", new Vector3(-0.08835f, 0.35908f, 0.11049f), new Vector3(355.488f, 336.5051f, 311.2128f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall1"), "Chest", new Vector3(0.08835f, 0.35908f, 0.11049f), new Vector3(333.3396f, 25.68828f, 43.92077f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TreasureCache"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKey"), "Base", new Vector3(7f / 160f, -0.14263f, 0.019f), new Vector3(14.68406f, 268.1919f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TreasureCacheVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKeyVoid"), "Base", new Vector3(7f / 160f, -0.14263f, 0.019f), new Vector3(14.68406f, 268.1919f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["UtilitySkillMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAfterburnerShoulderRing"), "UpperArmL", new Vector3(0f, 0f, 0f), new Vector3(41.31011f, 125.3208f, 81.3366f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAfterburnerShoulderRing"), "UpperArmR", new Vector3(0f, 0f, 0f), new Vector3(41.31012f, 234.6792f, 278.6634f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["VoidMegaCrabItem"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMegaCrabItem"), "ThighL", new Vector3(0.06351f, 0.14294f, 0.01091f), new Vector3(0f, 90f, 90f), new Vector3(0.14306f, 0.14306f, 0.14306f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["WarCryOnMultiKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPauldron"), "UpperArmL", new Vector3(-0.029f, 0.011f, -0.01382f), new Vector3(79.56982f, 276.2222f, 124.705f), new Vector3(0.69f, 0.69f, 0.69f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["WardOnLevel"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarbanner"), "Chest", new Vector3(0f, 0.4059f, -0.17063f), new Vector3(270f, 270f, 0f), new Vector3(0.45863f, 0.45863f, 0.45863f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BFG"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBFG"), "Chest", new Vector3(0.25664f, 0.43825f, -0.07175f), new Vector3(4.42367f, 0.98583f, 293.2273f), new Vector3(0.29733f, 0.29733f, 0.29733f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Blackhole"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravCube"), "Base", new Vector3(1.09716f, 0.35362f, 1.10406f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossHunter"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTricornGhost"), "Head", new Vector3(0f, 0.47715f, 1E-05f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBlunderbuss"), "Base", new Vector3(0.82867f, 0.46427f, 0.7149f), new Vector3(-1E-05f, 180f, 180f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossHunterConsumed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTricornUsed"), "Head", new Vector3(0f, 0.47715f, 1E-05f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BurnNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPotion"), "Base", new Vector3(0.1436f, 0.21409f, -0.01811f), new Vector3(330.4779f, 83.02779f, 75.05534f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Cleanse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWaterPack"), "Chest", new Vector3(0f, -0.46747f, 0.10289f), new Vector3(0f, 0f, 0f), new Vector3(0.14409f, 0.14409f, 0.14409f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CommandMissile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileRack"), "Chest", new Vector3(-0.00286f, 0.36246f, -0.20178f), new Vector3(90f, 174.2094f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CrippleWard"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEffigy"), "Head", new Vector3(0.00488f, 0.38396f, 0.01933f), new Vector3(0f, 180f, 0f), new Vector3(0.55447f, 0.55447f, 0.55447f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritOnUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayNeuralImplant"), "Head", new Vector3(0f, 0.20967f, 0.37532f), new Vector3(0f, 0f, 0f), new Vector3(0.43383f, 0.43383f, 0.43383f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DeathProjectile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDeathProjectile"), "Chest", new Vector3(-0.18455f, 0.3f, 0.13112f), new Vector3(337.85f, 322.8569f, 0f), new Vector3(0.08076f, 0.08076f, 0.08076f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DroneBackup"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRadio"), "Chest", new Vector3(0.0489f, 0.24141f, 0.15258f), new Vector3(0f, 180f, 180f), new Vector3(-0.28899f, -0.28899f, -0.28899f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteEarthEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteMendingAntlers"), "Head", new Vector3(0f, 0.33928f, 0.09633f), new Vector3(0f, 0f, 0f), new Vector3(0.6377f, 0.6377f, 0.6377f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteFireEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteHorn"), "Head", new Vector3(-0.07218f, 0.31161f, 0.10695f), new Vector3(0f, 180f, 180f), new Vector3(-0.06753f, -0.06753f, -0.06753f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteHorn"), "Head", new Vector3(0.07218f, 0.31161f, 0.10695f), new Vector3(0f, 0f, 0f), new Vector3(0.06753f, 0.06753f, 0.06753f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteHauntedEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteStealthCrown"), "Head", new Vector3(0f, 0.30512f, -0.00019f), new Vector3(90f, 180f, 0f), new Vector3(0.04245f, 0.04245f, 0.04245f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteIceEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteIceCrown"), "Head", new Vector3(0f, 0.43621f, -8E-05f), new Vector3(270f, 0f, 0f), new Vector3(0.02854f, 0.02854f, 0.02854f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteLightningEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteRhinoHorn"), "Head", new Vector3(-0.07f, 0.29271f, 0.12919f), new Vector3(39.97074f, 129.2507f, 141.8243f), new Vector3(-0.1288f, -0.1288f, -0.1288f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteRhinoHorn"), "Head", new Vector3(0.07f, 0.29271f, 0.12919f), new Vector3(39.00001f, 230.7493f, 218.1757f), new Vector3(-0.1288f, -0.1288f, -0.1288f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteLunarEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteLunar,Eye"), "Head", new Vector3(0f, 0.20738f, 0.34874f), new Vector3(0f, 0f, 0f), new Vector3(0.16167f, 0.16167f, 0.16167f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ElitePoisonEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteUrchinCrown"), "Head", new Vector3(0f, 0.21301f, -0.00014f), new Vector3(0f, 0f, 0f), new Vector3(0.04485f, 0.04485f, 0.04485f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteVoidEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAffixVoid"), "Head", new Vector3(0f, 0.27148f, 0.00026f), new Vector3(0f, 180f, 0f), new Vector3(0.2234f, 0.2234f, 0.2234f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireBallDash"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEgg"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Fruit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFruit"), "Base", new Vector3(-0.10174f, 0.13266f, 0.09001f), new Vector3(82.19051f, 0f, 0f), new Vector3(0.3509f, 0.3509f, 0.3509f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GainArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayElephantFigure"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Gateway"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVase"), "HandL", new Vector3(-0.04156f, 7E-05f, -0.11241f), new Vector3(90f, 180f, 0f), new Vector3(0.22015f, 0.22015f, 0.22015f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldGat"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGoldGat"), "Chest", new Vector3(0.16136f, 0.45423f, -0.07928f), new Vector3(8.46069f, 115.0343f, 326.7957f), new Vector3(0.06569f, 0.06569f, 0.06569f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GummyClone"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGummyClone"), "LowerArmL", new Vector3(-0.00062f, 0.20584f, 0.02179f), new Vector3(13.64345f, 125.9495f, 0f), new Vector3(0.20012f, 0.20012f, 0.20012f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IrradiatingLaser"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayIrradiatingLaser"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Jetpack"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBugWings"), "Chest", new Vector3(0f, 0.20217f, -0.18699f), new Vector3(0f, 0f, 0f), new Vector3(0.14742f, 0.14742f, 0.14742f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LifestealOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLifestealOnHit"), "UpperArmL", new Vector3(-0.03001f, 0.20213f, -0.12175f), new Vector3(0f, 0f, 0f), new Vector3(0.07137f, 0.07137f, 0.07137f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Lightning"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLightningArmRight"), "Chest", new Vector3(2f, 2f, 2f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)2))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarPortalOnUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarPortalOnUse"), "Chest", new Vector3(0.65876f, 0.40515f, -0.22782f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Meteor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMeteor"), "Base", new Vector3(-0.74222f, 0.26422f, 0.45832f), new Vector3(0f, 0f, 0f), new Vector3(0.68939f, 0.68939f, 0.68939f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Molotov"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMolotov"), "Chest", new Vector3(-0.09988f, -0.22047f, 0.13965f), new Vector3(348.619f, 347.4249f, 2.52046f), new Vector3(0.20169f, 0.20169f, 0.20169f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MultiShopCard"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayExecutiveCard"), "Chest", new Vector3(-0.06847f, -0.08431f, 0.12512f), new Vector3(357.4704f, 73.80464f, 104.9206f), new Vector3(0.50539f, 0.50539f, 0.50539f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["QuestVolatileBattery"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBatteryArray"), "Base", new Vector3(0f, 0.2767f, 0.39491f), new Vector3(270f, 1E-05f, 0f), new Vector3(0.23905f, 0.23905f, 0.23905f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Recycle"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRecycler"), "Base", new Vector3(0.002f, 0.19563f, 0.05182f), new Vector3(0.57862f, 90.02995f, 92.96487f), new Vector3(0.06948f, 0.06948f, 0.06948f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Saw"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySawmerangFollower"), "Base", new Vector3(0.65491f, 0.40074f, 0.48852f), new Vector3(0f, 0f, 0f), new Vector3(0.09081f, 0.09081f, 0.09081f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Scanner"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScanner"), "UpperArmL", new Vector3(0.00981f, 0.17733f, -0.02008f), new Vector3(30.14785f, 154.6489f, 270f), new Vector3(0.22813f, 0.22813f, 0.22813f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TeamWarCry"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTeamWarCry"), "Base", new Vector3(0.00149f, 0.24417f, 0.11363f), new Vector3(270f, 180.7489f, 0f), new Vector3(0.06962f, 0.06962f, 0.06962f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Tonic"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTonic"), "Base", new Vector3(0.0809f, -0.11534f, -0.04564f), new Vector3(63.87238f, 62.57079f, 59.96919f), new Vector3(0.31909f, 0.31909f, 0.31909f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["VendingMachine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVendingMachine"), "Gun", new Vector3(0f, 0.43159f, 1E-05f), new Vector3(0f, 0f, 0f), new Vector3(0.42555f, 0.42555f, 0.42555f)))); } } public static class ScoutStates { public static void Init() { OfficialScoutMod.Modules.Content.AddEntityState(typeof(BaseScoutSkillState)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(MainState)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(BaseScoutState)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(Shoot)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(ThrowCleaver)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(HitBaseball)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(ActivateAtomic)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(Swing)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(SwapWeapon)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(EnterReload)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(EnterRifleReload)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(Reload)); OfficialScoutMod.Modules.Content.AddEntityState(typeof(RifleReload)); } } public static class ScoutTokens { public static void Init() { AddScoutTokens(); } public static void AddScoutTokens() { string text = "KENKO_SCOUT_"; string text2 = "The Scout is an extremely mobile, burst damage survivor that can focus down singular enemies with ease." + Environment.NewLine + Environment.NewLine; text2 = text2 + "< ! > Use your Splatterguns knockback to reach high locations or to avoid enemy attacks." + Environment.NewLine + Environment.NewLine; text2 = text2 + "< ! > Comboing your Baseball and Cleaver can deal massive damage from far away." + Environment.NewLine + Environment.NewLine; text2 = text2 + "< ! > Bat can gain the most Atomic Core charge if there are large groups of enemies." + Environment.NewLine + Environment.NewLine; text2 = text2 + "< ! > Extra stocks for Atomic Blast increase its duration while cooldown reduction increases Atomic Core chargeup speed." + Environment.NewLine + Environment.NewLine; string text3 = "An escape from the power plant. An accident that would spread like wildfire throughout the news, its cause unknown. A lone worker stumbles slowly away, his bat being his only support. He wandered aimlessly, pain and shock ringing throughout his body. Approaching what seemed to be an abandoned railroad, in the distance he could only attempt to make out what, logically, he considered was another person. Having a strange aura to them, he kept his guard up and tried to identify any potential threat from the figure.\r\n\r\n“It’s a nice time for a walk, mind if I join ya near these ol’ tracks?”\r\n\r\n“W-Who are you…? What d-do you want from me?”\r\n\r\n“My identity does not concern you.”\r\n“... however I can tell you had a pretty rough night. Nearing Death’s doorstep, hm?”\r\n“I may have something that can help you out, an… offer of some sorts.”\r\n\r\n“A… d-deal..?”\r\n\r\n“Precisely.”\r\n\r\nHis throat closed, heart began to race, and mind beginning to pretend that none of this was happening. Hesitating, he finally exhaled the breath he had been holding for what felt like an eternity as the person spoke. Was it fear he was feeling? Confusion? Or was it the idea that he could have the world at his fingertips that sent him into an almost euphoric temptation? Regardless, he still listened intently. Focusing and decoding every single word. Maybe it could get him out of this hell.\r\n\r\n“I can sense the radiation emitting from you… hm…”\r\n“... I got just the thing. How about I turn that into something that will power ya up, hm? Make you better and stronger than before, in exchange for… let's see… some favors. Sounds good, doesn’t it? I think it does.”\r\n“I have some old pals of mine that can help out with the procedure too.”\r\n\r\n“... B-but what about my job?”\r\n“Where will I go? I would rather not be unemployed…”\r\n\r\n“Funny that you mention that, I heard of a job that goes somewhere into the depths of space. I’d imagine they’d be able to utilize your new speed and agility for it once it’s all done.”\r\n“... also a word of advice, build up some confidence. It may improve your chances.”\r\n\r\n“Hm…”\r\n“... Alright, call it a deal… whoever you are.”\r\n\r\n“Wonderful.”\r\n\r\nThe sound of a distant train can be heard. As it slowed down and with the sound of its old whistle going off, the two were gone."; string text4 = ".. grass grows, birds fly, sun shines and brother, I hurt people ."; string text5 = "..what the hell was that crap?"; Language.Add(text + "NAME", "Scout"); Language.Add(text + "DESCRIPTION", text2); Language.Add(text + "SUBTITLE", "Force of Nature"); Language.Add(text + "LORE", text3); Language.Add(text + "OUTRO_FLAVOR", text4); Language.Add(text + "OUTRO_FAILURE", text5); Language.Add(text + "MASTERY_SKIN_NAME", "Alternate"); Language.Add(text + "PASSIVE_NAME", "Atomic Core"); Language.Add(text + "PASSIVE_DESCRIPTION", "Scout can jump twice. Deal damage to build up Atomic Core. Taking damage reduces Atomic Core. Atomic Core increases movement speed."); Language.Add(text + "PRIMARY_SPLATTERGUN_NAME", "Splattergun"); Language.Add(text + "PRIMARY_SPLATTERGUN_DESCRIPTION", "Agile. Fire a scattergun burst for " + $"12x{100f * ScoutConfig.shotgunDamageCoefficient.Value}% damage."); Language.Add(text + "PRIMARY_RIFLE_NAME", "Dastardly Dwarf"); Language.Add(text + "PRIMARY_RIFLE_DESCRIPTION", "Fire a high velocity round for " + $"{100f * ScoutConfig.rifleDamageCoefficient.Value}% damage. " + "Headshots deal 2x damage"); Language.Add(text + "PRIMARY_BONK_NAME", "Elephants Foot"); Language.Add(text + "PRIMARY_BONK_DESCRIPTION", "Agile. Swing your bat for " + $"{100f * ScoutConfig.baseballDamageCoefficient.Value}% damage."); Language.Add(text + "SECONDARY_CLEAVER_NAME", "Toxic Cleaver"); Language.Add(text + "SECONDARY_CLEAVER_DESCRIPTION", "Agile. " + $"Throw your cleaver Blighting and dealing {100f * ScoutConfig.cleaverDamageCoefficient.Value}% damage. " + "Critically Strikes and Poisons Stunned enemies."); Language.Add(text + "SECONDARY_SPIKEDBALL_NAME", "Spike Ball"); Language.Add(text + "SECONDARY_SPIKEDBALL_DESCRIPTION", "Agile. Hit your baseball " + $"Stunning and dealing {100f * ScoutConfig.baseballDamageCoefficient.Value}% damage. " + "Stun duration scales with distance traveled."); Language.Add(text + "UTILITY_ATOMICBLAST_NAME", "Atomic Blast"); Language.Add(text + "UTILITY_ATOMICBLAST_DESCRIPTION", "Drain your Atomic Core gaining Atomic Crits, attack speed, and movement speed. " + $"Deal {100f}% - {100f * ScoutConfig.atomicBlastDamageCoefficient.Value}% damage around you based on charge."); Language.Add(text + "SPECIAL_SWAP_NAME", "Swap"); Language.Add(text + "SPECIAL_SWAP_DESCRIPTION", " Swap to your bat."); Language.Add(text + "SPECIAL_SCEPTER_SWAP_NAME", "Swap"); Language.Add(text + "SPECIAL_SCEPTER_SWAP_DESCRIPTION", " Swap to your bat." + Tokens.ScepterDescription("Atomic Charge can still be gained while Atomic Core drains .")); Language.Add(Tokens.GetAchievementNameToken("KENKO_SCOUT_masteryAchievement"), "Scout: Mastery"); Language.Add(Tokens.GetAchievementDescriptionToken("KENKO_SCOUT_masteryAchievement"), "As Scout, beat the game or obliterate on Monsoon."); } } public static class ScoutUnlockables { public static UnlockableDef characterUnlockableDef; public static UnlockableDef masterySkinUnlockableDef; public static void Init() { } } } namespace OfficialScoutMod.Scout.Components { public class AtomicGauge : MonoBehaviour { public HUD targetHUD; public ScoutController scoutController; public LanguageTextMeshController targetText; public GameObject durationDisplay; public Image durationBar; public Image durationBarRed; private void Start() { HUD obj = targetHUD; object obj2; if (obj == null) { obj2 = null; } else { GameObject targetBodyObject = obj.targetBodyObject; obj2 = ((targetBodyObject != null) ? targetBodyObject.GetComponent() : null); } scoutController = (ScoutController)obj2; ScoutController obj3 = scoutController; obj3.onAtomicChange = (Action)Delegate.Combine(obj3.onAtomicChange, new Action(SetDisplay)); durationDisplay.SetActive(false); SetDisplay(); } private void OnDestroy() { if (Object.op_Implicit((Object)(object)scoutController)) { ScoutController obj = scoutController; obj.onAtomicChange = (Action)Delegate.Remove(obj.onAtomicChange, new Action(SetDisplay)); } targetText.token = string.Empty; durationDisplay.SetActive(false); Object.Destroy((Object)(object)durationDisplay); } private void Update() { if (targetText.token != string.Empty) { targetText.token = string.Empty; } if (!Object.op_Implicit((Object)(object)scoutController) || !(scoutController.atomicGauge >= 0f)) { return; } float num = Util.Remap(scoutController.atomicGauge, 0f, scoutController.maxAtomicGauge, 0f, 1f); if (Object.op_Implicit((Object)(object)durationBarRed)) { if (num >= 1f) { durationBarRed.fillAmount = 1f; } durationBarRed.fillAmount = Mathf.Lerp(durationBarRed.fillAmount, num, Time.fixedDeltaTime * 2f); } durationBar.fillAmount = num; } private void SetDisplay() { //IL_0070: 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) if (Object.op_Implicit((Object)(object)scoutController)) { durationDisplay.SetActive(true); targetText.token = string.Empty; if (scoutController.atomicGauge <= 99f) { ((Graphic)durationBar).color = new Color(1f / 3f, 0.7372549f, 0f); } else { ((Graphic)durationBar).color = Color.red; } } else { durationDisplay.SetActive(false); } } } public class DistanceLobController : MonoBehaviour { public float timer = 0f; private void FixedUpdate() { timer += Time.fixedDeltaTime; } } public class ScoutController : MonoBehaviour { private CharacterBody characterBody; private ModelSkinController skinController; private ChildLocator childLocator; private CharacterModel characterModel; private Animator animator; private SkillLocator skillLocator; private ScoutSwap scoutSwap; private GameObject endEffect = ScoutAssets.atomicEndEffect; public ModdedDamageType ModdedDamageType = DamageTypes.Default; public SkillDef swappedPrimarySkillDef; public SkillDef swappedSecondarySkillDef; private readonly int maxShellCount = 12; private readonly int maxCasingCount = 12; private GameObject[] shellObjects; private GameObject[] casingObjects; private int currentShell; private int currentCasing; public float atomicGauge = 0f; public float maxAtomicGauge = 100f; public bool atomicDraining = false; public Action onAtomicChange; public float secondary1CdTimer = 0f; public float secondary1Cd = 6f; public int maxSecondary1Stock = 1; public int currentSecondary1Stock = 1; public float secondary2CdTimer = 0f; public float secondary2Cd = 6f; public int maxSecondary2Stock = 1; public int currentSecondary2Stock = 1; public float stagedReload = 0f; private uint playID1; private uint playID2; private float graceTimer = 0f; public bool hasGraced = false; public float jamTimer; public float pulseTimer; public bool atMaxGauge => atomicGauge >= maxAtomicGauge; public bool isSwapped => skillLocator.secondary.skillOverrides.Length != 0 && skillLocator.primary.skillOverrides.Length != 0; private void Awake() { characterBody = ((Component)this).GetComponent(); scoutSwap = ((Component)this).GetComponent(); ModelLocator component = ((Component)this).GetComponent(); childLocator = ((Component)component.modelBaseTransform).GetComponentInChildren(); animator = ((Component)component.modelBaseTransform).GetComponentInChildren(); characterModel = ((Component)component.modelBaseTransform).GetComponentInChildren(); skillLocator = ((Component)this).GetComponent(); skinController = ((Component)component.modelTransform).gameObject.GetComponent(); ((MonoBehaviour)this).Invoke("InitModelsAndSkillDefs", 0.5f); } private void Start() { SetupStockSecondary1(); SetupStockSecondary2(); } public void FillAtomic(float amount, bool isCrit) { //IL_00e4: Unknown result type (might be due to invalid IL or missing references) if (atomicDraining && !ScoutConfig.gainAtomicGaugeDuringAtomicBlast.Value && skillLocator.special.skillNameToken != "KENKO_SCOUT_SPECIAL_SCEPTER_SWAP_NAME") { return; } if (atomicDraining && ScoutConfig.gainAtomicGaugeDuringAtomicBlast.Value) { amount *= 0.25f; } if (atomicGauge + amount <= maxAtomicGauge) { atomicGauge += amount; if (isCrit) { atomicGauge += amount; } } else { atomicGauge = maxAtomicGauge; } if (atomicGauge < 0f) { atomicGauge = 0f; } NetworkIdentity component = ((Component)this).gameObject.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { NetMessageExtensions.Send((INetMessage)(object)new SyncAtomic(component.netId, (ulong)(atomicGauge * 100f)), (NetworkDestination)1); onAtomicChange?.Invoke(); } } private void InitModelsAndSkillDefs() { //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0138: 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) if (scoutSwap.isBat) { swappedPrimarySkillDef = (SkillDef)(object)scoutSwap.batSkillDef; } if (scoutSwap.isBall) { swappedSecondarySkillDef = scoutSwap.ballSkillDef; } GameObject val; if (Object.op_Implicit((Object)(object)skillLocator) && skillLocator.primary.skillNameToken == "KENKO_SCOUT_PRIMARY_SPLATTERGUN_NAME") { val = ScoutAssets.shotgunShell; } else if (Object.op_Implicit((Object)(object)skillLocator) && skillLocator.primary.skillNameToken == "KENKO_SCOUT_PRIMARY_RIFLE_NAME") { ((Component)childLocator.FindChild("ScatterGunMesh")).gameObject.GetComponent().sharedMesh = ScoutAssets.meshRifle; val = ScoutAssets.bullet; GameObject casing = ScoutAssets.casing; currentCasing = 0; casingObjects = (GameObject[])(object)new GameObject[maxCasingCount + 1]; for (int i = 0; i < maxCasingCount; i++) { casingObjects[i] = Object.Instantiate(casing, childLocator.FindChild("Pistol"), false); casingObjects[i].transform.localScale = Vector3.one * 1.1f; casingObjects[i].SetActive(false); casingObjects[i].GetComponent().collisionDetectionMode = (CollisionDetectionMode)1; casingObjects[i].layer = LayerIndex.ragdoll.intVal; ((Component)casingObjects[i].transform.GetChild(0)).gameObject.layer = LayerIndex.ragdoll.intVal; } } else { val = ScoutAssets.shotgunShell; } currentShell = 0; shellObjects = (GameObject[])(object)new GameObject[maxShellCount + 1]; for (int j = 0; j < maxShellCount; j++) { shellObjects[j] = Object.Instantiate(val, childLocator.FindChild("Pistol"), false); shellObjects[j].transform.localScale = Vector3.one * 1.1f; shellObjects[j].SetActive(false); shellObjects[j].GetComponent().collisionDetectionMode = (CollisionDetectionMode)1; shellObjects[j].layer = LayerIndex.ragdoll.intVal; ((Component)shellObjects[j].transform.GetChild(0)).gameObject.layer = LayerIndex.ragdoll.intVal; } } public void DropShell(Vector3 force) { //IL_0067: 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) if (shellObjects != null && !((Object)(object)shellObjects[currentShell] == (Object)null)) { Transform val = childLocator.FindChild("Scattergun"); shellObjects[currentShell].SetActive(false); shellObjects[currentShell].transform.position = val.position; shellObjects[currentShell].transform.SetParent((Transform)null); shellObjects[currentShell].SetActive(true); Rigidbody component = shellObjects[currentShell].gameObject.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.velocity = force; } currentShell++; if (currentShell >= maxShellCount) { currentShell = 0; } } } public void DropCasing(Vector3 force) { //IL_0067: 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) if (casingObjects != null && !((Object)(object)casingObjects[currentCasing] == (Object)null)) { Transform val = childLocator.FindChild("Scattergun"); casingObjects[currentCasing].SetActive(false); casingObjects[currentCasing].transform.position = val.position; casingObjects[currentCasing].transform.SetParent((Transform)null); casingObjects[currentCasing].SetActive(true); Rigidbody component = casingObjects[currentCasing].gameObject.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.velocity = force; } currentCasing++; if (currentCasing >= maxCasingCount) { currentCasing = 0; } } } public void ActivateAtomic() { //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) pulseTimer = 1.5f; if (NetworkServer.active) { characterBody.AddBuff(ScoutBuffs.scoutAtomicBuff); } Transform transform = ((Component)childLocator.FindChild("Chest")).transform; atomicDraining = true; ModdedDamageType = DamageTypes.AtomicCrits; AkSoundEngine.StopPlayingID(playID1); AkSoundEngine.StopPlayingID(playID2); playID1 = Util.PlaySound("sfx_scout_atomic_on", ((Component)this).gameObject); playID2 = Util.PlaySound("sfx_scout_atomic_duration", ((Component)this).gameObject); } public void DeactivateAtomic() { //IL_0057: 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) AkSoundEngine.StopPlayingID(playID1); AkSoundEngine.StopPlayingID(playID2); Util.PlaySound("sfx_scout_atomic_off", ((Component)this).gameObject); if (NetworkServer.active) { characterBody.RemoveBuff(ScoutBuffs.scoutAtomicBuff); } atomicDraining = false; atomicGauge = 0f; ModdedDamageType = DamageTypes.Default; Object.Instantiate(endEffect, ((Component)characterBody.modelLocator).transform); } public void SwitchLayer(string layerName) { if (Object.op_Implicit((Object)(object)animator)) { if (layerName == "") { animator.SetLayerWeight(animator.GetLayerIndex("Body, Bat"), 0f); ((Component)childLocator.FindChild("BatMesh")).gameObject.SetActive(false); ((Component)childLocator.FindChild("ScatterGunMesh")).gameObject.SetActive(true); ((Component)childLocator.FindChild("BackBatMesh")).gameObject.SetActive(true); } else { ((Component)childLocator.FindChild("BatMesh")).gameObject.SetActive(true); ((Component)childLocator.FindChild("ScatterGunMesh")).gameObject.SetActive(false); ((Component)childLocator.FindChild("BackBatMesh")).gameObject.SetActive(false); animator.SetLayerWeight(animator.GetLayerIndex(layerName), 1f); } } } public void SetupStockSecondary2() { secondary2CdTimer = skillLocator.secondary.rechargeStopwatch; secondary2Cd = skillLocator.secondary.finalRechargeInterval; currentSecondary2Stock = skillLocator.secondary.stock; maxSecondary2Stock = skillLocator.secondary.maxStock; } public void SetupStockSecondary1() { secondary1CdTimer = skillLocator.secondary.rechargeStopwatch; secondary1Cd = skillLocator.secondary.finalRechargeInterval; currentSecondary1Stock = skillLocator.secondary.stock; maxSecondary1Stock = skillLocator.secondary.maxStock; } public bool InGracePeriod() { return graceTimer <= 2f && atMaxGauge; } private void FixedUpdate() { //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: 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_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: 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) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Expected O, but got Unknown graceTimer += Time.fixedDeltaTime; if (jamTimer > 0f) { jamTimer -= Time.fixedDeltaTime; } if (atomicDraining) { atomicGauge -= maxAtomicGauge / (400f + (100f * (float)skillLocator.utility.maxStock - 1f)); pulseTimer -= Time.fixedDeltaTime; if (pulseTimer <= 0f) { DamageType val = (DamageType)131072; val = (DamageType)(val | ((atomicGauge >= maxAtomicGauge / 2f) ? 32 : 0)); Result val2 = new BlastAttack { attacker = ((Component)this).gameObject, procChainMask = default(ProcChainMask), impactEffect = (EffectIndex)(-1), losType = (LoSType)0, damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.op_Implicit(val), procCoefficient = Util.Remap(atomicGauge, 10f, maxAtomicGauge, 0.1f, 1f), bonusForce = Util.Remap(atomicGauge, 10f, maxAtomicGauge, 50f, 400f) * Vector3.up, baseForce = Util.Remap(atomicGauge, 10f, maxAtomicGauge, 250f, 2000f), baseDamage = Util.Remap(atomicGauge, 10f, maxAtomicGauge, 1f * characterBody.damage, ScoutConfig.atomicBlastDamageCoefficient.Value * characterBody.damage), falloffModel = (FalloffModel)0, radius = Util.Remap(atomicGauge, 10f, maxAtomicGauge, 1f, 16f), position = characterBody.corePosition, attackerFiltering = (AttackerFiltering)2, teamIndex = characterBody.teamComponent.teamIndex, inflictor = ((Component)this).gameObject, crit = characterBody.RollCrit() }.Fire(); EffectManager.SpawnEffect(ScoutAssets.atomicImpactEffect, new EffectData { origin = ((Component)this).transform.position + Vector3.up * 1.8f, rotation = Quaternion.identity, scale = Util.Remap(atomicGauge, 10f, maxAtomicGauge, 0.2f, 3f) }, false); pulseTimer = 1.5f; } onAtomicChange?.Invoke(); if (atomicGauge <= 0f) { DeactivateAtomic(); } } if (secondary2CdTimer < secondary2Cd) { secondary2CdTimer += Time.fixedDeltaTime; } else if (secondary2CdTimer >= secondary2Cd && currentSecondary2Stock < maxSecondary2Stock) { secondary2CdTimer = 0f; currentSecondary2Stock++; } if (secondary1CdTimer < secondary1Cd) { secondary1CdTimer += Time.fixedDeltaTime; } else if (secondary1CdTimer >= secondary1Cd && currentSecondary1Stock < maxSecondary1Stock) { secondary1CdTimer = 0f; currentSecondary1Stock++; } if (atMaxGauge && !hasGraced) { graceTimer = 0f; hasGraced = true; Util.PlaySound("sfx_driver_plasma_cannon_shoot", ((Component)this).gameObject); EffectManager.SimpleMuzzleFlash(ScoutAssets.scoutMaxGauge, ((Component)this).gameObject, "Chest", false); } else if (!atMaxGauge && hasGraced) { hasGraced = false; } } private void OnDestroy() { AkSoundEngine.StopPlayingID(playID1); AkSoundEngine.StopPlayingID(playID2); } } public class ScoutCSS : MonoBehaviour { private bool hasPlayed = false; private float timer = 0f; private void Awake() { } private void FixedUpdate() { timer += Time.fixedDeltaTime; if (!hasPlayed && timer >= 0.8f) { hasPlayed = true; Util.PlaySound("sfx_driver_gun_throw", ((Component)this).gameObject); } } } public class ScoutPassive : MonoBehaviour { public SkillDef doubleJumpPassive; public GenericSkill passiveSkillSlot; public bool isJump { get { if (Object.op_Implicit((Object)(object)doubleJumpPassive) && Object.op_Implicit((Object)(object)passiveSkillSlot)) { return (Object)(object)passiveSkillSlot.skillDef == (Object)(object)doubleJumpPassive; } return false; } } } public class ScoutSwap : MonoBehaviour { public SkillDef doubleJumpPassive; public GenericSkill passiveSkillSlot; public SteppedSkillDef batSkillDef; public GenericSkill batSkillSlot; public SkillDef ballSkillDef; public GenericSkill ballSkillSlot; public bool isJump { get { if (Object.op_Implicit((Object)(object)doubleJumpPassive) && Object.op_Implicit((Object)(object)passiveSkillSlot)) { return (Object)(object)passiveSkillSlot.skillDef == (Object)(object)doubleJumpPassive; } return false; } } public bool isBat { get { if (Object.op_Implicit((Object)(object)batSkillDef) && Object.op_Implicit((Object)(object)batSkillSlot)) { return (Object)(object)batSkillSlot.skillDef == (Object)(object)batSkillDef; } return false; } } public bool isBall { get { if (Object.op_Implicit((Object)(object)ballSkillDef) && Object.op_Implicit((Object)(object)ballSkillSlot)) { return (Object)(object)ballSkillSlot.skillDef == (Object)(object)ballSkillDef; } return false; } } } internal class SyncAtomic : INetMessage, ISerializableObject { private NetworkInstanceId netId; private ulong gauge; public SyncAtomic() { } public SyncAtomic(NetworkInstanceId netId, ulong gauge) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) this.netId = netId; this.gauge = gauge; } public void Deserialize(NetworkReader reader) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) netId = reader.ReadNetworkId(); gauge = reader.ReadUInt64(); } public void OnReceived() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) GameObject val = Util.FindNetworkObject(netId); if (!Object.op_Implicit((Object)(object)val)) { Log.Message("No Body Object"); return; } ScoutController component = val.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.atomicGauge = (float)gauge * 0.01f; } } public void Serialize(NetworkWriter writer) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) writer.Write(netId); writer.Write(gauge); } } } namespace OfficialScoutMod.Scout.Achievements { [RegisterAchievement("KENKO_SCOUT_masteryAchievement", "KENKO_SCOUT_masteryUnlockable", null, 0u, null)] public class ScoutMasteryAchievement : BaseMasteryAchievement { public const string identifier = "KENKO_SCOUT_masteryAchievement"; public const string unlockableIdentifier = "KENKO_SCOUT_masteryUnlockable"; public override string RequiredCharacterBody => CharacterBase.instance.bodyName; public override float RequiredDifficultyCoefficient => 3f; } } namespace OfficialScoutMod.Modules { internal static class CharacterAssets { internal static Dictionary loadedBundles = new Dictionary(); internal static AssetBundle LoadAssetBundle(string bundleName) { if (bundleName == "myassetbundle") { Log.Error("AssetBundle name hasn't been changed. not loading any assets to avoid conflicts.\nMake sure to rename your assetbundle filename and rename the AssetBundleName field in your character setup code "); return null; } if (loadedBundles.ContainsKey(bundleName)) { return loadedBundles[bundleName]; } AssetBundle val = null; try { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("OfficialScoutMod." + bundleName); val = AssetBundle.LoadFromStream(stream); } catch (Exception arg) { Log.Error($"Error loading asset bundle, {bundleName}. Your asset bundle must be in a folder next to your mod dll called 'AssetBundles'. Follow the guide to build and install your mod correctly!\n{arg}"); } loadedBundles[bundleName] = val; return val; } internal static GameObject CloneTracer(string originalTracerName, string newTracerName) { if ((Object)(object)LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/" + originalTracerName) == (Object)null) { return null; } GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/" + originalTracerName), newTracerName, true); if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } val.GetComponent().speed = 250f; val.GetComponent().length = 50f; Content.CreateAndAddEffectDef(val); return val; } internal static void ConvertAllRenderersToHopooShader(GameObject objectToConvert) { if (!Object.op_Implicit((Object)(object)objectToConvert)) { return; } MeshRenderer[] componentsInChildren = objectToConvert.GetComponentsInChildren(); foreach (MeshRenderer val in componentsInChildren) { if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)((Renderer)val).sharedMaterial)) { ((Renderer)val).sharedMaterial.ConvertDefaultShaderToHopoo(); } } SkinnedMeshRenderer[] componentsInChildren2 = objectToConvert.GetComponentsInChildren(); foreach (SkinnedMeshRenderer val2 in componentsInChildren2) { if (Object.op_Implicit((Object)(object)val2) && Object.op_Implicit((Object)(object)((Renderer)val2).sharedMaterial)) { ((Renderer)val2).sharedMaterial.ConvertDefaultShaderToHopoo(); } } } internal static GameObject LoadCrosshair(string crosshairName) { GameObject val = LegacyResourcesAPI.Load("Prefabs/Crosshair/" + crosshairName + "Crosshair"); if ((Object)(object)val == (Object)null) { Log.Error("could not load crosshair with the name " + crosshairName + ". defaulting to Standard"); return LegacyResourcesAPI.Load("Prefabs/Crosshair/StandardCrosshair"); } return val; } internal static GameObject LoadEffect(this AssetBundle assetBundle, string resourceName, bool parentToTransform) { return assetBundle.LoadEffect(resourceName, "", parentToTransform); } internal static GameObject LoadEffect(this AssetBundle assetBundle, string resourceName, string soundName = "", bool parentToTransform = false) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) GameObject val = assetBundle.LoadAsset(resourceName); if (!Object.op_Implicit((Object)(object)val)) { Log.ErrorAssetBundle(resourceName, ((Object)assetBundle).name); return null; } val.AddComponent().duration = 12f; val.AddComponent(); val.AddComponent().vfxPriority = (VFXPriority)2; EffectComponent val2 = val.AddComponent(); val2.applyScale = false; val2.effectIndex = (EffectIndex)(-1); val2.parentToReferencedTransform = parentToTransform; val2.positionAtReferencedTransform = true; val2.soundName = soundName; Content.CreateAndAddEffectDef(val); return val; } internal static GameObject CreateProjectileGhostPrefab(this AssetBundle assetBundle, string ghostName) { GameObject val = assetBundle.LoadAsset(ghostName); if ((Object)(object)val == (Object)null) { Log.Error("Failed to load ghost prefab " + ghostName); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } ConvertAllRenderersToHopooShader(val); return val; } internal static GameObject CloneProjectilePrefab(string prefabName, string newPrefabName) { return PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/Projectiles/" + prefabName), newPrefabName); } internal static GameObject LoadAndAddProjectilePrefab(this AssetBundle assetBundle, string newPrefabName) { GameObject val = assetBundle.LoadAsset(newPrefabName); if ((Object)(object)val == (Object)null) { Log.ErrorAssetBundle(newPrefabName, ((Object)assetBundle).name); return null; } Content.AddProjectilePrefab(val); return val; } } public static class Config { public static ConfigFile MyConfig = ((BaseUnityPlugin)ScoutPlugin.instance).Config; public static ConfigEntry CharacterEnableConfig(string section, string characterName, string description = "", bool enabledByDefault = true) { if (string.IsNullOrEmpty(description)) { description = "Set to false to disable this character and as much of its code and content as possible"; } return BindAndOptions(section, "Enable " + characterName, enabledByDefault, description, restartRequired: true); } public static ConfigEntry BindAndOptions(string section, string name, T defaultValue, string description = "", bool restartRequired = false) { return BindAndOptions(section, name, defaultValue, 0f, 20f, description, restartRequired); } public static ConfigEntry BindAndOptions(string section, string name, T defaultValue, float min, float max, string description = "", bool restartRequired = false) { if (string.IsNullOrEmpty(description)) { description = name; } if (restartRequired) { description += " (restart required)"; } ConfigEntry result = MyConfig.Bind(section, name, defaultValue, description); if (Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions")) { } return result; } public static ConfigEntry BindAndOptionsSlider(string section, string name, float defaultValue, string description, float min = 0f, float max = 20f, bool restartRequired = false) { return BindAndOptions(section, name, defaultValue, min, max, description, restartRequired); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void TryRegisterOption(ConfigEntry entry, float min, float max, bool restartRequired) { } public static bool GetKeyPressed(KeyboardShortcut entry) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0019: 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) foreach (KeyCode modifier in ((KeyboardShortcut)(ref entry)).Modifiers) { if (!Input.GetKey(modifier)) { return false; } } return Input.GetKeyDown(((KeyboardShortcut)(ref entry)).MainKey); } } internal class Content { internal static void AddCharacterBodyPrefab(GameObject bprefab) { ContentPacks.bodyPrefabs.Add(bprefab); } internal static void AddMasterPrefab(GameObject prefab) { ContentPacks.masterPrefabs.Add(prefab); } internal static void AddProjectilePrefab(GameObject prefab) { ContentPacks.projectilePrefabs.Add(prefab); } internal static void AddSurvivorDef(SurvivorDef survivorDef) { ContentPacks.survivorDefs.Add(survivorDef); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, null, 100f); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, float sortPosition) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, null, sortPosition); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, UnlockableDef unlockableDef) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, unlockableDef, 100f); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, UnlockableDef unlockableDef, float sortPosition) { //IL_0016: 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) SurvivorDef val = ScriptableObject.CreateInstance(); val.bodyPrefab = bodyPrefab; val.displayPrefab = displayPrefab; val.primaryColor = charColor; val.cachedName = ((Object)bodyPrefab).name.Replace("Body", ""); val.displayNameToken = tokenPrefix + "NAME"; val.descriptionToken = tokenPrefix + "DESCRIPTION"; val.outroFlavorToken = tokenPrefix + "OUTRO_FLAVOR"; val.mainEndingEscapeFailureFlavorToken = tokenPrefix + "OUTRO_FAILURE"; val.desiredSortPosition = sortPosition; val.unlockableDef = unlockableDef; AddSurvivorDef(val); } internal static void AddUnlockableDef(UnlockableDef unlockableDef) { ContentPacks.unlockableDefs.Add(unlockableDef); } internal static UnlockableDef CreateAndAddUnlockableDef(string identifier, string nameToken, Sprite achievementIcon) { UnlockableDef val = ScriptableObject.CreateInstance(); val.cachedName = identifier; val.nameToken = nameToken; val.achievementIcon = achievementIcon; AddUnlockableDef(val); return val; } internal static void AddSkillDef(SkillDef skillDef) { ContentPacks.skillDefs.Add(skillDef); } internal static void AddSkillFamily(SkillFamily skillFamily) { ContentPacks.skillFamilies.Add(skillFamily); } internal static void AddEntityState(Type entityState) { ContentPacks.entityStates.Add(entityState); } internal static void AddBuffDef(BuffDef buffDef) { ContentPacks.buffDefs.Add(buffDef); } internal static BuffDef CreateAndAddBuff(string buffName, Sprite buffIcon, Color buffColor, bool canStack, bool isDebuff, bool isCooldown) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) BuffDef val = ScriptableObject.CreateInstance(); ((Object)val).name = buffName; val.buffColor = buffColor; val.canStack = canStack; val.isDebuff = isDebuff; val.isCooldown = isCooldown; val.eliteDef = null; val.iconSprite = buffIcon; AddBuffDef(val); return val; } internal static void AddEffectDef(EffectDef effectDef) { ContentPacks.effectDefs.Add(effectDef); } internal static EffectDef CreateAndAddEffectDef(GameObject effectPrefab) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown EffectDef val = new EffectDef(effectPrefab); AddEffectDef(val); return val; } internal static void AddNetworkSoundEventDef(NetworkSoundEventDef networkSoundEventDef) { ContentPacks.networkSoundEventDefs.Add(networkSoundEventDef); } internal static NetworkSoundEventDef CreateAndAddNetworkSoundEventDef(string eventName) { NetworkSoundEventDef val = ScriptableObject.CreateInstance(); val.akId = AkSoundEngine.GetIDFromString(eventName); val.eventName = eventName; AddNetworkSoundEventDef(val); return val; } } internal class ContentPacks : IContentPackProvider { [CompilerGenerated] private sealed class d__18 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public FinalizeAsyncArgs args; public ContentPacks <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__18(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__17 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public GetContentPackAsyncArgs args; public ContentPacks <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__17(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; ContentPack.Copy(<>4__this.contentPack, args.output); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__16 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public LoadStaticContentAsyncArgs args; public ContentPacks <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__16(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { if (<>1__state != 0) { return false; } <>1__state = -1; <>4__this.contentPack.identifier = <>4__this.identifier; <>4__this.contentPack.bodyPrefabs.Add(bodyPrefabs.ToArray()); <>4__this.contentPack.masterPrefabs.Add(masterPrefabs.ToArray()); <>4__this.contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray()); <>4__this.contentPack.survivorDefs.Add(survivorDefs.ToArray()); <>4__this.contentPack.unlockableDefs.Add(unlockableDefs.ToArray()); <>4__this.contentPack.skillDefs.Add(skillDefs.ToArray()); <>4__this.contentPack.skillFamilies.Add(skillFamilies.ToArray()); <>4__this.contentPack.entityStateTypes.Add(entityStates.ToArray()); <>4__this.contentPack.buffDefs.Add(buffDefs.ToArray()); <>4__this.contentPack.effectDefs.Add(effectDefs.ToArray()); <>4__this.contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray()); args.ReportProgress(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } internal ContentPack contentPack = new ContentPack(); public static List bodyPrefabs = new List(); public static List masterPrefabs = new List(); public static List projectilePrefabs = new List(); public static List survivorDefs = new List(); public static List unlockableDefs = new List(); public static List skillFamilies = new List(); public static List skillDefs = new List(); public static List entityStates = new List(); public static List buffDefs = new List(); public static List effectDefs = new List(); public static List networkSoundEventDefs = new List(); public string identifier => "com.kenko.Scout"; public void Initialize() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } [IteratorStateMachine(typeof(d__16))] public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__16(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(d__17))] public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__17(0) { <>4__this = this, args = args }; } [IteratorStateMachine(typeof(d__18))] public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__18(0) { <>4__this = this, args = args }; } } internal static class ItemDisplayCheck { public static List allDisplayedItems; public static void PrintUnused(ItemDisplayRuleSet itemDisplayRuleSet, string bodyName = "") { PrintUnused((IEnumerable)itemDisplayRuleSet.keyAssetRuleGroups.ToList(), bodyName); } public static void PrintUnused(IEnumerable ruleSet = null, string bodyName = "") { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) string text = "generating item displays for " + bodyName; if (allDisplayedItems == null) { LazyGatherAllItems(); } List list = new List(allDisplayedItems); string text2 = ""; if (ruleSet != null) { foreach (KeyAssetRuleGroup item in ruleSet) { if (item.displayRuleGroup.rules.Length != 0) { list.Remove(item.keyAsset); if (string.IsNullOrEmpty(text2)) { text2 = item.displayRuleGroup.rules[0].childName; } } } } if (string.IsNullOrEmpty(text2)) { text2 = "Chest"; } foreach (Object item2 in list) { string text3 = ""; if (ItemDisplays.KeyAssetDisplayPrefabs.ContainsKey(item2)) { text3 += SpitOutNewRule(item2, text2, ItemDisplays.KeyAssetDisplayPrefabs[item2]); } else { Log.Error($"COULD NOT FIND DISPLAY PREFABS FOR KEYASSET {item2}"); } text += text3; } Log.Message(text); } private static void LazyGatherAllItems() { allDisplayedItems = new List(ItemDisplays.KeyAssetDisplayPrefabs.Keys); allDisplayedItems.Sort(delegate(Object item1, Object item2) { if (item1 is ItemDef && item2 is ItemDef) { return item1.name.CompareTo(item2.name); } if (item1 is EquipmentDef && item2 is EquipmentDef) { return item1.name.CompareTo(item2.name); } if (item1 is ItemDef && item2 is EquipmentDef) { return -1; } return (item1 is EquipmentDef && item2 is ItemDef) ? 1 : 0; }); } private static string SpitOutNewRule(Object asset, string firstCompatibleChild, ItemDisplayRule[] displayRules) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) if (displayRules.Length == 0) { return $"\n[NO DISPLAY RULES FOUND FOR THE KEYASSET {asset}"; } string text = "\n itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets[\"" + asset.name + "\"]"; for (int i = 0; i < displayRules.Length; i++) { text = (((int)displayRules[i].limbMask != 0) ? (text + ",\n" + $" ItemDisplays.CreateLimbMaskDisplayRule(LimbFlags.{displayRules[i].limbMask})") : (text + ",\n ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay(\"" + ((Object)displayRules[i].followerPrefab).name + "\"),\n \"" + firstCompatibleChild + "\",\n new Vector3(2, 2, 2),\n new Vector3(0, 0, 0),\n new Vector3(1, 1, 1)\n )")); } return text + "\n ));"; } } internal static class ItemDisplays { private static Dictionary itemDisplayPrefabs = new Dictionary(); public static Dictionary KeyAssetDisplayPrefabs = new Dictionary(); public static Dictionary KeyAssets = new Dictionary(); public static int queuedDisplays; public static bool initialized = false; public static void LazyInit() { if (!initialized) { initialized = true; PopulateDisplays(); } } internal static void DisposeWhenDone() { queuedDisplays--; if (queuedDisplays <= 0 && initialized) { initialized = false; itemDisplayPrefabs = null; KeyAssetDisplayPrefabs = null; KeyAssets = null; } } internal static void PopulateDisplays() { PopulateFromBody("LoaderBody"); } private static void PopulateFromBody(string bodyName) { ItemDisplayRuleSet itemDisplayRuleSet = ((Component)LegacyResourcesAPI.Load("Prefabs/CharacterBodies/" + bodyName).GetComponent().modelTransform).GetComponent().itemDisplayRuleSet; KeyAssetRuleGroup[] keyAssetRuleGroups = itemDisplayRuleSet.keyAssetRuleGroups; for (int i = 0; i < keyAssetRuleGroups.Length; i++) { ItemDisplayRule[] rules = keyAssetRuleGroups[i].displayRuleGroup.rules; KeyAssetDisplayPrefabs[keyAssetRuleGroups[i].keyAsset] = rules; KeyAssets[keyAssetRuleGroups[i].keyAsset.name] = keyAssetRuleGroups[i].keyAsset; for (int j = 0; j < rules.Length; j++) { GameObject followerPrefab = rules[j].followerPrefab; if (Object.op_Implicit((Object)(object)followerPrefab)) { string key = ((Object)followerPrefab).name?.ToLowerInvariant(); if (!itemDisplayPrefabs.ContainsKey(key)) { itemDisplayPrefabs[key] = followerPrefab; } } } } } private static void PopulateCustomLightningArm() { GameObject val = PrefabAPI.InstantiateClone(itemDisplayPrefabs["displaylightningarmright"], "DisplayLightningCustom", false); LimbMatcher component = val.GetComponent(); component.limbPairs[0].targetChildLimb = "LightningArm1"; component.limbPairs[1].targetChildLimb = "LightningArm2"; component.limbPairs[2].targetChildLimb = "LightningArmEnd"; itemDisplayPrefabs["displaylightningarmcustom"] = val; } public static GameObject LoadDisplay(string name) { if (itemDisplayPrefabs.ContainsKey(name.ToLowerInvariant()) && Object.op_Implicit((Object)(object)itemDisplayPrefabs[name.ToLowerInvariant()])) { return itemDisplayPrefabs[name.ToLowerInvariant()]; } Log.Error("item display " + name + " returned null"); return null; } public static KeyAssetRuleGroup CreateDisplayRuleGroupWithRules(string itemName, params ItemDisplayRule[] rules) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return CreateDisplayRuleGroupWithRules(GetKeyAssetFromString(itemName), rules); } public static KeyAssetRuleGroup CreateDisplayRuleGroupWithRules(Object keyAsset_, params ItemDisplayRule[] rules) { //IL_0019: 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_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0040: 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) if (keyAsset_ == (Object)null) { Log.Error("could not find keyasset"); } KeyAssetRuleGroup result = default(KeyAssetRuleGroup); result.keyAsset = keyAsset_; result.displayRuleGroup = new DisplayRuleGroup { rules = rules }; return result; } public static ItemDisplayRule CreateDisplayRule(string prefabName, string childName, Vector3 position, Vector3 rotation, Vector3 scale) { //IL_0007: 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_0009: 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) return CreateDisplayRule(LoadDisplay(prefabName), childName, position, rotation, scale); } public static ItemDisplayRule CreateDisplayRule(GameObject itemPrefab, string childName, Vector3 position, Vector3 rotation, Vector3 scale) { //IL_0003: 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_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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_0042: 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_0046: Unknown result type (might be due to invalid IL or missing references) ItemDisplayRule result = default(ItemDisplayRule); result.ruleType = (ItemDisplayRuleType)0; result.childName = childName; result.followerPrefab = itemPrefab; result.limbMask = (LimbFlags)0; result.localPos = position; result.localAngles = rotation; result.localScale = scale; return result; } public static ItemDisplayRule CreateLimbMaskDisplayRule(LimbFlags limb) { //IL_0003: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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) ItemDisplayRule result = default(ItemDisplayRule); result.ruleType = (ItemDisplayRuleType)1; result.limbMask = limb; result.childName = ""; result.followerPrefab = null; return result; } private static Object GetKeyAssetFromString(string itemName) { Object val = (Object)(object)LegacyResourcesAPI.Load("ItemDefs/" + itemName); if (val == (Object)null) { val = (Object)(object)LegacyResourcesAPI.Load("EquipmentDefs/" + itemName); } if (val == (Object)null) { Log.Error("Could not load keyasset for " + itemName); } return val; } } internal static class Language { public static string TokensOutput = ""; public static bool usingLanguageFolder = false; public static bool printingEnabled = false; public static void Init() { if (usingLanguageFolder) { Language.collectLanguageRootFolders += Language_collectLanguageRootFolders; } } private static void Language_collectLanguageRootFolders(List obj) { string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)ScoutPlugin.instance).Info.Location), "Language"); if (Directory.Exists(text)) { obj.Add(text); } } public static void Add(string token, string text) { if (!usingLanguageFolder) { LanguageAPI.Add(token, text); } if (printingEnabled) { TokensOutput = TokensOutput + "\n \"" + token + "\" : \"" + text.Replace(Environment.NewLine, "\\n").Replace("\n", "\\n") + "\","; } } public static void PrintOutput(string fileName = "") { if (printingEnabled) { string text = "{\n strings:\n {" + TokensOutput + "\n }\n}"; Log.Message(fileName + ": \n" + text); if (!string.IsNullOrEmpty(fileName)) { string path = Path.Combine(Directory.GetParent(((BaseUnityPlugin)ScoutPlugin.instance).Info.Location).FullName, "Language", "en", fileName); File.WriteAllText(path, text); } TokensOutput = ""; } } } internal static class Materials { private static List cachedMaterials = new List(); internal static Shader hotpoo = LegacyResourcesAPI.Load("Shaders/Deferred/HGStandard"); public static Material LoadMaterial(this AssetBundle assetBundle, string materialName) { return assetBundle.CreateHopooMaterialFromBundle(materialName); } public static Material CreateHopooMaterialFromBundle(this AssetBundle assetBundle, string materialName) { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown Material val = cachedMaterials.Find(delegate(Material mat) { materialName.Replace(" (Instance)", ""); return ((Object)mat).name.Contains(materialName); }); if (Object.op_Implicit((Object)(object)val)) { Log.Debug(((Object)val).name + " has already been loaded. returning cached"); return val; } val = assetBundle.LoadAsset(materialName); if (!Object.op_Implicit((Object)(object)val)) { Log.ErrorAssetBundle(materialName, ((Object)assetBundle).name); return new Material(hotpoo); } return val.ConvertDefaultShaderToHopoo(); } public static Material SetHopooMaterial(this Material tempMat) { return tempMat.ConvertDefaultShaderToHopoo(); } public static Material ConvertDefaultShaderToHopoo(this Material tempMat) { //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) if (cachedMaterials.Contains(tempMat)) { Log.Debug(((Object)tempMat).name + " has already been converted. returning cached"); return tempMat; } string text = ((Object)tempMat.shader).name.ToLowerInvariant(); if (!text.StartsWith("standard") && !text.StartsWith("autodesk")) { Log.Debug(((Object)tempMat).name + " is not unity standard shader. aborting material conversion"); return tempMat; } float? num = null; Color? val = null; if (tempMat.IsKeywordEnabled("_NORMALMAP")) { num = tempMat.GetFloat("_BumpScale"); } if (tempMat.IsKeywordEnabled("_EMISSION")) { val = tempMat.GetColor("_EmissionColor"); } tempMat.shader = hotpoo; tempMat.SetTexture("_EmTex", tempMat.GetTexture("_EmissionMap")); tempMat.EnableKeyword("DITHER"); if (num.HasValue) { tempMat.SetFloat("_NormalStrength", num.Value); tempMat.SetTexture("_NormalTex", tempMat.GetTexture("_BumpMap")); } if (val.HasValue) { tempMat.SetColor("_EmColor", val.Value); tempMat.SetFloat("_EmPower", 1f); } if (tempMat.IsKeywordEnabled("NOCULL")) { tempMat.SetInt("_Cull", 0); } if (tempMat.IsKeywordEnabled("LIMBREMOVAL")) { tempMat.SetInt("_LimbRemovalOn", 1); } cachedMaterials.Add(tempMat); return tempMat; } public static Material MakeUnique(this Material material) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown if (cachedMaterials.Contains(material)) { return new Material(material); } return material; } public static Material SetColor(this Material material, Color color) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) material.SetColor("_Color", color); return material; } public static Material SetNormal(this Material material, float normalStrength = 1f) { material.SetFloat("_NormalStrength", normalStrength); return material; } public static Material SetEmission(this Material material) { return material.SetEmission(1f); } public static Material SetEmission(this Material material, float emission) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return material.SetEmission(emission, Color.white); } public static Material SetEmission(this Material material, float emission, Color emissionColor) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) material.SetFloat("_EmPower", emission); material.SetColor("_EmColor", emissionColor); return material; } public static Material SetCull(this Material material, bool cull = false) { material.SetInt("_Cull", cull ? 1 : 0); return material; } public static Material SetSpecular(this Material material, float strength) { material.SetFloat("_SpecularStrength", strength); return material; } public static Material SetSpecular(this Material material, float strength, float exponent) { material.SetFloat("_SpecularStrength", strength); material.SetFloat("SpecularExponent", exponent); return material; } } internal static class Prefabs { private static PhysicMaterial ragdollMaterial; public static GameObject CreateDisplayPrefab(AssetBundle assetBundle, string displayPrefabName, GameObject prefab) { GameObject val = assetBundle.LoadAsset(displayPrefabName); if ((Object)(object)val == (Object)null) { Log.Error("could not load display prefab " + displayPrefabName + ". Make sure this prefab exists in assetbundle " + ((Object)assetBundle).name); return null; } CharacterModel val2 = val.GetComponent(); if (!Object.op_Implicit((Object)(object)val2)) { val2 = val.AddComponent(); } val2.baseRendererInfos = prefab.GetComponentInChildren().baseRendererInfos; CharacterAssets.ConvertAllRenderersToHopooShader(val); return val; } public static GameObject LoadCharacterModel(AssetBundle assetBundle, string modelName) { GameObject val = assetBundle.LoadAsset(modelName); if ((Object)(object)val == (Object)null) { Log.Error("could not load model prefab " + modelName + ". Make sure this prefab exists in assetbundle " + ((Object)assetBundle).name); return null; } return val; } public static GameObject LoadCharacterBody(AssetBundle assetBundle, string bodyName) { GameObject val = assetBundle.LoadAsset(bodyName); if ((Object)(object)val == (Object)null) { Log.Error("could not load body prefab " + bodyName + ". Make sure this prefab exists in assetbundle " + ((Object)assetBundle).name); return null; } return val; } public static GameObject CloneCharacterBody(BodyInfo bodyInfo) { GameObject val = LegacyResourcesAPI.Load("Prefabs/CharacterBodies/" + bodyInfo.bodyNameToClone + "Body"); if (!Object.op_Implicit((Object)(object)val)) { Log.Error(bodyInfo.bodyNameToClone + " Body to clone is not a valid body, character creation failed"); return null; } GameObject val2 = PrefabAPI.InstantiateClone(val, bodyInfo.bodyName); for (int num = val2.transform.childCount - 1; num >= 0; num--) { Object.DestroyImmediate((Object)(object)((Component)val2.transform.GetChild(num)).gameObject); } return val2; } public static GameObject CreateBodyPrefab(AssetBundle assetBundle, string modelPrefabName, BodyInfo bodyInfo) { return CreateBodyPrefab(LoadCharacterModel(assetBundle, modelPrefabName), bodyInfo); } public static GameObject CreateBodyPrefab(GameObject model, BodyInfo bodyInfo) { return CreateBodyPrefab(CloneCharacterBody(bodyInfo), model, bodyInfo); } public static GameObject CreateBodyPrefab(GameObject newBodyPrefab, AssetBundle assetBundle, string modelName, BodyInfo bodyInfo) { return CreateBodyPrefab(newBodyPrefab, LoadCharacterModel(assetBundle, modelName), bodyInfo); } public static GameObject CreateBodyPrefab(AssetBundle assetBundle, string bodyPrefabName, string modelPrefabName, BodyInfo bodyInfo) { return CreateBodyPrefab(LoadCharacterBody(assetBundle, bodyPrefabName), LoadCharacterModel(assetBundle, modelPrefabName), bodyInfo); } public static GameObject CreateBodyPrefab(GameObject newBodyPrefab, GameObject model, BodyInfo bodyInfo) { if ((Object)(object)model == (Object)null || (Object)(object)newBodyPrefab == (Object)null) { Log.Error($"Character creation failed. Model: {model}, Body: {newBodyPrefab}"); return null; } SetupCharacterBody(newBodyPrefab, bodyInfo); Transform modelBaseTransform = AddCharacterModelToSurvivorBody(newBodyPrefab, model.transform, bodyInfo); SetupModelLocator(newBodyPrefab, modelBaseTransform, model.transform); SetupCharacterDirection(newBodyPrefab, modelBaseTransform, model.transform); SetupCameraTargetParams(newBodyPrefab, bodyInfo); SetupCapsuleCollider(newBodyPrefab); Content.AddCharacterBodyPrefab(newBodyPrefab); return newBodyPrefab; } private static void SetupCharacterBody(GameObject newBodyPrefab, BodyInfo bodyInfo) { //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_0059: 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_0209: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) CharacterBody component = newBodyPrefab.GetComponent(); component.baseNameToken = bodyInfo.bodyNameToken; component.subtitleNameToken = bodyInfo.subtitleNameToken; component.portraitIcon = bodyInfo.characterPortrait; component.bodyColor = bodyInfo.bodyColor; component._defaultCrosshairPrefab = bodyInfo.crosshair; component.hideCrosshair = false; component.preferredPodPrefab = bodyInfo.podPrefab; component.preferredInitialStateType = bodyInfo.initialStateType; component.baseMaxHealth = bodyInfo.maxHealth; component.baseRegen = bodyInfo.healthRegen; component.baseArmor = bodyInfo.armor; component.baseMaxShield = bodyInfo.shield; component.baseDamage = bodyInfo.damage; component.baseAttackSpeed = bodyInfo.attackSpeed; component.baseCrit = bodyInfo.crit; component.baseMoveSpeed = bodyInfo.moveSpeed; component.baseJumpPower = bodyInfo.jumpPower; component.autoCalculateLevelStats = bodyInfo.autoCalculateLevelStats; if (bodyInfo.autoCalculateLevelStats) { component.levelMaxHealth = Mathf.Round(component.baseMaxHealth * 0.3f); component.levelMaxShield = Mathf.Round(component.baseMaxShield * 0.3f); component.levelRegen = component.baseRegen * 0.2f; component.levelMoveSpeed = 0f; component.levelJumpPower = 0f; component.levelDamage = component.baseDamage * 0.2f; component.levelAttackSpeed = 0f; component.levelCrit = 0f; component.levelArmor = 0f; } else { component.levelMaxHealth = bodyInfo.healthGrowth; component.levelMaxShield = bodyInfo.shieldGrowth; component.levelRegen = bodyInfo.regenGrowth; component.levelMoveSpeed = bodyInfo.moveSpeedGrowth; component.levelJumpPower = bodyInfo.jumpPowerGrowth; component.levelDamage = bodyInfo.damageGrowth; component.levelAttackSpeed = bodyInfo.attackSpeedGrowth; component.levelCrit = bodyInfo.critGrowth; component.levelArmor = bodyInfo.armorGrowth; } component.baseAcceleration = bodyInfo.acceleration; component.baseJumpCount = bodyInfo.jumpCount; component.sprintingSpeedMultiplier = 1.45f; component.bodyFlags = (BodyFlags)16; component.rootMotionInMainState = false; component.hullClassification = (HullClassification)0; component.isChampion = false; } private static Transform AddCharacterModelToSurvivorBody(GameObject bodyPrefab, Transform modelTransform, BodyInfo bodyInfo) { //IL_0063: 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_0023: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_00c4: 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_010e: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) Transform val = bodyPrefab.transform.Find("ModelBase"); if ((Object)(object)val == (Object)null) { val = new GameObject("ModelBase").transform; val.parent = bodyPrefab.transform; val.localPosition = bodyInfo.modelBasePosition; val.localRotation = Quaternion.identity; } modelTransform.parent = ((Component)val).transform; modelTransform.localPosition = Vector3.zero; modelTransform.localRotation = Quaternion.identity; Transform val2 = bodyPrefab.transform.Find("CameraPivot"); if ((Object)(object)val2 == (Object)null) { val2 = new GameObject("CameraPivot").transform; val2.parent = bodyPrefab.transform; val2.localPosition = bodyInfo.cameraPivotPosition; val2.localRotation = Quaternion.identity; } Transform val3 = bodyPrefab.transform.Find("AimOrigin"); if ((Object)(object)val3 == (Object)null) { val3 = new GameObject("AimOrigin").transform; val3.parent = bodyPrefab.transform; val3.localPosition = bodyInfo.aimOriginPosition; val3.localRotation = Quaternion.identity; } bodyPrefab.GetComponent().aimOriginTransform = val3; return ((Component)val).transform; } private static void SetupCharacterDirection(GameObject prefab, Transform modelBaseTransform, Transform modelTransform) { if (Object.op_Implicit((Object)(object)prefab.GetComponent())) { CharacterDirection component = prefab.GetComponent(); component.targetTransform = modelBaseTransform; component.overrideAnimatorForwardTransform = null; component.rootMotionAccumulator = null; component.modelAnimator = ((Component)modelTransform).GetComponent(); component.driveFromRootRotation = false; component.turnSpeed = 720f; } } private static void SetupCameraTargetParams(GameObject prefab, BodyInfo bodyInfo) { CameraTargetParams component = prefab.GetComponent(); component.cameraParams = bodyInfo.cameraParams; component.cameraPivotTransform = prefab.transform.Find("CameraPivot"); } private static void SetupModelLocator(GameObject prefab, Transform modelBaseTransform, Transform modelTransform) { ModelLocator component = prefab.GetComponent(); component.modelTransform = modelTransform; component.modelBaseTransform = modelBaseTransform; } private static void SetupCapsuleCollider(GameObject prefab) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) CapsuleCollider component = prefab.GetComponent(); component.center = new Vector3(0f, 0f, 0f); component.radius = 0.5f; component.height = 1.82f; component.direction = 1; } public static CharacterModel SetupCharacterModel(GameObject bodyPrefab, CustomRendererInfo[] customInfos = null) { CharacterModel val = ((Component)bodyPrefab.GetComponent().modelTransform).gameObject.GetComponent(); bool flag = (Object)(object)val != (Object)null; if (!flag) { val = ((Component)bodyPrefab.GetComponent().modelTransform).gameObject.AddComponent(); } val.body = bodyPrefab.GetComponent(); val.autoPopulateLightInfos = true; val.invisibilityCount = 0; val.temporaryOverlays = new List(); if (!flag) { SetupCustomRendererInfos(val, customInfos); } else { SetupPreAttachedRendererInfos(val); } SetupHurtboxGroup(bodyPrefab, ((Component)val).gameObject); SetupAimAnimator(bodyPrefab, ((Component)val).gameObject); SetupFootstepController(((Component)val).gameObject); SetupRagdoll(((Component)val).gameObject); return val; } public static void SetupPreAttachedRendererInfos(CharacterModel characterModel) { for (int i = 0; i < characterModel.baseRendererInfos.Length; i++) { if ((Object)(object)characterModel.baseRendererInfos[i].defaultMaterial == (Object)null) { characterModel.baseRendererInfos[i].defaultMaterial = characterModel.baseRendererInfos[i].renderer.sharedMaterial; } if ((Object)(object)characterModel.baseRendererInfos[i].defaultMaterial == (Object)null) { Log.Error($"no material for rendererinfo of this renderer: {characterModel.baseRendererInfos[i].renderer}"); } characterModel.baseRendererInfos[i].defaultMaterial.ConvertDefaultShaderToHopoo(); } } public static void SetupCustomRendererInfos(CharacterModel characterModel, CustomRendererInfo[] customInfos) { //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) ChildLocator component = ((Component)characterModel).GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { Log.Error("Failed CharacterModel setup: ChildLocator component does not exist on the model"); return; } List list = new List(); for (int i = 0; i < customInfos.Length; i++) { if (!Object.op_Implicit((Object)(object)component.FindChild(customInfos[i].childName))) { Log.Error("Trying to add a RendererInfo for a renderer that does not exist: " + customInfos[i].childName); continue; } Renderer component2 = ((Component)component.FindChild(customInfos[i].childName)).GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { Material val = customInfos[i].material; if ((Object)(object)val == (Object)null) { val = ((!customInfos[i].dontHotpoo) ? component2.sharedMaterial.ConvertDefaultShaderToHopoo() : component2.sharedMaterial); } list.Add(new RendererInfo { renderer = component2, defaultMaterial = val, ignoreOverlays = customInfos[i].ignoreOverlays, defaultShadowCastingMode = (ShadowCastingMode)1 }); } } characterModel.baseRendererInfos = list.ToArray(); } private static void SetupHurtboxGroup(GameObject bodyPrefab, GameObject model) { SetupMainHurtboxesFromChildLocator(bodyPrefab, model); SetHurtboxesHealthComponents(bodyPrefab); } private static void SetupMainHurtboxesFromChildLocator(GameObject bodyPrefab, GameObject model) { //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)bodyPrefab.GetComponent() != (Object)null) { Log.Debug("Hitboxgroup already exists on model prefab. aborting code setup"); return; } ChildLocator component = model.GetComponent(); if (!Object.op_Implicit((Object)(object)component.FindChild("MainHurtbox"))) { Log.Error("Could not set up main hurtbox: make sure you have a transform pair in your prefab's ChildLocator called 'MainHurtbox'"); return; } HurtBoxGroup val = model.AddComponent(); HurtBox val2 = null; GameObject val3 = component.FindChildGameObject("HeadHurtbox"); if (Object.op_Implicit((Object)(object)val3)) { Log.Debug("HeadHurtboxFound. Setting up"); val2 = val3.AddComponent(); ((Component)val2).gameObject.layer = LayerIndex.entityPrecise.intVal; val2.healthComponent = bodyPrefab.GetComponent(); val2.isBullseye = false; val2.isSniperTarget = true; val2.damageModifier = (DamageModifier)0; val2.hurtBoxGroup = val; val2.indexInGroup = 1; } HurtBox val4 = component.FindChildGameObject("MainHurtbox").AddComponent(); ((Component)val4).gameObject.layer = LayerIndex.entityPrecise.intVal; val4.healthComponent = bodyPrefab.GetComponent(); val4.isBullseye = true; val4.isSniperTarget = (Object)(object)val2 == (Object)null; val4.damageModifier = (DamageModifier)0; val4.hurtBoxGroup = val; val4.indexInGroup = 0; if (Object.op_Implicit((Object)(object)val2)) { val.hurtBoxes = (HurtBox[])(object)new HurtBox[2] { val4, val2 }; } else { val.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val4 }; } val.mainHurtBox = val4; val.bullseyeCount = 1; } public static void SetHurtboxesHealthComponents(GameObject bodyPrefab) { HealthComponent component = bodyPrefab.GetComponent(); HurtBoxGroup[] componentsInChildren = bodyPrefab.GetComponentsInChildren(); foreach (HurtBoxGroup val in componentsInChildren) { val.mainHurtBox.healthComponent = component; for (int j = 0; j < val.hurtBoxes.Length; j++) { val.hurtBoxes[j].healthComponent = component; } } } private static void SetupFootstepController(GameObject model) { FootstepHandler val = model.AddComponent(); val.baseFootstepString = "Play_player_footstep"; val.sprintFootstepOverrideString = ""; val.enableFootstepDust = true; val.footstepDustPrefab = LegacyResourcesAPI.Load("Prefabs/GenericFootstepDust"); } private static void SetupRagdoll(GameObject model) { RagdollController component = model.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { return; } if ((Object)(object)ragdollMaterial == (Object)null) { ragdollMaterial = ((Component)LegacyResourcesAPI.Load("Prefabs/CharacterBodies/CommandoBody").GetComponentInChildren().bones[1]).GetComponent().material; } Transform[] bones = component.bones; foreach (Transform val in bones) { if (Object.op_Implicit((Object)(object)val)) { ((Component)val).gameObject.layer = LayerIndex.ragdoll.intVal; Collider component2 = ((Component)val).GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.sharedMaterial = ragdollMaterial; } else { Log.Error($"Ragdoll bone {((Component)val).gameObject} doesn't have a collider. Ragdoll will break."); } } } } private static void SetupAimAnimator(GameObject prefab, GameObject model) { AimAnimator val = model.AddComponent(); val.directionComponent = prefab.GetComponent(); val.pitchRangeMax = 60f; val.pitchRangeMin = -60f; val.yawRangeMin = -80f; val.yawRangeMax = 80f; val.pitchGiveupRange = 30f; val.yawGiveupRange = 10f; val.giveupDuration = 3f; val.inputBank = prefab.GetComponent(); } public static void CreateGenericDoppelganger(GameObject bodyPrefab, string masterName, string masterToCopy) { CloneDopplegangerMaster(bodyPrefab, masterName, masterToCopy); } public static GameObject CloneDopplegangerMaster(GameObject bodyPrefab, string masterName, string masterToCopy) { GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/CharacterMasters/" + masterToCopy + "MonsterMaster"), masterName, true); val.GetComponent().bodyPrefab = bodyPrefab; Content.AddMasterPrefab(val); return val; } public static GameObject CreateBlankMasterPrefab(GameObject bodyPrefab, string masterName) { GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/CharacterMasters/CommandoMonsterMaster"), masterName, true); ContentPacks.masterPrefabs.Add(val); CharacterMaster component = val.GetComponent(); component.bodyPrefab = bodyPrefab; AISkillDriver[] components = val.GetComponents(); for (int i = 0; i < components.Length; i++) { Object.Destroy((Object)(object)components[i]); } return val; } public static GameObject LoadMaster(this AssetBundle assetBundle, GameObject bodyPrefab, string assetName) { //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) GameObject val = assetBundle.LoadAsset(assetName); BaseAI val2 = val.GetComponent(); if ((Object)(object)val2 == (Object)null) { val2 = val.AddComponent(); val2.aimVectorDampTime = 0.1f; val2.aimVectorMaxSpeed = 360f; } val2.scanState = new SerializableEntityStateType(typeof(Wander)); EntityStateMachine component = val.GetComponent(); if ((Object)(object)component == (Object)null) { AddEntityStateMachine(val, "AI", typeof(Wander), typeof(Wander)); } val2.stateMachine = component; CharacterMaster val3 = val.GetComponent(); if ((Object)(object)val3 == (Object)null) { val3 = val.AddComponent(); } val3.bodyPrefab = bodyPrefab; val3.teamIndex = (TeamIndex)2; Content.AddMasterPrefab(val); return val; } public static void ClearEntityStateMachines(GameObject bodyPrefab) { EntityStateMachine[] components = bodyPrefab.GetComponents(); for (int num = components.Length - 1; num >= 0; num--) { Object.DestroyImmediate((Object)(object)components[num]); } NetworkStateMachine component = bodyPrefab.GetComponent(); component.stateMachines = Array.Empty(); CharacterDeathBehavior component2 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.idleStateMachine = Array.Empty(); } SetStateOnHurt component3 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3)) { component3.idleStateMachine = Array.Empty(); } CharacterBody component4 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component4)) { component4.vehicleIdleStateMachine = Array.Empty(); } } public static void AddMainEntityStateMachine(GameObject bodyPrefab, string machineName = "Body", Type mainStateType = null, Type initalStateType = null) { //IL_005d: 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_0084: 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) EntityStateMachine val = EntityStateMachine.FindByCustomName(bodyPrefab, machineName); if ((Object)(object)val == (Object)null) { val = bodyPrefab.AddComponent(); } else { Log.Message("An Entity State Machine already exists with the name " + machineName + ". replacing."); } val.customName = machineName; if (mainStateType == null) { mainStateType = typeof(GenericCharacterMain); } val.mainStateType = new SerializableEntityStateType(mainStateType); if (initalStateType == null) { initalStateType = typeof(SpawnTeleporterState); } val.initialStateType = new SerializableEntityStateType(initalStateType); NetworkStateMachine component = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.stateMachines = component.stateMachines.Append(val).ToArray(); } CharacterDeathBehavior component2 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.deathStateMachine = val; } SetStateOnHurt component3 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3)) { component3.targetStateMachine = val; } } public static void AddEntityStateMachine(GameObject prefab, string machineName, Type mainStateType = null, Type initalStateType = null) { //IL_005d: 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_0084: 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) EntityStateMachine val = EntityStateMachine.FindByCustomName(prefab, machineName); if ((Object)(object)val == (Object)null) { val = prefab.AddComponent(); } else { Log.Message("An Entity State Machine already exists with the name " + machineName + ". replacing."); } val.customName = machineName; if (mainStateType == null) { mainStateType = typeof(Idle); } val.mainStateType = new SerializableEntityStateType(mainStateType); if (initalStateType == null) { initalStateType = typeof(Idle); } val.initialStateType = new SerializableEntityStateType(initalStateType); NetworkStateMachine component = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.stateMachines = component.stateMachines.Append(val).ToArray(); } CharacterDeathBehavior component2 = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.idleStateMachine = component2.idleStateMachine.Append(val).ToArray(); } SetStateOnHurt component3 = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3)) { component3.idleStateMachine = component3.idleStateMachine.Append(val).ToArray(); } } public static void SetupHitBoxGroup(GameObject modelPrefab, string hitBoxGroupName, params string[] hitboxChildNames) { ChildLocator component = modelPrefab.GetComponent(); Transform[] array = (Transform[])(object)new Transform[hitboxChildNames.Length]; for (int i = 0; i < hitboxChildNames.Length; i++) { array[i] = component.FindChild(hitboxChildNames[i]); if ((Object)(object)array[i] == (Object)null) { Log.Error("missing hitbox for " + hitboxChildNames[i]); } } SetupHitBoxGroup(modelPrefab, hitBoxGroupName, array); } public static void SetupHitBoxGroup(GameObject prefab, string hitBoxGroupName, params Transform[] hitBoxTransforms) { List list = new List(); foreach (Transform val in hitBoxTransforms) { if ((Object)(object)val == (Object)null) { Log.Error("Error setting up hitboxGroup for " + hitBoxGroupName + ": hitbox transform was null"); continue; } HitBox item = ((Component)val).gameObject.AddComponent(); ((Component)val).gameObject.layer = LayerIndex.projectile.intVal; list.Add(item); } if (list.Count == 0) { Log.Error("No hitboxes were set up. aborting setting up hitboxGroup for " + hitBoxGroupName); return; } HitBoxGroup val2 = prefab.AddComponent(); val2.hitBoxes = list.ToArray(); val2.groupName = hitBoxGroupName; } } public class CustomRendererInfo { public string childName; public Material material = null; public bool dontHotpoo = false; public bool ignoreOverlays = false; } internal static class Skills { public static void CreateSkillFamilies(GameObject targetPrefab, bool destroyExisting = true) { SkillSlot[] array = new SkillSlot[4]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); CreateSkillFamilies(targetPrefab, destroyExisting, (SkillSlot[])(object)array); } public static void CreateSkillFamilies(GameObject targetPrefab, bool destroyExisting, params SkillSlot[] slots) { //IL_0068: 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_006c: 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_0085: Expected I4, but got Unknown if (destroyExisting) { GenericSkill[] componentsInChildren = targetPrefab.GetComponentsInChildren(); foreach (GenericSkill val in componentsInChildren) { Object.DestroyImmediate((Object)(object)val); } } SkillLocator component = targetPrefab.GetComponent(); ScoutPassive scoutPassive = default(ScoutPassive); if (targetPrefab.TryGetComponent(ref scoutPassive)) { scoutPassive.passiveSkillSlot = CreateGenericSkillWithSkillFamily(targetPrefab, "Passive"); } foreach (SkillSlot val2 in slots) { SkillSlot val3 = val2; switch ((int)val3) { case 0: component.primary = CreateGenericSkillWithSkillFamily(targetPrefab, "Primary"); break; case 1: component.secondary = CreateGenericSkillWithSkillFamily(targetPrefab, "Secondary"); break; case 2: component.utility = CreateGenericSkillWithSkillFamily(targetPrefab, "Utility"); break; case 3: component.special = CreateGenericSkillWithSkillFamily(targetPrefab, "Special"); break; } } ScoutSwap scoutSwap = default(ScoutSwap); if (targetPrefab.TryGetComponent(ref scoutSwap)) { scoutSwap.batSkillSlot = CreateGenericSkillWithSkillFamily(targetPrefab, "Swap"); scoutSwap.ballSkillSlot = CreateGenericSkillWithSkillFamily(targetPrefab, "Swap"); } } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, string familyName, bool hidden = false) { GenericSkill val = targetPrefab.AddComponent(); val.skillName = familyName; val.hideInCharacterSelect = hidden; SkillFamily val2 = ScriptableObject.CreateInstance(); ((Object)val2).name = ((Object)targetPrefab).name + familyName + "Family"; val2.variants = (Variant[])(object)new Variant[0]; val._skillFamily = val2; Content.AddSkillFamily(val2); return val; } public static void AddSkillToFamily(SkillFamily skillFamily, SkillDef skillDef, UnlockableDef unlockableDef = null) { //IL_0029: 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_0053: Expected O, but got Unknown //IL_0054: 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) Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = skillDef, unlockableDef = unlockableDef }; ((Variant)(ref val)).viewableNode = new Node(skillDef.skillNameToken, false, (Node)null); variants[num] = val; } public static void AddSkillsToFamily(SkillFamily skillFamily, params SkillDef[] skillDefs) { foreach (SkillDef skillDef in skillDefs) { AddSkillToFamily(skillFamily, skillDef); } } public static void AddPrimarySkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().primary.skillFamily, skillDefs); } public static void AddSecondarySkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().secondary.skillFamily, skillDefs); } public static void AddUtilitySkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().utility.skillFamily, skillDefs); } public static void AddSpecialSkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().special.skillFamily, skillDefs); } public static void AddPassiveSkills(SkillFamily passiveSkillFamily, params SkillDef[] skillDefs) { AddSkillsToFamily(passiveSkillFamily, skillDefs); } public static void AddAdditionalSkills(SkillFamily skillFamily, params SkillDef[] skillDefs) { AddSkillsToFamily(skillFamily, skillDefs); } public static void AddUnlockablesToFamily(SkillFamily skillFamily, params UnlockableDef[] unlockableDefs) { //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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < unlockableDefs.Length; i++) { Variant val = skillFamily.variants[i]; val.unlockableDef = unlockableDefs[i]; skillFamily.variants[i] = val; } } public static SkillDef CreateSkillDef(SkillDefInfo skillDefInfo) { return Skills.CreateSkillDef(skillDefInfo); } public static ReloadSkillDef CreateReloadSkillDef(ReloadSkillDefInfo skillDefInfo) { return Skills.CreateReloadSkillDef(skillDefInfo); } public static T CreateSkillDef(SkillDefInfo skillDefInfo) where T : SkillDef { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) T val = ScriptableObject.CreateInstance(); ((SkillDef)val).skillName = skillDefInfo.skillName; ((Object)(object)val).name = skillDefInfo.skillName; ((SkillDef)val).skillNameToken = skillDefInfo.skillNameToken; ((SkillDef)val).skillDescriptionToken = skillDefInfo.skillDescriptionToken; ((SkillDef)val).icon = skillDefInfo.skillIcon; ((SkillDef)val).activationState = skillDefInfo.activationState; ((SkillDef)val).activationStateMachineName = skillDefInfo.activationStateMachineName; ((SkillDef)val).interruptPriority = skillDefInfo.interruptPriority; ((SkillDef)val).baseMaxStock = skillDefInfo.baseMaxStock; ((SkillDef)val).baseRechargeInterval = skillDefInfo.baseRechargeInterval; ((SkillDef)val).rechargeStock = skillDefInfo.rechargeStock; ((SkillDef)val).requiredStock = skillDefInfo.requiredStock; ((SkillDef)val).stockToConsume = skillDefInfo.stockToConsume; ((SkillDef)val).dontAllowPastMaxStocks = skillDefInfo.dontAllowPastMaxStocks; ((SkillDef)val).beginSkillCooldownOnSkillEnd = skillDefInfo.beginSkillCooldownOnSkillEnd; ((SkillDef)val).canceledFromSprinting = skillDefInfo.canceledFromSprinting; ((SkillDef)val).forceSprintDuringState = skillDefInfo.forceSprintDuringState; ((SkillDef)val).fullRestockOnAssign = skillDefInfo.fullRestockOnAssign; ((SkillDef)val).resetCooldownTimerOnUse = skillDefInfo.resetCooldownTimerOnUse; ((SkillDef)val).isCombatSkill = skillDefInfo.isCombatSkill; ((SkillDef)val).mustKeyPress = skillDefInfo.mustKeyPress; ((SkillDef)val).cancelSprintingOnActivation = skillDefInfo.cancelSprintingOnActivation; ((SkillDef)val).keywordTokens = skillDefInfo.keywordTokens; Content.AddSkillDef((SkillDef)(object)val); return val; } public static T CreateReloadSkillDef(ReloadSkillDefInfo skillDefInfo) where T : ReloadSkillDef { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) T val = ScriptableObject.CreateInstance(); ((SkillDef)(object)val).skillName = skillDefInfo.skillName; ((Object)(object)val).name = skillDefInfo.skillName; ((SkillDef)(object)val).skillNameToken = skillDefInfo.skillNameToken; ((SkillDef)(object)val).skillDescriptionToken = skillDefInfo.skillDescriptionToken; ((SkillDef)(object)val).icon = skillDefInfo.skillIcon; ((SkillDef)(object)val).activationState = skillDefInfo.activationState; ((ReloadSkillDef)val).reloadState = skillDefInfo.reloadState; ((SkillDef)(object)val).activationStateMachineName = skillDefInfo.activationStateMachineName; ((SkillDef)(object)val).interruptPriority = skillDefInfo.interruptPriority; ((ReloadSkillDef)val).reloadInterruptPriority = skillDefInfo.reloadInterruptPriority; ((SkillDef)(object)val).baseMaxStock = skillDefInfo.baseMaxStock; ((SkillDef)(object)val).baseRechargeInterval = skillDefInfo.baseRechargeInterval; ((ReloadSkillDef)val).graceDuration = skillDefInfo.graceDuration; ((SkillDef)(object)val).rechargeStock = skillDefInfo.rechargeStock; ((SkillDef)(object)val).requiredStock = skillDefInfo.requiredStock; ((SkillDef)(object)val).stockToConsume = skillDefInfo.stockToConsume; ((SkillDef)(object)val).dontAllowPastMaxStocks = skillDefInfo.dontAllowPastMaxStocks; ((SkillDef)(object)val).beginSkillCooldownOnSkillEnd = skillDefInfo.beginSkillCooldownOnSkillEnd; ((SkillDef)(object)val).canceledFromSprinting = skillDefInfo.canceledFromSprinting; ((SkillDef)(object)val).forceSprintDuringState = skillDefInfo.forceSprintDuringState; ((SkillDef)(object)val).fullRestockOnAssign = skillDefInfo.fullRestockOnAssign; ((SkillDef)(object)val).resetCooldownTimerOnUse = skillDefInfo.resetCooldownTimerOnUse; ((SkillDef)(object)val).isCombatSkill = skillDefInfo.isCombatSkill; ((SkillDef)(object)val).mustKeyPress = skillDefInfo.mustKeyPress; ((SkillDef)(object)val).cancelSprintingOnActivation = skillDefInfo.cancelSprintingOnActivation; ((SkillDef)(object)val).keywordTokens = skillDefInfo.keywordTokens; Content.AddSkillDef((SkillDef)(object)val); return val; } } 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 string activationStateMachineName; public InterruptPriority interruptPriority; public int baseMaxStock = 1; public float baseRechargeInterval; public int rechargeStock = 1; public int requiredStock = 1; public int stockToConsume = 1; public bool resetCooldownTimerOnUse = false; public bool fullRestockOnAssign = true; public bool dontAllowPastMaxStocks = false; public bool beginSkillCooldownOnSkillEnd = false; public bool mustKeyPress = false; public bool isCombatSkill = true; public bool canceledFromSprinting = false; public bool cancelSprintingOnActivation = true; public bool forceSprintDuringState = false; public SkillDefInfo() { } public SkillDefInfo(string skillName, string skillNameToken, string skillDescriptionToken, Sprite skillIcon, SerializableEntityStateType activationState, string activationStateMachineName = "Weapon") { //IL_008d: 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_00b9: Unknown result type (might be due to invalid IL or missing references) this.skillName = skillName; this.skillNameToken = skillNameToken; this.skillDescriptionToken = skillDescriptionToken; this.skillIcon = skillIcon; this.activationState = activationState; this.activationStateMachineName = activationStateMachineName; cancelSprintingOnActivation = false; keywordTokens = new string[1] { Tokens.agileKeyword }; interruptPriority = (InterruptPriority)0; isCombatSkill = true; baseRechargeInterval = 0f; requiredStock = 0; stockToConsume = 0; } } internal class ReloadSkillDefInfo { public string skillName; public string skillNameToken; public string skillDescriptionToken; public string[] keywordTokens = new string[0]; public Sprite skillIcon; public SerializableEntityStateType activationState; public SerializableEntityStateType reloadState; public string activationStateMachineName; public InterruptPriority interruptPriority; public InterruptPriority reloadInterruptPriority; public int baseMaxStock = 1; public float baseRechargeInterval; public float graceDuration; public int rechargeStock = 1; public int requiredStock = 1; public int stockToConsume = 1; public bool resetCooldownTimerOnUse = false; public bool fullRestockOnAssign = true; public bool dontAllowPastMaxStocks = false; public bool beginSkillCooldownOnSkillEnd = false; public bool mustKeyPress = false; public bool isCombatSkill = true; public bool canceledFromSprinting = false; public bool cancelSprintingOnActivation = true; public bool forceSprintDuringState = false; public ReloadSkillDefInfo() { } public ReloadSkillDefInfo(string skillName, string skillNameToken, string skillDescriptionToken, Sprite skillIcon, SerializableEntityStateType activationState, SerializableEntityStateType reloadState, string activationStateMachineName = "Weapon") { //IL_008d: 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_0097: 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_00c8: Unknown result type (might be due to invalid IL or missing references) this.skillName = skillName; this.skillNameToken = skillNameToken; this.skillDescriptionToken = skillDescriptionToken; this.skillIcon = skillIcon; this.activationState = activationState; this.reloadState = reloadState; this.activationStateMachineName = activationStateMachineName; cancelSprintingOnActivation = false; keywordTokens = new string[1] { Tokens.agileKeyword }; interruptPriority = (InterruptPriority)0; reloadInterruptPriority = (InterruptPriority)0; isCombatSkill = true; baseRechargeInterval = 0f; requiredStock = 0; stockToConsume = 0; } } internal static class Skins { internal struct SkinDefInfo { internal SkinDef[] BaseSkins; internal Sprite Icon; internal string NameToken; internal UnlockableDef UnlockableDef; internal GameObject RootObject; internal RendererInfo[] RendererInfos; internal MeshReplacement[] MeshReplacements; internal GameObjectActivation[] GameObjectActivations; internal ProjectileGhostReplacement[] ProjectileGhostReplacements; internal MinionSkinReplacement[] MinionSkinReplacements; internal string Name; } internal static SkinDef CreateSkinDef(string skinName, Sprite skinIcon, RendererInfo[] defaultRendererInfos, GameObject root, UnlockableDef unlockableDef = null) { //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Expected O, but got Unknown //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Expected O, but got Unknown SkinDefInfo skinDefInfo = default(SkinDefInfo); skinDefInfo.BaseSkins = Array.Empty(); skinDefInfo.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[0]; skinDefInfo.Icon = skinIcon; skinDefInfo.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0]; skinDefInfo.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0]; skinDefInfo.Name = skinName; skinDefInfo.NameToken = skinName; skinDefInfo.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0]; skinDefInfo.RendererInfos = (RendererInfo[])(object)new RendererInfo[defaultRendererInfos.Length]; skinDefInfo.RootObject = root; skinDefInfo.UnlockableDef = unlockableDef; SkinDefInfo skinDefInfo2 = skinDefInfo; SkinDef.Awake += new hook_Awake(DoNothing); SkinDef val = ScriptableObject.CreateInstance(); val.baseSkins = skinDefInfo2.BaseSkins; val.icon = skinDefInfo2.Icon; val.unlockableDef = skinDefInfo2.UnlockableDef; val.rootObject = skinDefInfo2.RootObject; defaultRendererInfos.CopyTo(skinDefInfo2.RendererInfos, 0); val.rendererInfos = skinDefInfo2.RendererInfos; val.gameObjectActivations = skinDefInfo2.GameObjectActivations; val.meshReplacements = skinDefInfo2.MeshReplacements; val.projectileGhostReplacements = skinDefInfo2.ProjectileGhostReplacements; val.minionSkinReplacements = skinDefInfo2.MinionSkinReplacements; val.nameToken = skinDefInfo2.NameToken; ((Object)val).name = skinDefInfo2.Name; SkinDef.Awake -= new hook_Awake(DoNothing); return val; } private static void DoNothing(orig_Awake orig, SkinDef self) { } private static RendererInfo[] getRendererMaterials(RendererInfo[] defaultRenderers, params Material[] materials) { RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[defaultRenderers.Length]; defaultRenderers.CopyTo(array, 0); for (int i = 0; i < array.Length; i++) { try { array[i].defaultMaterial = materials[i]; } catch { Log.Error("error adding skin rendererinfo material. make sure you're not passing in too many"); } } return array; } internal static MeshReplacement[] getMeshReplacements(AssetBundle assetBundle, RendererInfo[] defaultRendererInfos, params string[] meshes) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) List list = new List(); for (int i = 0; i < defaultRendererInfos.Length; i++) { if (!string.IsNullOrEmpty(meshes[i])) { list.Add(new MeshReplacement { renderer = defaultRendererInfos[i].renderer, mesh = assetBundle.LoadAsset(meshes[i]) }); } } return list.ToArray(); } } internal static class Tokens { public const string agilePrefix = "Agile"; public static string agileKeyword = KeywordText("Agile", "The skill can be used while sprinting."); public static string miniCritsKeyword = KeywordText("Atomic Crits", "Damage is increased by 125% and all attacks apply Weaken."); public static string DamageText(string text) { return "" + text + ""; } public static string DamageValueText(float value) { return $"{value * 100f}% damage"; } public static string UtilityText(string text) { return "" + text + ""; } public static string RedText(string text) { return HealthText(text); } public static string HealthText(string text) { return "" + text + ""; } public static string KeywordText(string keyword, string sub) { return "" + keyword + "" + sub + ""; } public static string ScepterDescription(string desc) { return "\nSCEPTER: " + desc + ""; } public static string GetAchievementNameToken(string identifier) { return "ACHIEVEMENT_" + identifier.ToUpperInvariant() + "_NAME"; } public static string GetAchievementDescriptionToken(string identifier) { return "ACHIEVEMENT_" + identifier.ToUpperInvariant() + "_DESCRIPTION"; } } } namespace OfficialScoutMod.Modules.Components { public class ShellController : MonoBehaviour { private Rigidbody rb; private bool triggered; private void Awake() { //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) rb = ((Component)this).GetComponentInChildren(); ((Component)this).gameObject.layer = LayerIndex.debris.intVal; ((Component)((Component)this).GetComponentInChildren()).gameObject.layer = LayerIndex.debris.intVal; ((Component)this).transform.rotation = Quaternion.Euler(new Vector3((float)Random.Range(0, 360), (float)Random.Range(0, 360), (float)Random.Range(0, 360))); } private void OnEnable() { triggered = false; } private void OnCollisionEnter() { if (!triggered) { triggered = true; Util.PlaySound("sfx_driver_shell", ((Component)this).gameObject); } } } } namespace OfficialScoutMod.Modules.Characters { public abstract class CharacterBase where T : CharacterBase, new() { public abstract string assetBundleName { get; } public abstract string bodyName { get; } public abstract string modelPrefabName { get; } public abstract BodyInfo bodyInfo { get; } public virtual CustomRendererInfo[] customRendererInfos { get; } public virtual ItemDisplaysBase itemDisplays { get; } public static T instance { get; private set; } public abstract AssetBundle assetBundle { get; protected set; } public abstract GameObject bodyPrefab { get; protected set; } public abstract CharacterBody prefabCharacterBody { get; protected set; } public abstract GameObject characterModelObject { get; protected set; } public abstract CharacterModel prefabCharacterModel { get; protected set; } public virtual void Initialize() { instance = this as T; assetBundle = CharacterAssets.LoadAssetBundle("scout"); InitializeCharacter(); } public virtual void InitializeCharacter() { InitializeCharacterBodyPrefab(); InitializeItemDisplays(); } protected virtual void InitializeCharacterBodyPrefab() { characterModelObject = Prefabs.LoadCharacterModel(assetBundle, modelPrefabName); bodyPrefab = Prefabs.CreateBodyPrefab(characterModelObject, bodyInfo); prefabCharacterBody = bodyPrefab.GetComponent(); prefabCharacterModel = Prefabs.SetupCharacterModel(bodyPrefab, customRendererInfos); } public virtual void InitializeItemDisplays() { ItemDisplayRuleSet val = ScriptableObject.CreateInstance(); ((Object)val).name = "idrs" + bodyName; prefabCharacterModel.itemDisplayRuleSet = val; if (itemDisplays != null) { ContentManager.onContentPacksAssigned += SetItemDisplays; } } public void SetItemDisplays(ReadOnlyArray obj) { itemDisplays.SetItemDisplays(prefabCharacterModel.itemDisplayRuleSet); } public abstract void InitializeEntityStateMachines(); public abstract void InitializeSkills(); public abstract void InitializeSkins(); public abstract void InitializeCharacterMaster(); } public class BodyInfo { public string bodyName = ""; public string bodyNameToken = ""; public string subtitleNameToken = ""; public string bodyNameToClone = "Commando"; public Color bodyColor = Color.white; public Texture characterPortrait = null; public float sortPosition = 100f; public GameObject crosshair = null; public GameObject podPrefab = null; public SerializableEntityStateType initialStateType; public float maxHealth = 100f; public float healthRegen = 1.2f; public float armor = 0f; public float shield = 0f; public int jumpCount = 1; public float damage = 10f; public float attackSpeed = 1f; public float crit = 1f; public float moveSpeed = 7f; public float acceleration = 80f; public float jumpPower = 15f; public bool autoCalculateLevelStats = false; public float healthGrowth = 60.000004f; public float regenGrowth = 0.24000001f; public float armorGrowth = 0f; public float shieldGrowth = 0f; public float damageGrowth = 2.4f; public float attackSpeedGrowth = 0f; public float critGrowth = 0f; public float moveSpeedGrowth = 0f; public float jumpPowerGrowth = 0f; public Vector3 aimOriginPosition = new Vector3(0f, 1.6f, 0f); public Vector3 modelBasePosition = new Vector3(0f, -0.92f, 0f); public Vector3 cameraPivotPosition = new Vector3(0f, 0.8f, 0f); public float cameraParamsVerticalOffset = 1.37f; public float cameraParamsDepth = -10f; private CharacterCameraParams _cameraParams; public CharacterCameraParams cameraParams { get { //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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: 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_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_cameraParams == (Object)null) { _cameraParams = ScriptableObject.CreateInstance(); _cameraParams.data.minPitch = BlendableFloat.op_Implicit(-70f); _cameraParams.data.maxPitch = BlendableFloat.op_Implicit(70f); _cameraParams.data.wallCushion = BlendableFloat.op_Implicit(0.1f); _cameraParams.data.pivotVerticalOffset = BlendableFloat.op_Implicit(cameraParamsVerticalOffset); _cameraParams.data.idealLocalCameraPos = BlendableVector3.op_Implicit(new Vector3(0f, 0f, cameraParamsDepth)); } return _cameraParams; } set { _cameraParams = value; } } } public abstract class ItemDisplaysBase { public void SetItemDisplays(ItemDisplayRuleSet itemDisplayRuleSet) { List list = new List(); ItemDisplays.LazyInit(); SetItemDisplayRules(list); itemDisplayRuleSet.keyAssetRuleGroups = list.ToArray(); ItemDisplays.DisposeWhenDone(); } protected abstract void SetItemDisplayRules(List itemDisplayRules); } public abstract class SurvivorBase : CharacterBase where T : SurvivorBase, new() { public abstract string masterName { get; } public abstract string displayPrefabName { get; } public abstract string survivorTokenPrefix { get; } public abstract UnlockableDef characterUnlockableDef { get; } public abstract GameObject displayPrefab { get; protected set; } public override void InitializeCharacter() { base.InitializeCharacter(); InitializeDisplayPrefab(); InitializeSurvivor(); } protected virtual void InitializeDisplayPrefab() { displayPrefab = Prefabs.CreateDisplayPrefab(assetBundle, displayPrefabName, bodyPrefab); displayPrefab.AddComponent(); } protected virtual void InitializeSurvivor() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) RegisterNewSurvivor(bodyPrefab, displayPrefab, bodyInfo.bodyColor, survivorTokenPrefix, characterUnlockableDef, bodyInfo.sortPosition); } public static void RegisterNewSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, UnlockableDef unlockableDef, float sortPosition) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) Content.CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, unlockableDef, sortPosition); } protected virtual void AddCssPreviewSkill(int indexFromEditor, SkillFamily skillFamily, SkillDef skillDef) { CharacterSelectSurvivorPreviewDisplayController component = displayPrefab.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { Log.Error("trying to add skillChangeResponse to null CharacterSelectSurvivorPreviewDisplayController.\nMake sure you created one on your Display prefab in editor"); return; } component.skillChangeResponses[indexFromEditor].triggerSkillFamily = skillFamily; component.skillChangeResponses[indexFromEditor].triggerSkill = skillDef; } protected virtual void AddCssPreviewSkin(int indexFromEditor, SkinDef skinDef) { CharacterSelectSurvivorPreviewDisplayController component = displayPrefab.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { Log.Error("trying to add skinChangeResponse to null CharacterSelectSurvivorPreviewDisplayController.\nMake sure you created one on your Display prefab in editor"); } else { component.skinChangeResponses[indexFromEditor].triggerSkin = skinDef; } } protected virtual void FinalizeCSSPreviewDisplayController() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)displayPrefab)) { return; } CharacterSelectSurvivorPreviewDisplayController component = displayPrefab.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { return; } component.bodyPrefab = bodyPrefab; List list = new List(); for (int i = 0; i < component.skillChangeResponses.Length; i++) { if ((Object)(object)component.skillChangeResponses[i].triggerSkillFamily != (Object)null) { list.Add(component.skillChangeResponses[i]); } } component.skillChangeResponses = list.ToArray(); } } } namespace OfficialScoutMod.Modules.BaseStates { public abstract class BaseMeleeAttack : BaseScoutSkillState, IStepSetter { public int swingIndex; protected string hitboxGroupName = "SwordGroup"; protected DamageTypeCombo damageType = DamageTypeCombo.op_Implicit((DamageType)0); protected DamageSource damageSource = (DamageSource)1; protected List moddedDamageTypeHolder = new List(); protected float damageCoefficient = 3.5f; protected float procCoefficient = 1f; protected float pushForce = 300f; protected Vector3 bonusForce = Vector3.zero; protected float baseDuration = 1f; protected float attackStartPercentTime = 0.2f; protected float attackEndPercentTime = 0.4f; protected float earlyExitPercentTime = 0.4f; protected float hitStopDuration = 0.012f; protected float attackRecoil = 0.75f; protected float hitHopVelocity = 8f; protected string swingSoundString = ""; protected string hitSoundString = ""; protected string muzzleString = "SwingCenter"; protected string playbackRateParam = "Slash.playbackRate"; protected GameObject swingEffectPrefab; protected GameObject hitEffectPrefab; protected NetworkSoundEventIndex impactSound = (NetworkSoundEventIndex)(-1); public float duration; protected bool hasFired; protected float hitPauseTimer; protected OverlapAttack attack; protected bool inHitPause; protected float stopwatch; protected Animator animator; protected HitStopCachedState hitStopCachedState; protected Vector3 storedVelocity; public override void OnEnter() { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0085: 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_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0140: 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_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) base.OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; animator = ((EntityState)this).GetModelAnimator(); ((BaseState)this).StartAimMode(0.5f + duration, false); PlayAttackAnimation(); attack = new OverlapAttack(); attack.damageType = damageType; attack.damageType.damageSource = damageSource; foreach (ModdedDamageType item in moddedDamageTypeHolder) { DamageAPI.AddModdedDamageType(attack, item); } moddedDamageTypeHolder.Clear(); attack.damageColorIndex = (DamageColorIndex)0; attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = ((BaseState)this).GetTeam(); attack.damage = damageCoefficient * ((BaseState)this).damageStat; attack.procCoefficient = procCoefficient; attack.hitEffectPrefab = hitEffectPrefab; attack.forceVector = bonusForce; attack.pushAwayForce = pushForce; attack.hitBoxGroup = ((BaseState)this).FindHitBoxGroup(hitboxGroupName); attack.isCrit = ((BaseState)this).RollCrit(); attack.impactSound = impactSound; } protected virtual void PlayAttackAnimation() { ((EntityState)this).PlayCrossfade("Gesture, Override", "Slash" + (1 + swingIndex), playbackRateParam, duration, 0.05f); } public override void OnExit() { if (inHitPause) { RemoveHitstop(); } ((EntityState)this).OnExit(); } protected virtual void PlaySwingEffect() { EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, muzzleString, false); } protected virtual void OnHitEnemyAuthority() { Util.PlaySound(hitSoundString, ((EntityState)this).gameObject); ApplyHitstop(); } protected void ApplyHitstop() { //IL_0025: 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (!inHitPause && hitStopDuration > 0f) { storedVelocity = ((EntityState)this).characterMotor.velocity; hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, playbackRateParam); hitPauseTimer = hitStopDuration / ((BaseState)this).attackSpeedStat; inHitPause = true; } } protected virtual void FireAttack() { if (((EntityState)this).isAuthority && attack.Fire((List)null)) { OnHitEnemyAuthority(); } } protected void EnterAttack() { hasFired = true; Util.PlayAttackSpeedSound(swingSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); PlaySwingEffect(); if (((EntityState)this).isAuthority) { ((BaseState)this).AddRecoil(-1f * attackRecoil, -2f * attackRecoil, -0.5f * attackRecoil, 0.5f * attackRecoil); } } public override void FixedUpdate() { //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) base.FixedUpdate(); hitPauseTimer -= Time.fixedDeltaTime; if (hitPauseTimer <= 0f && inHitPause) { RemoveHitstop(); } if (!inHitPause) { stopwatch += Time.fixedDeltaTime; } else { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } if (Object.op_Implicit((Object)(object)animator)) { animator.SetFloat(playbackRateParam, 0f); } } bool flag = stopwatch >= duration * attackStartPercentTime; bool flag2 = stopwatch >= duration * attackEndPercentTime; if ((flag && !flag2) || (flag && flag2 && !hasFired)) { if (!hasFired) { EnterAttack(); } FireAttack(); } if (stopwatch >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } protected void RemoveHitstop() { //IL_0003: 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_006c: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); inHitPause = false; if (!((EntityState)this).characterMotor.isGrounded) { storedVelocity.y = Mathf.Max(storedVelocity.y, hitHopVelocity / Mathf.Sqrt(((BaseState)this).attackSpeedStat)); } ((EntityState)this).characterMotor.velocity = storedVelocity; } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0023: 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_0026: Unknown result type (might be due to invalid IL or missing references) if (stopwatch >= duration * earlyExitPercentTime) { return (InterruptPriority)0; } return (InterruptPriority)1; } public override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); writer.Write(swingIndex); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); swingIndex = reader.ReadInt32(); } public void SetStep(int i) { swingIndex = i; } } public abstract class BaseScoutSkillState : BaseSkillState { protected ScoutController scoutController; protected ScoutPassive scoutPassive; protected ScoutSwap scoutSwapPassive; protected bool isAtomic; public virtual void AddRecoil2(float x1, float x2, float y1, float y2) { ((BaseState)this).AddRecoil(x1, x2, y1, y2); } public override void OnEnter() { RefreshState(); ((BaseState)this).OnEnter(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); } protected void RefreshState() { if (!Object.op_Implicit((Object)(object)scoutController)) { scoutController = ((EntityState)this).GetComponent(); } if (Object.op_Implicit((Object)(object)scoutController)) { isAtomic = scoutController.atomicDraining; } if (!Object.op_Implicit((Object)(object)scoutPassive)) { scoutPassive = ((EntityState)this).GetComponent(); } if (!Object.op_Implicit((Object)(object)scoutSwapPassive)) { scoutSwapPassive = ((EntityState)this).GetComponent(); } } } public abstract class BaseScoutState : BaseState { protected ScoutController scoutController; public override void OnEnter() { ((BaseState)this).OnEnter(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); RefreshState(); } protected void RefreshState() { if (!Object.op_Implicit((Object)(object)scoutController)) { scoutController = ((EntityState)this).GetComponent(); } } } } namespace OfficialScoutMod.Modules.Achievements { public abstract class BaseMasteryAchievement : BaseAchievement { public abstract string RequiredCharacterBody { get; } public abstract float RequiredDifficultyCoefficient { get; } public override BodyIndex LookUpRequiredBodyIndex() { //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_000f: Unknown result type (might be due to invalid IL or missing references) return BodyCatalog.FindBodyIndex(RequiredCharacterBody); } public override void OnBodyRequirementMet() { ((BaseAchievement)this).OnBodyRequirementMet(); Run.onClientGameOverGlobal += OnClientGameOverGlobal; } public override void OnBodyRequirementBroken() { Run.onClientGameOverGlobal -= OnClientGameOverGlobal; ((BaseAchievement)this).OnBodyRequirementBroken(); } private void OnClientGameOverGlobal(Run run, RunReport runReport) { //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_0035: 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_0079: Invalid comparison between Unknown and I4 //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Invalid comparison between Unknown and I4 if (!Object.op_Implicit((Object)(object)runReport.gameEnding) || !runReport.gameEnding.isWin) { return; } DifficultyIndex val = runReport.ruleBook.FindDifficulty(); DifficultyDef difficultyDef = DifficultyCatalog.GetDifficultyDef(val); if (difficultyDef != null) { bool flag = difficultyDef.countsAsHardMode && difficultyDef.scalingValue >= RequiredDifficultyCoefficient; bool flag2 = difficultyDef.nameToken == "INFERNO_NAME"; bool flag3 = (int)val >= 3 && (int)val <= 10; if (flag || flag2 || flag3) { ((BaseAchievement)this).Grant(); } } } } }