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 BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using DrifterMod.Modules; using DrifterMod.Modules.Achievements; using DrifterMod.Modules.BaseStates; using DrifterMod.Modules.Characters; using DrifterMod.SkillStates.Emote; using DrifterMod.Survivors.Drifter; using DrifterMod.Survivors.Drifter.Components; using DrifterMod.Survivors.Drifter.Items; using DrifterMod.Survivors.Drifter.SkillStates; using DrifterMod.Survivors.Drifter.SkillStates.Sycom; using EntityStates; using EntityStates.AI.Walker; using EntityStates.Commando; using EntityStates.Commando.CommandoWeapon; using HG; using HG.BlendableTypes; using On.RoR2; using R2API; using R2API.Networking; using R2API.Networking.Interfaces; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.EntityLogic; using RoR2.HudOverlay; using RoR2.Navigation; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.SceneManagement; 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("DrifterMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+513bda4b90bcbb6968126a6e585a100c748e2e3d")] [assembly: AssemblyProduct("DrifterMod")] [assembly: AssemblyTitle("DrifterMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace DrifterMod { [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.vcr.DrifterHyperLightMod", "DrifterHyperLightMod", "0.1.0")] public class DrifterPlugin : BaseUnityPlugin { public const string MODUID = "com.vcr.DrifterHyperLightMod"; public const string MODNAME = "DrifterHyperLightMod"; public const string MODVERSION = "0.1.0"; public const string DEVELOPER_PREFIX = "VCR"; public static DrifterPlugin instance; public static bool rooInstalled => Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions"); private void Awake() { instance = this; Log.Init(((BaseUnityPlugin)this).Logger); Language.Init(); new DrifterSurvivor().Initialize(); new ContentPacks().Initialize(); } } 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); } } } namespace DrifterMod.SkillStates.Emote { public class BaseEmote : BaseState { private CameraParamsOverrideHandle camOverrideHandle; private Animator animator; private ChildLocator childLocator; private float duration; private uint activePlayID; public LocalUser localUser; public override void OnEnter() { ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); childLocator = ((EntityState)this).GetModelChildLocator(); FindLocalUser(); ((EntityState)this).characterBody.hideCrosshair = true; } 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; } } } protected void PlayEmote(string animString, string soundString = "", float animDuration = 0f) { PlayEmote(animString, soundString, ((EntityState)this).GetModelAnimator(), animDuration); } protected void PlayEmote(string animString, string soundString, Animator animator, float animDuration = 0f) { if (animDuration >= 0f && duration != 0f) { animDuration = duration; } if (duration > 0f) { EntityState.PlayAnimationOnAnimator(animator, "Emote, Override", animString, "Emote.playbackRate", animDuration, 0f); } else { animator.SetFloat("Emote.playbackRate", 1f); EntityState.PlayAnimationOnAnimator(animator, "Emote, Override", animString); } if (!string.IsNullOrEmpty(soundString)) { activePlayID = Util.PlaySound(soundString, ((EntityState)this).gameObject); } } public override void Update() { ((EntityState)this).Update(); if (((EntityState)this).isAuthority) { CheckEmote(DrifterConfig.tauntKey); CheckEmote(DrifterConfig.sitKey); } } private void CheckEmote(KeyCode keybind, EntityState state) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (Input.GetKeyDown(keybind) && !localUser.isUIFocused) { ((EntityState)this).outer.SetInterruptState(state, (InterruptPriority)0); } } private void CheckEmote(ConfigEntry keybind) where T : EntityState, new() { if (Config.RobGetKeyPressed(keybind)) { FindLocalUser(); if (localUser != null && !localUser.isUIFocused) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new T(), (InterruptPriority)0); } } } public override void FixedUpdate() { //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); bool flag = false; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded) { flag = true; } if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { if (((EntityState)this).inputBank.skill1.down) { flag = true; } if (((EntityState)this).inputBank.skill2.down) { flag = true; } if (((EntityState)this).inputBank.skill3.down) { flag = true; } if (((EntityState)this).inputBank.skill4.down) { flag = true; } if (((EntityState)this).inputBank.moveVector != Vector3.zero) { flag = true; } } if (duration > 0f && ((EntityState)this).fixedAge >= duration) { flag = true; } if (flag && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_0045: 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) ((EntityState)this).OnExit(); ((EntityState)this).characterBody.hideCrosshair = false; ((EntityState)this).PlayAnimation("Emote, Override", "BufferEmpty"); if (activePlayID != 0) { AkSoundEngine.StopPlayingID(activePlayID); } ((EntityState)this).cameraTargetParams.RemoveParamsOverride(camOverrideHandle, 0.5f); } 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)0; } } public class Sit : BaseEmote { public override void OnEnter() { base.OnEnter(); PlayEmote("Emote_2"); } } public class Taunt : BaseEmote { public override void OnEnter() { base.OnEnter(); PlayEmote("Emote1"); ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(true); } public override void OnExit() { base.OnExit(); ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(false); } } } namespace DrifterMod.Modules { internal static class Asset { 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 { val = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)DrifterPlugin.instance).Info.Location), "AssetBundles", bundleName)); } 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)DrifterPlugin.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 val = MyConfig.Bind(section, name, defaultValue, description); if (Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions")) { TryRegisterOption(val, min, max, restartRequired); } return val; } 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) { //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_0028: 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_003f: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_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_0067: 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_007b: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Expected O, but got Unknown //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Expected O, but got Unknown if (entry is ConfigEntry) { ModSettingsManager.AddOption((BaseOption)new SliderOption(entry as ConfigEntry, new SliderConfig { min = min, max = max, formatString = "{0:0.00}", restartRequired = restartRequired })); } if (entry is ConfigEntry) { ModSettingsManager.AddOption((BaseOption)new IntSliderOption(entry as ConfigEntry, new IntSliderConfig { min = (int)min, max = (int)max, restartRequired = restartRequired })); } if (entry is ConfigEntry) { ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(entry as ConfigEntry, restartRequired)); } if (entry is ConfigEntry) { ModSettingsManager.AddOption((BaseOption)new KeyBindOption(entry as ConfigEntry, 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); } public static bool RobGetKeyPressed(ConfigEntry entry) { //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) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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_0052: Unknown result type (might be due to invalid IL or missing references) KeyboardShortcut value = entry.Value; foreach (KeyCode modifier in ((KeyboardShortcut)(ref value)).Modifiers) { if (!Input.GetKey(modifier)) { return false; } } value = entry.Value; return Input.GetKeyDown(((KeyboardShortcut)(ref value)).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 CreateAndAddUnlockbleDef(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) { //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.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 { 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.vcr.DrifterHyperLightMod"; 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); } public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { contentPack.identifier = identifier; contentPack.bodyPrefabs.Add(bodyPrefabs.ToArray()); contentPack.masterPrefabs.Add(masterPrefabs.ToArray()); contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray()); contentPack.survivorDefs.Add(survivorDefs.ToArray()); contentPack.unlockableDefs.Add(unlockableDefs.ToArray()); contentPack.skillDefs.Add(skillDefs.ToArray()); contentPack.skillFamilies.Add(skillFamilies.ToArray()); contentPack.entityStateTypes.Add(entityStates.ToArray()); contentPack.buffDefs.Add(buffDefs.ToArray()); contentPack.effectDefs.Add(effectDefs.ToArray()); contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray()); args.ReportProgress(1f); yield break; } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(contentPack, args.output); args.ReportProgress(1f); yield break; } public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } } internal class SyncAmmo : INetMessage, ISerializableObject { private NetworkInstanceId netId; private int ammoProgress; public SyncAmmo() { } public SyncAmmo(NetworkInstanceId netId, int ammoProgress) { //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.ammoProgress = ammoProgress; } 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(); ammoProgress = reader.ReadInt32(); } 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) && (!Object.op_Implicit((Object)(object)val.GetComponent()) || val.GetComponent().isPlayerControlled)) { DrifterHLDTracker component = val.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { GiveGunAmmo(component, ammoProgress); } } } public void Serialize(NetworkWriter writer) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) writer.Write(netId); writer.Write(ammoProgress); } public void GiveGunAmmo(DrifterHLDTracker tracker, int newProgress) { int num = 0; SkillLocator component = ((Component)tracker).GetComponent(); num = component.secondary.skillDef.skillName switch { "DrifterMagnum" => 2, "DrifterShotgun" => 2, "DrifterBlunderbuss" => 2, "DrifterLasergun" => 3, "DrifterRailgun" => 3, _ => 1, }; if (newProgress >= num && num != 0) { newProgress = 0; component.secondary.RestockSteplike(); } } } internal class SyncHeal : INetMessage, ISerializableObject { private NetworkInstanceId netId; private int healFraction; public SyncHeal() { } public SyncHeal(NetworkInstanceId netId, int healFraction) { //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.healFraction = healFraction; } 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(); healFraction = reader.ReadInt32(); } public void OnReceived() { //IL_0002: 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_0069: Unknown result type (might be due to invalid IL or missing references) GameObject val = Util.FindNetworkObject(netId); if (Object.op_Implicit((Object)(object)val) && (!Object.op_Implicit((Object)(object)val.GetComponent()) || val.GetComponent().isPlayerControlled)) { HealthComponent component = val.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.HealFraction((float)healFraction * 0.01f, default(ProcChainMask)); } } } public void Serialize(NetworkWriter writer) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) writer.Write(netId); writer.Write(healFraction); } } 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 = true; public static bool printingEnabled = true; public static void Init() { if (usingLanguageFolder) { Language.collectLanguageRootFolders += Language_collectLanguageRootFolders; } } private static void Language_collectLanguageRootFolders(List obj) { string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)DrifterPlugin.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)DrifterPlugin.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; Asset.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_01fd: 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) 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.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_011b: 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) if ((Object)(object)bodyPrefab.GetComponent() != (Object)null) { Log.Debug("Hitboxgroup already exists on model prefab. aborting code setup"); return; } ChildLocator component = model.GetComponent(); if (string.IsNullOrEmpty(component.FindChildNameInsensitive("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.FindChildGameObjectInsensitive("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.FindChildGameObjectInsensitive("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; } private static string FindChildNameInsensitive(this ChildLocator childLocator, string child) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) return childLocator.transformPairs.Where((NameTransformPair pair) => pair.name.ToLowerInvariant() == child.ToLowerInvariant()).FirstOrDefault().name; } private static Transform FindChildInsensitive(this ChildLocator childLocator, string child) { return childLocator.FindChild(childLocator.FindChildNameInsensitive(child)); } private static GameObject FindChildGameObjectInsensitive(this ChildLocator childLocator, string child) { return childLocator.FindChildGameObject(childLocator.FindChildNameInsensitive(child)); } 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 EntityStateMachine AddEntityStateMachine(GameObject prefab, string machineName, Type mainStateType = null, Type initalStateType = null, bool addToHurt = true, bool addToDeath = true) { //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) && addToDeath) { component2.idleStateMachine = component2.idleStateMachine.Append(val).ToArray(); } SetStateOnHurt component3 = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3) && addToHurt) { component3.idleStateMachine = component3.idleStateMachine.Append(val).ToArray(); } return val; } public static EntityStateMachine 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; } return val; } 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) { SkillSlot[] array = new SkillSlot[4]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); CreateSkillFamilies(targetPrefab, (SkillSlot[])(object)array); } public static void CreateSkillFamilies(GameObject targetPrefab, params SkillSlot[] slots) { //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) //IL_0012: 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_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected I4, but got Unknown SkillLocator component = targetPrefab.GetComponent(); foreach (SkillSlot val in slots) { SkillSlot val2 = val; switch (val2 - -1) { case 1: component.primary = CreateGenericSkillWithSkillFamily(targetPrefab, "Primary"); break; case 2: component.secondary = CreateGenericSkillWithSkillFamily(targetPrefab, "Secondary"); break; case 3: component.utility = CreateGenericSkillWithSkillFamily(targetPrefab, "Utility"); break; case 4: component.special = CreateGenericSkillWithSkillFamily(targetPrefab, "Special"); break; } } } public static void ClearGenericSkills(GameObject targetPrefab) { GenericSkill[] componentsInChildren = targetPrefab.GetComponentsInChildren(); foreach (GenericSkill val in componentsInChildren) { Object.DestroyImmediate((Object)(object)val); } } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, SkillSlot skillSlot, bool hidden = false) { //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_000a: 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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected I4, but got Unknown SkillLocator component = targetPrefab.GetComponent(); switch (skillSlot - -1) { case 1: return component.primary = CreateGenericSkillWithSkillFamily(targetPrefab, "Primary", hidden); case 2: return component.secondary = CreateGenericSkillWithSkillFamily(targetPrefab, "Secondary", hidden); case 3: return component.utility = CreateGenericSkillWithSkillFamily(targetPrefab, "Utility", hidden); case 4: return component.special = CreateGenericSkillWithSkillFamily(targetPrefab, "Special", hidden); case 0: Log.Error("Failed to create GenericSkill with skillslot None. If making a GenericSkill outside of the main 4, specify a familyName, and optionally a genericSkillName"); return null; default: return null; } } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, string familyName, bool hidden = false) { return CreateGenericSkillWithSkillFamily(targetPrefab, familyName, familyName, hidden); } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, string genericSkillName, string familyName, bool hidden = false) { GenericSkill val = targetPrefab.AddComponent(); val.skillName = genericSkillName; 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 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 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; } } internal class SkillDefInfo { public string skillName; public string skillNameToken; public string skillDescriptionToken; public string[] keywordTokens = Array.Empty(); public Sprite skillIcon; public SerializableEntityStateType activationState; public string activationStateMachineName; public InterruptPriority interruptPriority; public float baseRechargeInterval; public int baseMaxStock = 1; 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", bool agile = false) { //IL_008c: 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_00c2: 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 = !agile; if (agile) { keywordTokens = new string[1] { "KEYWORD_AGILE" }; } interruptPriority = (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 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 DrifterMod.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 = Asset.LoadAssetBundle(assetBundleName); 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) { ItemDisplays.queuedDisplays++; 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 float maxHealth = 100f; public float healthRegen = 1f; public float armor = 0f; public float shield = 0f; public int jumpCount = 1; public float damage = 12f; public float attackSpeed = 1f; public float crit = 1f; public float moveSpeed = 7f; public float acceleration = 80f; public float jumpPower = 15f; public bool autoCalculateLevelStats = true; public float healthGrowth = 30.000002f; public float regenGrowth = 0.2f; 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); } protected virtual void InitializeSurvivor() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) Content.CreateSurvivor(bodyPrefab, displayPrefab, bodyInfo.bodyColor, survivorTokenPrefix, characterUnlockableDef, bodyInfo.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 DrifterMod.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(); } } } } } namespace DrifterMod.Modules.BaseStates { public class DrifterBaseState : BaseSkillState { public DrifterHLDTracker tracker; public override void OnEnter() { tracker = ((Component)((EntityState)this).characterBody).GetComponent(); ((BaseState)this).OnEnter(); } public bool HasUpgrade(ItemDef upgradeItem) { if (((EntityState)this).characterBody.inventory.GetItemCountEffective(upgradeItem) > 0) { return true; } return false; } public bool MatchingLowHPSkill(string baseToken) { return false; } } public abstract class BaseMeleeAttack : DrifterBaseState, IStepSetter { public int swingIndex; protected string hitboxGroupName = "SwordGroup"; protected DamageTypeCombo damageType = DamageTypeCombo.op_Implicit((DamageType)0); 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 = 4f; 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); protected OverlapAttack attack; public float duration; private bool hasFired; private float hitPauseTimer; protected bool inHitPause; private bool hasHopped; protected float stopwatch; protected Animator animator; private HitStopCachedState hitStopCachedState; private Vector3 storedVelocity; public override void OnEnter() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //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_0080: 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_00d2: 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_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) base.OnEnter(); duration = baseDuration; animator = ((EntityState)this).GetModelAnimator(); ((BaseState)this).StartAimMode(0.5f + duration, false); PlayAttackAnimation(); attack = new OverlapAttack(); attack.damageType = damageType; attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = ((BaseState)this).GetTeam(); attack.damage = damageCoefficient * (((BaseState)this).damageStat + ((BaseState)this).attackSpeedStat); 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; ModifyOverlapAttack(attack); } protected virtual void ModifyOverlapAttack(OverlapAttack attack) { } public void SummonOverlay(string childTarget) { //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) Transform val = ((EntityState)this).GetModelChildLocator().FindChild(childTarget); if (Object.op_Implicit((Object)(object)val)) { TemporaryOverlayInstance val2 = TemporaryOverlayManager.AddOverlay(((Component)val).gameObject); val2.duration = 0.2f; val2.animateShaderAlpha = true; val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val2.destroyComponentOnEnd = true; val2.originalMaterial = Addressables.LoadAssetAsync((object)"RoR2/Base/Merc/matMercHologram.mat").WaitForCompletion(); } } 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); if (!hasHopped) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && hitHopVelocity > 0f) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, hitHopVelocity); } hasHopped = true; } 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; } } private void FireAttack() { if (((EntityState)this).isAuthority && attack.Fire((List)null)) { OnHitEnemyAuthority(); } } private 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) ((EntityState)this).FixedUpdate(); hitPauseTimer -= Time.deltaTime; if (hitPauseTimer <= 0f && inHitPause) { RemoveHitstop(); } if (!inHitPause) { stopwatch += Time.deltaTime; } 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(); } } private void RemoveHitstop() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); inHitPause = false; ((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 BaseTimedSkillState : BaseSkillState { protected float duration; protected float castStartTime; protected float castEndTime; protected bool hasFired; protected bool isFiring; protected bool hasExited; public abstract float TimedBaseDuration { get; } public abstract float TimedBaseCastStartPercentTime { get; } public virtual float TimedBaseCastEndPercentTime => 1f; public override void OnEnter() { InitDurationValues(); ((BaseState)this).OnEnter(); } protected virtual void InitDurationValues() { duration = TimedBaseDuration / ((BaseState)this).attackSpeedStat; castStartTime = TimedBaseCastStartPercentTime * duration; castEndTime = TimedBaseCastEndPercentTime * duration; } protected virtual void OnCastEnter() { } protected virtual void OnCastFixedUpdate() { } protected virtual void OnCastUpdate() { } protected virtual void OnCastExit() { } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); bool flag = ((EntityState)this).fixedAge >= castStartTime; bool flag2 = ((EntityState)this).fixedAge >= castEndTime; isFiring = false; if ((flag && !flag2) || (flag && flag2 && !hasFired)) { isFiring = true; OnCastFixedUpdate(); if (!hasFired) { OnCastEnter(); hasFired = true; } } if (flag2 && !hasExited) { hasExited = true; OnCastExit(); } if (((EntityState)this).fixedAge > duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void Update() { ((EntityState)this).Update(); if (isFiring) { OnCastUpdate(); } } } public class ExampleTimedSkillState : BaseTimedSkillState { public override float TimedBaseDuration => 1.5f; public override float TimedBaseCastStartPercentTime => 0.2f; public override float TimedBaseCastEndPercentTime => 0.9f; protected override void OnCastEnter() { } protected override void OnCastFixedUpdate() { } protected override void OnCastExit() { } } public class ExampleDelayedSkillState : BaseTimedSkillState { public override float TimedBaseDuration => 1.5f; public override float TimedBaseCastStartPercentTime => 0.2f; protected override void OnCastEnter() { } } } namespace DrifterMod.Survivors.Drifter { public static class DrifterAI { 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 DrifterAssets { public static GameObject swordSwingEffect; public static GameObject swordHitImpactEffect; public static GameObject dashEffect; public static GameObject chargeshotVFX; public static GameObject pickupUpgradePrefab; public static GameObject gunVendor; public static GameObject swordVendor; public static GameObject dashVendor; public static CostTypeDef chipCostDef; public static int chipCostTypeIndex; public static BasicPickupDropTable dtFallback; public static InteractableSpawnCard corpseSpawnCard; public static GameObject corpsePrefab; public static GameObject headshotIndicator; public static GameObject sycom; public static Texture defaultCrosshair; public static Texture grappleCrosshair; public static GameObject bombExplosionEffect; public static NetworkSoundEventDef swordHitSoundEvent; public static GameObject bombProjectilePrefab; public static GameObject deflectProjectile; private static AssetBundle _assetBundle; public static CostTypeIndex chipIndex; public static void Init(AssetBundle assetBundle) { //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) _assetBundle = assetBundle; swordHitSoundEvent = Content.CreateAndAddNetworkSoundEventDef("HenrySwordHit"); CreateEffects(); CreateProjectiles(); CreateCorpse(); CreateSycom(); dtFallback = Addressables.LoadAssetAsync((object)"RoR2/Base/Chest1/dtChest1.asset").WaitForCompletion(); gunVendor = CreateVendors("DrifterGunVendor", "GUN_VENDOR_NAME"); swordVendor = CreateVendors("DrifterSwordVendor", "SWORD_VENDOR_NAME"); dashVendor = CreateVendors("DrifterTempDashVendor", "DASH_VENDOR_NAME"); } private static void CreateSycom() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) sycom = _assetBundle.LoadAsset("Sycom"); sycom.AddComponent(); sycom.GetComponent().initialStateType = new SerializableEntityStateType(typeof(FollowState)); sycom.GetComponent().mainStateType = new SerializableEntityStateType(typeof(FollowState)); PrefabAPI.RegisterNetworkPrefab(sycom); } private static void CreateCorpse() { //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: 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) corpsePrefab = _assetBundle.LoadAsset("CorpsePrefab"); if ((Object)(object)corpsePrefab.GetComponent().targetRenderer == (Object)null) { corpsePrefab.GetComponent().targetRenderer = (Renderer)(object)corpsePrefab.GetComponentInChildren(); } CorpseInteraction corpseInteraction = corpsePrefab.AddComponent(); PrefabAPI.RegisterNetworkPrefab(corpsePrefab); corpseSpawnCard = ScriptableObject.CreateInstance(); ((Object)corpseSpawnCard).name = "iscDrifterCorpse"; ((SpawnCard)corpseSpawnCard).prefab = corpsePrefab; ((SpawnCard)corpseSpawnCard).sendOverNetwork = true; ((SpawnCard)corpseSpawnCard).hullSize = (HullClassification)0; ((SpawnCard)corpseSpawnCard).nodeGraphType = (GraphType)0; ((SpawnCard)corpseSpawnCard).requiredFlags = (NodeFlags)0; ((SpawnCard)corpseSpawnCard).forbiddenFlags = (NodeFlags)16; ((SpawnCard)corpseSpawnCard).directorCreditCost = 0; ((SpawnCard)corpseSpawnCard).occupyPosition = true; corpseSpawnCard.orientToFloor = true; corpseSpawnCard.skipSpawnWhenSacrificeArtifactEnabled = false; } private static void CreateEffects() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) CreateBombExplosionEffect(); CreateHeadshotIndicator(); swordSwingEffect = _assetBundle.LoadEffect("HenrySwordSwingEffect"); swordHitImpactEffect = Addressables.LoadAssetAsync((object)"RoR2/Base/Merc/OmniImpactVFXSlashMerc.prefab").WaitForCompletion(); dashEffect = _assetBundle.LoadAsset("DrifterDashParticle"); chargeshotVFX = _assetBundle.LoadAsset("ChargeshotVFX"); } private static void CreateHeadshotIndicator() { //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) headshotIndicator = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/DLC1/Railgunner/RailgunnerScopeLightOverlay.prefab").WaitForCompletion(), "DrifterHeadShotOverlay", false); if (Object.op_Implicit((Object)(object)headshotIndicator.GetComponent())) { Object.Destroy((Object)(object)headshotIndicator.GetComponent()); } ((Component)headshotIndicator.transform.Find("ScopeOverlay")).gameObject.SetActive(false); } private static void CreateBombExplosionEffect() { //IL_0060: 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_008b: Unknown result type (might be due to invalid IL or missing references) bombExplosionEffect = _assetBundle.LoadEffect("BombExplosionEffect", "Play_Drifter_Grenade_Explode"); if (Object.op_Implicit((Object)(object)bombExplosionEffect)) { ShakeEmitter val = bombExplosionEffect.AddComponent(); val.amplitudeTimeDecay = true; val.duration = 0.5f; val.radius = 200f; val.scaleShakeRadiusWithLocalScale = false; val.wave = new Wave { amplitude = 1f, frequency = 40f, cycleOffset = 0f }; } } private static void CreateProjectiles() { CreateBombProjectile(); Content.AddProjectilePrefab(bombProjectilePrefab); PrefabAPI.RegisterNetworkPrefab(bombProjectilePrefab); } private static void CreateDeflectProjectile() { //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) deflectProjectile = Addressables.LoadAssetAsync((object)"RoR2/Base/SprintWisp/WispOrbEffect.prefab").WaitForCompletion(); ((Component)deflectProjectile.transform.Find("Mesh")).gameObject.SetActive(false); } private static void CreateBombProjectile() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) bombProjectilePrefab = Asset.CloneProjectilePrefab("CommandoGrenadeProjectile", "DrifterGrenadeProjectile"); Object.Destroy((Object)(object)bombProjectilePrefab.GetComponent()); ProjectileImpactExplosion val = bombProjectilePrefab.AddComponent(); ((ProjectileExplosion)val).blastRadius = 16f; ((ProjectileExplosion)val).blastDamageCoefficient = 1f; ((ProjectileExplosion)val).falloffModel = (FalloffModel)0; val.destroyOnEnemy = true; val.lifetime = 12f; val.impactEffect = bombExplosionEffect; val.lifetimeExpiredSound = Content.CreateAndAddNetworkSoundEventDef("Play_Drifter_Grenade_Explode"); val.timerAfterImpact = true; val.lifetimeAfterImpact = 0.8f; ProjectileController component = bombProjectilePrefab.GetComponent(); if ((Object)(object)_assetBundle.LoadAsset("DrifterGrenadeGhost") != (Object)null) { component.ghostPrefab = _assetBundle.CreateProjectileGhostPrefab("DrifterGrenadeGhost"); } component.startSound = ""; } public static GameObject CreateVendors(string assetString, string vendorINameToken) { if (!_assetBundle.Contains(assetString)) { Log.Error("Asset doesnt exist in bundle, check spelling or make sure it really exists. Aborting object creation"); return null; } GameObject val = _assetBundle.LoadAsset(assetString); val.AddComponent(); if ((Object)(object)val.GetComponent().targetRenderer == (Object)null) { val.GetComponent().targetRenderer = (Renderer)(object)val.GetComponentInChildren(); } VendorInteractableScript vendorInteractableScript = val.AddComponent(); PurchaseInteraction val2 = val.AddComponent(); val2.contextToken = "VCR_DRIFTER_VENDOR_INTERACTION_PROMPT"; val2.Networkcost = 3; val2.NetworkdisplayNameToken = "VCR_DRIFTER_" + vendorINameToken; vendorInteractableScript.purchaseInteraction = val2; PrefabAPI.RegisterNetworkPrefab(val); return val; } [SystemInitializer(new Type[] { typeof(CostTypeCatalog) })] private static void GetCostIndex() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) chipIndex = (CostTypeIndex)Array.IndexOf(CostTypeCatalog.costTypeDefs, chipCostDef); } public static void AddKeyCostType(List list) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Expected O, but got Unknown //IL_004f: Unknown result type (might be due to invalid IL or missing references) chipCostDef = new CostTypeDef(); chipCostDef.costStringFormatToken = "VCR_DRIFTER_CHIP_WHOLE_COST"; chipCostDef.isAffordable = new IsAffordableDelegate(ItemCostTypeHelperKey.IsAffordable); chipCostDef.payCost = new PayCostDelegate(ItemCostTypeHelperKey.PayCost); chipCostDef.colorIndex = (ColorIndex)12; chipCostDef.saturateWorldStyledCostString = true; chipCostDef.darkenWorldStyledCostString = false; chipCostTypeIndex = CostTypeCatalog.costTypeDefs.Length + list.Count; list.Add(chipCostDef); } } internal class ItemCostTypeHelperKey { public static bool IsAffordable(CostTypeDef costTypeDef, IsAffordableContext context) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) CharacterBody component = ((Component)context.activator).GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { return false; } Inventory inventory = component.inventory; if (!Object.op_Implicit((Object)(object)inventory)) { return false; } int cost = context.cost; int itemCountEffective = inventory.GetItemCountEffective(DrifterItems.chipItemDef); if (itemCountEffective >= cost) { return true; } return false; } public static void PayCost(PayCostContext context, PayCostResults results) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) if (context.activatorMaster.inventory.GetItemCountEffective(DrifterItems.chipItemDef) >= DrifterItems.vendorCost) { context.activatorMaster.inventory.RemoveItemPermanent(DrifterItems.chipItemDef, DrifterItems.vendorCost); CreateItemTakenOrb(context.activatorBody.corePosition, context.purchasedObject, DrifterItems.chipItemDef.itemIndex); } } public static void CreateItemTakenOrb(Vector3 effectOrigin, GameObject targetObject, ItemIndex itemIndex) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_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_003e: 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_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Expected I4, but got Unknown //IL_0048: Expected O, but got Unknown if (!NetworkServer.active) { Debug.LogWarning((object)"[Server] function 'System.Void RoR2.PurchaseInteraction::CreateItemTakenOrb(UnityEngine.Vector3,UnityEngine.GameObject,RoR2.ItemIndex)' called on client"); return; } GameObject val = LegacyResourcesAPI.Load("Prefabs/Effects/OrbEffects/ItemTakenOrbEffect"); EffectData val2 = new EffectData { origin = effectOrigin, genericFloat = 1.5f, genericUInt = (uint)(itemIndex + 1) }; val2.SetNetworkedObjectReference(targetObject); EffectManager.SpawnEffect(val, val2, true); } } public static class DrifterBuffs { public static BuffDef skateBuff; public static BuffDef attackBuff; public static BuffDef lowHPBuff; public static BuffDef coughSlow; public static BuffDef disableOSPBuff; public static void Init(AssetBundle assetBundle) { //IL_0015: 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_005f: 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_00a9: Unknown result type (might be due to invalid IL or missing references) skateBuff = Content.CreateAndAddBuff("DrifterSkatingArmor", LegacyResourcesAPI.Load("BuffDefs/HiddenInvincibility").iconSprite, Color.white, canStack: false, isDebuff: false); attackBuff = Content.CreateAndAddBuff("DrifterAttackArmor", LegacyResourcesAPI.Load("BuffDefs/HiddenInvincibility").iconSprite, Color.white, canStack: false, isDebuff: false); lowHPBuff = Content.CreateAndAddBuff("DrifterLowHPBuff", LegacyResourcesAPI.Load("BuffDefs/HiddenInvincibility").iconSprite, Color.white, canStack: false, isDebuff: false); coughSlow = Content.CreateAndAddBuff("DrifterCoughSlowdown", LegacyResourcesAPI.Load("BuffDefs/HiddenInvincibility").iconSprite, Color.white, canStack: false, isDebuff: false); disableOSPBuff = Content.CreateAndAddBuff("DrifterOSPDisabled", LegacyResourcesAPI.Load("BuffDefs/HiddenInvincibility").iconSprite, Color.white, canStack: false, isDebuff: false); disableOSPBuff.isHidden = true; } } public static class DrifterConfig { public static ConfigEntry someConfigBool; public static ConfigEntry someConfigFloat; public static ConfigEntry someConfigFloatWithCustomRange; public static ConfigEntry tauntKey; public static ConfigEntry sitKey; public static ConfigEntry spawnCorpse; public static ConfigEntry cursed; public static ConfigEntry corpseSpawnChance; public static void Init() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) string section = "General"; tauntKey = Config.BindAndOptions(section, "Taunt", new KeyboardShortcut((KeyCode)49, Array.Empty()), "Key used to Taunt"); sitKey = Config.BindAndOptions(section, "Take a seat", new KeyboardShortcut((KeyCode)50, Array.Empty()), "Key used for Sitting"); spawnCorpse = Config.BindAndOptions(section, "Spawn lost Wanderer", defaultValue: true, "Enable to spawn Lost Wanderer regardless of a drifter being present"); corpseSpawnChance = Config.BindAndOptions(section, "Lost Wanderer spawn chance", 60f, 1f, 100f, "Configurable chance for a lost wanderer to spawn per stage."); } } public class DrifterItemDisplays : 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_0ebf: Unknown result type (might be due to invalid IL or missing references) //IL_0ed3: Unknown result type (might be due to invalid IL or missing references) //IL_0ee7: Unknown result type (might be due to invalid IL or missing references) //IL_0eec: Unknown result type (might be due to invalid IL or missing references) //IL_0ef1: Unknown result type (might be due to invalid IL or missing references) //IL_0ef6: 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_0f5f: Unknown result type (might be due to invalid IL or missing references) //IL_0f64: Unknown result type (might be due to invalid IL or missing references) //IL_0f69: Unknown result type (might be due to invalid IL or missing references) //IL_0f6e: 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_0fd7: Unknown result type (might be due to invalid IL or missing references) //IL_0fdc: Unknown result type (might be due to invalid IL or missing references) //IL_0fe1: Unknown result type (might be due to invalid IL or missing references) //IL_0fe6: 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_104f: Unknown result type (might be due to invalid IL or missing references) //IL_1054: Unknown result type (might be due to invalid IL or missing references) //IL_1059: Unknown result type (might be due to invalid IL or missing references) //IL_105e: 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_10c7: Unknown result type (might be due to invalid IL or missing references) //IL_10cc: Unknown result type (might be due to invalid IL or missing references) //IL_10d1: Unknown result type (might be due to invalid IL or missing references) //IL_10d6: 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_113f: Unknown result type (might be due to invalid IL or missing references) //IL_1144: Unknown result type (might be due to invalid IL or missing references) //IL_1149: Unknown result type (might be due to invalid IL or missing references) //IL_114e: 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_11b7: Unknown result type (might be due to invalid IL or missing references) //IL_11bc: Unknown result type (might be due to invalid IL or missing references) //IL_11c1: Unknown result type (might be due to invalid IL or missing references) //IL_11c6: 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_122f: Unknown result type (might be due to invalid IL or missing references) //IL_1234: Unknown result type (might be due to invalid IL or missing references) //IL_1239: Unknown result type (might be due to invalid IL or missing references) //IL_123e: 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_12a7: Unknown result type (might be due to invalid IL or missing references) //IL_12ac: Unknown result type (might be due to invalid IL or missing references) //IL_12b1: Unknown result type (might be due to invalid IL or missing references) //IL_12b6: 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_131f: Unknown result type (might be due to invalid IL or missing references) //IL_1324: Unknown result type (might be due to invalid IL or missing references) //IL_1329: Unknown result type (might be due to invalid IL or missing references) //IL_132e: 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_1397: Unknown result type (might be due to invalid IL or missing references) //IL_139c: Unknown result type (might be due to invalid IL or missing references) //IL_13a1: Unknown result type (might be due to invalid IL or missing references) //IL_13a6: Unknown result type (might be due to invalid IL or missing references) //IL_13e7: Unknown result type (might be due to invalid IL or missing references) //IL_13fb: Unknown result type (might be due to invalid IL or missing references) //IL_140f: Unknown result type (might be due to invalid IL or missing references) //IL_1414: Unknown result type (might be due to invalid IL or missing references) //IL_1419: Unknown result type (might be due to invalid IL or missing references) //IL_141e: Unknown result type (might be due to invalid IL or missing references) //IL_145f: Unknown result type (might be due to invalid IL or missing references) //IL_1473: Unknown result type (might be due to invalid IL or missing references) //IL_1487: Unknown result type (might be due to invalid IL or missing references) //IL_148c: Unknown result type (might be due to invalid IL or missing references) //IL_1491: Unknown result type (might be due to invalid IL or missing references) //IL_1496: Unknown result type (might be due to invalid IL or missing references) //IL_14d7: Unknown result type (might be due to invalid IL or missing references) //IL_14eb: Unknown result type (might be due to invalid IL or missing references) //IL_14ff: Unknown result type (might be due to invalid IL or missing references) //IL_1504: Unknown result type (might be due to invalid IL or missing references) //IL_1509: Unknown result type (might be due to invalid IL or missing references) //IL_150e: Unknown result type (might be due to invalid IL or missing references) //IL_154f: Unknown result type (might be due to invalid IL or missing references) //IL_1563: Unknown result type (might be due to invalid IL or missing references) //IL_1577: Unknown result type (might be due to invalid IL or missing references) //IL_157c: Unknown result type (might be due to invalid IL or missing references) //IL_1581: Unknown result type (might be due to invalid IL or missing references) //IL_1586: Unknown result type (might be due to invalid IL or missing references) //IL_15c7: Unknown result type (might be due to invalid IL or missing references) //IL_15db: Unknown result type (might be due to invalid IL or missing references) //IL_15ef: Unknown result type (might be due to invalid IL or missing references) //IL_15f4: Unknown result type (might be due to invalid IL or missing references) //IL_15f9: Unknown result type (might be due to invalid IL or missing references) //IL_15fe: Unknown result type (might be due to invalid IL or missing references) //IL_163f: Unknown result type (might be due to invalid IL or missing references) //IL_1653: Unknown result type (might be due to invalid IL or missing references) //IL_1667: Unknown result type (might be due to invalid IL or missing references) //IL_166c: Unknown result type (might be due to invalid IL or missing references) //IL_1671: Unknown result type (might be due to invalid IL or missing references) //IL_1676: Unknown result type (might be due to invalid IL or missing references) //IL_16b7: Unknown result type (might be due to invalid IL or missing references) //IL_16cb: Unknown result type (might be due to invalid IL or missing references) //IL_16df: Unknown result type (might be due to invalid IL or missing references) //IL_16e4: Unknown result type (might be due to invalid IL or missing references) //IL_16e9: Unknown result type (might be due to invalid IL or missing references) //IL_16f1: Unknown result type (might be due to invalid IL or missing references) //IL_16f6: Unknown result type (might be due to invalid IL or missing references) //IL_16fb: Unknown result type (might be due to invalid IL or missing references) //IL_173c: Unknown result type (might be due to invalid IL or missing references) //IL_1750: Unknown result type (might be due to invalid IL or missing references) //IL_1764: Unknown result type (might be due to invalid IL or missing references) //IL_1769: Unknown result type (might be due to invalid IL or missing references) //IL_176e: Unknown result type (might be due to invalid IL or missing references) //IL_1773: Unknown result type (might be due to invalid IL or missing references) //IL_17b4: Unknown result type (might be due to invalid IL or missing references) //IL_17c8: Unknown result type (might be due to invalid IL or missing references) //IL_17dc: Unknown result type (might be due to invalid IL or missing references) //IL_17e1: Unknown result type (might be due to invalid IL or missing references) //IL_17e6: Unknown result type (might be due to invalid IL or missing references) //IL_17eb: Unknown result type (might be due to invalid IL or missing references) //IL_182c: Unknown result type (might be due to invalid IL or missing references) //IL_1840: Unknown result type (might be due to invalid IL or missing references) //IL_1854: Unknown result type (might be due to invalid IL or missing references) //IL_1859: Unknown result type (might be due to invalid IL or missing references) //IL_185e: Unknown result type (might be due to invalid IL or missing references) //IL_1863: Unknown result type (might be due to invalid IL or missing references) //IL_18a4: Unknown result type (might be due to invalid IL or missing references) //IL_18b8: Unknown result type (might be due to invalid IL or missing references) //IL_18cc: Unknown result type (might be due to invalid IL or missing references) //IL_18d1: Unknown result type (might be due to invalid IL or missing references) //IL_18d6: Unknown result type (might be due to invalid IL or missing references) //IL_18fb: Unknown result type (might be due to invalid IL or missing references) //IL_190f: Unknown result type (might be due to invalid IL or missing references) //IL_1923: Unknown result type (might be due to invalid IL or missing references) //IL_1928: Unknown result type (might be due to invalid IL or missing references) //IL_192d: Unknown result type (might be due to invalid IL or missing references) //IL_1932: Unknown result type (might be due to invalid IL or missing references) //IL_1973: Unknown result type (might be due to invalid IL or missing references) //IL_1987: Unknown result type (might be due to invalid IL or missing references) //IL_199b: Unknown result type (might be due to invalid IL or missing references) //IL_19a0: Unknown result type (might be due to invalid IL or missing references) //IL_19a5: Unknown result type (might be due to invalid IL or missing references) //IL_19aa: Unknown result type (might be due to invalid IL or missing references) //IL_19eb: Unknown result type (might be due to invalid IL or missing references) //IL_19ff: Unknown result type (might be due to invalid IL or missing references) //IL_1a13: Unknown result type (might be due to invalid IL or missing references) //IL_1a18: Unknown result type (might be due to invalid IL or missing references) //IL_1a1d: Unknown result type (might be due to invalid IL or missing references) //IL_1a22: Unknown result type (might be due to invalid IL or missing references) //IL_1a63: Unknown result type (might be due to invalid IL or missing references) //IL_1a77: Unknown result type (might be due to invalid IL or missing references) //IL_1a8b: Unknown result type (might be due to invalid IL or missing references) //IL_1a90: Unknown result type (might be due to invalid IL or missing references) //IL_1a95: Unknown result type (might be due to invalid IL or missing references) //IL_1a9a: Unknown result type (might be due to invalid IL or missing references) //IL_1adb: Unknown result type (might be due to invalid IL or missing references) //IL_1aef: Unknown result type (might be due to invalid IL or missing references) //IL_1b03: Unknown result type (might be due to invalid IL or missing references) //IL_1b08: Unknown result type (might be due to invalid IL or missing references) //IL_1b0d: Unknown result type (might be due to invalid IL or missing references) //IL_1b12: Unknown result type (might be due to invalid IL or missing references) //IL_1b53: Unknown result type (might be due to invalid IL or missing references) //IL_1b67: Unknown result type (might be due to invalid IL or missing references) //IL_1b7b: Unknown result type (might be due to invalid IL or missing references) //IL_1b80: Unknown result type (might be due to invalid IL or missing references) //IL_1b85: Unknown result type (might be due to invalid IL or missing references) //IL_1b8a: Unknown result type (might be due to invalid IL or missing references) //IL_1bcb: Unknown result type (might be due to invalid IL or missing references) //IL_1bdf: Unknown result type (might be due to invalid IL or missing references) //IL_1bf3: Unknown result type (might be due to invalid IL or missing references) //IL_1bf8: Unknown result type (might be due to invalid IL or missing references) //IL_1bfd: Unknown result type (might be due to invalid IL or missing references) //IL_1c02: Unknown result type (might be due to invalid IL or missing references) //IL_1c43: Unknown result type (might be due to invalid IL or missing references) //IL_1c57: Unknown result type (might be due to invalid IL or missing references) //IL_1c6b: Unknown result type (might be due to invalid IL or missing references) //IL_1c70: Unknown result type (might be due to invalid IL or missing references) //IL_1c75: Unknown result type (might be due to invalid IL or missing references) //IL_1c7a: 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_1ce3: Unknown result type (might be due to invalid IL or missing references) //IL_1ce8: Unknown result type (might be due to invalid IL or missing references) //IL_1ced: Unknown result type (might be due to invalid IL or missing references) //IL_1cf2: 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_1d5b: Unknown result type (might be due to invalid IL or missing references) //IL_1d60: Unknown result type (might be due to invalid IL or missing references) //IL_1d65: Unknown result type (might be due to invalid IL or missing references) //IL_1d6a: 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_1dd3: Unknown result type (might be due to invalid IL or missing references) //IL_1dd8: Unknown result type (might be due to invalid IL or missing references) //IL_1ddd: Unknown result type (might be due to invalid IL or missing references) //IL_1de2: 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_1e4b: Unknown result type (might be due to invalid IL or missing references) //IL_1e50: Unknown result type (might be due to invalid IL or missing references) //IL_1e55: Unknown result type (might be due to invalid IL or missing references) //IL_1e5a: 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_1ec3: Unknown result type (might be due to invalid IL or missing references) //IL_1ec8: Unknown result type (might be due to invalid IL or missing references) //IL_1ecd: Unknown result type (might be due to invalid IL or missing references) //IL_1ed2: Unknown result type (might be due to invalid IL or missing references) //IL_1f13: Unknown result type (might be due to invalid IL or missing references) //IL_1f27: Unknown result type (might be due to invalid IL or missing references) //IL_1f3b: Unknown result type (might be due to invalid IL or missing references) //IL_1f40: Unknown result type (might be due to invalid IL or missing references) //IL_1f45: Unknown result type (might be due to invalid IL or missing references) //IL_1f4a: Unknown result type (might be due to invalid IL or missing references) //IL_1f8b: Unknown result type (might be due to invalid IL or missing references) //IL_1f9f: Unknown result type (might be due to invalid IL or missing references) //IL_1fb3: Unknown result type (might be due to invalid IL or missing references) //IL_1fb8: Unknown result type (might be due to invalid IL or missing references) //IL_1fbd: Unknown result type (might be due to invalid IL or missing references) //IL_1fc2: Unknown result type (might be due to invalid IL or missing references) //IL_2003: Unknown result type (might be due to invalid IL or missing references) //IL_2017: Unknown result type (might be due to invalid IL or missing references) //IL_202b: Unknown result type (might be due to invalid IL or missing references) //IL_2030: Unknown result type (might be due to invalid IL or missing references) //IL_2035: Unknown result type (might be due to invalid IL or missing references) //IL_203a: Unknown result type (might be due to invalid IL or missing references) //IL_207b: Unknown result type (might be due to invalid IL or missing references) //IL_208f: Unknown result type (might be due to invalid IL or missing references) //IL_20a3: Unknown result type (might be due to invalid IL or missing references) //IL_20a8: Unknown result type (might be due to invalid IL or missing references) //IL_20ad: Unknown result type (might be due to invalid IL or missing references) //IL_20b2: Unknown result type (might be due to invalid IL or missing references) //IL_20f3: Unknown result type (might be due to invalid IL or missing references) //IL_2107: Unknown result type (might be due to invalid IL or missing references) //IL_211b: Unknown result type (might be due to invalid IL or missing references) //IL_2120: Unknown result type (might be due to invalid IL or missing references) //IL_2125: Unknown result type (might be due to invalid IL or missing references) //IL_212a: Unknown result type (might be due to invalid IL or missing references) //IL_216b: Unknown result type (might be due to invalid IL or missing references) //IL_217f: Unknown result type (might be due to invalid IL or missing references) //IL_2193: Unknown result type (might be due to invalid IL or missing references) //IL_2198: Unknown result type (might be due to invalid IL or missing references) //IL_219d: Unknown result type (might be due to invalid IL or missing references) //IL_21a2: Unknown result type (might be due to invalid IL or missing references) //IL_21e3: Unknown result type (might be due to invalid IL or missing references) //IL_21f7: Unknown result type (might be due to invalid IL or missing references) //IL_220b: Unknown result type (might be due to invalid IL or missing references) //IL_2210: Unknown result type (might be due to invalid IL or missing references) //IL_2215: Unknown result type (might be due to invalid IL or missing references) //IL_221a: Unknown result type (might be due to invalid IL or missing references) //IL_225b: Unknown result type (might be due to invalid IL or missing references) //IL_226f: Unknown result type (might be due to invalid IL or missing references) //IL_2283: Unknown result type (might be due to invalid IL or missing references) //IL_2288: Unknown result type (might be due to invalid IL or missing references) //IL_228d: Unknown result type (might be due to invalid IL or missing references) //IL_2292: Unknown result type (might be due to invalid IL or missing references) //IL_22d3: Unknown result type (might be due to invalid IL or missing references) //IL_22e7: Unknown result type (might be due to invalid IL or missing references) //IL_22fb: Unknown result type (might be due to invalid IL or missing references) //IL_2300: Unknown result type (might be due to invalid IL or missing references) //IL_2305: Unknown result type (might be due to invalid IL or missing references) //IL_230a: Unknown result type (might be due to invalid IL or missing references) //IL_234b: Unknown result type (might be due to invalid IL or missing references) //IL_235f: Unknown result type (might be due to invalid IL or missing references) //IL_2373: Unknown result type (might be due to invalid IL or missing references) //IL_2378: Unknown result type (might be due to invalid IL or missing references) //IL_237d: Unknown result type (might be due to invalid IL or missing references) //IL_2382: Unknown result type (might be due to invalid IL or missing references) //IL_23c3: Unknown result type (might be due to invalid IL or missing references) //IL_23d7: Unknown result type (might be due to invalid IL or missing references) //IL_23eb: Unknown result type (might be due to invalid IL or missing references) //IL_23f0: Unknown result type (might be due to invalid IL or missing references) //IL_23f5: Unknown result type (might be due to invalid IL or missing references) //IL_23fa: Unknown result type (might be due to invalid IL or missing references) //IL_243b: Unknown result type (might be due to invalid IL or missing references) //IL_244f: Unknown result type (might be due to invalid IL or missing references) //IL_2463: Unknown result type (might be due to invalid IL or missing references) //IL_2468: Unknown result type (might be due to invalid IL or missing references) //IL_246d: Unknown result type (might be due to invalid IL or missing references) //IL_2472: Unknown result type (might be due to invalid IL or missing references) //IL_24b3: Unknown result type (might be due to invalid IL or missing references) //IL_24c7: Unknown result type (might be due to invalid IL or missing references) //IL_24db: Unknown result type (might be due to invalid IL or missing references) //IL_24e0: Unknown result type (might be due to invalid IL or missing references) //IL_24e5: Unknown result type (might be due to invalid IL or missing references) //IL_24ea: Unknown result type (might be due to invalid IL or missing references) //IL_252b: Unknown result type (might be due to invalid IL or missing references) //IL_253f: Unknown result type (might be due to invalid IL or missing references) //IL_2553: Unknown result type (might be due to invalid IL or missing references) //IL_2558: Unknown result type (might be due to invalid IL or missing references) //IL_255d: Unknown result type (might be due to invalid IL or missing references) //IL_2562: Unknown result type (might be due to invalid IL or missing references) //IL_25a3: Unknown result type (might be due to invalid IL or missing references) //IL_25b7: Unknown result type (might be due to invalid IL or missing references) //IL_25cb: Unknown result type (might be due to invalid IL or missing references) //IL_25d0: Unknown result type (might be due to invalid IL or missing references) //IL_25d5: Unknown result type (might be due to invalid IL or missing references) //IL_25da: Unknown result type (might be due to invalid IL or missing references) //IL_261b: Unknown result type (might be due to invalid IL or missing references) //IL_262f: Unknown result type (might be due to invalid IL or missing references) //IL_2643: Unknown result type (might be due to invalid IL or missing references) //IL_2648: Unknown result type (might be due to invalid IL or missing references) //IL_264d: Unknown result type (might be due to invalid IL or missing references) //IL_2652: Unknown result type (might be due to invalid IL or missing references) //IL_2693: Unknown result type (might be due to invalid IL or missing references) //IL_26a7: Unknown result type (might be due to invalid IL or missing references) //IL_26bb: Unknown result type (might be due to invalid IL or missing references) //IL_26c0: Unknown result type (might be due to invalid IL or missing references) //IL_26c5: Unknown result type (might be due to invalid IL or missing references) //IL_26ca: Unknown result type (might be due to invalid IL or missing references) //IL_270b: Unknown result type (might be due to invalid IL or missing references) //IL_271f: Unknown result type (might be due to invalid IL or missing references) //IL_2733: Unknown result type (might be due to invalid IL or missing references) //IL_2738: Unknown result type (might be due to invalid IL or missing references) //IL_273d: Unknown result type (might be due to invalid IL or missing references) //IL_2742: Unknown result type (might be due to invalid IL or missing references) //IL_2783: Unknown result type (might be due to invalid IL or missing references) //IL_2797: Unknown result type (might be due to invalid IL or missing references) //IL_27ab: Unknown result type (might be due to invalid IL or missing references) //IL_27b0: Unknown result type (might be due to invalid IL or missing references) //IL_27b5: Unknown result type (might be due to invalid IL or missing references) //IL_27ba: Unknown result type (might be due to invalid IL or missing references) //IL_27fb: Unknown result type (might be due to invalid IL or missing references) //IL_280f: Unknown result type (might be due to invalid IL or missing references) //IL_2823: Unknown result type (might be due to invalid IL or missing references) //IL_2828: Unknown result type (might be due to invalid IL or missing references) //IL_282d: Unknown result type (might be due to invalid IL or missing references) //IL_2832: Unknown result type (might be due to invalid IL or missing references) //IL_2873: Unknown result type (might be due to invalid IL or missing references) //IL_2887: Unknown result type (might be due to invalid IL or missing references) //IL_289b: Unknown result type (might be due to invalid IL or missing references) //IL_28a0: Unknown result type (might be due to invalid IL or missing references) //IL_28a5: Unknown result type (might be due to invalid IL or missing references) //IL_28aa: Unknown result type (might be due to invalid IL or missing references) //IL_28eb: Unknown result type (might be due to invalid IL or missing references) //IL_28ff: Unknown result type (might be due to invalid IL or missing references) //IL_2913: Unknown result type (might be due to invalid IL or missing references) //IL_2918: Unknown result type (might be due to invalid IL or missing references) //IL_291d: Unknown result type (might be due to invalid IL or missing references) //IL_2922: Unknown result type (might be due to invalid IL or missing references) //IL_2963: Unknown result type (might be due to invalid IL or missing references) //IL_2977: Unknown result type (might be due to invalid IL or missing references) //IL_298b: Unknown result type (might be due to invalid IL or missing references) //IL_2990: Unknown result type (might be due to invalid IL or missing references) //IL_2995: Unknown result type (might be due to invalid IL or missing references) //IL_299a: Unknown result type (might be due to invalid IL or missing references) //IL_29db: Unknown result type (might be due to invalid IL or missing references) //IL_29ef: Unknown result type (might be due to invalid IL or missing references) //IL_2a03: Unknown result type (might be due to invalid IL or missing references) //IL_2a08: Unknown result type (might be due to invalid IL or missing references) //IL_2a0d: Unknown result type (might be due to invalid IL or missing references) //IL_2a12: Unknown result type (might be due to invalid IL or missing references) //IL_2a53: Unknown result type (might be due to invalid IL or missing references) //IL_2a67: Unknown result type (might be due to invalid IL or missing references) //IL_2a7b: Unknown result type (might be due to invalid IL or missing references) //IL_2a80: Unknown result type (might be due to invalid IL or missing references) //IL_2a85: Unknown result type (might be due to invalid IL or missing references) //IL_2a8a: Unknown result type (might be due to invalid IL or missing references) //IL_2acb: Unknown result type (might be due to invalid IL or missing references) //IL_2adf: Unknown result type (might be due to invalid IL or missing references) //IL_2af3: Unknown result type (might be due to invalid IL or missing references) //IL_2af8: Unknown result type (might be due to invalid IL or missing references) //IL_2afd: Unknown result type (might be due to invalid IL or missing references) //IL_2b02: Unknown result type (might be due to invalid IL or missing references) //IL_2b43: Unknown result type (might be due to invalid IL or missing references) //IL_2b57: Unknown result type (might be due to invalid IL or missing references) //IL_2b6b: Unknown result type (might be due to invalid IL or missing references) //IL_2b70: Unknown result type (might be due to invalid IL or missing references) //IL_2b75: Unknown result type (might be due to invalid IL or missing references) //IL_2b7a: Unknown result type (might be due to invalid IL or missing references) //IL_2bbb: Unknown result type (might be due to invalid IL or missing references) //IL_2bcf: Unknown result type (might be due to invalid IL or missing references) //IL_2be3: Unknown result type (might be due to invalid IL or missing references) //IL_2be8: Unknown result type (might be due to invalid IL or missing references) //IL_2bed: Unknown result type (might be due to invalid IL or missing references) //IL_2bf2: Unknown result type (might be due to invalid IL or missing references) //IL_2c33: Unknown result type (might be due to invalid IL or missing references) //IL_2c47: Unknown result type (might be due to invalid IL or missing references) //IL_2c5b: Unknown result type (might be due to invalid IL or missing references) //IL_2c60: Unknown result type (might be due to invalid IL or missing references) //IL_2c65: Unknown result type (might be due to invalid IL or missing references) //IL_2c6a: Unknown result type (might be due to invalid IL or missing references) //IL_2cab: Unknown result type (might be due to invalid IL or missing references) //IL_2cbf: Unknown result type (might be due to invalid IL or missing references) //IL_2cd3: Unknown result type (might be due to invalid IL or missing references) //IL_2cd8: Unknown result type (might be due to invalid IL or missing references) //IL_2cdd: Unknown result type (might be due to invalid IL or missing references) //IL_2ce2: Unknown result type (might be due to invalid IL or missing references) //IL_2d23: Unknown result type (might be due to invalid IL or missing references) //IL_2d37: Unknown result type (might be due to invalid IL or missing references) //IL_2d4b: Unknown result type (might be due to invalid IL or missing references) //IL_2d50: Unknown result type (might be due to invalid IL or missing references) //IL_2d55: Unknown result type (might be due to invalid IL or missing references) //IL_2d5a: Unknown result type (might be due to invalid IL or missing references) //IL_2d9b: Unknown result type (might be due to invalid IL or missing references) //IL_2daf: Unknown result type (might be due to invalid IL or missing references) //IL_2dc3: Unknown result type (might be due to invalid IL or missing references) //IL_2dc8: Unknown result type (might be due to invalid IL or missing references) //IL_2dcd: Unknown result type (might be due to invalid IL or missing references) //IL_2dd2: Unknown result type (might be due to invalid IL or missing references) //IL_2e13: Unknown result type (might be due to invalid IL or missing references) //IL_2e27: Unknown result type (might be due to invalid IL or missing references) //IL_2e3b: Unknown result type (might be due to invalid IL or missing references) //IL_2e40: Unknown result type (might be due to invalid IL or missing references) //IL_2e45: Unknown result type (might be due to invalid IL or missing references) //IL_2e4a: Unknown result type (might be due to invalid IL or missing references) //IL_2e8b: Unknown result type (might be due to invalid IL or missing references) //IL_2e9f: Unknown result type (might be due to invalid IL or missing references) //IL_2eb3: Unknown result type (might be due to invalid IL or missing references) //IL_2eb8: Unknown result type (might be due to invalid IL or missing references) //IL_2ebd: Unknown result type (might be due to invalid IL or missing references) //IL_2ec2: Unknown result type (might be due to invalid IL or missing references) //IL_2f03: Unknown result type (might be due to invalid IL or missing references) //IL_2f17: Unknown result type (might be due to invalid IL or missing references) //IL_2f2b: Unknown result type (might be due to invalid IL or missing references) //IL_2f30: Unknown result type (might be due to invalid IL or missing references) //IL_2f35: Unknown result type (might be due to invalid IL or missing references) //IL_2f3a: Unknown result type (might be due to invalid IL or missing references) //IL_2f7b: Unknown result type (might be due to invalid IL or missing references) //IL_2f8f: Unknown result type (might be due to invalid IL or missing references) //IL_2fa3: Unknown result type (might be due to invalid IL or missing references) //IL_2fa8: Unknown result type (might be due to invalid IL or missing references) //IL_2fad: Unknown result type (might be due to invalid IL or missing references) //IL_2fb2: Unknown result type (might be due to invalid IL or missing references) //IL_2ff3: Unknown result type (might be due to invalid IL or missing references) //IL_3007: Unknown result type (might be due to invalid IL or missing references) //IL_301b: Unknown result type (might be due to invalid IL or missing references) //IL_3020: Unknown result type (might be due to invalid IL or missing references) //IL_3025: Unknown result type (might be due to invalid IL or missing references) //IL_302a: Unknown result type (might be due to invalid IL or missing references) //IL_306b: Unknown result type (might be due to invalid IL or missing references) //IL_307f: Unknown result type (might be due to invalid IL or missing references) //IL_3093: Unknown result type (might be due to invalid IL or missing references) //IL_3098: Unknown result type (might be due to invalid IL or missing references) //IL_309d: Unknown result type (might be due to invalid IL or missing references) //IL_30c2: Unknown result type (might be due to invalid IL or missing references) //IL_30d6: Unknown result type (might be due to invalid IL or missing references) //IL_30ea: Unknown result type (might be due to invalid IL or missing references) //IL_30ef: Unknown result type (might be due to invalid IL or missing references) //IL_30f4: Unknown result type (might be due to invalid IL or missing references) //IL_30f9: Unknown result type (might be due to invalid IL or missing references) //IL_313a: Unknown result type (might be due to invalid IL or missing references) //IL_314e: Unknown result type (might be due to invalid IL or missing references) //IL_3162: Unknown result type (might be due to invalid IL or missing references) //IL_3167: Unknown result type (might be due to invalid IL or missing references) //IL_316c: Unknown result type (might be due to invalid IL or missing references) //IL_3171: Unknown result type (might be due to invalid IL or missing references) //IL_31b2: Unknown result type (might be due to invalid IL or missing references) //IL_31c6: Unknown result type (might be due to invalid IL or missing references) //IL_31da: Unknown result type (might be due to invalid IL or missing references) //IL_31df: Unknown result type (might be due to invalid IL or missing references) //IL_31e4: Unknown result type (might be due to invalid IL or missing references) //IL_31e9: Unknown result type (might be due to invalid IL or missing references) //IL_322a: Unknown result type (might be due to invalid IL or missing references) //IL_323e: Unknown result type (might be due to invalid IL or missing references) //IL_3252: Unknown result type (might be due to invalid IL or missing references) //IL_3257: Unknown result type (might be due to invalid IL or missing references) //IL_325c: Unknown result type (might be due to invalid IL or missing references) //IL_3261: Unknown result type (might be due to invalid IL or missing references) //IL_32a2: Unknown result type (might be due to invalid IL or missing references) //IL_32b6: Unknown result type (might be due to invalid IL or missing references) //IL_32ca: Unknown result type (might be due to invalid IL or missing references) //IL_32cf: Unknown result type (might be due to invalid IL or missing references) //IL_32d4: Unknown result type (might be due to invalid IL or missing references) //IL_32d9: Unknown result type (might be due to invalid IL or missing references) //IL_331a: Unknown result type (might be due to invalid IL or missing references) //IL_332e: Unknown result type (might be due to invalid IL or missing references) //IL_3342: Unknown result type (might be due to invalid IL or missing references) //IL_3347: Unknown result type (might be due to invalid IL or missing references) //IL_334c: Unknown result type (might be due to invalid IL or missing references) //IL_3351: Unknown result type (might be due to invalid IL or missing references) //IL_3392: Unknown result type (might be due to invalid IL or missing references) //IL_33a6: Unknown result type (might be due to invalid IL or missing references) //IL_33ba: Unknown result type (might be due to invalid IL or missing references) //IL_33bf: Unknown result type (might be due to invalid IL or missing references) //IL_33c4: Unknown result type (might be due to invalid IL or missing references) //IL_33e9: Unknown result type (might be due to invalid IL or missing references) //IL_33fd: Unknown result type (might be due to invalid IL or missing references) //IL_3411: Unknown result type (might be due to invalid IL or missing references) //IL_3416: Unknown result type (might be due to invalid IL or missing references) //IL_341b: Unknown result type (might be due to invalid IL or missing references) //IL_3420: Unknown result type (might be due to invalid IL or missing references) //IL_3461: Unknown result type (might be due to invalid IL or missing references) //IL_3475: Unknown result type (might be due to invalid IL or missing references) //IL_3489: Unknown result type (might be due to invalid IL or missing references) //IL_348e: Unknown result type (might be due to invalid IL or missing references) //IL_3493: Unknown result type (might be due to invalid IL or missing references) //IL_3498: Unknown result type (might be due to invalid IL or missing references) //IL_34d9: Unknown result type (might be due to invalid IL or missing references) //IL_34ed: Unknown result type (might be due to invalid IL or missing references) //IL_3501: Unknown result type (might be due to invalid IL or missing references) //IL_3506: Unknown result type (might be due to invalid IL or missing references) //IL_350b: Unknown result type (might be due to invalid IL or missing references) //IL_3510: Unknown result type (might be due to invalid IL or missing references) //IL_3551: Unknown result type (might be due to invalid IL or missing references) //IL_3565: Unknown result type (might be due to invalid IL or missing references) //IL_3579: Unknown result type (might be due to invalid IL or missing references) //IL_357e: Unknown result type (might be due to invalid IL or missing references) //IL_3583: Unknown result type (might be due to invalid IL or missing references) //IL_3588: Unknown result type (might be due to invalid IL or missing references) //IL_35c9: Unknown result type (might be due to invalid IL or missing references) //IL_35dd: Unknown result type (might be due to invalid IL or missing references) //IL_35f1: Unknown result type (might be due to invalid IL or missing references) //IL_35f6: Unknown result type (might be due to invalid IL or missing references) //IL_35fb: Unknown result type (might be due to invalid IL or missing references) //IL_3600: Unknown result type (might be due to invalid IL or missing references) //IL_3641: Unknown result type (might be due to invalid IL or missing references) //IL_3655: Unknown result type (might be due to invalid IL or missing references) //IL_3669: Unknown result type (might be due to invalid IL or missing references) //IL_366e: Unknown result type (might be due to invalid IL or missing references) //IL_3673: Unknown result type (might be due to invalid IL or missing references) //IL_3678: Unknown result type (might be due to invalid IL or missing references) //IL_36b9: Unknown result type (might be due to invalid IL or missing references) //IL_36cd: Unknown result type (might be due to invalid IL or missing references) //IL_36e1: Unknown result type (might be due to invalid IL or missing references) //IL_36e6: Unknown result type (might be due to invalid IL or missing references) //IL_36eb: Unknown result type (might be due to invalid IL or missing references) //IL_36f0: Unknown result type (might be due to invalid IL or missing references) //IL_3731: Unknown result type (might be due to invalid IL or missing references) //IL_3745: Unknown result type (might be due to invalid IL or missing references) //IL_3759: Unknown result type (might be due to invalid IL or missing references) //IL_375e: Unknown result type (might be due to invalid IL or missing references) //IL_3763: Unknown result type (might be due to invalid IL or missing references) //IL_3768: Unknown result type (might be due to invalid IL or missing references) //IL_37a9: Unknown result type (might be due to invalid IL or missing references) //IL_37bd: Unknown result type (might be due to invalid IL or missing references) //IL_37d1: Unknown result type (might be due to invalid IL or missing references) //IL_37d6: Unknown result type (might be due to invalid IL or missing references) //IL_37db: Unknown result type (might be due to invalid IL or missing references) //IL_37e0: Unknown result type (might be due to invalid IL or missing references) //IL_3821: Unknown result type (might be due to invalid IL or missing references) //IL_3835: Unknown result type (might be due to invalid IL or missing references) //IL_3849: Unknown result type (might be due to invalid IL or missing references) //IL_384e: Unknown result type (might be due to invalid IL or missing references) //IL_3853: Unknown result type (might be due to invalid IL or missing references) //IL_3858: Unknown result type (might be due to invalid IL or missing references) //IL_3899: Unknown result type (might be due to invalid IL or missing references) //IL_38ad: Unknown result type (might be due to invalid IL or missing references) //IL_38c1: Unknown result type (might be due to invalid IL or missing references) //IL_38c6: Unknown result type (might be due to invalid IL or missing references) //IL_38cb: Unknown result type (might be due to invalid IL or missing references) //IL_38d0: Unknown result type (might be due to invalid IL or missing references) //IL_3911: Unknown result type (might be due to invalid IL or missing references) //IL_3925: Unknown result type (might be due to invalid IL or missing references) //IL_3939: Unknown result type (might be due to invalid IL or missing references) //IL_393e: Unknown result type (might be due to invalid IL or missing references) //IL_3943: Unknown result type (might be due to invalid IL or missing references) //IL_3948: Unknown result type (might be due to invalid IL or missing references) //IL_3989: Unknown result type (might be due to invalid IL or missing references) //IL_399d: Unknown result type (might be due to invalid IL or missing references) //IL_39b1: Unknown result type (might be due to invalid IL or missing references) //IL_39b6: Unknown result type (might be due to invalid IL or missing references) //IL_39bb: Unknown result type (might be due to invalid IL or missing references) //IL_39c0: Unknown result type (might be due to invalid IL or missing references) //IL_3a01: Unknown result type (might be due to invalid IL or missing references) //IL_3a15: Unknown result type (might be due to invalid IL or missing references) //IL_3a29: Unknown result type (might be due to invalid IL or missing references) //IL_3a2e: Unknown result type (might be due to invalid IL or missing references) //IL_3a33: Unknown result type (might be due to invalid IL or missing references) //IL_3a38: Unknown result type (might be due to invalid IL or missing references) //IL_3a79: Unknown result type (might be due to invalid IL or missing references) //IL_3a8d: Unknown result type (might be due to invalid IL or missing references) //IL_3aa1: Unknown result type (might be due to invalid IL or missing references) //IL_3aa6: Unknown result type (might be due to invalid IL or missing references) //IL_3aab: Unknown result type (might be due to invalid IL or missing references) //IL_3ab0: Unknown result type (might be due to invalid IL or missing references) //IL_3af1: Unknown result type (might be due to invalid IL or missing references) //IL_3b05: Unknown result type (might be due to invalid IL or missing references) //IL_3b19: Unknown result type (might be due to invalid IL or missing references) //IL_3b1e: Unknown result type (might be due to invalid IL or missing references) //IL_3b23: Unknown result type (might be due to invalid IL or missing references) //IL_3b28: Unknown result type (might be due to invalid IL or missing references) //IL_3b69: Unknown result type (might be due to invalid IL or missing references) //IL_3b7d: Unknown result type (might be due to invalid IL or missing references) //IL_3b91: Unknown result type (might be due to invalid IL or missing references) //IL_3b96: Unknown result type (might be due to invalid IL or missing references) //IL_3b9b: Unknown result type (might be due to invalid IL or missing references) //IL_3ba3: Unknown result type (might be due to invalid IL or missing references) //IL_3ba8: Unknown result type (might be due to invalid IL or missing references) //IL_3bad: Unknown result type (might be due to invalid IL or missing references) //IL_3bee: Unknown result type (might be due to invalid IL or missing references) //IL_3c02: Unknown result type (might be due to invalid IL or missing references) //IL_3c16: Unknown result type (might be due to invalid IL or missing references) //IL_3c1b: Unknown result type (might be due to invalid IL or missing references) //IL_3c20: Unknown result type (might be due to invalid IL or missing references) //IL_3c25: Unknown result type (might be due to invalid IL or missing references) //IL_3c66: Unknown result type (might be due to invalid IL or missing references) //IL_3c7a: Unknown result type (might be due to invalid IL or missing references) //IL_3c8e: Unknown result type (might be due to invalid IL or missing references) //IL_3c93: Unknown result type (might be due to invalid IL or missing references) //IL_3c98: Unknown result type (might be due to invalid IL or missing references) //IL_3c9d: 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_3cf2: Unknown result type (might be due to invalid IL or missing references) //IL_3d06: Unknown result type (might be due to invalid IL or missing references) //IL_3d0b: Unknown result type (might be due to invalid IL or missing references) //IL_3d10: Unknown result type (might be due to invalid IL or missing references) //IL_3d15: Unknown result type (might be due to invalid IL or missing references) //IL_3d56: Unknown result type (might be due to invalid IL or missing references) //IL_3d6a: Unknown result type (might be due to invalid IL or missing references) //IL_3d7e: Unknown result type (might be due to invalid IL or missing references) //IL_3d83: Unknown result type (might be due to invalid IL or missing references) //IL_3d88: Unknown result type (might be due to invalid IL or missing references) //IL_3d8d: Unknown result type (might be due to invalid IL or missing references) //IL_3dce: Unknown result type (might be due to invalid IL or missing references) //IL_3de2: Unknown result type (might be due to invalid IL or missing references) //IL_3df6: Unknown result type (might be due to invalid IL or missing references) //IL_3dfb: Unknown result type (might be due to invalid IL or missing references) //IL_3e00: Unknown result type (might be due to invalid IL or missing references) //IL_3e05: Unknown result type (might be due to invalid IL or missing references) //IL_3e46: Unknown result type (might be due to invalid IL or missing references) //IL_3e5a: Unknown result type (might be due to invalid IL or missing references) //IL_3e6e: Unknown result type (might be due to invalid IL or missing references) //IL_3e73: Unknown result type (might be due to invalid IL or missing references) //IL_3e78: Unknown result type (might be due to invalid IL or missing references) //IL_3e7d: Unknown result type (might be due to invalid IL or missing references) //IL_3ebe: Unknown result type (might be due to invalid IL or missing references) //IL_3ed2: Unknown result type (might be due to invalid IL or missing references) //IL_3ee6: Unknown result type (might be due to invalid IL or missing references) //IL_3eeb: Unknown result type (might be due to invalid IL or missing references) //IL_3ef0: Unknown result type (might be due to invalid IL or missing references) //IL_3ef5: Unknown result type (might be due to invalid IL or missing references) //IL_3f36: Unknown result type (might be due to invalid IL or missing references) //IL_3f4a: Unknown result type (might be due to invalid IL or missing references) //IL_3f5e: Unknown result type (might be due to invalid IL or missing references) //IL_3f63: Unknown result type (might be due to invalid IL or missing references) //IL_3f68: Unknown result type (might be due to invalid IL or missing references) //IL_3f6d: Unknown result type (might be due to invalid IL or missing references) itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AlienHead"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAlienHead"), "Pelvis", new Vector3(-0.14171f, -0.01943f, 0.05641f), new Vector3(4.1436f, 142.3923f, 192.1287f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ArmorPlate"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRepulsionArmorPlate"), "LowerArmR", new Vector3(0.07217f, 0.15416f, 0.02874f), new Vector3(90f, 209.4232f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ArmorReductionOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarhammer"), "Pelvis", new Vector3(0.16345f, -0.08755f, 0.15251f), new Vector3(90f, 32.84614f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AttackSpeedAndMoveSpeed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCoffee"), "Pelvis", new Vector3(-0.2287f, 5E-05f, -0.0272f), new Vector3(-1E-05f, 180f, 180f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AttackSpeedOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWolfPelt"), "Head", new Vector3(0f, 0.12188f, 0.11098f), new Vector3(0f, 0f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AutoCastEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFossil"), "Chest", new Vector3(0.12475f, 0.08006f, 0.16313f), new Vector3(0.95692f, 119.5537f, 8.86006f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Bandolier"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBandolier"), "UpperArmL", new Vector3(0f, 0.2311f, 0.00155f), new Vector3(90f, 270f, 0f), new Vector3(0.27f, 0.27f, 0.27f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrierOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrooch"), "Chest", new Vector3(-0.09153f, 0.07617f, 0.14477f), new Vector3(307.3344f, 262.4988f, 253.771f), new Vector3(0.6f, 0.6f, 0.6f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrierOnOverHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAegis"), "LowerArmL", new Vector3(-0.13987f, -0.30531f, -0.06628f), new Vector3(282.8641f, 41.65464f, 255.2802f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Bear"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBear"), "Chest", new Vector3(0f, 0.13054f, 0.18713f), new Vector3(6.42078f, 0f, 0f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BearVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBearVoid"), "Chest", new Vector3(0f, 0.13054f, 0.18713f), new Vector3(6.42078f, 0f, 0f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BeetleGland"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBeetleGland"), "ThighL", new Vector3(-0.10536f, 0.19706f, -1E-05f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Behemoth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBehemoth"), "Chest", new Vector3(-0.21211f, 0.30613f, -0.2091f), new Vector3(11.05646f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTriTip"), "Pelvis", new Vector3(0.20959f, -0.07195f, -0.10003f), new Vector3(322.0855f, 242.4531f, 180f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHitAndExplode"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBleedOnHitAndExplode"), "ThighR", new Vector3(0.14225f, -2E-05f, 0.0814f), new Vector3(31.66996f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHitVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTriTipVoid"), "HandR", new Vector3(0.02101f, 0.05549f, -0.05571f), new Vector3(270f, 345.3987f, 0f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BonusGoldPackOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTome"), "Pelvis", new Vector3(0.24617f, 0.11252f, -0.07347f), new Vector3(5.81531f, 116.2075f, 0f), new Vector3(0.075f, 0.075f, 0.075f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAPRound"), "GunL", new Vector3(-0.04594f, 0.15329f, -0.08882f), new Vector3(0f, 0f, 90f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BounceNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHook"), "LowerArmL", new Vector3(-0.11435f, 0.15668f, -0.00553f), new Vector3(353.6647f, 185.0547f, 178.3664f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ChainLightning"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayUkulele"), "Chest", new Vector3(0f, 0.00792f, -0.16953f), new Vector3(16.63155f, 180f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ChainLightningVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayUkuleleVoid"), "Chest", new Vector3(0f, 0.00792f, -0.16953f), new Vector3(16.63155f, 180f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritDamage"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLaserSight"), "GunR", new Vector3(0.01965f, 0.12726f, -0.1316f), new Vector3(0f, 90f, 270f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritGlasses"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlasses"), "Head", new Vector3(0f, 0.08009f, 0.17316f), new Vector3(354.9501f, 0f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritGlassesVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlassesVoid"), "Head", new Vector3(0f, 0.08009f, 0.17316f), new Vector3(354.9501f, 0f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Crowbar"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCrowbar"), "Pelvis", new Vector3(0.19026f, -0.00157f, 0.11355f), new Vector3(18.56944f, 296.1121f, 180f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Dagger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDagger"), "Chest", new Vector3(-0.04674f, 0.27471f, -0.31614f), new Vector3(284.0471f, 45.62282f, 133.5081f), new Vector3(0.8f, 0.8f, 0.8f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DeathMark"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDeathMark"), "UpperArmL", new Vector3(-0.07665f, -0.02692f, -0.09585f), new Vector3(32.59687f, 207.9747f, 140.7682f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ElementalRingVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVoidRing"), "LowerArmL", new Vector3(-1E-05f, 0.1411f, 0f), new Vector3(90f, 0f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EnergizedOnEquipmentUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarHorn"), "Pelvis", new Vector3(0.13576f, -0.06227f, 0.05434f), new Vector3(9.81415f, 13.43985f, 299.9043f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EquipmentMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBattery"), "Pelvis", new Vector3(0f, -0.08488f, 0.10961f), new Vector3(0f, 90f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EquipmentMagazineVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFuelCellVoid"), "Pelvis", new Vector3(0f, -0.08488f, 0.10961f), new Vector3(0f, 90f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExecuteLowHealthElite"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGuillotine"), "GunL", new Vector3(-0.00174f, 0.15431f, -0.31907f), new Vector3(18.62938f, 183.438f, 264.2258f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExplodeOnDeath"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWilloWisp"), "Pelvis", new Vector3(-0.17651f, -3E-05f, 0.15634f), new Vector3(336.4932f, 180f, 180f), new Vector3(0.075f, 0.075f, 0.075f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExplodeOnDeathVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWillowWispVoid"), "Pelvis", new Vector3(-0.17651f, -3E-05f, 0.15634f), new Vector3(336.4932f, 180f, 180f), new Vector3(0.075f, 0.075f, 0.075f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Feather"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFeather"), "Head", new Vector3(0f, 0.0578f, -0.10595f), new Vector3(279.7181f, 0f, 0f), new Vector3(0.025f, 0.025f, 0.025f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireballsOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFireballsOnHit"), "Head", new Vector3(-0.14486f, 0.25261f, -0.16272f), new Vector3(332.0983f, 210.2406f, 334.7576f), new Vector3(0.065f, 0.065f, 0.065f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireRing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFireRing"), "LowerArmL", new Vector3(-1E-05f, 0.1411f, 0f), new Vector3(90f, 0f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Firework"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFirework"), "Pelvis", new Vector3(0.22449f, -0.04647f, 0.11301f), new Vector3(65.04882f, 139.1895f, 82.52743f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FlatHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySteakCurved"), "Head", new Vector3(0f, 0.07622f, 0.17562f), new Vector3(286.1554f, 180f, 155.1997f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FocusConvergence"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFocusedConvergence"), "Root", new Vector3(0f, 0.94234f, -0.93766f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FragileDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDelicateWatch"), "LowerArmR", new Vector3(0.02137f, 0.1949f, 0f), new Vector3(90f, 90f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FreeChest"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShippingRequestForm"), "Pelvis", new Vector3(0.18113f, -0.00265f, 0.12588f), new Vector3(287.7112f, 305.2608f, 270f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GhostOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMask"), "Chest", new Vector3(0.24529f, 0.08601f, -0.20966f), new Vector3(0.65172f, 90.16528f, 6.45411f), new Vector3(0.7f, 0.7f, 0.7f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBoneCrown"), "Head", new Vector3(0f, 0.12377f, -0.03088f), new Vector3(302.9495f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldOnHurt"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRollOfPennies"), "Pelvis", new Vector3(0.13828f, -0.02651f, 0.14412f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealingPotion"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHealingPotion"), "Pelvis", new Vector3(-0.19888f, -0.05699f, -1E-05f), new Vector3(-1E-05f, 180f, 162.3634f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScythe"), "Pelvis", new Vector3(0.16962f, -0.04777f, 0.11641f), new Vector3(90f, 37.87189f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealWhileSafe"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySnail"), "HandL", new Vector3(-0.02856f, 1E-05f, -0.0177f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Hoof"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHoof"), "CalfR", new Vector3(0f, 0.15428f, -0.05221f), new Vector3(70.36934f, 0f, 0f), new Vector3(0.05f, 0.05f, 0.05f)), ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)8))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IceRing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayIceRing"), "LowerArmL", new Vector3(-2E-05f, 0.24577f, 0f), new Vector3(90f, 0f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Icicle"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFrostRelic"), "Chest", new Vector3(0.62521f, 0.31365f, -0.43838f), new Vector3(270.7646f, -0.00128f, 310.6224f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IgniteOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGasoline"), "Muzzle", new Vector3(-0.01185f, -0.36462f, -0.99135f), new Vector3(336.2224f, 0f, 180f), new Vector3(0.75f, 0.75f, 0.75f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IncreaseHealing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAntler"), "Head", new Vector3(-0.1f, 0.15f, 0f), new Vector3(0f, 270f, 0f), new Vector3(0.6f, 0.6f, 0.6f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAntler"), "Head", new Vector3(0.1f, 0.15f, 0f), new Vector3(0f, 90f, 0f), new Vector3(0.6f, 0.6f, 0.6f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Infusion"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayInfusion"), "Chest", new Vector3(-0.1508f, 0.08293f, 0.13163f), new Vector3(0f, 308.7207f, 333.9637f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["JumpBoost"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWaxBird"), "Head", new Vector3(0f, 0f, 0f), new Vector3(331.7836f, 0f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["KillEliteFrenzy"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrainstalk"), "Head", new Vector3(0f, 0.14749f, -1E-05f), new Vector3(318.3282f, 0f, 23.10016f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Knurl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKnurl"), "Muzzle", new Vector3(0.00057f, 0.01422f, -1.1628f), new Vector3(0f, 0f, 0f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LaserTurbine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLaserTurbine"), "Muzzle", new Vector3(0f, -0.23113f, -0.67984f), new Vector3(90f, 0f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LightningStrikeOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayChargedPerforator"), "Head", new Vector3(0.09219f, 0.22078f, -0.11686f), new Vector3(314.7368f, 0f, 169.6854f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarDagger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarDagger"), "Pelvis", new Vector3(0.21635f, -0.10314f, 0.06861f), new Vector3(287.6115f, 89.99998f, 309.7596f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarPrimaryReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdEye"), "Muzzle", new Vector3(0.25815f, -0.08905f, -0.87338f), new Vector3(0f, 0f, 90f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarSecondaryReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdClaw"), "LowerArmL", new Vector3(0f, 0f, 0f), new Vector3(357.6886f, 238.4376f, 175.9198f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarSpecialReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdHeart"), "Chest", new Vector3(-0.12501f, 0.14339f, 0.1724f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarUtilityReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdFoot"), "ThighL", new Vector3(-0.08354f, 0.13113f, 0.02494f), new Vector3(0f, 84.8299f, 324.7619f), new Vector3(0.75f, 0.75f, 0.75f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Medkit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMedkit"), "Muzzle", new Vector3(-0.15269f, -0.13413f, -0.8174f), new Vector3(270f, 270f, 0f), new Vector3(0.75f, 0.75f, 0.75f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Missile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileLauncher"), "HandR", new Vector3(-0.29487f, -0.08857f, -0.29376f), new Vector3(9.60957f, 160.7295f, 261.3232f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MissileVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileLauncherVoid"), "HandR", new Vector3(-0.29487f, -0.08857f, -0.29376f), new Vector3(9.60957f, 160.7295f, 261.3232f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MoreMissile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayICBM"), "GunR", new Vector3(-0.00707f, 0.37915f, 0.09777f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MoveSpeedOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGrappleHook"), "Muzzle", new Vector3(0f, -0.02516f, -0.35644f), new Vector3(292.1078f, 89.99996f, 270.0001f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Mushroom"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMushroom"), "Muzzle", new Vector3(0f, 0.04336f, -1.18973f), new Vector3(290.1331f, 180f, 180f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MushroomVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMushroomVoid"), "Muzzle", new Vector3(0f, 0.04336f, -1.18973f), new Vector3(290.1331f, 180f, 180f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NearbyDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDiamond"), "Muzzle", new Vector3(0.25217f, -0.09576f, -0.8768f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NovaOnLowHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayJellyGuts"), "HandL", new Vector3(0.03324f, -0.01458f, -0.07482f), new Vector3(352.5879f, 269.5538f, 30.13444f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["OutOfCombatArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayOddlyShapedOpal"), "Chest", new Vector3(0.13739f, 0.21313f, 0.13242f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ParentEgg"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayParentEgg"), "Chest", new Vector3(-0.19889f, 0.40627f, -0.32673f), new Vector3(59.30617f, 20.56151f, 357.9481f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PermanentDebuffOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScorpion"), "Pelvis", new Vector3(0f, 0f, 0f), new Vector3(-1E-05f, 180f, 180f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PersonalShield"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldGenerator"), "ThighL", new Vector3(0f, 0.23643f, -0.06101f), new Vector3(60f, 180f, 180f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Phasing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStealthkit"), "Chest", new Vector3(-0.18265f, 0.26151f, -0.36851f), new Vector3(71.08897f, 195.637f, 180f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PrimarySkillShuriken"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShuriken"), "HandL", new Vector3(-0.02145f, 0.05095f, -0.04379f), new Vector3(90f, 0f, 0f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomDamageZone"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRandomDamageZone"), "Chest", new Vector3(1E-05f, 0.06566f, -0.09133f), new Vector3(0f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RegeneratingScrap"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRegeneratingScrap"), "ThighL", new Vector3(-0.10349f, -0.02032f, -0.02738f), new Vector3(12.67568f, 105.6867f, 190.2213f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SecondarySkillMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDoubleMag"), "GunL", new Vector3(0.03626f, 0.25043f, 0.26051f), new Vector3(286.2324f, 180f, 180f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Seed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySeed"), "LowerArmL", new Vector3(-0.05619f, 0.07175f, 0.01755f), new Vector3(323.4312f, 249.3649f, -1E-05f), new Vector3(0.025f, 0.025f, 0.025f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShockNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTeslaCoil"), "Chest", new Vector3(-0.13793f, 0.1943f, -0.28491f), new Vector3(285.1101f, 0f, 10.00615f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SiphonOnLowHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySiphonOnLowHealth"), "CalfL", new Vector3(0f, 0.09453f, -0.0653f), new Vector3(-1E-05f, 180f, 180f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SlowOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBauble"), "Chest", new Vector3(0.03091f, -1E-05f, 0f), new Vector3(0f, 338.3918f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SlowOnHitVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBaubleVoid"), "Chest", new Vector3(0.03091f, -1E-05f, 0f), new Vector3(0f, 338.3918f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBuckler"), "Chest", new Vector3(0.25978f, 0.31751f, -0.1879f), new Vector3(341.1178f, 100.978f, 19.03026f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySoda"), "HandR", new Vector3(0.04132f, -0.01992f, -0.07778f), new Vector3(0f, 82.02044f, 0f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintOutOfCombat"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWhip"), "Pelvis", new Vector3(-0.26018f, 0.00331f, 0.00927f), new Vector3(-1E-05f, 180f, 154.7494f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintWisp"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrokenMask"), "ThighR", new Vector3(-1E-05f, 0.24895f, -0.03441f), new Vector3(317.3214f, 180f, 180f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Squid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySquidTurret"), "CalfR", new Vector3(0.13508f, 0.15426f, -0.04073f), new Vector3(75.20986f, 0f, 270f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StickyBomb"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStickyBomb"), "GunL", new Vector3(0.051f, 0.14163f, 0.16179f), new Vector3(18.39093f, 337.0306f, 327.8457f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StrengthenBurn"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGasTank"), "Chest", new Vector3(-0.18644f, 0.31352f, -0.27416f), new Vector3(40.70905f, 13.07178f, 1.2476f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StunChanceOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStunGrenade"), "Pelvis", new Vector3(-0.18795f, -1E-05f, -0.07074f), new Vector3(70.49339f, 156.6409f, 89.99998f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Syringe"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySyringeCluster"), "UpperArmR", new Vector3(0.01845f, 0.03001f, 3E-05f), new Vector3(0f, 0f, 270f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Talisman"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTalisman"), "Chest", new Vector3(0.04948f, 4E-05f, -0.90166f), new Vector3(0f, 329.0994f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Thorns"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRazorwireLeft"), "UpperArmL", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TitanGoldDuringTP"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGoldHeart"), "Head", new Vector3(-0.23181f, 0.19679f, -0.05975f), new Vector3(10.11879f, 316.8379f, 317.6933f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TPHealingNova"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlowFlower"), "Head", new Vector3(0.12438f, 0.08503f, -0.15264f), new Vector3(10.61431f, 132.4948f, 188.6654f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TreasureCache"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKey"), "Pelvis", new Vector3(0.20025f, -0.06225f, 0.12587f), new Vector3(13.68541f, 321.1866f, 279.4453f), new Vector3(0.6f, 0.6f, 0.6f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TreasureCacheVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKeyVoid"), "Pelvis", new Vector3(0.20025f, -0.06225f, 0.12587f), new Vector3(13.68541f, 321.1866f, 279.4453f), new Vector3(0.6f, 0.6f, 0.6f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["UtilitySkillMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAfterburnerShoulderRing"), "UpperArmR", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 101.8453f), new Vector3(0.25f, 0.25f, 0.25f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAfterburnerShoulderRing"), "UpperArmL", new Vector3(0f, 0f, 0f), new Vector3(5.87933f, 209.4046f, 79.69863f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["VoidMegaCrabItem"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMegaCrabItem"), "CalfL", new Vector3(0f, 0f, 0f), new Vector3(37.94162f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["WarCryOnMultiKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPauldron"), "UpperArmL", new Vector3(0.03709f, 0.22272f, 0.04961f), new Vector3(38.78278f, 10.44462f, 353.4107f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["WardOnLevel"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarbanner"), "GunR", new Vector3(-2E-05f, 0.23067f, 0.15244f), new Vector3(270f, 90.00001f, 0f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BFG"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBFG"), "Chest", new Vector3(0.08595f, 0.21269f, -0.14902f), new Vector3(356.9302f, 341.8869f, 322.5006f), new Vector3(0.4f, 0.4f, 0.4f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Blackhole"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravCube"), "Chest", new Vector3(0.60421f, 0.28603f, -0.57657f), new Vector3(0f, 0f, 0f), new Vector3(0.7f, 0.7f, 0.7f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossHunter"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTricornGhost"), "Head", new Vector3(0.02756f, 0.33536f, -0.04116f), new Vector3(26.22608f, 0f, 0f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBlunderbuss"), "Chest", new Vector3(0.9303f, 0.75718f, -0.2324f), new Vector3(90f, 315.9429f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossHunterConsumed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTricornUsed"), "Head", new Vector3(0.02756f, 0.33536f, -0.04116f), new Vector3(26.22608f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BurnNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPotion"), "HandL", new Vector3(0.02877f, -0.03763f, -0.10299f), new Vector3(0f, 0f, 29.77753f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Cleanse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWaterPack"), "Chest", new Vector3(1E-05f, 0.08202f, -0.1285f), new Vector3(0f, 180f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CommandMissile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileRack"), "Chest", new Vector3(0f, 0.22281f, -0.24387f), new Vector3(84.18402f, 180f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritOnUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayNeuralImplant"), "Head", new Vector3(-1E-05f, 0.31177f, 0.69472f), new Vector3(0f, 0f, 0f), new Vector3(0.25f, 0.25f, 0.25f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DeathProjectile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDeathProjectile"), "HandL", new Vector3(-0.08925f, -0.02373f, -0.07659f), new Vector3(70.75671f, 282.3277f, 11.65827f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DroneBackup"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRadio"), "Pelvis", new Vector3(0.19548f, -0.04333f, -0.05619f), new Vector3(0f, 83.19177f, 180f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireBallDash"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEgg"), "Pelvis", new Vector3(0.15962f, -2E-05f, -0.00138f), new Vector3(90f, 0f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Fruit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFruit"), "Chest", new Vector3(-0.06597f, -0.09094f, -0.13058f), new Vector3(0f, 49.20116f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GainArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayElephantFigure"), "Head", new Vector3(0f, 0.24203f, -0.10288f), new Vector3(323.0464f, 0f, 0f), new Vector3(0.6f, 0.6f, 0.6f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Gateway"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVase"), "Chest", new Vector3(0f, 0.18661f, -0.24945f), new Vector3(0f, 0f, 0f), new Vector3(0.3f, 0.3f, 0.3f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldGat"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGoldGat"), "Chest", new Vector3(-0.2049f, 0.69364f, -0.29167f), new Vector3(348.3431f, 45.79039f, 356.165f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GummyClone"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGummyClone"), "Head", new Vector3(-0.04215f, 0.11151f, -0.1261f), new Vector3(0f, 0f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Jetpack"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBugWings"), "Chest", new Vector3(0f, 1E-05f, -0.0821f), new Vector3(15.77955f, 0f, 0f), new Vector3(0.15f, 0.15f, 0.15f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LifestealOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLifestealOnHit"), "LowerArmL", new Vector3(-0.00444f, 0.00267f, 0.11214f), new Vector3(336.7938f, 180f, 180f), new Vector3(0.1f, 0.1f, 0.1f)))); 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["Molotov"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMolotov"), "Pelvis", new Vector3(-0.1736f, -1E-05f, 0f), new Vector3(-1E-05f, 180f, 180f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MultiShopCard"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayExecutiveCard"), "Pelvis", new Vector3(0.18102f, -0.03633f, 0.13942f), new Vector3(0.42736f, 306.6231f, 255.2241f), new Vector3(0.7f, 0.7f, 0.7f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["QuestVolatileBattery"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBatteryArray"), "Muzzle", new Vector3(0.07208f, -0.07546f, -1.13104f), new Vector3(53.5405f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Recycle"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRecycler"), "ThighR", new Vector3(0.14144f, 0.12928f, 0.00333f), new Vector3(318.6689f, 180f, 180f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Saw"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySawmerangFollower"), "Root", new Vector3(-0.54368f, 0.8338f, -1.15286f), new Vector3(90f, 0f, 0f), new Vector3(0.1f, 0.1f, 0.1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Scanner"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScanner"), "Chest", new Vector3(-0.04659f, 0.22645f, -0.16198f), new Vector3(334.027f, 182.4031f, 178.9471f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TeamWarCry"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTeamWarCry"), "Chest", new Vector3(0f, 0.20426f, -0.20374f), new Vector3(0f, 180f, 0f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["VendingMachine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVendingMachine"), "Pelvis", new Vector3(0.1803f, -0.04813f, -0.08484f), new Vector3(0f, 0f, 180f), new Vector3(0.2f, 0.2f, 0.2f)))); } } public class DrifterItems { public static int fragmentExchangeRate = 4; public static int vendorCost = 3; public static ItemDef chipFragmentItemDef; public static ItemDef chipItemDef; public static ItemDef chargeSlashItemhDef; public static ItemDef dashSlashItemDef; public static ItemDef reflectItemDef; public static ItemDef chargeShotItemDef; public static ItemDef explodeOnKillItemDef; public static ItemDef runAndGunItemDef; public static ItemDef flashStepItemDef; public static ItemDef chainDashItemDef; public static ItemDef counterItemDef; public static ItemDef skateAfterItemDef; public static ItemDef magnumItemDef; public static ItemDef blunderbusItemDef; public static ItemDef railgunItemDef; public static ItemDef sycomItemDef; public static ItemTierDef chipTier; public static ItemTierDef upgradeTier; private static string prefix = "VCR_DRIFTER_"; private static AssetBundle bundle; public static void Init(AssetBundle assetBundle) { bundle = assetBundle; CreateItemTiers(); CreateItems(); } private static void CreateItems() { //IL_0d71: Unknown result type (might be due to invalid IL or missing references) //IL_0d77: Expected O, but got Unknown //IL_0d7d: Unknown result type (might be due to invalid IL or missing references) //IL_0d83: Expected O, but got Unknown //IL_0d90: Unknown result type (might be due to invalid IL or missing references) //IL_0d96: Expected O, but got Unknown //IL_0d9c: Unknown result type (might be due to invalid IL or missing references) //IL_0da2: Expected O, but got Unknown //IL_0db6: Unknown result type (might be due to invalid IL or missing references) //IL_0dbd: Expected O, but got Unknown //IL_0dc3: Unknown result type (might be due to invalid IL or missing references) //IL_0dca: Expected O, but got Unknown //IL_0dd0: Unknown result type (might be due to invalid IL or missing references) //IL_0dd7: Expected O, but got Unknown //IL_0ddd: Unknown result type (might be due to invalid IL or missing references) //IL_0de4: Expected O, but got Unknown //IL_0dea: Unknown result type (might be due to invalid IL or missing references) //IL_0df1: Expected O, but got Unknown //IL_0df7: Unknown result type (might be due to invalid IL or missing references) //IL_0dfe: Expected O, but got Unknown //IL_0e04: Unknown result type (might be due to invalid IL or missing references) //IL_0e0b: Expected O, but got Unknown //IL_0e11: Unknown result type (might be due to invalid IL or missing references) //IL_0e18: Expected O, but got Unknown //IL_0e1e: Unknown result type (might be due to invalid IL or missing references) //IL_0e25: Expected O, but got Unknown //IL_0e73: Unknown result type (might be due to invalid IL or missing references) //IL_0e7a: Expected O, but got Unknown //IL_0e80: Unknown result type (might be due to invalid IL or missing references) //IL_0e87: Expected O, but got Unknown //IL_0e8d: Unknown result type (might be due to invalid IL or missing references) //IL_0e94: Expected O, but got Unknown chipFragmentItemDef = ScriptableObject.CreateInstance(); ((Object)chipFragmentItemDef).name = "DrifterChipFragment"; chipFragmentItemDef.nameToken = prefix + "CHIP_FRAGMENT_NAME"; chipFragmentItemDef.descriptionToken = prefix + "CHIP_FRAGMENT_DESCRIPTION"; chipFragmentItemDef.pickupToken = prefix + "CHIP_FRAGMENT_DESCRIPTION"; chipFragmentItemDef.loreToken = prefix + "CHIP_FRAGMENT_LORE"; chipFragmentItemDef.pickupIconSprite = bundle.LoadAsset("texGearbitIcon"); chipFragmentItemDef.pickupModelPrefab = bundle.LoadAsset("DrifterChipBitPickup"); chipFragmentItemDef._itemTierDef = chipTier; chipFragmentItemDef.canRemove = false; ItemDef obj = chipFragmentItemDef; ItemTag[] array = new ItemTag[7]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; chipItemDef = ScriptableObject.CreateInstance(); ((Object)chipItemDef).name = "DrifterChip"; chipItemDef.nameToken = prefix + "CHIP_WHOLE_NAME"; chipItemDef.descriptionToken = prefix + "CHIP_WHOLE_DESCRIPTION"; chipItemDef.pickupToken = prefix + "CHIP_WHOLE_DESCRIPTION"; chipItemDef.loreToken = prefix + "CHIP_WHOLE_LORE"; chipItemDef.pickupIconSprite = bundle.LoadAsset("texDataChipIcon"); chipItemDef.pickupModelPrefab = bundle.LoadAsset("DrifterDataChipPickup"); chipItemDef._itemTierDef = chipTier; chipItemDef.canRemove = false; ItemDef obj2 = chipItemDef; ItemTag[] array2 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array2, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj2.tags = (ItemTag[])(object)array2; sycomItemDef = ScriptableObject.CreateInstance(); ((Object)sycomItemDef).name = "DrifterSycom"; sycomItemDef.nameToken = prefix + "SYCOM_ITEM_NAME"; sycomItemDef.descriptionToken = prefix + "SYCOM_ITEM_DESCRIPTION"; sycomItemDef.pickupToken = prefix + "SYCOM_ITEM_DESCRIPTION"; sycomItemDef.loreToken = prefix + "SYCOM_ITEM_DESCRIPTION"; sycomItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); sycomItemDef.pickupModelPrefab = bundle.LoadAsset("DrifterDataChipPickup"); sycomItemDef._itemTierDef = chipTier; sycomItemDef.canRemove = false; ItemDef obj3 = sycomItemDef; ItemTag[] array3 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array3, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj3.tags = (ItemTag[])(object)array3; chargeSlashItemhDef = ScriptableObject.CreateInstance(); ((Object)chargeSlashItemhDef).name = "DrifterChargeSlash"; chargeSlashItemhDef.nameToken = prefix + "CHARGE_SLASH_NAME"; chargeSlashItemhDef.descriptionToken = prefix + "CHARGE_SLASH_DESCRIPTION"; chargeSlashItemhDef.pickupToken = prefix + "CHARGE_SLASH_DESCRIPTION"; chargeSlashItemhDef.loreToken = prefix + "Erm Slash them all?"; chargeSlashItemhDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); chargeSlashItemhDef.pickupModelPrefab = bundle.LoadAsset("PickupUpgradePrefab"); chargeSlashItemhDef._itemTierDef = upgradeTier; chargeSlashItemhDef.canRemove = false; ItemDef obj4 = chargeSlashItemhDef; ItemTag[] array4 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array4, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj4.tags = (ItemTag[])(object)array4; dashSlashItemDef = ScriptableObject.CreateInstance(); ((Object)dashSlashItemDef).name = "DrifterDashSlash"; dashSlashItemDef.nameToken = prefix + "DASH_SLASH_NAME"; dashSlashItemDef.descriptionToken = prefix + "DASH_SLASH_DESCRIPTION"; dashSlashItemDef.pickupToken = prefix + "DASH_SLASH_DESCRIPTION"; dashSlashItemDef.loreToken = prefix + "Erm Dash them all?"; dashSlashItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); dashSlashItemDef.pickupModelPrefab = bundle.LoadAsset("PickupUpgradePrefab"); dashSlashItemDef._itemTierDef = upgradeTier; dashSlashItemDef.canRemove = false; ItemDef obj5 = dashSlashItemDef; ItemTag[] array5 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array5, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj5.tags = (ItemTag[])(object)array5; reflectItemDef = ScriptableObject.CreateInstance(); ((Object)reflectItemDef).name = "DrifterDeflectSlash"; reflectItemDef.nameToken = prefix + "DEFLECT_SLASH_NAME"; reflectItemDef.descriptionToken = prefix + "DEFLECT_SLASH_DESCRIPTION"; reflectItemDef.pickupToken = prefix + "DEFLECT_SLASH_DESCRIPTION"; reflectItemDef.loreToken = prefix + "Erm Deflect them all?"; reflectItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); reflectItemDef.pickupModelPrefab = bundle.LoadAsset("PickupUpgradePrefab"); reflectItemDef._itemTierDef = upgradeTier; reflectItemDef.canRemove = false; ItemDef obj6 = reflectItemDef; ItemTag[] array6 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array6, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj6.tags = (ItemTag[])(object)array6; chargeShotItemDef = ScriptableObject.CreateInstance(); ((Object)chargeShotItemDef).name = "DrifterChargeShot"; chargeShotItemDef.nameToken = prefix + "CHARGE_SHOT_NAME"; chargeShotItemDef.descriptionToken = prefix + "CHARGE_SHOT_DESCRIPTION"; chargeShotItemDef.pickupToken = prefix + "CHARGE_SHOT_DESCRIPTION"; chargeShotItemDef.loreToken = prefix + "Erm Charge them all?"; chargeShotItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); chargeShotItemDef.pickupModelPrefab = bundle.LoadAsset("PickupUpgradePrefab"); chargeShotItemDef._itemTierDef = upgradeTier; chargeShotItemDef.canRemove = false; ItemDef obj7 = chargeShotItemDef; ItemTag[] array7 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array7, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj7.tags = (ItemTag[])(object)array7; explodeOnKillItemDef = ScriptableObject.CreateInstance(); ((Object)explodeOnKillItemDef).name = "DrifterExplodeShot"; explodeOnKillItemDef.nameToken = prefix + "EXPLODE_SHOT_NAME"; explodeOnKillItemDef.descriptionToken = prefix + "EXPLODE_SHOT_DESCRIPTION"; explodeOnKillItemDef.pickupToken = prefix + "EXPLODE_SHOT_DESCRIPTION"; explodeOnKillItemDef.loreToken = prefix + "Erm explode them all?"; explodeOnKillItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); explodeOnKillItemDef.pickupModelPrefab = bundle.LoadAsset("PickupUpgradePrefab"); explodeOnKillItemDef._itemTierDef = upgradeTier; explodeOnKillItemDef.canRemove = false; ItemDef obj8 = explodeOnKillItemDef; ItemTag[] array8 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array8, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj8.tags = (ItemTag[])(object)array8; runAndGunItemDef = ScriptableObject.CreateInstance(); ((Object)runAndGunItemDef).name = "DrifterRunAndGun"; runAndGunItemDef.nameToken = prefix + "RNG_NAME"; runAndGunItemDef.descriptionToken = prefix + "RNG_DESCRIPTION"; runAndGunItemDef.pickupToken = prefix + "RNG_DESCRIPTION"; runAndGunItemDef.loreToken = prefix + "Erm Skate them all?"; runAndGunItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); runAndGunItemDef.pickupModelPrefab = bundle.LoadAsset("PickupUpgradePrefab"); runAndGunItemDef._itemTierDef = upgradeTier; runAndGunItemDef.canRemove = false; ItemDef obj9 = runAndGunItemDef; ItemTag[] array9 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array9, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj9.tags = (ItemTag[])(object)array9; flashStepItemDef = ScriptableObject.CreateInstance(); ((Object)flashStepItemDef).name = "DrifterFlashStep"; flashStepItemDef.nameToken = prefix + "FLASH_STEP_NAME"; flashStepItemDef.descriptionToken = prefix + "FLASH_STEP_DESCRIPTION"; flashStepItemDef.pickupToken = prefix + "FLASH_STEP_DESCRIPTION"; flashStepItemDef.loreToken = prefix + "Erm Flash them all?"; flashStepItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); flashStepItemDef.pickupModelPrefab = bundle.LoadAsset("PickupUpgradePrefab"); flashStepItemDef._itemTierDef = upgradeTier; flashStepItemDef.canRemove = false; ItemDef obj10 = flashStepItemDef; ItemTag[] array10 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array10, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj10.tags = (ItemTag[])(object)array10; skateAfterItemDef = ScriptableObject.CreateInstance(); ((Object)skateAfterItemDef).name = "DrifterDashSkate"; skateAfterItemDef.nameToken = prefix + "DASH_SKATE_NAME"; skateAfterItemDef.descriptionToken = prefix + "DASH_SKATE_DESCRIPTION"; skateAfterItemDef.pickupToken = prefix + "DASH_SKATE_DESCRIPTION"; skateAfterItemDef.loreToken = prefix + "Erm Skate them all?"; skateAfterItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); skateAfterItemDef.pickupModelPrefab = bundle.LoadAsset("PickupUpgradePrefab"); skateAfterItemDef._itemTierDef = upgradeTier; skateAfterItemDef.canRemove = false; ItemDef obj11 = skateAfterItemDef; ItemTag[] array11 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array11, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj11.tags = (ItemTag[])(object)array11; chainDashItemDef = ScriptableObject.CreateInstance(); ((Object)chainDashItemDef).name = "DrifterChainDash"; chainDashItemDef.nameToken = prefix + "CHAIN_DASH_NAME"; chainDashItemDef.descriptionToken = prefix + "CHAIN_DASH_DESCRIPTION"; chainDashItemDef.pickupToken = prefix + "CHAIN_DASH_DESCRIPTION"; chainDashItemDef.loreToken = prefix + "Erm Chain dash them all?"; chainDashItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); chainDashItemDef.pickupModelPrefab = bundle.LoadAsset("PickupUpgradePrefab"); chainDashItemDef._itemTierDef = upgradeTier; chainDashItemDef.canRemove = false; ItemDef obj12 = chainDashItemDef; ItemTag[] array12 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array12, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj12.tags = (ItemTag[])(object)array12; magnumItemDef = ScriptableObject.CreateInstance(); ((Object)magnumItemDef).name = "DrifterMagnum"; magnumItemDef.nameToken = prefix + "MAGNUM_NAME"; magnumItemDef.descriptionToken = prefix + "MAGNUM_DESCRIPTION"; magnumItemDef.pickupToken = prefix + "MAGNUM_DESCRIPTION"; magnumItemDef.loreToken = prefix + "gun."; magnumItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); magnumItemDef.pickupModelPrefab = bundle.LoadAsset("MagnumPickup"); magnumItemDef._itemTierDef = upgradeTier; magnumItemDef.canRemove = false; ItemDef obj13 = magnumItemDef; ItemTag[] array13 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array13, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj13.tags = (ItemTag[])(object)array13; blunderbusItemDef = ScriptableObject.CreateInstance(); ((Object)blunderbusItemDef).name = "DrifterBlunderbus"; blunderbusItemDef.nameToken = prefix + "BLUNDERBUSS_NAME"; blunderbusItemDef.descriptionToken = prefix + "BLUNDERBUSS_DESCRIPTION"; blunderbusItemDef.pickupToken = prefix + "BLUNDERBUSS_DESCRIPTION"; blunderbusItemDef.loreToken = prefix + "gun."; blunderbusItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); blunderbusItemDef.pickupModelPrefab = bundle.LoadAsset("BlunderbussPickup"); blunderbusItemDef._itemTierDef = upgradeTier; blunderbusItemDef.canRemove = false; ItemDef obj14 = blunderbusItemDef; ItemTag[] array14 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array14, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj14.tags = (ItemTag[])(object)array14; railgunItemDef = ScriptableObject.CreateInstance(); ((Object)railgunItemDef).name = "DrifterRailgun"; railgunItemDef.nameToken = prefix + "RAILGUN_NAME"; railgunItemDef.descriptionToken = prefix + "RAILGUN_DESCRIPTION"; railgunItemDef.pickupToken = prefix + "RAILGUN_DESCRIPTION"; railgunItemDef.loreToken = prefix + "gun."; railgunItemDef.pickupIconSprite = bundle.LoadAsset("texInDevIcon"); railgunItemDef.pickupModelPrefab = bundle.LoadAsset("BlunderbussPickup"); railgunItemDef._itemTierDef = upgradeTier; railgunItemDef.canRemove = false; ItemDef obj15 = railgunItemDef; ItemTag[] array15 = new ItemTag[7]; RuntimeHelpers.InitializeArray(array15, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj15.tags = (ItemTag[])(object)array15; ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty()); CustomItem val2 = new CustomItem(sycomItemDef, val); ItemAPI.Add(val2); CustomItem val3 = new CustomItem(chipItemDef, val); CustomItem val4 = new CustomItem(chipFragmentItemDef, val); ItemAPI.Add(val4); ItemAPI.Add(val3); CustomItem val5 = new CustomItem(chargeSlashItemhDef, val); CustomItem val6 = new CustomItem(dashSlashItemDef, val); CustomItem val7 = new CustomItem(reflectItemDef, val); CustomItem val8 = new CustomItem(chargeShotItemDef, val); CustomItem val9 = new CustomItem(explodeOnKillItemDef, val); CustomItem val10 = new CustomItem(runAndGunItemDef, val); CustomItem val11 = new CustomItem(flashStepItemDef, val); CustomItem val12 = new CustomItem(skateAfterItemDef, val); CustomItem val13 = new CustomItem(chainDashItemDef, val); ItemAPI.Add(val5); ItemAPI.Add(val6); ItemAPI.Add(val7); ItemAPI.Add(val8); ItemAPI.Add(val9); ItemAPI.Add(val10); ItemAPI.Add(val11); ItemAPI.Add(val12); ItemAPI.Add(val13); CustomItem val14 = new CustomItem(magnumItemDef, val); CustomItem val15 = new CustomItem(blunderbusItemDef, val); CustomItem val16 = new CustomItem(railgunItemDef, val); ItemAPI.Add(val14); ItemAPI.Add(val15); ItemAPI.Add(val16); } private static void CreateItemTiers() { //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_0057: 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_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: 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_0123: 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_0139: Unknown result type (might be due to invalid IL or missing references) chipTier = Object.Instantiate(Addressables.LoadAssetAsync((object)"RoR2/Base/Common/BossTierDef.asset").WaitForCompletion()); ((Object)chipTier).name = "DrifterChipTier"; chipTier.canRestack = false; chipTier.canScrap = false; chipTier.tier = (ItemTier)11; chipTier._tier = (ItemTier)11; chipTier.isDroppable = false; chipTier.canScrap = false; chipTier.canRestack = false; chipTier.colorIndex = (ColorIndex)13; chipTier.darkColorIndex = (ColorIndex)22; chipTier.pickupRules = (PickupRules)0; upgradeTier = Object.Instantiate(Addressables.LoadAssetAsync((object)"RoR2/Base/Common/BossTierDef.asset").WaitForCompletion()); ((Object)upgradeTier).name = "DrifterUpgradeTier"; upgradeTier.canRestack = false; upgradeTier.canScrap = false; upgradeTier.tier = (ItemTier)11; upgradeTier._tier = (ItemTier)11; upgradeTier.isDroppable = false; upgradeTier.canScrap = false; upgradeTier.canRestack = false; upgradeTier.colorIndex = (ColorIndex)12; upgradeTier.darkColorIndex = (ColorIndex)4; upgradeTier.pickupRules = (PickupRules)1; ContentAddition.AddItemTierDef(upgradeTier); ContentAddition.AddItemTierDef(chipTier); } } public static class DrifterStates { public static void Init() { Content.AddEntityState(typeof(SlashCombo)); Content.AddEntityState(typeof(AirSlash)); Content.AddEntityState(typeof(ChargingSlash)); Content.AddEntityState(typeof(ChargeSlashAttack)); Content.AddEntityState(typeof(DashSlash)); Content.AddEntityState(typeof(BaseGunHold)); Content.AddEntityState(typeof(ShotgunHold)); Content.AddEntityState(typeof(LasergunHold)); Content.AddEntityState(typeof(RailgunHold)); Content.AddEntityState(typeof(MagnumHold)); Content.AddEntityState(typeof(DetermineDash)); Content.AddEntityState(typeof(Roll)); Content.AddEntityState(typeof(AirDash)); Content.AddEntityState(typeof(FlashStep)); Content.AddEntityState(typeof(ThrowBomb)); Content.AddEntityState(typeof(SelfHeal)); Content.AddEntityState(typeof(JavelinThrow)); Content.AddEntityState(typeof(GrenadeShot)); Content.AddEntityState(typeof(XSlashProjectile)); Content.AddEntityState(typeof(DrifterMainState)); Content.AddEntityState(typeof(DrifterSkateState)); Content.AddEntityState(typeof(Cough)); Content.AddEntityState(typeof(Taunt)); Content.AddEntityState(typeof(Sit)); Content.AddEntityState(typeof(FollowState)); Content.AddEntityState(typeof(InteractableHoverState)); } } public static class DrifterStaticValues { public const float swordDamageCoefficient = 3.3f; public const float swordEndComboDamageCoefficient = 3.8f; public const float chargeSlashMinDamageCoefficient = 6f; public const float chargeSlashMaxDamageCoefficient = 10f; public const float dashSlashDamageCoeffiecient = 3.8f; public const float gunDamageCoefficient = 3.6f; public const float lasergunDamageCoefficient = 6.5f; public const float shotgunDamageCoefficient = 1.3f; public const float railgunDamageCoefficient = 5.9f; public const float magnumDamageCoefficient = 4.5f; public const float blunderbusDamageCoefficient = 1.5f; public const float flashStepDamageCoefficient = 3.6f; public const float counterAttackDamageCoefficient = 2.8f; public const float skateDamageCoefficient = 1.2f; public const float bombDamageCoefficient = 16f; public const float gunpowderDamageCoefficient = 0.5f; public const float javelinDamageCoefficient = 8f; public const float grenadeShotDamage = 10f; public const float slashProjectileDamageCoefficient = 7.5f; public const float corpseSpawnChance = 60f; } public static class DrifterTokens { public static void Init() { AddDrifterTokens(); Language.PrintOutput("Drifter.txt"); } public static void AddDrifterTokens() { string text = "VCR_DRIFTER_"; string text2 = "Drifter is a fearless traveler utilizing his skills to take down his foes." + Environment.NewLine + Environment.NewLine + "< ! > Hard Light Sword gives brief dashes on use." + Environment.NewLine + Environment.NewLine + "< ! > Pistol is a useful anti-air tool that can be weaved between attacks." + Environment.NewLine + Environment.NewLine + "< ! > Light Phase negates all damage, allowing the Drifter to stay in the fight longer." + Environment.NewLine + Environment.NewLine + "< ! > Roly Poly's delay allows for use of the environment to clear out groups of enemies." + Environment.NewLine + Environment.NewLine; string text3 = "The cyclops in red fled across the planet, and the drifter followed." + Environment.NewLine + Environment.NewLine + "The drifter always found peace in walking. Ain't as serene when there's naught else to do but fight, though. The drifter trudges on. Have to find Him. He has it. He has to." + Environment.NewLine + Environment.NewLine + "Eventually the drifter runs out of walking to do. No land left; just him, some strange horned stone platform, and the locals itchin' to put him in a shallow grave." + Environment.NewLine + Environment.NewLine + "The drifter touches the stone, a beam of red light flares up into the sky, and the gates of Hell crash open to meet him." + Environment.NewLine + Environment.NewLine + "Giant bugs, mountainous walking rocks, some peculiar creature looking like a teapot. The drifter knows all too well any wrong move could be his death. A flash of blades and barrage of gunfire sends them back where they belong." + Environment.NewLine + Environment.NewLine + "But the drifter ain't much better off." + Environment.NewLine + Environment.NewLine + "He doubles over, lungs in throes. Blood comes up where phlegm should be. It's getting worse." + Environment.NewLine + Environment.NewLine + "And the cyclops in red has the cure." + Environment.NewLine + Environment.NewLine + "He has to."; string text4 = "..and so he left, searching for a cure."; string text5 = "..and so he vanished, his journey come to an end."; Language.Add(text + "NAME", "Drifter-Hyperlight"); Language.Add(text + "DESCRIPTION", text2); Language.Add(text + "SUBTITLE", "The Magician"); Language.Add(text + "LORE", text3); Language.Add(text + "OUTRO_FLAVOR", text4); Language.Add(text + "OUTRO_FAILURE", text5); Language.Add(text + "DEFAULT_SKIN_NAME", "Drifter"); Language.Add(text + "DEFAULT_SKIN_DESC", "From the land of light, finding the cure for impending death."); Language.Add(text + "MASTERY_SKIN_NAME", "Altie"); Language.Add(text + "MASTERY_SKIN_DESC", "The ones who come after."); Language.Add(text + "GRANDMASTERY_SKIN_NAME", "Guardian"); Language.Add(text + "GRANDMASTERY_SKIN_DESC", "A savior to those in need."); Language.Add(text + "PASSIVE_NAME", "Upgrade Kit"); Language.Add(text + "PASSIVE_DESCRIPTION", "Visit the Bazaar to trade Data Chips for various Upgrades from Vendors."); Language.Add(text + "MISC_NAME", "Deadly Disease"); Language.Add(text + "MISC_DESCRIPTION", "While low health, fight for your life. Gain access to Desperation skills and killing enemies charges a Cleansing Medkit."); Language.Add(text + "PRIMARY_SLASH_NAME", "Hard-Light Sword"); Language.Add(text + "PRIMARY_SLASH_DESCRIPTION", $"Swing for {330f}% damage, every third swing deals {380f}% damage"); Language.Add(text + "SECONDARY_GUN_NAME", "Pistol"); Language.Add(text + "SECONDARY_GUN_DESCRIPTION", $"Hold to take aim then release to fire for {360f}% damage."); Language.Add(text + "SECONDARY_SHOTGUN_NAME", "Shotgun"); Language.Add(text + "SECONDARY_SHOTGUN_DESCRIPTION", $"Hold to take aim then release to fire for 8x{130f}% damage."); Language.Add(text + "SECONDARY_LASERGUN_NAME", "Laser-Rifle"); Language.Add(text + "SECONDARY_LASERGUN_DESCRIPTION", $"Hold to take aim then release to fire a piercing shot for {650f}% damage, highlights enemy weakpoints."); Language.Add(text + "UTILITY_DASH_NAME", "Light-Shift"); Language.Add(text + "UTILITY_DASH_DESCRIPTION", "Briefly Phase Shift a short distance with full invincibility. Holding enters a Skate after the dash"); Language.Add(text + "SPECIAL_BOMB_NAME", "Roly Poly"); Language.Add(text + "SPECIAL_BOMB_DESCRIPTION", $"Throw a grenade that rolls across the ground for 1 second before exploding for {1600f}% damage."); Language.Add(text + "LOW_HP_JAVELIN_NAME", "Hyper Spear"); Language.Add(text + "LOW_HP_JAVELIN_DESCRIPTION", $"Sword. Throw a grenade that rolls across the ground for 1 second before exploding for {1600f}% damage."); Language.Add(text + "LOW_HP_GRENADE_NAME", "Lobber Shot"); Language.Add(text + "LOW_HP_GRENADE_DESCRIPTION", $"Gun. Overload your next shot, shooting an arcing plasma ball for {1600f}% damage."); Language.Add(Tokens.GetAchievementNameToken("VCR_DRIFTER_masteryAchievement"), "Drifter: Mastery"); Language.Add(Tokens.GetAchievementDescriptionToken("VCR_DRIFTER_masteryAchievement"), "As Drifter, beat the game or obliterate on Monsoon (or higher)."); Language.Add(Tokens.GetAchievementNameToken("VCR_DRIFTER_GrandMasteryAchievement"), "Drifter: Grandmastery"); Language.Add(Tokens.GetAchievementDescriptionToken("VCR_DRIFTER_GrandMasteryAchievement"), "As Drifter, beat the game or obliterate on Typhoon (or higher)."); Language.Add(text + "SWORD_VENDOR_NAME", "Swordmaster"); Language.Add(text + "GUN_VENDOR_NAME", "The Gunsmith"); Language.Add(text + "DASH_VENDOR_NAME", "Dash Vendor"); Language.Add(text + "SYCOM_ITEM_NAME", "Sycom"); Language.Add(text + "SYCOM_ITEM_DESCRIPTION", "A handy companion, highlighting nearest Interactable."); Language.Add(text + "VENDOR_INTERACTION_PROMPT", "Purchase Upgrade"); Language.Add(text + "CORPSE_INTERACTION_NAME", "Lost Wanderer"); Language.Add(text + "CORPSE_INTERACTION_PROMPT", "Search Remains"); Language.Add(text + "CHIP_FRAGMENT_NAME", "Gearbit"); Language.Add(text + "CHIP_FRAGMENT_DESCRIPTION", "A fragment of a valuable currency"); Language.Add(text + "CHIP_FRAGMENT_LORE", "Indecipherable on its own"); Language.Add(text + "CHIP_WHOLE_NAME", "Data Chip"); Language.Add(text + "CHIP_WHOLE_DESCRIPTION", "Currency to purchase [Upgrades]"); Language.Add(text + "CHIP_WHOLE_LORE", "Currency to purchase [Upgrades]"); Language.Add(text + "CHIP_WHOLE_COST", $"{DrifterItems.vendorCost}x Data Chip"); Language.Add(text + "CHARGE_SLASH_NAME", "Charge Slash"); Language.Add(text + "CHARGE_SLASH_DESCRIPTION", $"Hold secondary during attacks to charge up a great slash for {600f} - {1000f}% damage "); Language.Add(text + "DASH_SLASH_NAME", "Dash Slash"); Language.Add(text + "DASH_SLASH_DESCRIPTION", $"After attacking, use Light-Shift to perform a Dash Slash for {380f}% damage."); Language.Add(text + "DEFLECT_SLASH_NAME", "Deflect"); Language.Add(text + "DEFLECT_SLASH_DESCRIPTION", "Attacking while grounded deflects nearby projectiles."); Language.Add(text + "CHARGE_SHOT_NAME", "Charge Shot"); Language.Add(text + "CHARGE_SHOT_DESCRIPTION", $"Charge your shot up to {BaseGunHold.chargeShotMaxMulti}x damage."); Language.Add(text + "EXPLODE_SHOT_NAME", "Overload Shot"); Language.Add(text + "EXPLODE_SHOT_DESCRIPTION", "On kill, enemy explodes for 50% total damage in 12m"); Language.Add(text + "RNG_NAME", "Run and Gun"); Language.Add(text + "RNG_DESCRIPTION", "Allows use of Guns while skating."); Language.Add(text + "MAGNUM_NAME", "Magnum"); Language.Add(text + "MAGNUM_DESCRIPTION", $"Replaces Pistol with a high power magnum that deals {450f}% damage."); Language.Add(text + "BLUNDERBUSS_NAME", "Blunderbuss"); Language.Add(text + "BLUNDERBUSS_DESCRIPTION", $"Replaces Shotgun with a powerful Blunderbuss that deals 7x{150f}% damage and Burns on hit."); Language.Add(text + "RAILGUN_NAME", "Rail-Gun"); Language.Add(text + "RAILGUN_DESCRIPTION", $"Replaces Laser-Rifle with a powerful Rail-Gun that deals {590f}% damage, hitting weakpoints is a critical hit."); Language.Add(text + "FLASH_STEP_NAME", "Flash-Step"); Language.Add(text + "FLASH_STEP_DESCRIPTION", $"Attack quickly after Light-Shifting to perform a stunning Flash-step for {360f}% damage."); Language.Add(text + "CHAIN_DASH_NAME", "Chain Dash"); Language.Add(text + "CHAIN_DASH_DESCRIPTION", "Kills refill all utility charges."); Language.Add(text + "DASH_SKATE_NAME", "Reckless Rider"); Language.Add(text + "DASH_SKATE_DESCRIPTION", "After skating for 1 second, enemies nearby get shocked"); } } public static class DrifterUnlockables { public static UnlockableDef characterUnlockableDef; public static UnlockableDef masterySkinUnlockableDef; public static UnlockableDef grandmasterySkinUnlockableDef; public static void Init() { masterySkinUnlockableDef = Content.CreateAndAddUnlockbleDef("VCR_DRIFTER_masteryUnlockable", Tokens.GetAchievementNameToken("VCR_DRIFTER_masteryAchievement"), CharacterBase.instance.assetBundle.LoadAsset("texMasteryAchievement")); grandmasterySkinUnlockableDef = Content.CreateAndAddUnlockbleDef("VCR_DRIFTER_GrandMasteryUnlockable", Tokens.GetAchievementNameToken("VCR_DRIFTER_GrandMasteryAchievement"), CharacterBase.instance.assetBundle.LoadAsset("texGrandMasteryAchievement")); } } public class DrifterDashUpgradeDroptable : ExplicitPickupDropTable { public PickupDefEntry[] itemEntries = (PickupDefEntry[])(object)new PickupDefEntry[3] { new PickupDefEntry { pickupDef = (Object)(object)DrifterItems.flashStepItemDef, pickupWeight = 3f }, new PickupDefEntry { pickupDef = (Object)(object)DrifterItems.skateAfterItemDef, pickupWeight = 2f }, new PickupDefEntry { pickupDef = (Object)(object)DrifterItems.chainDashItemDef, pickupWeight = 2f } }; public override void Regenerate(Run run) { base.pickupEntries = itemEntries; ((ExplicitPickupDropTable)this).Regenerate(run); } } public class DrifterGunUpgradeDroptable : ExplicitPickupDropTable { public PickupDefEntry[] itemEntries = (PickupDefEntry[])(object)new PickupDefEntry[2] { new PickupDefEntry { pickupDef = (Object)(object)DrifterItems.chargeShotItemDef, pickupWeight = 3f }, new PickupDefEntry { pickupDef = (Object)(object)DrifterItems.explodeOnKillItemDef, pickupWeight = 3f } }; public override void Regenerate(Run run) { base.pickupEntries = itemEntries; ((ExplicitPickupDropTable)this).Regenerate(run); } } public class DrifterSwordUpgradeDroptable : ExplicitPickupDropTable { public PickupDefEntry[] itemEntries = (PickupDefEntry[])(object)new PickupDefEntry[3] { new PickupDefEntry { pickupDef = (Object)(object)DrifterItems.chargeSlashItemhDef, pickupWeight = 3f }, new PickupDefEntry { pickupDef = (Object)(object)DrifterItems.dashSlashItemDef, pickupWeight = 3f }, new PickupDefEntry { pickupDef = (Object)(object)DrifterItems.reflectItemDef, pickupWeight = 2f } }; public override void Regenerate(Run run) { base.pickupEntries = itemEntries; ((ExplicitPickupDropTable)this).Regenerate(run); } } public class CorpseInteraction : NetworkBehaviour, IInteractable, IDisplayNameProvider { private bool activated; private Xoroshiro128Plus treasureRng = new Xoroshiro128Plus(1uL); public int baseMonsterCredit = 100; public float monsterCreditCoefficientPerPurchase = 2f; private int purchaseCount; private DirectorCard chosenDirectorCard; public bool NetworkActivated { get { return activated; } set { ((NetworkBehaviour)this).SetSyncVar(value, ref activated, 1u); } } private float monsterCredit => (float)baseMonsterCredit * Stage.instance.entryDifficultyCoefficient * (1f + (float)purchaseCount * (monsterCreditCoefficientPerPurchase - 1f)); public string GetContextString(Interactor activator) { return Language.GetString("VCR_DRIFTER_CORPSE_INTERACTION_PROMPT"); } public Interactability GetInteractability(Interactor activator) { //IL_0014: 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_0017: Unknown result type (might be due to invalid IL or missing references) if (!activated) { return (Interactability)2; } return (Interactability)0; } public void OnInteractionBegin(Interactor activator) { //IL_0089: 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_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: 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) if (!activated && Object.op_Implicit((Object)(object)((Component)activator).GetComponent().master)) { NetworkActivated = true; if (Util.CheckRoll(33f, ((Component)activator).GetComponent().master)) { CombatDirector component = ((Component)this).GetComponent(); chosenDirectorCard = component.SelectMonsterCardForCombatShrine(monsterCredit); component.CombatShrineActivation(activator, monsterCredit, chosenDirectorCard); } else { treasureRng = Run.instance.treasureRng; PickupDropletController.CreatePickupDroplet(ReturnedIndex(activator), ((Component)this).transform.position + Vector3.up * 1.5f, Vector3.up * 15f); } } } private UniquePickup ReturnedIndex(Interactor activator) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_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_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) //IL_00bc: 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_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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)((Component)activator).GetComponent())) { return UniquePickup.none; } return (UniquePickup)(((Component)activator).GetComponent().secondary.skillDef.skillNameToken switch { "VCR_DRIFTER_SECONDARY_GUN_NAME" => new UniquePickup(PickupCatalog.FindPickupIndex(DrifterItems.magnumItemDef.itemIndex)), "VCR_DRIFTER_SECONDARY_SHOTGUN_NAME" => new UniquePickup(PickupCatalog.FindPickupIndex(DrifterItems.blunderbusItemDef.itemIndex)), "VCR_DRIFTER_SECONDARY_LASERGUN_NAME" => new UniquePickup(PickupCatalog.FindPickupIndex(DrifterItems.railgunItemDef.itemIndex)), _ => ((PickupDropTable)DrifterAssets.dtFallback).GeneratePickup(treasureRng), }); } public bool ShouldIgnoreSpherecastForInteractibility(Interactor activator) { return false; } public bool ShouldProximityHighlight() { return true; } public bool ShouldShowOnScanner() { return !activated; } public string GetDisplayName() { return Language.GetString("VCR_DRIFTER_CORPSE_INTERACTION_NAME"); } } public class VendorInteractableScript : NetworkBehaviour { public PurchaseInteraction purchaseInteraction; private GameObject shrineUseEffect = Addressables.LoadAssetAsync((object)"RoR2/Base/Common/VFX/ShrineUseEffect.prefab").WaitForCompletion(); public ExplicitPickupDropTable dropTable; public Animator animator; private GameObject spawnPos; private Xoroshiro128Plus treasureRng = new Xoroshiro128Plus(1uL); public void Start() { //IL_0072: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((Component)this).GetComponent())) { animator = ((Component)this).GetComponent(); } spawnPos = ((Component)((Component)this).transform.Find("SpawnPos")).gameObject; uhhhIdk(); ((UnityEvent)(object)purchaseInteraction.onPurchase).AddListener((UnityAction)OnPurchase); ((Component)this).GetComponent().costType = (CostTypeIndex)Array.IndexOf(CostTypeCatalog.costTypeDefs, DrifterAssets.chipCostDef); } public void Update() { if (NetworkServer.active && Object.op_Implicit((Object)(object)Run.instance)) { purchaseInteraction.SetAvailable(!pickupDetected()); } } public bool pickupDetected() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) Collider[] array = Physics.OverlapSphere(spawnPos.transform.position, 4f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.fakeActor)).mask)); Collider[] array2 = Physics.OverlapSphere(spawnPos.transform.position, 4f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.debris)).mask)); if (array.Length != 0 || array2.Length != 0) { return true; } return false; } public void uhhhIdk() { //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown //IL_0092: 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_00a7: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Expected O, but got Unknown Log.Debug("Name: " + ((Object)((Component)this).gameObject).name); switch (((Object)((Component)this).gameObject).name.Replace("(Clone)", "")) { case "DrifterGunVendor": dropTable = (ExplicitPickupDropTable)(object)ScriptableObject.CreateInstance(); Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = "You smell the scent of Gunpowder." }); break; case "DrifterSwordVendor": dropTable = (ExplicitPickupDropTable)(object)ScriptableObject.CreateInstance(); Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = "You hear the shatter of Hard-Light." }); break; case "DrifterTempDashVendor": dropTable = (ExplicitPickupDropTable)(object)ScriptableObject.CreateInstance(); Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = "Vendor: You feel the rush of Wind." }); break; } } public void OnPurchase(Interactor interactor) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006c: 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_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Expected O, but got Unknown //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00df: 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_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Expected O, but got Unknown if (!NetworkServer.active) { Log.Warning("[Server] function '" + ((Object)((Component)this).gameObject).name + "::OnPurchase(RoR2.Interactor)' called on client"); return; } if (Object.op_Implicit((Object)(object)animator)) { animator.Play("Purchase"); } EffectManager.SpawnEffect(shrineUseEffect, new EffectData { origin = ((Component)this).gameObject.transform.position, rotation = Quaternion.identity, scale = 3f, color = Color32.op_Implicit(Color.cyan) }, true); CreatePickupInfo val = default(CreatePickupInfo); val._pickupState = ResultItem(interactor); val.position = ((Component)this).transform.position; val.rotation = Quaternion.identity; CreatePickupInfo val2 = val; PickupDropletController.CreatePickupDroplet(val2, spawnPos.transform.position, Vector3.up * 20f); Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = "Vendor: A pleasure doing business." }); } private UniquePickup ResultItem(Interactor interactor) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0041: 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_00bc: 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_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: 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_008d: Unknown result type (might be due to invalid IL or missing references) treasureRng = Run.instance.treasureRng; UniquePickup result = PickupDropTable.GeneratePickupFromWeightedSelection(treasureRng, dropTable.weightedSelection); Inventory inventory = ((Component)interactor).GetComponent().inventory; if (inventory.itemAcquisitionOrder.Contains(((PickupIndex)(ref result.pickupIndex)).itemIndex)) { for (int i = 0; i < 100; i++) { result = PickupDropTable.GeneratePickupFromWeightedSelection(treasureRng, dropTable.weightedSelection); if (!inventory.itemAcquisitionOrder.Contains(((PickupIndex)(ref result.pickupIndex)).itemIndex)) { return result; } } return PickupDropTable.GeneratePickupFromWeightedSelection(treasureRng, DrifterAssets.dtFallback.selector); } return result; } } public class VendorRecycleInteractable : NetworkBehaviour { } public class DrifterSurvivor : SurvivorBase { public const string DRIFTER_PREFIX = "VCR_DRIFTER_"; public bool hasSpawnedCorpse; public override string assetBundleName => "drifterassetbundle"; public override string bodyName => "DrifterHLDBody"; public override string masterName => "DrifterHLDMonsterMaster"; public override string modelPrefabName => "mdlDrifter"; public override string displayPrefabName => "DrifterDisplay"; public override string survivorTokenPrefix => "VCR_DRIFTER_"; public override BodyInfo bodyInfo => new BodyInfo { bodyName = bodyName, bodyNameToken = "VCR_DRIFTER_NAME", subtitleNameToken = "VCR_DRIFTER_SUBTITLE", characterPortrait = assetBundle.LoadAsset("texDrifterIcon"), bodyColor = Color.cyan, sortPosition = 7.2f, crosshair = assetBundle.LoadAsset("CrosshairController"), podPrefab = LegacyResourcesAPI.Load("Prefabs/NetworkedObjects/SurvivorPod"), maxHealth = 110f, healthRegen = 1.5f, armor = 0f, jumpCount = 1 }; public override CustomRendererInfo[] customRendererInfos => new CustomRendererInfo[2] { new CustomRendererInfo { childName = "Model", material = assetBundle.LoadMaterial("matDrifterBody") }, new CustomRendererInfo { childName = "CapeModel", material = assetBundle.LoadMaterial("matDrifterBody") } }; public override UnlockableDef characterUnlockableDef => DrifterUnlockables.characterUnlockableDef; public override ItemDisplaysBase itemDisplays => new DrifterItemDisplays(); 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 static SkillDef magnumSkillDef { get; protected set; } public static SkillDef shotgunSkillDef { get; protected set; } public static SkillDef blunderbusSkillDef { get; protected set; } public static SkillDef lasergunSkillDef { get; protected set; } public static SkillDef railgunSkillDef { get; protected set; } public static SkillDef selfHealSkillDef { get; protected set; } public override void Initialize() { base.Initialize(); } public override void InitializeCharacter() { DrifterUnlockables.Init(); base.InitializeCharacter(); DrifterConfig.Init(); DrifterStates.Init(); DrifterTokens.Init(); DrifterAssets.Init(assetBundle); DrifterBuffs.Init(assetBundle); DrifterItems.Init(assetBundle); InitializeEntityStateMachines(); InitializeSkills(); InitializeSkins(); InitializeCharacterMaster(); AdditionalBodySetup(); AddHooks(); } private void AdditionalBodySetup() { AddHitboxes(); bodyPrefab.AddComponent(); bodyPrefab.AddComponent(); bodyInfo.crosshair.AddComponent(); } public void AddHitboxes() { Prefabs.SetupHitBoxGroup(characterModelObject, "SwordGroup", "SwordHitbox"); Prefabs.SetupHitBoxGroup(characterModelObject, "AirSwordGroup", "AirSwordHitbox"); Prefabs.SetupHitBoxGroup(characterModelObject, "ChargedSwordGroup", "ChargedSwordHitbox"); Prefabs.SetupHitBoxGroup(characterModelObject, "SkateStunGroup", "SkateHitbox"); } public override void InitializeEntityStateMachines() { Prefabs.ClearEntityStateMachines(bodyPrefab); Prefabs.AddMainEntityStateMachine(bodyPrefab, "Body", typeof(DrifterMainState), typeof(SpawnTeleporterState)); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon"); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon2"); } public override void InitializeSkills() { Skills.ClearGenericSkills(bodyPrefab); AddPassiveSkill(); AddPrimarySkills(); AddSecondarySkills(); AddUtiitySkills(); AddSpecialSkills(); } private void AddPassiveSkill() { GenericSkill val = Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, "PassiveSkill"); SkillDef val2 = Skills.CreateSkillDef(new SkillDefInfo { skillName = "DrifterPassive", skillNameToken = "VCR_DRIFTER_PASSIVE_NAME", skillDescriptionToken = "VCR_DRIFTER_PASSIVE_DESCRIPTION", skillIcon = assetBundle.LoadAsset("DrifterPassivePLACEHOLDER") }); Skills.AddSkillsToFamily(val.skillFamily, val2); } private void AddMiscSkill() { GenericSkill val = Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, "Misc"); SkillDef val2 = Skills.CreateSkillDef(new SkillDefInfo { skillName = "DrifterMisc", skillNameToken = "VCR_DRIFTER_MISC_NAME", skillDescriptionToken = "VCR_DRIFTER_MISC_DESCRIPTION", skillIcon = assetBundle.LoadAsset("texInDevSkillIcon") }); Skills.AddSkillsToFamily(val.skillFamily, val2); } private void AddLowHPSkill() { GenericSkill val = Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, "Desperation"); SkillDef val2 = Skills.CreateSkillDef(new SkillDefInfo { skillName = "DrifterLowHpJavelin", skillNameToken = "VCR_DRIFTER_LOW_HP_JAVELIN_NAME", skillDescriptionToken = "VCR_DRIFTER_LOW_HP_JAVELIN_DESCRIPTION", skillIcon = assetBundle.LoadAsset("texInDevSkillIcon") }); SkillDef val3 = Skills.CreateSkillDef(new SkillDefInfo { skillName = "DrifterLowHpGrenadeShot", skillNameToken = "VCR_DRIFTER_LOW_HP_GRENADE_NAME", skillDescriptionToken = "VCR_DRIFTER_LOW_HP_GRENADE_DESCRIPTION", skillIcon = assetBundle.LoadAsset("texInDevSkillIcon") }); Skills.AddSkillsToFamily(val.skillFamily, val2, val3); } private void AddPrimarySkills() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)0); SteppedSkillDef val = Skills.CreateSkillDef(new SkillDefInfo("DrifterSlash", "VCR_DRIFTER_PRIMARY_SLASH_NAME", "VCR_DRIFTER_PRIMARY_SLASH_DESCRIPTION", assetBundle.LoadAsset("DrifterM1PLACEHOLDER"), new SerializableEntityStateType(typeof(SlashCombo)), "Body")); val.stepCount = 3; val.stepGraceDuration = 0.7f; ((SkillDef)val).cancelSprintingOnActivation = true; ((SkillDef)val).mustKeyPress = false; ((SkillDef)val).interruptPriority = (InterruptPriority)2; Skills.AddPrimarySkills(bodyPrefab, (SkillDef)val); } private void AddSecondarySkills() { //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) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0128: 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_013f: 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_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: 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_03c3: Unknown result type (might be due to invalid IL or missing references) //IL_0484: Unknown result type (might be due to invalid IL or missing references) //IL_0489: Unknown result type (might be due to invalid IL or missing references) //IL_049b: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)1); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterGun"; skillDefInfo.skillNameToken = "VCR_DRIFTER_SECONDARY_GUN_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_SECONDARY_GUN_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("DrifterM2pitolPLACEHOLDER"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(BaseGunHold)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseRechargeInterval = 10f; skillDefInfo.baseMaxStock = 6; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.forceSprintDuringState = false; SkillDef val = Skills.CreateSkillDef(skillDefInfo); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterMagnum"; skillDefInfo.skillNameToken = "VCR_DRIFTER_MAGNUM_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_MAGNUM_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("DrifterM2magnumPLACEHOLDER"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(MagnumHold)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseRechargeInterval = 12f; skillDefInfo.baseMaxStock = 5; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.forceSprintDuringState = false; magnumSkillDef = Skills.CreateSkillDef(skillDefInfo); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterShotgun"; skillDefInfo.skillNameToken = "VCR_DRIFTER_SECONDARY_SHOTGUN_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_SECONDARY_SHOTGUN_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("texInDevSkillIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(ShotgunHold)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseRechargeInterval = 25f; skillDefInfo.baseMaxStock = 3; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.forceSprintDuringState = false; SkillDef val3 = (shotgunSkillDef = Skills.CreateSkillDef(skillDefInfo)); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterBlunderbuss"; skillDefInfo.skillNameToken = "VCR_DRIFTER_BLUNDERBUSS_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_BLUNDERBUSS_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("texInDevSkillIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(BlunderbusHold)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseRechargeInterval = 20f; skillDefInfo.baseMaxStock = 4; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.forceSprintDuringState = false; blunderbusSkillDef = Skills.CreateSkillDef(skillDefInfo); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterLasergun"; skillDefInfo.skillNameToken = "VCR_DRIFTER_SECONDARY_LASERGUN_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_SECONDARY_LASERGUN_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("texInDevSkillIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(LasergunHold)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseRechargeInterval = 25f; skillDefInfo.baseMaxStock = 4; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.forceSprintDuringState = false; SkillDef val5 = (lasergunSkillDef = Skills.CreateSkillDef(skillDefInfo)); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterRailgun"; skillDefInfo.skillNameToken = "VCR_DRIFTER_RAILGUN_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_RAILGUN_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("texInDevSkillIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(RailgunHold)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseRechargeInterval = 25f; skillDefInfo.baseMaxStock = 4; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = true; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.forceSprintDuringState = false; railgunSkillDef = Skills.CreateSkillDef(skillDefInfo); Skills.AddSecondarySkills(bodyPrefab, val, val3, val5); } private void AddUtiitySkills() { //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) //IL_006e: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)2); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterRoll"; skillDefInfo.skillNameToken = "VCR_DRIFTER_UTILITY_DASH_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_UTILITY_DASH_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("DrifterUtilityPLACEHOLDER"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(DetermineDash)); skillDefInfo.activationStateMachineName = "Body"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 4f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 1; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = false; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = true; SkillDef val = Skills.CreateSkillDef(skillDefInfo); Skills.AddUtilitySkills(bodyPrefab, val); } private void AddSpecialSkills() { //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) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: 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_0184: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)3); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterBomb"; skillDefInfo.skillNameToken = "VCR_DRIFTER_SPECIAL_BOMB_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_SPECIAL_BOMB_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("DrifterSpecialPLACEHOLDER"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(ThrowBomb)); skillDefInfo.activationStateMachineName = "Weapon2"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseMaxStock = 1; skillDefInfo.baseRechargeInterval = 12f; skillDefInfo.isCombatSkill = true; skillDefInfo.mustKeyPress = true; SkillDef val = Skills.CreateSkillDef(skillDefInfo); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterJavelin"; skillDefInfo.skillNameToken = "VCR_DRIFTER_LOW_HP_JAVELIN_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_LOW_HP_JAVELIN_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("DrifterSpecialPLACEHOLDER"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(JavelinThrow)); skillDefInfo.activationStateMachineName = "Body"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseMaxStock = 1; skillDefInfo.baseRechargeInterval = 12f; skillDefInfo.isCombatSkill = true; skillDefInfo.mustKeyPress = true; SkillDef val2 = Skills.CreateSkillDef(skillDefInfo); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DrifterHeal"; skillDefInfo.skillNameToken = "VCR_DRIFTER_SELF_HEAL_NAME"; skillDefInfo.skillDescriptionToken = "VCR_DRIFTER_SELF_HEAL_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("texInDevSkillIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(SelfHeal)); skillDefInfo.activationStateMachineName = "Body"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseMaxStock = 1; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.isCombatSkill = true; skillDefInfo.mustKeyPress = true; SkillDef val3 = Skills.CreateSkillDef(skillDefInfo); Skills.AddSpecialSkills(bodyPrefab, val); } 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("VCR_DRIFTER_DEFAULT_SKIN_NAME", assetBundle.LoadAsset("texMainSkin"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject); val2.meshReplacements = Skins.getMeshReplacements(assetBundle, baseRendererInfos, "meshDrifter", "meshCloak"); list.Add(val2); SkinDef val3 = Skins.CreateSkinDef("VCR_DRIFTER_MASTERY_SKIN_NAME", assetBundle.LoadAsset("texMasteryAchievement"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject, DrifterUnlockables.masterySkinUnlockableDef); val3.meshReplacements = Skins.getMeshReplacements(assetBundle, baseRendererInfos, "meshAltDrifter", "meshAltCloak"); val3.rendererInfos[0].defaultMaterial = assetBundle.LoadMaterial("matAltDrifterBody"); val3.rendererInfos[1].defaultMaterial = assetBundle.LoadMaterial("matAltDrifterBody"); list.Add(val3); SkinDef val4 = Skins.CreateSkinDef("VCR_DRIFTER_GRANDMASTERY_SKIN_NAME", assetBundle.LoadAsset("texGrandMasteryAchievement"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject, DrifterUnlockables.grandmasterySkinUnlockableDef); val4.meshReplacements = Skins.getMeshReplacements(assetBundle, baseRendererInfos, "meshGuardian", "meshGuardianCloak"); val4.rendererInfos[0].defaultMaterial = assetBundle.LoadMaterial("matGuardianBody"); val4.rendererInfos[1].defaultMaterial = assetBundle.LoadMaterial("matGuardianBody"); list.Add(val4); val.skins = list.ToArray(); } public override void InitializeCharacterMaster() { DrifterAI.Init(bodyPrefab, masterName); } private void AddHooks() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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 RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); CharacterBody.OnInventoryChanged += new hook_OnInventoryChanged(CharacterBody_OnInventoryChanged); GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal; GenericPickupController.AttemptGrant += new hook_AttemptGrant(GenericPickupController_AttemptGrant); SceneDirector.Start += new hook_Start(SceneDirector_Start); CostTypeCatalog.modHelper.getAdditionalEntries += DrifterAssets.AddKeyCostType; } private void SceneDirector_Start(orig_Start orig, SceneDirector self) { //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_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00df: 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_0115: 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_019c: 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_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_0208: 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_0286: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Expected O, but got Unknown //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Unknown result type (might be due to invalid IL or missing references) //IL_02aa: Expected O, but got Unknown //IL_02a5: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Expected O, but got Unknown hasSpawnedCorpse = false; orig.Invoke(self); Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; if (!NetworkServer.active) { Debug.LogWarning((object)"[Server] function 'System.Void DrifterSurvivor.SceneDirector_Start::SceneDirector_Start(On.RoR2.SceneDirector.orig_Start orig, SceneDirector self)' called on client"); return; } if (isDrifterPresent()) { Xoroshiro128Plus treasureRng = Run.instance.treasureRng; if (name == "bazaar") { switch (treasureRng.RangeInt(0, 3)) { case 0: VendorSpawnPositions(DrifterAssets.gunVendor, new Vector3(-120f, -24f, -7f), Quaternion.Euler(0f, 180f, 0f)); break; case 1: VendorSpawnPositions(DrifterAssets.swordVendor, new Vector3(-120f, -24f, -7f), Quaternion.Euler(0f, 180f, 0f)); break; case 2: VendorSpawnPositions(DrifterAssets.dashVendor, new Vector3(-120f, -24f, -7f), Quaternion.Euler(0f, 180f, 0f)); break; } } if (name == "moon" || name == "moon2") { switch (treasureRng.RangeInt(0, 3)) { case 0: VendorSpawnPositions(DrifterAssets.gunVendor, new Vector3(-242f, -185.5f, -357f), Quaternion.Euler(0f, 0f, 355f)); break; case 1: VendorSpawnPositions(DrifterAssets.swordVendor, new Vector3(-242f, -185.5f, -357f), Quaternion.Euler(0f, 0f, 355f)); break; case 2: VendorSpawnPositions(DrifterAssets.dashVendor, new Vector3(-242f, -185.5f, -357f), Quaternion.Euler(0f, 0f, 355f)); break; } } } if ((isDrifterPresent() || DrifterConfig.spawnCorpse.Value) && Util.CheckRoll(DrifterConfig.corpseSpawnChance.Value, 0f, (CharacterMaster)null) && !hasSpawnedCorpse) { hasSpawnedCorpse = true; Xoroshiro128Plus val = new Xoroshiro128Plus(Run.instance.seed); DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest((SpawnCard)(object)DrifterAssets.corpseSpawnCard, new DirectorPlacementRule { placementMode = (PlacementMode)4 }, val)); } } private void VendorSpawnPositions(GameObject spawnObject, Vector3 position, Quaternion rotation) { //IL_0018: 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) if ((Object)(object)spawnObject != (Object)null && NetworkServer.active) { GameObject val = Object.Instantiate(spawnObject, position, rotation); NetworkServer.Spawn(val); } } public static bool isDrifterPresent() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { if ((Object)(object)instance != (Object)null && (Object)(object)instance.networkUser != (Object)null) { GameObject val = BodyCatalog.GetBodyPrefab(instance.networkUser.bodyIndexPreference); if ((Object)(object)val == (Object)(object)BodyCatalog.FindBodyPrefab("DrifterHLDBody")) { return true; } } } return false; } private void GlobalEventManager_onCharacterDeathGlobal(DamageReport obj) { //IL_0062: 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_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0271: 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) //IL_0275: 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_028e: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0225: 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_0229: 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_010c: 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_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: 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_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0168: 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_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0197: 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_01a7: 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_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Expected O, but got Unknown //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_0242: 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_0251: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)obj.attackerBody == (Object)(object)obj.victimBody || (Object)(object)obj.damageInfo.inflictor == (Object)null || (Object)(object)obj.damageInfo.attacker == (Object)null || !isDrifterPresent()) { return; } if (Object.op_Implicit((Object)(object)obj.attackerBody) && DamageTypeCombo.op_Implicit(obj.damageInfo.damageType) == DamageTypeCombo.op_Implicit(DamageTypeCombo.GenericSecondary) && Object.op_Implicit((Object)(object)obj.attackerBody.inventory) && obj.attackerBody.inventory.GetItemCount(DrifterItems.explodeOnKillItemDef) > 0 && ((NetworkBehaviour)obj.attackerBody).hasAuthority) { string skillName = obj.damageInfo.attacker.GetComponent().secondary.skillDef.skillName; int num = 1; string text = skillName; string text2 = text; if (!(text2 == "DrifterShotgun")) { if (text2 == "DrifterBlunderbus") { num = 6; } } else { num = 8; } BlastAttack val = new BlastAttack { damageType = DamageTypeCombo.Generic, attacker = obj.attacker, inflictor = obj.attacker, baseDamage = obj.damageDealt * 0.5f * (float)num, position = ((Component)obj.victimBody).gameObject.transform.position, attackerFiltering = (AttackerFiltering)2, damageColorIndex = (DamageColorIndex)3, falloffModel = (FalloffModel)0, radius = 15f, teamIndex = (TeamIndex)1, baseForce = 100f, procChainMask = default(ProcChainMask), procCoefficient = 1 / num, canRejectForce = false, losType = (LoSType)0 }; Util.PlaySound("Play_Drifter_Grenade_Explode", ((Component)obj.victim).gameObject); val.Fire(); } if (!obj.victimBody.isChampion) { float expAdjustedDropChancePercent = Util.GetExpAdjustedDropChancePercent(4f, ((Component)obj.victim).gameObject); if (Util.CheckRoll(expAdjustedDropChancePercent, 0f, (CharacterMaster)null)) { PickupIndex val2 = PickupCatalog.FindPickupIndex(DrifterItems.chipFragmentItemDef.itemIndex); if (val2 != PickupIndex.none) { PickupDropletController.CreatePickupDroplet(val2, obj.victimBody.corePosition, Vector3.up * 20f); } } } else { PickupIndex val3 = PickupCatalog.FindPickupIndex(DrifterItems.chipItemDef.itemIndex); if (val3 != PickupIndex.none) { PickupDropletController.CreatePickupDroplet(val3, obj.victimBody.corePosition, Vector3.up * 20f); } } if (Object.op_Implicit((Object)(object)obj.attacker.GetComponent()) && obj.attackerBody.inventory.GetItemCount(DrifterItems.chainDashItemDef) > 0) { obj.attacker.GetComponent().utility.stock = obj.attacker.GetComponent().utility.maxStock; } if (Object.op_Implicit((Object)(object)obj.attacker.GetComponent()) && obj.attackerBody.HasBuff(DrifterBuffs.lowHPBuff)) { obj.attacker.GetComponent().AddMedkitProgress(1); } } private void CharacterBody_OnInventoryChanged(orig_OnInventoryChanged orig, CharacterBody self) { if (Object.op_Implicit((Object)(object)self) && self.baseNameToken == bodyInfo.bodyNameToken) { self.AddItemBehavior(self.inventory.GetItemCountEffective(DrifterItems.sycomItemDef)); self.AddItemBehavior(self.inventory.GetItemCountEffective(DrifterItems.magnumItemDef)); self.AddItemBehavior(self.inventory.GetItemCountEffective(DrifterItems.blunderbusItemDef)); self.AddItemBehavior(self.inventory.GetItemCountEffective(DrifterItems.railgunItemDef)); if (self.inventory.GetItemCountEffective(DrifterItems.chipFragmentItemDef) >= DrifterItems.fragmentExchangeRate) { self.inventory.RemoveItemPermanent(DrifterItems.chipFragmentItemDef, DrifterItems.fragmentExchangeRate); self.inventory.GiveItemPermanent(DrifterItems.chipItemDef, 1); } } orig.Invoke(self); } private static void GenericPickupController_AttemptGrant(orig_AttemptGrant orig, GenericPickupController self, CharacterBody body) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self) && Object.op_Implicit((Object)(object)body)) { PickupIndex pickupIndex = self.pickupIndex; if (((PickupIndex)(ref pickupIndex)).isValid) { ItemDef itemDef = ItemCatalog.GetItemDef(PickupCatalog.GetPickupDef(self.pickupIndex).itemIndex); if ((Object.op_Implicit((Object)(object)itemDef) && (Object)(object)itemDef._itemTierDef == (Object)(object)DrifterItems.upgradeTier && (body.baseNameToken != "VCR_DRIFTER_NAME" || (Object.op_Implicit((Object)(object)body.inventory) && body.inventory.GetItemCount(itemDef) > 0))) || (Object.op_Implicit((Object)(object)itemDef) && (Object)(object)itemDef._itemTierDef == (Object)(object)DrifterItems.chipTier && body.baseNameToken != "VCR_DRIFTER_NAME")) { return; } } } orig.Invoke(self, body); } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(DrifterBuffs.coughSlow)) { args.moveSpeedReductionMultAdd += 0.4f; args.armorAdd += 65f; } if (sender.HasBuff(DrifterBuffs.lowHPBuff)) { args.armorAdd += 130f; args.baseDamageAdd += 15f; sender.hasOneShotProtection = true; } if (sender.HasBuff(DrifterBuffs.skateBuff)) { args.armorAdd += 150f; } if (sender.HasBuff(DrifterBuffs.attackBuff)) { args.armorAdd += 35f; } if (sender.HasBuff(DrifterBuffs.disableOSPBuff)) { if (NetworkServer.active && sender.outOfDanger) { sender.RemoveBuff(DrifterBuffs.disableOSPBuff); } else { sender.hasOneShotProtection = false; } } } } } namespace DrifterMod.Survivors.Drifter.SkillStates { public class DrifterMainState : GenericCharacterMain { public static float skateThreshold = 1.5f; public static float minCoughInterval = 5f; public static float maxCoughInterval = 15f; private float coughInterval; public readonly Xoroshiro128Plus rng = new Xoroshiro128Plus(1uL); private float skateStopwatch; public LocalUser localUser; private DrifterHLDTracker tracker; private GenericSkill originalSpecial; public override void OnEnter() { if (((EntityState)this).characterBody.inventory.GetItemCountEffective(DrifterItems.sycomItemDef) == 0) { ((EntityState)this).characterBody.inventory.GiveItemPermanent(DrifterItems.sycomItemDef, 1); } tracker = ((EntityState)this).GetComponent(); tracker.lowHPCough = ((EntityState)this).healthComponent.isHealthLow && ((EntityState)this).characterBody.HasBuff(Buffs.HealingDisabled); ((GenericCharacterMain)this).OnEnter(); } public override void OnExit() { ((GenericCharacterMain)this).OnExit(); } public override void Update() { //IL_0029: 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) ((GenericCharacterMain)this).Update(); if (((EntityState)this).isAuthority && ((EntityState)this).characterMotor.isGrounded) { CheckEmote(DrifterConfig.tauntKey.Value); CheckEmote(DrifterConfig.sitKey.Value); } } public override void FixedUpdate() { if (((EntityState)this).isAuthority) { tracker.lowHPCough = ((EntityState)this).healthComponent.isHealthLow && ((EntityState)this).characterBody.HasBuff(DrifterBuffs.lowHPBuff); tracker.medKitRequirement = Mathf.Floor(tracker.medkitVal + ((BaseState)this).damageStat / 12f); if (((EntityState)this).characterMotor.isGrounded) { tracker.dashSlashed = false; } if (Input.GetKey((KeyCode)103) && tracker.lowHPCough) { originalSpecial = ((EntityState)this).skillLocator.special; ((EntityState)this).skillLocator.special.SetSkillOverride((object)((EntityState)this).gameObject, DrifterSurvivor.selfHealSkillDef, (SkillOverridePriority)4); } if (tracker.shouldHaveSelfHeal) { originalSpecial = ((EntityState)this).skillLocator.special; ((EntityState)this).skillLocator.special.SetSkillOverride((object)((EntityState)this).gameObject, DrifterSurvivor.selfHealSkillDef, (SkillOverridePriority)4); } if (!tracker.shouldHaveSelfHeal && (Object)(object)((EntityState)this).skillLocator.special.skillDef != (Object)(object)originalSpecial) { ((EntityState)this).skillLocator.special.UnsetSkillOverride((object)((EntityState)this).gameObject, DrifterSurvivor.selfHealSkillDef, (SkillOverridePriority)4); } ((GenericCharacterMain)this).FixedUpdate(); } } 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; } } } private void CheckEmote(KeyboardShortcut keybind) where T : EntityState, new() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (Config.GetKeyPressed(keybind)) { FindLocalUser(); if (localUser != null && !localUser.isUIFocused) { ((EntityState)this).outer.SetInterruptState((EntityState)(object)new T(), (InterruptPriority)0); } } } } public class DrifterSkateState : GenericCharacterMain { public float speedMultiplier = 1.2f; public static string startSoundString = ""; public static string endSoundString = ""; private Vector3 idealDirection; private uint soundID; private DrifterHLDTracker tracker; private OverlapAttack attack; private bool hasHit; private float attackStopwarch; private float noMoveStopwatch; private float skateStopwatch; private bool checkBool; private int result = 0; public override void OnEnter() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //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_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0087: 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_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) ((GenericCharacterMain)this).OnEnter(); if (((EntityState)this).isAuthority) { tracker = ((EntityState)this).GetComponent(); attack = new OverlapAttack(); attack.inflictor = ((EntityState)this).gameObject; attack.attacker = ((EntityState)this).gameObject; attack.teamIndex = ((BaseState)this).GetTeam(); attack.forceVector = Vector3.zero; attack.damage = 0f; attack.damageColorIndex = (DamageColorIndex)0; attack.damageType = DamageTypeCombo.op_Implicit((DamageType)16777216); attack.hitBoxGroup = ((BaseState)this).FindHitBoxGroup("SkateStunGroup"); attack.pushAwayForce = 50f; attack.procCoefficient = 1f; ModifyOverlapAttack(attack); if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { idealDirection = ((EntityState)this).inputBank.aimDirection; idealDirection.y = 0f; } UpdateDirection(); ((Component)((EntityState)this).GetModelChildLocator().FindChild("HoverboardModel")).gameObject.SetActive(true); } if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { ((EntityState)this).modelLocator.normalizeToFloor = true; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.forward = idealDirection; } soundID = Util.PlaySound("Play_Drifter_Skate_Loop", ((EntityState)this).gameObject); ((EntityState)this).PlayCrossfade("Fullbody, Override", "SkateStart", 0.1f); ((BaseCharacterMain)this).modelAnimator.SetBool("isSkating", true); ((BaseCharacterMain)this).modelAnimator.SetFloat("skateTilt", 0.5f); if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(DrifterBuffs.skateBuff); ((EntityState)this).characterBody.AddBuff(Buffs.IgnoreFallDamage); } } protected virtual void ModifyOverlapAttack(OverlapAttack attack) { } public override void OnExit() { //IL_00b5: 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_00c5: Unknown result type (might be due to invalid IL or missing references) AkSoundEngine.StopPlayingID(soundID); Util.PlaySound(endSoundString, ((EntityState)this).gameObject); if (!((EntityState)this).outer.destroying && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((BaseCharacterMain)this).modelAnimator.SetBool("isSkating", false); ((EntityState)this).characterBody.isSprinting = false; if (NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(DrifterBuffs.skateBuff); ((EntityState)this).characterBody.RemoveBuff(Buffs.IgnoreFallDamage); } } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.disableAirControlUntilCollision) { CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity += GetIdealVelocity(); } if (Object.op_Implicit((Object)(object)((EntityState)this).modelLocator)) { ((EntityState)this).modelLocator.normalizeToFloor = false; ((Component)((EntityState)this).GetModelChildLocator().FindChild("HoverboardModel")).GetComponent().PlayTimer(); } ((BaseCharacterMain)this).modelAnimator.SetFloat("skateTilt", 0.5f); ((GenericCharacterMain)this).OnExit(); } public override void FixedUpdate() { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_022e: 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_0265: 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_0280: 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_0290: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) ((GenericCharacterMain)this).FixedUpdate(); if (!((EntityState)this).isAuthority) { return; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.isSprinting = true; } Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(((EntityState)this).inputBank.moveVector.z, ((EntityState)this).inputBank.moveVector.x); if (val == Vector2.zero) { noMoveStopwatch += Time.fixedDeltaTime; } else { noMoveStopwatch = 0f; } if (skateStopwatch > 0f) { skateStopwatch -= Time.fixedDeltaTime; } if (((EntityState)this).inputBank.skill3.down && skateStopwatch <= 0f && ((EntityState)this).fixedAge > 1.25f) { skateStopwatch = 1.5f; PerformTrick(); } if ((((EntityState)this).inputBank.skill2.down && ((EntityState)this).skillLocator.secondary.IsReady() && ((EntityState)this).characterBody.inventory.GetItemCountEffective(DrifterItems.runAndGunItemDef) == 0) || noMoveStopwatch > 0.1f) { ((EntityState)this).outer.SetNextStateToMain(); return; } if (((EntityState)this).inputBank.skill1.down) { ((EntityState)this).outer.SetNextState((EntityState)(object)new SlashCombo()); return; } if (attackStopwarch > 0f) { attackStopwarch -= Time.fixedDeltaTime; } else { attack.ignoredHealthComponentList.Clear(); hasHit = false; } if (((EntityState)this).characterBody.inventory.GetItemCountEffective(DrifterItems.skateAfterItemDef) > 0 && ((EntityState)this).fixedAge > 1f) { FireOverlap(); } UpdateDirection(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = idealDirection; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.disableAirControlUntilCollision) { CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += GetIdealVelocity() * ((EntityState)this).characterBody.moveSpeed * speedMultiplier * ((EntityState)this).GetDeltaTime(); ((EntityState)this).GetModelAnimator().SetFloat("skateTilt", ((EntityState)this).GetModelAnimator().GetFloat("aimYawCycle")); ((EntityState)this).PlayAnimation("Body", "Idle"); } } } public void PerformTrick() { if (((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).PlayAnimation("Trick, Override", "TrickBuffer"); } } public void FireOverlap() { if (((EntityState)this).isAuthority && attack.Fire((List)null) && attack.ignoredHealthComponentList.Count > 0) { fucker(); } } private void fucker() { if (!hasHit) { hasHit = true; attackStopwarch = 4.75f; } } public override void ProcessJump() { //IL_0204: 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_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Expected O, but got Unknown //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_0250: 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_0272: Expected O, but got Unknown //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_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Expected O, but got Unknown if (!((BaseCharacterMain)this).hasCharacterMotor) { return; } bool flag = false; bool flag2 = false; bool flag3 = ((EntityState)this).characterMotor.jumpCount < ((EntityState)this).characterBody.maxJumpCount; if (!(base.jumpInputReceived && Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && flag3)) { return; } int itemCountEffective = ((EntityState)this).characterBody.inventory.GetItemCountEffective(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 ((float)itemCountEffective > 0f && ((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)itemCountEffective / num3); float num5 = ((EntityState)this).characterBody.moveSpeed / num3; num = (num4 + num5) / num5; } } GenericCharacterMain.ApplyJumpVelocity(((EntityState)this).characterMotor, ((EntityState)this).characterBody, num, num2, false); if (((BaseCharacterMain)this).hasModelAnimator) { int layerIndex = ((BaseCharacterMain)this).modelAnimator.GetLayerIndex("FullBody, Override"); if (layerIndex >= 0) { if (((EntityState)this).characterMotor.jumpCount == 0 || ((EntityState)this).characterBody.baseJumpCount == 1) { ((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("SkateJump", ((BaseCharacterMain)this).smoothingParameters.intoJumpTransitionTime, layerIndex); } else { ((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("SkateJump", ((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++; JumpDelegate onJump = ((EntityState)this).characterBody.onJump; if (onJump != null) { onJump.Invoke(); } } public override bool CanExecuteSkill(GenericSkill skillSlot) { return false; } private void UpdateDirection() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { Vector2 val = Util.Vector3XZToVector2XY(((EntityState)this).inputBank.moveVector); if (val != Vector2.zero) { ((Vector2)(ref val)).Normalize(); Vector3 val2 = idealDirection; Vector3 val3 = new Vector3(val.x, 0f, val.y); idealDirection = Vector3.RotateTowards(val2, ((Vector3)(ref val3)).normalized, 4f * ((EntityState)this).GetDeltaTime(), 1f); } } } private Vector3 GetIdealVelocity() { //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) //IL_0014: 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) Vector3 forward = ((EntityState)this).characterDirection.forward; return ((Vector3)(ref forward)).normalized; } 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 override void OnSerialize(NetworkWriter writer) { writer.Write(((EntityState)this).GetModelAnimator().GetBool("isSkating")); ((EntityState)this).OnSerialize(writer); } public override void OnDeserialize(NetworkReader reader) { ((EntityState)this).GetModelAnimator().SetBool("isSkating", reader.ReadBoolean()); ((EntityState)this).OnDeserialize(reader); } } public class Cough : GenericCharacterMain { public float baseDuration = 1.25f; private uint sfx; private float duration; public override void OnEnter() { float num = Util.Remap(((EntityState)this).characterBody.level, 1f, 20f, 1f, 4.5f); duration = baseDuration / num; if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.HiddenInvincibility, 0.5f * duration); ((EntityState)this).characterBody.AddBuff(DrifterBuffs.coughSlow); } ((GenericCharacterMain)this).OnEnter(); ((EntityState)this).PlayAnimation("Gesture, Override", "CoughFit", (string)null, duration, 0f); sfx = Util.PlaySound("Play_Drifter_Cough", ((EntityState)this).gameObject); } public override void FixedUpdate() { ((GenericCharacterMain)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(DrifterBuffs.coughSlow); } ((GenericCharacterMain)this).OnExit(); } public override bool CanExecuteSkill(GenericSkill skillSlot) { return false; } } public class GrenadeShot : DrifterBaseState { public float baseDuration = 1f; private float duration; public override void OnEnter() { duration = baseDuration / ((BaseState)this).attackSpeedStat; base.OnEnter(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration) { switch (((EntityState)this).skillLocator.secondary.skillName) { case "DrifterShotgun": ((EntityState)this).outer.SetNextState((EntityState)(object)new ShotgunHold()); break; case "DrifterLasergun": ((EntityState)this).outer.SetNextState((EntityState)(object)new LasergunHold()); break; case "DrifterRailgun": ((EntityState)this).outer.SetNextState((EntityState)(object)new RailgunHold()); break; default: ((EntityState)this).outer.SetNextState((EntityState)(object)new BaseGunHold()); break; } } } } public class JavelinThrow : GenericProjectileBaseState { public static float BaseDuration = 0.65f; public static float BaseDelayDuration = 0f; public static float DamageCoefficient = 8f; public override void OnEnter() { base.projectilePrefab = DrifterAssets.bombProjectilePrefab; base.attackSoundString = "Play_Drifter_Grenade_Throw"; base.baseDuration = BaseDuration; base.baseDelayBeforeFiringProjectile = BaseDelayDuration; base.damageCoefficient = DamageCoefficient; base.force = 80f; base.recoilAmplitude = 0.1f; base.bloom = 10f; ((GenericProjectileBaseState)this).OnEnter(); } public override void ModifyProjectileInfo(ref FireProjectileInfo fireProjectileInfo) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) ((GenericProjectileBaseState)this).ModifyProjectileInfo(ref fireProjectileInfo); fireProjectileInfo.damageTypeOverride = DamageTypeCombo.GenericSpecial; } 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)1; } public override void PlayAnimation(float duration) { if (Object.op_Implicit((Object)(object)((EntityState)this).GetModelAnimator())) { ((EntityState)this).PlayAnimation("Gesture, Override", "ThrowBomb", "ThrowBomb.playbackRate", base.duration, 0f); } } } public class SelfHeal : GenericCharacterMain { public float duration = 0.4f; private DrifterHLDTracker tracker; public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); tracker = ((EntityState)this).GetComponent(); tracker.shouldHaveSelfHeal = false; ((EntityState)this).PlayAnimation("Gesture, Override", "Heal", (string)null, duration, 0f); if (((EntityState)this).characterBody.HasBuff(Buffs.HealingDisabled) && NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(Buffs.HealingDisabled); ((EntityState)this).characterBody.AddTimedBuff(Buffs.HiddenInvincibility, 0.5f * duration); ((EntityState)this).characterBody.RemoveBuff(DrifterBuffs.lowHPBuff); } } public override void FixedUpdate() { ((GenericCharacterMain)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) ((GenericCharacterMain)this).OnExit(); NetworkIdentity component = ((EntityState)this).GetComponent(); if (Object.op_Implicit((Object)(object)component)) { NetMessageExtensions.Send((INetMessage)(object)new SyncHeal(component.netId, 30), (NetworkDestination)2); } } public override bool CanExecuteSkill(GenericSkill skillSlot) { return false; } } public class XSlashProjectile : GenericProjectileBaseState { public static float BaseDuration = 0.65f; public static float BaseDelayDuration = 0f; public static float DamageCoefficient = 7.5f; public override void OnEnter() { base.projectilePrefab = DrifterAssets.bombProjectilePrefab; base.attackSoundString = "Play_Drifter_Grenade_Throw"; base.baseDuration = BaseDuration; base.baseDelayBeforeFiringProjectile = BaseDelayDuration; base.damageCoefficient = DamageCoefficient; base.force = 80f; base.recoilAmplitude = 0.1f; base.bloom = 10f; ((GenericProjectileBaseState)this).OnEnter(); } public override void ModifyProjectileInfo(ref FireProjectileInfo fireProjectileInfo) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) ((GenericProjectileBaseState)this).ModifyProjectileInfo(ref fireProjectileInfo); fireProjectileInfo.damageTypeOverride = DamageTypeCombo.GenericSpecial; } 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)1; } public override void PlayAnimation(float duration) { if (Object.op_Implicit((Object)(object)((EntityState)this).GetModelAnimator())) { ((EntityState)this).PlayAnimation("Gesture, Override", "ThrowBomb", "ThrowBomb.playbackRate", base.duration, 0f); } } } public class AirSlash : DrifterBaseState { protected string hitboxGroupName = "AirSwordGroup"; protected DamageTypeCombo damageType = DamageTypeCombo.GenericPrimary; protected float damageCoefficient = 3.3f; protected float procCoefficient = 1f; protected float pushForce = 300f; protected Vector3 bonusForce = Vector3.zero; protected float baseDuration = 0.7f; public float initialForwardSpeed = 4.9f; public float finalForwardSpeed = 0.5f; private float forwardSpeed; protected float attackStartPercentTime = 0.1f; protected float earlyExitPercentTime = 1f; protected string swingSoundString = "Play_Drifter_Slash"; protected string hitSoundString = ""; protected string muzzleString = "SwingLeft"; protected string playbackRateParam = "Slash.playbackRate"; private GameObject swingEffectPrefab = DrifterAssets.swordSwingEffect; private GameObject hitEffectPrefab = DrifterAssets.swordHitImpactEffect; protected NetworkSoundEventIndex impactSound = (NetworkSoundEventIndex)(-1); protected OverlapAttack attack; public float duration; private bool hasFired; protected float stopwatch; protected Animator animator; private HitStopCachedState hitStopCachedState; private Vector3 aimDir; public override void OnEnter() { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_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_0062: 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_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) base.OnEnter(); ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(true); duration = baseDuration; animator = ((EntityState)this).GetModelAnimator(); ((BaseState)this).StartAimMode(0.5f + duration, false); Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; aimDir = ((Vector3)(ref direction)).normalized; PlayAttackAnimation(); if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Buffs.IgnoreFallDamage); } attack = new OverlapAttack(); attack.damageType = damageType; attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = ((BaseState)this).GetTeam(); attack.damage = damageCoefficient * ((BaseState)this).damageStat + ((BaseState)this).attackSpeedStat; 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("FullBody, Override", "AirAttack", playbackRateParam, duration, 0.05f); } public override void OnExit() { ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(false); if (NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(Buffs.IgnoreFallDamage); } ((EntityState)this).OnExit(); } protected virtual void PlaySwingEffect() { EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, muzzleString, false); } protected virtual void OnHitEnemyAuthority() { tracker.GiveGunAmmo(1); Util.PlaySound(hitSoundString, ((EntityState)this).gameObject); } private void FireAttack() { if (((EntityState)this).isAuthority && attack.Fire((List)null)) { OnHitEnemyAuthority(); } } private void EnterAttack() { hasFired = true; Util.PlayAttackSpeedSound(swingSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); PlaySwingEffect(); } public override void FixedUpdate() { //IL_00e9: 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_0105: 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_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_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0131: 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) ((EntityState)this).FixedUpdate(); if (!((EntityState)this).isAuthority) { return; } if (((EntityState)this).fixedAge < attackStartPercentTime / 2f * duration) { ((EntityState)this).characterMotor.velocity.y = 7f; } bool flag = ((EntityState)this).fixedAge >= duration * attackStartPercentTime; bool flag2 = HasUpgrade(DrifterItems.dashSlashItemDef) && ((EntityState)this).fixedAge < duration * 0.8f && flag && !tracker.dashSlashed; if (flag || (flag && !hasFired)) { if (!hasFired) { EnterAttack(); } FireAttack(); } UpdateSpeed(); CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.rootMotion += (((EntityState)this).characterDirection.forward * (forwardSpeed * 0.33f) + aimDir * (forwardSpeed * 0.66f)) * ((EntityState)this).GetDeltaTime(); if (((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } else if (flag2 && ((EntityState)this).inputBank.skill3.wasDown) { tracker.dashSlashed = true; ((EntityState)this).outer.SetNextState((EntityState)(object)new DashSlash()); } else if (((EntityState)this).skillLocator.utility.IsReady() && ((EntityState)this).inputBank.skill3.down && !flag2) { ((EntityState)this).skillLocator.utility.ExecuteIfReady(); } } 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; } private void UpdateSpeed() { forwardSpeed = ((BaseState)this).moveSpeedStat * Mathf.Lerp(initialForwardSpeed, finalForwardSpeed, ((EntityState)this).fixedAge / duration); } public override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); } } public class ChargeSlashAttack : DrifterBaseMelee { public float damageCoefficientRamped; public Vector3 hopDirection; public float initialHopSpeed = 6f; public float finalHopSpeed = 1f; private float hopSpeed; public override void OnEnter() { //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_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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0129: 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_013a: 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_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) hitboxGroupName = "SwordGroup"; damageType = DamageTypeCombo.op_Implicit((DamageType)524288); procCoefficient = 1f; pushForce = 300f; bonusForce = Vector3.zero; baseDuration = 0.7f; damageCoefficient = damageCoefficientRamped; attackStartPercentTime = 0.2f; attackEndPercentTime = 0.4f; earlyExitPercentTime = 0.6f; hitStopDuration = 0.012f; attackRecoil = 0.5f; hitHopVelocity = 4f; swingSoundString = "Play_Drifter_ChargeSlash"; hitSoundString = ""; muzzleString = "SwingRight"; playbackRateParam = "Slash.playbackRate"; swingEffectPrefab = DrifterAssets.swordSwingEffect; hitEffectPrefab = DrifterAssets.swordHitImpactEffect; impactSound = DrifterAssets.swordHitSoundEvent.index; RecalculateSpeed(); if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { Vector2 val = Util.Vector3XZToVector2XY(((EntityState)this).inputBank.moveVector); if (val != Vector2.zero) { ((Vector2)(ref val)).Normalize(); Vector3 val2 = new Vector3(val.x, 3f, val.y); hopDirection = ((Vector3)(ref val2)).normalized; } } base.OnEnter(); } public override void FixedUpdate() { //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) RecalculateSpeed(); ((EntityState)this).characterMotor.velocity = new Vector3(hopDirection.x * hopSpeed, hopDirection.y, hopDirection.z * hopSpeed); base.FixedUpdate(); } protected override void PlayAttackAnimation() { ((EntityState)this).PlayCrossfade("FullBody, Override", "ChargeSlash", playbackRateParam, duration, 0.1f * duration); } protected override void PlaySwingEffect() { base.PlaySwingEffect(); } protected override void OnHitEnemyAuthority() { base.OnHitEnemyAuthority(); } public override void OnExit() { if (Object.op_Implicit((Object)(object)((Component)((EntityState)this).GetModelChildLocator().FindChild("BigSwordModel")).gameObject)) { ((Component)((EntityState)this).GetModelChildLocator().FindChild("BigSwordModel")).gameObject.SetActive(false); } base.OnExit(); } private void RecalculateSpeed() { hopSpeed = ((BaseState)this).moveSpeedStat * Mathf.Lerp(initialHopSpeed, finalHopSpeed, ((EntityState)this).fixedAge / duration); } } public class ChargingSlash : DrifterBaseState { public float minDuration = 0.1f; public float baseMaxDuration = 2f; private float maxDuration; private float damageResult; public override void OnEnter() { base.OnEnter(); maxDuration = baseMaxDuration / ((BaseState)this).attackSpeedStat; if (Object.op_Implicit((Object)(object)((Component)((EntityState)this).GetModelChildLocator().FindChild("BigSwordModel")).gameObject)) { ((Component)((EntityState)this).GetModelChildLocator().FindChild("BigSwordModel")).gameObject.SetActive(true); } ((EntityState)this).PlayAnimation("FullBody, Override", "ChargingAttack", "Slash.playbackRate", maxDuration / 2f, 0f); Util.PlaySound("Play_Drifter_ChargingSlash", ((EntityState)this).gameObject); if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(DrifterBuffs.skateBuff, maxDuration); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= minDuration) { if (ShouldKeepChargingAuthority()) { damageResult = Mathf.Lerp(6f, 10f, ((EntityState)this).fixedAge / maxDuration); } else { Transition(); } } if (((EntityState)this).fixedAge >= maxDuration) { Transition(); } } private void Transition() { ((EntityState)this).outer.SetNextState((EntityState)(object)new ChargeSlashAttack { damageCoefficientRamped = damageResult }); } private bool ShouldKeepChargingAuthority() { return ((EntityState)this).inputBank.skill2.down; } } public class DashSlash : DrifterBaseMelee { public Vector3 dashDirection; public float initialDashSpeed = 13f; public float finalDashSpeed = 1f; private float dashSpeed; private TemporaryOverlayInstance temporaryOverlay; public override void OnEnter() { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_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_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0141: 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_01ba: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Buffs.IgnoreFallDamage); } ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(true); hitboxGroupName = "SwordGroup"; damageType = DamageTypeCombo.GenericPrimary; procCoefficient = 1f; pushForce = 300f; bonusForce = Vector3.zero; baseDuration = 0.65f; damageCoefficient = 3.8f; attackStartPercentTime = 0.2f; attackEndPercentTime = 0.8f; earlyExitPercentTime = 0.85f; hitStopDuration = 0f; attackRecoil = 0f; hitHopVelocity = 0f; swingSoundString = "HenrySwordSwing"; hitSoundString = ""; muzzleString = ((swingIndex % 2 == 0) ? "SwingRight" : "SwingLeft"); playbackRateParam = "Slash.playbackRate"; swingEffectPrefab = DrifterAssets.swordSwingEffect; hitEffectPrefab = DrifterAssets.swordHitImpactEffect; impactSound = DrifterAssets.swordHitSoundEvent.index; RecalculateSpeed(); Ray aimRay = ((BaseState)this).GetAimRay(); dashDirection = ((Ray)(ref aimRay)).direction; base.OnEnter(); ModelLocator component = ((EntityState)this).GetComponent(); if (Object.op_Implicit((Object)(object)component)) { Transform modelTransform = component.modelTransform; if (Object.op_Implicit((Object)(object)modelTransform)) { temporaryOverlay = TemporaryOverlayManager.AddOverlay(((Component)modelTransform).gameObject); temporaryOverlay.duration = duration; temporaryOverlay.destroyComponentOnEnd = true; temporaryOverlay.originalMaterial = Addressables.LoadAssetAsync((object)"RoR2/Base/Merc/matMercEnergized.mat").WaitForCompletion(); temporaryOverlay.inspectorCharacterModel = ((Component)modelTransform).GetComponent(); temporaryOverlay.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); temporaryOverlay.animateShaderAlpha = true; temporaryOverlay.AddToCharacterModel(((Component)modelTransform).GetComponent()); } } } public override void FixedUpdate() { //IL_000f: 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) RecalculateSpeed(); ((EntityState)this).characterMotor.velocity = dashDirection * dashSpeed; base.FixedUpdate(); } protected override void PlayAttackAnimation() { ((EntityState)this).PlayCrossfade("FullBody, Override", "AirAttack", playbackRateParam, duration, 0.1f * duration); } protected override void PlaySwingEffect() { base.PlaySwingEffect(); } protected override void OnHitEnemyAuthority() { base.OnHitEnemyAuthority(); } public override void OnExit() { if (NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(Buffs.IgnoreFallDamage); } ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(false); base.OnExit(); } private void RecalculateSpeed() { dashSpeed = ((BaseState)this).moveSpeedStat * Mathf.Lerp(initialDashSpeed, finalDashSpeed, ((EntityState)this).fixedAge / duration); } } public class DrifterBaseMelee : BaseMeleeAttack { protected override void OnHitEnemyAuthority() { tracker.GiveGunAmmo(1); base.OnHitEnemyAuthority(); } } public class SlashCombo : DrifterBaseMelee { public Vector3 hopDirection; public float initialHopSpeed = 11f; public float finalHopSpeed = 1f; private float hopSpeed; private float chargeStopwatch; private float deflectMulti = 1.5f; public override void OnEnter() { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_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_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: 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_0186: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: 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_01b1: 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_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) if (!((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).outer.SetNextState((EntityState)(object)new AirSlash()); } ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(true); hitboxGroupName = "SwordGroup"; damageType = DamageTypeCombo.GenericPrimary; procCoefficient = 1f; pushForce = 300f; bonusForce = Vector3.zero; if (swingIndex == 2) { baseDuration = 0.6f; damageCoefficient = 3.8f; } else { baseDuration = 0.4f; damageCoefficient = 3.3f; } attackStartPercentTime = 0.2f; attackEndPercentTime = 0.4f; earlyExitPercentTime = 0.95f; hitStopDuration = 0.012f; attackRecoil = 0.5f; hitHopVelocity = 4f; swingSoundString = "Play_Drifter_Slash"; hitSoundString = ""; muzzleString = ((swingIndex % 2 == 0) ? "SwingRight" : "SwingLeft"); playbackRateParam = "Slash.playbackRate"; swingEffectPrefab = DrifterAssets.swordSwingEffect; hitEffectPrefab = DrifterAssets.swordHitImpactEffect; impactSound = DrifterAssets.swordHitSoundEvent.index; RecalculateSpeed(); if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { Vector2 val = Util.Vector3XZToVector2XY(((EntityState)this).inputBank.moveVector); if (val != Vector2.zero) { ((Vector2)(ref val)).Normalize(); Vector3 val2 = new Vector3(val.x, 3f, val.y); hopDirection = ((Vector3)(ref val2)).normalized; } } base.OnEnter(); if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(DrifterBuffs.attackBuff, 1.5f * duration); } } public override void FixedUpdate() { //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_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) RecalculateSpeed(); ((EntityState)this).characterMotor.velocity = new Vector3(hopDirection.x * hopSpeed, hopDirection.y, hopDirection.z * hopSpeed); if (HasUpgrade(DrifterItems.dashSlashItemDef) && ((EntityState)this).fixedAge < duration * 0.6f && ((EntityState)this).fixedAge >= duration * attackStartPercentTime && ((EntityState)this).inputBank.skill3.wasDown) { ((EntityState)this).outer.SetNextState((EntityState)(object)new DashSlash()); return; } if (((EntityState)this).inputBank.jump.down && ((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).outer.SetNextStateToMain(); ((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty"); ((EntityState)this).characterMotor.Jump(0f, 1f, false); ((EntityState)this).characterMotor.velocity = new Vector3(hopDirection.x * hopSpeed, ((EntityState)this).characterMotor.velocity.y, hopDirection.z * hopSpeed); return; } if (((EntityState)this).fixedAge < duration * attackEndPercentTime && ((EntityState)this).skillLocator.special.IsReady() && MatchingLowHPSkill("LOW_HP_JAVELIN_NAME") && ((EntityState)this).inputBank.skill4.down) { if (Util.CheckRoll(tracker.coughChance, ((EntityState)this).characterBody.master) && tracker.lowHPCough) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Cough()); } else { ((EntityState)this).outer.SetNextState((EntityState)(object)new JavelinThrow()); } return; } if (((EntityState)this).inputBank.skill2.down) { chargeStopwatch += Time.fixedDeltaTime; } else { chargeStopwatch = 0f; } if (((EntityState)this).fixedAge < duration * attackEndPercentTime && HasUpgrade(DrifterItems.reflectItemDef) && ((NetworkBehaviour)((EntityState)this).characterBody).hasAuthority) { Deflect(); } base.FixedUpdate(); } public void Deflect() { //IL_001f: 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) //IL_0032: 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_0105: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) List instancesList = InstanceTracker.GetInstancesList(); for (int i = 0; i < instancesList.Count; i++) { bool flag = false; ProjectileController val = instancesList[i]; if (val.teamFilter.teamIndex != ((BaseState)this).GetTeam() && Vector3.Distance(((Component)val).transform.position, ((EntityState)this).transform.position) < 6f) { if (!Object.op_Implicit((Object)(object)((Component)val).GetComponent())) { break; } if (Object.op_Implicit((Object)(object)((Component)val).GetComponent()) && Object.op_Implicit((Object)(object)((Component)val).GetComponent())) { ProjectileSimple component = ((Component)val).GetComponent(); ProjectileDamage component2 = ((Component)val).GetComponent(); component2.damage *= ((BaseState)this).damageStat; Rigidbody component3 = ((Component)val).GetComponent(); Ray aimRay = ((BaseState)this).GetAimRay(); component3.velocity = ((Ray)(ref aimRay)).direction * (component.desiredForwardSpeed * deflectMulti); val.IgnoreCollisionsWithOwner(false); } val.owner = ((EntityState)this).gameObject; val.teamFilter.teamIndex = ((BaseState)this).GetTeam(); if (!flag) { flag = true; Util.PlaySound("Play_Drifter_Deflect", ((EntityState)this).gameObject); } } } } protected override void PlayAttackAnimation() { ((EntityState)this).PlayCrossfade("FullBody, Override", "Combo" + (1 + swingIndex), playbackRateParam, duration, 0.1f * duration); } protected override void PlaySwingEffect() { base.PlaySwingEffect(); } protected override void OnHitEnemyAuthority() { base.OnHitEnemyAuthority(); } public override void OnExit() { ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(false); if (HasUpgrade(DrifterItems.chargeSlashItemhDef) && ((EntityState)this).inputBank.skill1.down && ((EntityState)this).characterMotor.isGrounded && chargeStopwatch >= 0.35f) { ((EntityState)this).outer.SetNextState((EntityState)(object)new ChargingSlash()); } else { base.OnExit(); } } private void RecalculateSpeed() { float num = ((BaseState)this).moveSpeedStat / 5f; if (((BaseState)this).moveSpeedStat <= 8f) { num = 0f; } float num2 = 7f + num; hopSpeed = num2 * Mathf.Lerp(initialHopSpeed, finalHopSpeed, ((EntityState)this).fixedAge / duration); } } public class BaseGunHold : DrifterBaseState { public static float damageCoefficient = 3.6f; public static float procCoefficient = 1f; public static float firePercentTime = 0f; public static float force = 800f; public static float selfForce = 8f; public static float recoil = 3f; public static float range = 256f; public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/TracerGoldGat"); public string childToFind = "GunModel"; internal GameObject fuckObj; internal ParticleSystem fuck; private bool hasFired; public static float chargeShotMaxMulti = 4f; public float chargeShotMulti = 1f; private float chargeShotMinHold = 0.75f; private float chargeStopwatch; public string muzzleString; public string gunShotEvent = "Play_Drifter_Gun_Pistol"; private bool soundPlaying; private bool interrupted; private uint sfx; public override void OnEnter() { base.OnEnter(); ((Component)((EntityState)this).GetModelChildLocator().FindChild(childToFind)).gameObject.SetActive(true); tracker.gunActive = true; ((EntityState)this).PlayCrossfade("Gesture, Override", "AimGun", 0.04f); } public override void OnExit() { AkSoundEngine.StopPlayingID(sfx); if (Object.op_Implicit((Object)(object)fuckObj)) { Object.Destroy((Object)(object)fuckObj); } ((Component)((EntityState)this).GetModelChildLocator().FindChild(childToFind)).gameObject.SetActive(false); if (interrupted) { ((EntityState)this).PlayAnimation("Gesture, Override", "BufferEmpty"); } tracker.gunActive = false; ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: 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_0251: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (!((EntityState)this).isAuthority) { return; } if (((EntityState)this).inputBank.skill1.down || ((EntityState)this).inputBank.skill3.down) { interrupted = true; ((EntityState)this).outer.SetNextStateToMain(); return; } if (!((EntityState)this).inputBank.skill2.down && ((EntityState)this).fixedAge >= 0.08f) { Fire(); ((EntityState)this).outer.SetNextStateToMain(); return; } if (tracker.lowHPCough && ((EntityState)this).skillLocator.special.IsReady() && MatchingLowHPSkill("LOW_HP_GRENADE_NAME") && ((EntityState)this).inputBank.skill4.down) { if (Util.CheckRoll(tracker.coughChance, ((EntityState)this).characterBody.master) && tracker.lowHPCough && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Cough()); } else { ((EntityState)this).outer.SetNextState((EntityState)(object)new GrenadeShot()); } return; } ((EntityState)this).characterBody.isSprinting = false; ((EntityState)this).characterBody.SetAimTimer(1f); if (HasUpgrade(DrifterItems.chargeShotItemDef)) { chargeStopwatch += Time.fixedDeltaTime * 1.5f; } if (!(chargeStopwatch >= chargeShotMinHold)) { return; } if (Object.op_Implicit((Object)(object)fuckObj) && Object.op_Implicit((Object)(object)fuck)) { EmissionModule emission = fuck.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(7f * chargeShotMulti); } else { if (!soundPlaying) { soundPlaying = true; sfx = Util.PlaySound("Play_Drifter_Gun_Charging", ((EntityState)this).gameObject); } fuckObj = Object.Instantiate(DrifterAssets.chargeshotVFX); fuck = fuckObj.GetComponent(); ShapeModule shape = fuck.shape; ((ShapeModule)(ref shape)).meshRenderer = ((Component)((EntityState)this).GetModelChildLocator().FindChild(childToFind)).GetComponent(); fuck.Play(); } chargeShotMulti = Mathf.Lerp(1f, chargeShotMaxMulti, chargeStopwatch - chargeShotMinHold); } public virtual BulletAttack Attack() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000f: 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_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_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_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_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_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: 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_00ed: 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_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_00ff: 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_0111: 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_0127: 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_013a: Expected O, but got Unknown BulletAttack val = new BulletAttack { bulletCount = 1u }; Ray aimRay = ((BaseState)this).GetAimRay(); val.aimVector = ((Ray)(ref aimRay)).direction; aimRay = ((BaseState)this).GetAimRay(); val.origin = ((Ray)(ref aimRay)).origin; val.damage = damageCoefficient * ((BaseState)this).damageStat * chargeShotMulti; val.damageColorIndex = (DamageColorIndex)0; val.damageType = DamageTypeCombo.GenericSecondary; val.falloffModel = (FalloffModel)0; val.maxDistance = range; val.force = force; val.hitMask = CommonMasks.bullet; val.minSpread = 0f; val.maxSpread = 0f; val.isCrit = ((BaseState)this).RollCrit(); val.owner = ((EntityState)this).gameObject; val.muzzleName = muzzleString; val.smartCollision = true; val.procChainMask = default(ProcChainMask); val.procCoefficient = procCoefficient; val.radius = 0.75f; val.sniper = false; val.stopperMask = CommonMasks.bullet; val.weapon = null; val.tracerEffectPrefab = tracerEffectPrefab; val.spreadPitchScale = 1f; val.spreadYawScale = 1f; val.queryTriggerInteraction = (QueryTriggerInteraction)0; val.hitEffectPrefab = FirePistol2.hitEffectPrefab; return val; } public virtual void ModifyAnimation(string gunShootAnimName = "ShootGun") { ((EntityState)this).PlayAnimation("Gesture, Override", gunShootAnimName, "ShootGun.playbackRate", 0.5f, 0f); } private void Fire() { //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_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: 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_00f9: Unknown result type (might be due to invalid IL or missing references) if (hasFired) { return; } ((EntityState)this).skillLocator.secondary.DeductStock(1); hasFired = true; ((EntityState)this).characterBody.AddSpreadBloom(1.5f); EffectManager.SimpleMuzzleFlash(FirePistol2.muzzleEffectPrefab, ((EntityState)this).gameObject, muzzleString, false); Util.PlaySound(gunShotEvent, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).AddRecoil(-1f * recoil, -2f * recoil, -0.5f * recoil, 0.5f * recoil); if (Object.op_Implicit((Object)(object)fuckObj)) { Object.Destroy((Object)(object)fuckObj); } CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity += -((Ray)(ref aimRay)).direction * (selfForce * chargeShotMulti); ModifyAnimation(); Attack().Fire(); } } public override void OnSerialize(NetworkWriter writer) { writer.Write(((EntityState)this).GetModelAnimator().GetBool("GunActive")); ((BaseSkillState)this).OnSerialize(writer); } public override void OnDeserialize(NetworkReader reader) { ((EntityState)this).GetModelAnimator().SetBool("GunActive", reader.ReadBoolean()); ((BaseSkillState)this).OnDeserialize(reader); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).inputBank.skill1.down) { return (InterruptPriority)0; } return (InterruptPriority)1; } } public class BlunderbusHold : BaseGunHold { public override void OnEnter() { BaseGunHold.recoil = 10f; BaseGunHold.selfForce = 22f; childToFind = "BlunderbussModel"; base.OnEnter(); } public override BulletAttack Attack() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000f: 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_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0072: 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_0083: 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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_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_00af: 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_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: 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_00f1: 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_0103: 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_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011f: 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_0135: 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_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_0153: Expected O, but got Unknown BulletAttack val = new BulletAttack { bulletCount = 6u }; Ray aimRay = ((BaseState)this).GetAimRay(); val.aimVector = ((Ray)(ref aimRay)).direction; aimRay = ((BaseState)this).GetAimRay(); val.origin = ((Ray)(ref aimRay)).origin; val.damage = 1.5f * ((BaseState)this).damageStat * chargeShotMulti; val.damageColorIndex = (DamageColorIndex)0; val.damageType = DamageTypeCombo.op_Implicit((DamageType)128) | DamageTypeCombo.GenericSecondary; val.falloffModel = (FalloffModel)2; val.maxDistance = 90f; val.force = BaseGunHold.force; val.hitMask = CommonMasks.bullet; val.minSpread = 0f; val.maxSpread = 6f; val.isCrit = ((BaseState)this).RollCrit(); val.owner = ((EntityState)this).gameObject; val.muzzleName = muzzleString; val.smartCollision = true; val.procChainMask = default(ProcChainMask); val.procCoefficient = BaseGunHold.procCoefficient; val.radius = 0.75f; val.sniper = false; val.stopperMask = LayerMask.op_Implicit(LayerIndex.world.intVal); val.weapon = null; val.tracerEffectPrefab = BaseGunHold.tracerEffectPrefab; val.spreadPitchScale = 1f; val.spreadYawScale = 1f; val.queryTriggerInteraction = (QueryTriggerInteraction)0; val.hitEffectPrefab = FirePistol2.hitEffectPrefab; return val; } } public class MagnumHold : BaseGunHold { public override void OnEnter() { BaseGunHold.recoil = 5f; BaseGunHold.selfForce = 11f; childToFind = "MagnumModel"; muzzleString = "MagnumMuzzle"; base.OnEnter(); } public override BulletAttack Attack() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0023: 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) //IL_002a: 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_0038: 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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008a: 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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: 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_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: 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_0103: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_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_011f: 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_0131: Unknown result type (might be due to invalid IL or missing references) //IL_013c: 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_0149: 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_015a: Expected O, but got Unknown muzzleString = "MagnumMuzzle"; gunShotEvent = "Play_Drifter_Gun_Magnum"; BulletAttack val = new BulletAttack { bulletCount = 1u }; Ray aimRay = ((BaseState)this).GetAimRay(); val.aimVector = ((Ray)(ref aimRay)).direction; aimRay = ((BaseState)this).GetAimRay(); val.origin = ((Ray)(ref aimRay)).origin; val.damage = 4.5f * ((BaseState)this).damageStat * chargeShotMulti; val.damageColorIndex = (DamageColorIndex)0; val.damageType = DamageTypeCombo.GenericSecondary; val.falloffModel = (FalloffModel)1; val.maxDistance = BaseGunHold.range; val.force = BaseGunHold.force; val.hitMask = CommonMasks.bullet; val.minSpread = 0f; val.maxSpread = 0f; val.isCrit = ((BaseState)this).RollCrit(); val.owner = ((EntityState)this).gameObject; val.muzzleName = muzzleString; val.smartCollision = true; val.procChainMask = default(ProcChainMask); val.procCoefficient = BaseGunHold.procCoefficient; val.radius = 0.75f; val.sniper = false; val.stopperMask = LayerMask.op_Implicit(LayerIndex.world.intVal); val.weapon = null; val.tracerEffectPrefab = BaseGunHold.tracerEffectPrefab; val.spreadPitchScale = 1f; val.spreadYawScale = 1f; val.queryTriggerInteraction = (QueryTriggerInteraction)0; val.hitEffectPrefab = FirePistol2.hitEffectPrefab; return val; } } public class LasergunHold : BaseGunHold { private OverlayController overlayController; public override void OnEnter() { //IL_002a: 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) childToFind = "LasergunModel"; muzzleString = "LasergunMuzzle"; BaseGunHold.selfForce = 6.5f; overlayController = HudOverlayManager.AddOverlay(((EntityState)this).gameObject, new OverlayCreationParams { prefab = DrifterAssets.headshotIndicator, childLocatorEntry = "ScopeContainer" }); base.OnEnter(); } public override void OnExit() { if (overlayController != null) { HudOverlayManager.RemoveOverlay(overlayController); overlayController = null; } base.OnExit(); } public override BulletAttack Attack() { //IL_000c: 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) //IL_0018: 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_0022: 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_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_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: 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_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: 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_00ab: 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_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: 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_00e2: 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_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_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: 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_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Expected O, but got Unknown muzzleString = "RailgunMuzzle"; BulletAttack val = new BulletAttack { bulletCount = 1u }; Ray aimRay = ((BaseState)this).GetAimRay(); val.aimVector = ((Ray)(ref aimRay)).direction; aimRay = ((BaseState)this).GetAimRay(); val.origin = ((Ray)(ref aimRay)).origin; val.damage = 6.5f * ((BaseState)this).damageStat * chargeShotMulti; val.damageColorIndex = (DamageColorIndex)0; val.damageType = DamageTypeCombo.GenericSecondary; val.falloffModel = (FalloffModel)0; val.maxDistance = BaseGunHold.range; val.force = BaseGunHold.force; val.hitMask = CommonMasks.bullet; val.minSpread = 0f; val.maxSpread = 0f; val.isCrit = ((BaseState)this).RollCrit(); val.owner = ((EntityState)this).gameObject; val.muzzleName = muzzleString; val.smartCollision = true; val.procChainMask = default(ProcChainMask); val.procCoefficient = BaseGunHold.procCoefficient; val.radius = 0.75f; val.sniper = false; val.stopperMask = LayerMask.op_Implicit(LayerIndex.world.intVal); val.weapon = null; val.tracerEffectPrefab = BaseGunHold.tracerEffectPrefab; val.spreadPitchScale = 1f; val.spreadYawScale = 1f; val.queryTriggerInteraction = (QueryTriggerInteraction)0; val.hitEffectPrefab = FirePistol2.hitEffectPrefab; return val; } } public class RailgunHold : BaseGunHold { private OverlayController overlayController; public override void OnEnter() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) childToFind = "LasergunModel"; muzzleString = "LasergunMuzzle"; overlayController = HudOverlayManager.AddOverlay(((EntityState)this).gameObject, new OverlayCreationParams { prefab = DrifterAssets.headshotIndicator, childLocatorEntry = "ScopeContainer" }); base.OnEnter(); } public override void OnExit() { if (overlayController != null) { HudOverlayManager.RemoveOverlay(overlayController); overlayController = null; } base.OnExit(); } public override BulletAttack Attack() { //IL_000c: 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) //IL_0018: 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_0022: 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_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_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: 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_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_009e: 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_00b4: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: 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_0101: 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_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: 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_0125: 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_013b: Unknown result type (might be due to invalid IL or missing references) //IL_013d: 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_014e: Expected O, but got Unknown muzzleString = "RailgunMuzzle"; BulletAttack val = new BulletAttack { bulletCount = 1u }; Ray aimRay = ((BaseState)this).GetAimRay(); val.aimVector = ((Ray)(ref aimRay)).direction; aimRay = ((BaseState)this).GetAimRay(); val.origin = ((Ray)(ref aimRay)).origin; val.damage = 5.9f * ((BaseState)this).damageStat * chargeShotMulti; val.damageColorIndex = (DamageColorIndex)0; val.damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)16), (DamageTypeExtended)0, (DamageSource)2); val.falloffModel = (FalloffModel)0; val.maxDistance = BaseGunHold.range; val.force = BaseGunHold.force; val.hitMask = CommonMasks.bullet; val.minSpread = 0f; val.maxSpread = 0f; val.isCrit = ((BaseState)this).RollCrit(); val.owner = ((EntityState)this).gameObject; val.muzzleName = muzzleString; val.smartCollision = true; val.procChainMask = default(ProcChainMask); val.procCoefficient = BaseGunHold.procCoefficient; val.radius = 0.75f; val.sniper = true; val.stopperMask = CommonMasks.characterBodies; val.weapon = null; val.tracerEffectPrefab = BaseGunHold.tracerEffectPrefab; val.spreadPitchScale = 1f; val.spreadYawScale = 1f; val.queryTriggerInteraction = (QueryTriggerInteraction)0; val.hitEffectPrefab = FirePistol2.hitEffectPrefab; return val; } } public class Shoot : DrifterBaseState { public static float damageCoefficient = 3.6f; public static float procCoefficient = 1f; public static float baseDuration = 0.6f; public static float firePercentTime = 0f; public static float force = 800f; public static float recoil = 3f; public static float range = 256f; public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/TracerGoldGat"); private float duration; private float fireTime; private bool hasFired; private string muzzleString; public override void OnEnter() { base.OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; fireTime = firePercentTime * duration; ((EntityState)this).characterBody.SetAimTimer(2f); muzzleString = "Muzzle"; ((EntityState)this).PlayAnimation("LeftArm, Override", "ShootGun", "ShootGun.playbackRate", 1.8f, 0f); } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= fireTime) { Fire(); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Fire() { //IL_0062: 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_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: 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_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: 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_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_00f9: 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_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_011a: 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_0131: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0156: 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) //IL_0167: 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_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: 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_01ae: 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) if (!hasFired) { hasFired = true; ((EntityState)this).characterBody.AddSpreadBloom(1.5f); EffectManager.SimpleMuzzleFlash(FirePistol2.muzzleEffectPrefab, ((EntityState)this).gameObject, muzzleString, false); Util.PlaySound("HenryShootPistol", ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).AddRecoil(-1f * recoil, -2f * recoil, -0.5f * recoil, 0.5f * recoil); new BulletAttack { bulletCount = 1u, aimVector = ((Ray)(ref aimRay)).direction, origin = ((Ray)(ref aimRay)).origin, damage = damageCoefficient * ((BaseState)this).damageStat, damageColorIndex = (DamageColorIndex)0, damageType = DamageTypeCombo.GenericSecondary, falloffModel = (FalloffModel)0, maxDistance = range, force = force, hitMask = CommonMasks.bullet, minSpread = 0f, maxSpread = 0f, isCrit = ((BaseState)this).RollCrit(), owner = ((EntityState)this).gameObject, muzzleName = muzzleString, smartCollision = true, procChainMask = default(ProcChainMask), procCoefficient = procCoefficient, radius = 0.75f, sniper = false, stopperMask = CommonMasks.bullet, weapon = null, tracerEffectPrefab = tracerEffectPrefab, spreadPitchScale = 1f, spreadYawScale = 1f, queryTriggerInteraction = (QueryTriggerInteraction)0, hitEffectPrefab = FirePistol2.hitEffectPrefab }.Fire(); } } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class ShotgunHold : BaseGunHold { public override void OnEnter() { childToFind = "ShotgunModel"; muzzleString = "ShotgunMuzzle"; BaseGunHold.recoil = 8f; BaseGunHold.selfForce = 18f; base.OnEnter(); } public override BulletAttack Attack() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000f: 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_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_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_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_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_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: 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_00ed: 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_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_00ff: 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_0111: 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_0127: 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_013a: Expected O, but got Unknown BulletAttack val = new BulletAttack { bulletCount = 8u }; Ray aimRay = ((BaseState)this).GetAimRay(); val.aimVector = ((Ray)(ref aimRay)).direction; aimRay = ((BaseState)this).GetAimRay(); val.origin = ((Ray)(ref aimRay)).origin; val.damage = 1.3f * ((BaseState)this).damageStat * chargeShotMulti; val.damageColorIndex = (DamageColorIndex)0; val.damageType = DamageTypeCombo.GenericSecondary; val.falloffModel = (FalloffModel)2; val.maxDistance = 60f; val.force = BaseGunHold.force; val.hitMask = CommonMasks.bullet; val.minSpread = 0f; val.maxSpread = 6f; val.isCrit = ((BaseState)this).RollCrit(); val.owner = ((EntityState)this).gameObject; val.muzzleName = muzzleString; val.smartCollision = true; val.procChainMask = default(ProcChainMask); val.procCoefficient = BaseGunHold.procCoefficient; val.radius = 0.75f; val.sniper = false; val.stopperMask = CommonMasks.bullet; val.weapon = null; val.tracerEffectPrefab = BaseGunHold.tracerEffectPrefab; val.spreadPitchScale = 1f; val.spreadYawScale = 1f; val.queryTriggerInteraction = (QueryTriggerInteraction)0; val.hitEffectPrefab = FirePistol2.hitEffectPrefab; return val; } } public class ThrowBomb : GenericProjectileBaseState { public static float BaseDuration = 0.65f; public static float BaseDelayDuration = 0f; public static float DamageCoefficient = 16f; public override void OnEnter() { base.projectilePrefab = DrifterAssets.bombProjectilePrefab; base.attackSoundString = "Play_Drifter_Grenade_Throw"; base.baseDuration = BaseDuration; base.baseDelayBeforeFiringProjectile = BaseDelayDuration; base.damageCoefficient = DamageCoefficient; base.force = 80f; base.recoilAmplitude = 0.1f; base.bloom = 10f; ((GenericProjectileBaseState)this).OnEnter(); } public override void ModifyProjectileInfo(ref FireProjectileInfo fireProjectileInfo) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) ((GenericProjectileBaseState)this).ModifyProjectileInfo(ref fireProjectileInfo); fireProjectileInfo.damageTypeOverride = DamageTypeCombo.GenericSpecial; } 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)1; } public override void PlayAnimation(float duration) { if (Object.op_Implicit((Object)(object)((EntityState)this).GetModelAnimator())) { ((EntityState)this).PlayAnimation("Gesture, Override", "ThrowBomb", "ThrowBomb.playbackRate", base.duration, 0f); } } } public class AirDash : DrifterBaseState { public static float duration = 0.5f; public static float initialSpeedCoefficient = 5f; public static float finalSpeedCoefficient = 2.5f; public static float flashstepEndWindow = 0.25f; public static string dodgeSoundString = "Play_Drifter_Dash"; public static float dodgeFOV = DodgeState.dodgeFOV; private float rollSpeed; private Animator animator; private Vector3 previousPosition; private GameObject dashEffectPrefab; private ParticleSystem dashParticles; private TemporaryOverlayInstance temporaryOverlay; private Vector3 _moveDir; private bool interrupted; public virtual bool isAirDash() { return false; } public virtual Vector3 forwardDirection() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_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_0018: 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_001c: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; return ((Vector3)(ref direction)).normalized; } public override void OnEnter() { //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) //IL_009c: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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) //IL_00af: 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_00bc: 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_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0103: 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_0128: 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_012d: 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_013d: 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_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) _moveDir = forwardDirection(); if (!Object.op_Implicit((Object)(object)dashEffectPrefab)) { dashEffectPrefab = Object.Instantiate(DrifterAssets.dashEffect, ((EntityState)this).modelLocator.modelBaseTransform); dashParticles = dashEffectPrefab.GetComponent(); } if (Object.op_Implicit((Object)(object)dashEffectPrefab)) { dashParticles.Play(); } base.OnEnter(); animator = ((EntityState)this).GetModelAnimator(); Vector3 val = (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) ? ((EntityState)this).characterDirection.forward : _moveDir); Vector3 val2 = Vector3.Cross(Vector3.up, val); float num = Vector3.Dot(_moveDir, val); float num2 = Vector3.Dot(_moveDir, val2); RecalculateRollSpeed(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterMotor.velocity = _moveDir * rollSpeed; } Vector3 val3 = (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) ? ((EntityState)this).characterMotor.velocity : Vector3.zero); previousPosition = ((EntityState)this).transform.position - val3; ((EntityState)this).PlayAnimation("FullBody, Override", "Dash", "Roll.playbackRate", duration, 0f); Util.PlaySound(dodgeSoundString, ((EntityState)this).gameObject); if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.HiddenInvincibility, 0.5f * duration); } ModelLocator component = ((EntityState)this).GetComponent(); if (Object.op_Implicit((Object)(object)component)) { Transform modelTransform = component.modelTransform; if (Object.op_Implicit((Object)(object)modelTransform)) { temporaryOverlay = TemporaryOverlayManager.AddOverlay(((Component)modelTransform).gameObject); temporaryOverlay.duration = duration; temporaryOverlay.destroyComponentOnEnd = true; temporaryOverlay.originalMaterial = Addressables.LoadAssetAsync((object)"RoR2/Base/Merc/matMercEnergized.mat").WaitForCompletion(); temporaryOverlay.inspectorCharacterModel = ((Component)modelTransform).GetComponent(); temporaryOverlay.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); temporaryOverlay.animateShaderAlpha = true; temporaryOverlay.AddToCharacterModel(((Component)modelTransform).GetComponent()); } } } private void RecalculateRollSpeed() { rollSpeed = ((BaseState)this).moveSpeedStat * Mathf.Lerp(initialSpeedCoefficient, finalSpeedCoefficient, ((EntityState)this).fixedAge / duration); } public override void FixedUpdate() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_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_00c1: 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_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); RecalculateRollSpeed(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.forward = _moveDir; } if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { ((EntityState)this).cameraTargetParams.fovOverride = Mathf.Lerp(dodgeFOV, 60f, ((EntityState)this).fixedAge / duration); } Vector3 val = ((EntityState)this).transform.position - previousPosition; Vector3 normalized = ((Vector3)(ref val)).normalized; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) && normalized != Vector3.zero) { Vector3 val2 = normalized * rollSpeed; float num = Mathf.Max(Vector3.Dot(val2, _moveDir), 0f); val2 = _moveDir * num; ((EntityState)this).characterMotor.velocity = val2; } previousPosition = ((EntityState)this).transform.position; if (((EntityState)this).isAuthority && ((EntityState)this).inputBank.skill1.down && HasUpgrade(DrifterItems.flashStepItemDef)) { ((EntityState)this).outer.SetNextState((EntityState)(object)new FlashStep()); interrupted = true; } else if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { ((EntityState)this).cameraTargetParams.fovOverride = -1f; } ((EntityState)this).OnExit(); if (((EntityState)this).inputBank.skill3.down && !interrupted) { ((EntityState)this).outer.SetNextState((EntityState)(object)new DrifterSkateState()); } else { ((EntityState)this).characterMotor.disableAirControlUntilCollision = false; } } public override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); } 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 class DetermineDash : DrifterBaseState { public override void OnEnter() { if (((EntityState)this).characterMotor.isGrounded) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Roll()); } else { ((EntityState)this).outer.SetNextState((EntityState)(object)new AirDash()); } base.OnEnter(); } } public class FlashStep : DrifterBaseMelee { public Vector3 dashDirection; public float initialDashSpeed = 7.5f; public float finalDashSpeed = 1f; private float dashSpeed; public override void OnEnter() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: 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) //IL_004d: 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_0124: 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_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(true); hitboxGroupName = "SwordGroup"; damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)32), (DamageTypeExtended)0, (DamageSource)1) | new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)16384), (DamageTypeExtended)0, (DamageSource)1); procCoefficient = 1f; pushForce = 300f; bonusForce = Vector3.zero; baseDuration = 0.35f; damageCoefficient = 3.6f; attackStartPercentTime = 0.2f; attackEndPercentTime = 0.8f; earlyExitPercentTime = 0.85f; hitStopDuration = 0f; attackRecoil = 0f; hitHopVelocity = 0f; swingSoundString = "HenrySwordSwing"; hitSoundString = ""; muzzleString = ((swingIndex % 2 == 0) ? "SwingRight" : "SwingLeft"); playbackRateParam = "Slash.playbackRate"; swingEffectPrefab = DrifterAssets.swordSwingEffect; hitEffectPrefab = DrifterAssets.swordHitImpactEffect; impactSound = DrifterAssets.swordHitSoundEvent.index; RecalculateSpeed(); dashDirection = ((EntityState)this).characterDirection.forward; base.OnEnter(); } public override void FixedUpdate() { //IL_000f: 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) RecalculateSpeed(); ((EntityState)this).characterMotor.velocity = dashDirection * dashSpeed; base.FixedUpdate(); } protected override void PlayAttackAnimation() { ((EntityState)this).PlayCrossfade("FullBody, Override", "FlashStep", playbackRateParam, duration, 0.1f * duration); } protected override void PlaySwingEffect() { base.PlaySwingEffect(); } protected override void OnHitEnemyAuthority() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) base.OnHitEnemyAuthority(); if (((EntityState)this).isAuthority) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } } public override void OnExit() { ((Component)((EntityState)this).GetModelChildLocator().FindChild("SwordModel")).gameObject.SetActive(false); base.OnExit(); } private void RecalculateSpeed() { dashSpeed = ((BaseState)this).moveSpeedStat * Mathf.Lerp(initialDashSpeed, finalDashSpeed, ((EntityState)this).fixedAge / (duration * 0.6f)); } } public class Roll : DrifterBaseState { public static float duration = 0.5f; public static float initialSpeedCoefficient = 5f; public static float finalSpeedCoefficient = 2.5f; public static float flashstepEndWindow = 0.25f; public static string dodgeSoundString = "Play_Drifter_Dash"; public static float dodgeFOV = DodgeState.dodgeFOV; private float rollSpeed; private Animator animator; private Vector3 previousPosition; private GameObject dashEffectPrefab; private ParticleSystem dashParticles; private TemporaryOverlayInstance temporaryOverlay; private Vector3 _moveDir; private bool interrupted; public virtual bool isAirDash() { return false; } public virtual Vector3 forwardDirection() { //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_002b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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_0045: 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_0049: Unknown result type (might be due to invalid IL or missing references) Vector3 val = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector); Vector3 normalized = ((Vector3)(ref val)).normalized; normalized.y = 0f; return normalized; } public override void OnEnter() { //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) //IL_009c: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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) //IL_00af: 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_00bc: 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_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0103: 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_0128: 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_012d: 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_013d: 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_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) _moveDir = forwardDirection(); if (!Object.op_Implicit((Object)(object)dashEffectPrefab)) { dashEffectPrefab = Object.Instantiate(DrifterAssets.dashEffect, ((EntityState)this).modelLocator.modelBaseTransform); dashParticles = dashEffectPrefab.GetComponent(); } if (Object.op_Implicit((Object)(object)dashEffectPrefab)) { dashParticles.Play(); } base.OnEnter(); animator = ((EntityState)this).GetModelAnimator(); Vector3 val = (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) ? ((EntityState)this).characterDirection.forward : _moveDir); Vector3 val2 = Vector3.Cross(Vector3.up, val); float num = Vector3.Dot(_moveDir, val); float num2 = Vector3.Dot(_moveDir, val2); RecalculateRollSpeed(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterMotor.velocity = _moveDir * rollSpeed; } Vector3 val3 = (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) ? ((EntityState)this).characterMotor.velocity : Vector3.zero); previousPosition = ((EntityState)this).transform.position - val3; ((EntityState)this).PlayAnimation("FullBody, Override", "Dash", "Roll.playbackRate", duration, 0f); Util.PlaySound(dodgeSoundString, ((EntityState)this).gameObject); if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.HiddenInvincibility, 0.5f * duration); } ModelLocator component = ((EntityState)this).GetComponent(); if (Object.op_Implicit((Object)(object)component)) { Transform modelTransform = component.modelTransform; if (Object.op_Implicit((Object)(object)modelTransform)) { temporaryOverlay = TemporaryOverlayManager.AddOverlay(((Component)modelTransform).gameObject); temporaryOverlay.duration = duration; temporaryOverlay.destroyComponentOnEnd = true; temporaryOverlay.originalMaterial = Addressables.LoadAssetAsync((object)"RoR2/Base/Merc/matMercEnergized.mat").WaitForCompletion(); temporaryOverlay.inspectorCharacterModel = ((Component)modelTransform).GetComponent(); temporaryOverlay.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); temporaryOverlay.animateShaderAlpha = true; temporaryOverlay.AddToCharacterModel(((Component)modelTransform).GetComponent()); } } } private void RecalculateRollSpeed() { rollSpeed = ((BaseState)this).moveSpeedStat * Mathf.Lerp(initialSpeedCoefficient, finalSpeedCoefficient, ((EntityState)this).fixedAge / duration); } public override void FixedUpdate() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_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_00c1: 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_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); RecalculateRollSpeed(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.forward = _moveDir; } if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { ((EntityState)this).cameraTargetParams.fovOverride = Mathf.Lerp(dodgeFOV, 60f, ((EntityState)this).fixedAge / duration); } Vector3 val = ((EntityState)this).transform.position - previousPosition; Vector3 normalized = ((Vector3)(ref val)).normalized; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) && normalized != Vector3.zero) { Vector3 val2 = normalized * rollSpeed; float num = Mathf.Max(Vector3.Dot(val2, _moveDir), 0f); val2 = _moveDir * num; ((EntityState)this).characterMotor.velocity = val2; } previousPosition = ((EntityState)this).transform.position; if (((EntityState)this).isAuthority && ((EntityState)this).inputBank.skill1.down && HasUpgrade(DrifterItems.flashStepItemDef)) { ((EntityState)this).outer.SetNextState((EntityState)(object)new FlashStep()); interrupted = true; } else if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { ((EntityState)this).cameraTargetParams.fovOverride = -1f; } ((EntityState)this).OnExit(); if (((EntityState)this).inputBank.skill3.down && !interrupted) { ((EntityState)this).outer.SetNextState((EntityState)(object)new DrifterSkateState()); } else { ((EntityState)this).characterMotor.disableAirControlUntilCollision = false; } } public override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); } 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; } } } namespace DrifterMod.Survivors.Drifter.SkillStates.Sycom { public class BaseSycomState : BaseState { public EntityStateMachine esm; public GameObject owner; public Rigidbody rb; public CharacterBody ownerBody; public SycomTracker tracker; internal GameObject spawnRef; public override void OnEnter() { esm = ((EntityState)this).GetComponent(); rb = ((EntityState)this).GetComponent(); owner = ((EntityState)this).GetComponent().ownerObject; ownerBody = owner.GetComponent(); tracker = ((EntityState)this).GetComponent(); ((BaseState)this).OnEnter(); } } public class FollowState : BaseSycomState { public float followSpeed = 24f; public float detectRadius = 15f; public GameObject interactableObj; private List instancesList; private float speed; public override void OnEnter() { base.OnEnter(); GetInteractableInstances(); } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: 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_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_008f: 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_009d: 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) if (Object.op_Implicit((Object)(object)owner) && Object.op_Implicit((Object)(object)rb) && Object.op_Implicit((Object)(object)tracker.followPos)) { RecalcSpeed(); if (Vector3.Distance(tracker.followPos.position, ((EntityState)this).transform.position) > 0.05f) { Rigidbody obj = rb; Vector3 val = tracker.followPos.position - ((EntityState)this).transform.position; obj.velocity = ((Vector3)(ref val)).normalized * speed; ((EntityState)this).transform.LookAt(tracker.followPos, Vector3.up); } else { rb.velocity = Vector3.zero; } } interactableObj = CheckForInteractable(); if ((Object)(object)interactableObj != (Object)null && ((EntityState)this).fixedAge > 0.5f) { esm.SetNextState((EntityState)(object)new InteractableHoverState { interactableToFollow = interactableObj }); } else { ((EntityState)this).FixedUpdate(); } } private void RecalcSpeed() { //IL_0018: 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) speed = Mathf.Lerp(0f, followSpeed, Vector3.Distance(tracker.followPos.position, ((EntityState)this).transform.position) / 10f); } private void GetInteractableInstances() { instancesList = InstanceTracker.GetInstancesList(); } public GameObject CheckForInteractable() { //IL_007c: 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) GameObject result = null; float num = detectRadius; foreach (PurchaseInteraction instances in instancesList) { if ((Object)(object)instances == (Object)null || !instances.available) { continue; } Interactor component = owner.GetComponent(); if (!Object.op_Implicit((Object)(object)component) || instances.CanBeAffordedByInteractor(component)) { float num2 = Vector3.Distance(owner.transform.position, ((Component)instances).transform.position); if (num2 < num) { num = num2; result = ((Component)instances).gameObject; } } } return result; } } public class InteractableHoverState : BaseSycomState { public float maxLingerDistance = 17f; public float moveSpeed = 25f; public GameObject interactableToFollow; public Vector3 offset = new Vector3(0f, 2f, 0f); private float speed; private Vector3 moveToTransform; private Highlight cum2; private bool alreadyHighlighted; public override void OnEnter() { //IL_0069: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: 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_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_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018e: 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) base.OnEnter(); Log.Debug("Highlighted Object: " + (object)interactableToFollow); Collider componentInChildren = interactableToFollow.GetComponentInChildren(); cum2 = interactableToFollow.GetComponent(); Renderer componentInChildren2 = interactableToFollow.GetComponentInChildren(); Bounds bounds; if (Object.op_Implicit((Object)(object)componentInChildren)) { Vector3 position = interactableToFollow.transform.position; bounds = interactableToFollow.GetComponentInChildren().bounds; float y = ((Bounds)(ref bounds)).max.y; bounds = interactableToFollow.GetComponentInChildren().bounds; moveToTransform = position + new Vector3(0f, y - ((Bounds)(ref bounds)).center.y + offset.y, 0f); } else if (Object.op_Implicit((Object)(object)componentInChildren2)) { Vector3 position2 = interactableToFollow.transform.position; bounds = interactableToFollow.GetComponentInChildren().bounds; float y2 = ((Bounds)(ref bounds)).max.y; bounds = interactableToFollow.GetComponentInChildren().bounds; moveToTransform = position2 + new Vector3(0f, y2 - ((Bounds)(ref bounds)).center.y + offset.y, 0f); } else if (Object.op_Implicit((Object)(object)cum2)) { moveToTransform = interactableToFollow.transform.position + new Vector3(0f, offset.y, 0f); } if (Object.op_Implicit((Object)(object)cum2) && cum2.isOn) { alreadyHighlighted = true; } if (!alreadyHighlighted && Object.op_Implicit((Object)(object)cum2)) { cum2.isOn = true; } Util.PlaySound("Play_Drifter_Sycom_Ping", ((EntityState)this).gameObject); } public override void OnExit() { ((EntityState)this).OnExit(); if (!alreadyHighlighted && Object.op_Implicit((Object)(object)cum2)) { cum2.isOn = false; } } public override void FixedUpdate() { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: 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) if (!((NetworkBehaviour)ownerBody).hasAuthority) { return; } if (Object.op_Implicit((Object)(object)owner) && Object.op_Implicit((Object)(object)rb) && Object.op_Implicit((Object)(object)interactableToFollow)) { _ = moveToTransform; if (true) { RecalcSpeed(); Rigidbody obj = rb; Vector3 val = moveToTransform - ((EntityState)this).transform.position; obj.velocity = ((Vector3)(ref val)).normalized * speed; if (Vector3.Distance(moveToTransform, ((EntityState)this).transform.position) > 0.05f) { ((EntityState)this).transform.LookAt(moveToTransform, Vector3.up); } else { ((EntityState)this).transform.LookAt(tracker.followPos, Vector3.up); } if (Vector3.Distance(owner.transform.position, interactableToFollow.transform.position) > maxLingerDistance || !interactableToFollow.GetComponent().available) { esm.SetNextStateToMain(); return; } } } ((EntityState)this).FixedUpdate(); } private void RecalcSpeed() { //IL_000e: 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) speed = Mathf.Lerp(0f, moveSpeed, Vector3.Distance(moveToTransform, ((EntityState)this).transform.position)); } } } namespace DrifterMod.Survivors.Drifter.Items { public class BaseDiscoverableUpgradeItem : BaseUpgradeItem { public int weapon = 0; private SkillDef ReturnDef() { return (SkillDef)(weapon switch { 1 => DrifterSurvivor.blunderbusSkillDef, 2 => DrifterSurvivor.railgunSkillDef, _ => DrifterSurvivor.magnumSkillDef, }); } public virtual void Initialize() { } public override void Behaviour() { Initialize(); base.Behaviour(); SkillOverride(((ItemBehavior)this).body.skillLocator.secondary, ReturnDef()); } public override void DisableBehaviour() { base.DisableBehaviour(); ResetSkills(((ItemBehavior)this).body.skillLocator.secondary, ReturnDef()); } } public class BaseUpgradeItem : ItemBehavior { public string mutationName; private bool hasPlayedSfx; public void SkillOverride(GenericSkill family, SkillDef skillReplacement) { family.SetSkillOverride((object)((Component)family).gameObject, skillReplacement, (SkillOverridePriority)3); } public void ResetSkills(GenericSkill family, SkillDef skillReplacement) { family.UnsetSkillOverride((object)((Component)family).gameObject, skillReplacement, (SkillOverridePriority)3); } public void SetBool(string boolName, bool enable) { } private void PlaySound() { if (base.stack == 1 && !hasPlayedSfx) { hasPlayedSfx = true; Util.PlaySound("Play_Ghoul_Mutation_" + mutationName + "_Picked_Up", ((Component)this).gameObject); } } public virtual void Behaviour() { } public virtual void DisableBehaviour() { } private void Awake() { ((Behaviour)this).enabled = false; } private void OnEnable() { Behaviour(); } private void FixedUpdate() { PlaySound(); } private void OnDisable() { if (Object.op_Implicit((Object)(object)base.body)) { DisableBehaviour(); } } } public class BlunderbusItem : BaseDiscoverableUpgradeItem { public override void Initialize() { weapon = 1; } } public class MagnumItem : BaseDiscoverableUpgradeItem { } public class RailgunItem : BaseDiscoverableUpgradeItem { public override void Initialize() { weapon = 2; } } public class SycomItem : ItemBehavior { private GameObject sycomPrefab = DrifterAssets.sycom; private GameObject sycomInstance; private Vector3 spawnPos; private void Awake() { ((Behaviour)this).enabled = false; } private void OnEnable() { //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_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_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) if (Object.op_Implicit((Object)(object)((Component)this).GetComponent().modelTransform.Find("SycomPos"))) { spawnPos = ((Component)this).GetComponent().modelTransform.Find("SycomPos").position; } else { spawnPos = ((Component)this).transform.position; } sycomInstance = Object.Instantiate(sycomPrefab, spawnPos, Quaternion.identity); sycomInstance.GetComponent().ownerObject = ((Component)this).gameObject; NetworkServer.Spawn(sycomInstance); } private void FixedUpdate() { } private void OnDisable() { if (Object.op_Implicit((Object)(object)base.body)) { Object.Destroy((Object)(object)sycomInstance); } } } } namespace DrifterMod.Survivors.Drifter.Components { public class DrifterCrosshair : MonoBehaviour { public SkillLocator sl; public DrifterHLDTracker track; public ChildLocator cl; public CrosshairController crosshairController { get; set; } private void Start() { crosshairController = ((Component)this).GetComponentInParent(); sl = ((Component)crosshairController.hudElement.targetCharacterBody).gameObject.GetComponent(); track = ((Component)crosshairController.hudElement.targetCharacterBody).gameObject.GetComponent(); cl = ((Component)this).GetComponent(); } private void FixedUpdate() { if (Object.op_Implicit((Object)(object)sl) && Object.op_Implicit((Object)(object)cl)) { GunUI(track.gunActive); } } private void GunUI(bool enable) { switch (sl.secondary.skillDef.skillNameToken) { case "VCR_DRIFTER_SECONDARY_SHOTGUN_NAME": ((Component)cl.FindChild("Shotgun")).gameObject.SetActive(enable); break; case "VCR_DRIFTER_BLUNDERBUSS_NAME": ((Component)cl.FindChild("Shotgun")).gameObject.SetActive(enable); break; case "VCR_DRIFTER_SECONDARY_LASERGUN_NAME": ((Component)cl.FindChild("LaserGun")).gameObject.SetActive(enable); break; case "VCR_DRIFTER_RAILGUN_NAME": ((Component)cl.FindChild("LaserGun")).gameObject.SetActive(enable); break; default: ((Component)cl.FindChild("Pistol")).gameObject.SetActive(enable); break; } } } public class DrifterHLDTracker : MonoBehaviour { public bool dashSlashed; public int hitProgress; public int hitConversion; internal bool gunActive; public bool shouldHaveSelfHeal; internal float medKitProgress; internal float medkitVal = 3f; internal float medKitRequirement; public float tempRadius = 0.08f; public float tempRaise = 0.08f; public bool lowHPCough; public float coughChance = 6f; private DrifterSycomComponent _sycomTracker; public DrifterSycomComponent sycomTracker { get { if (Object.op_Implicit((Object)(object)_sycomTracker)) { return _sycomTracker; } if (Object.op_Implicit((Object)(object)((Component)this).GetComponent()) && Object.op_Implicit((Object)(object)((Component)this).GetComponent().master)) { DrifterSycomComponent drifterSycomComponent = ((Component)((Component)this).GetComponent().master).GetComponent(); if (!Object.op_Implicit((Object)(object)drifterSycomComponent)) { drifterSycomComponent = ((Component)((Component)this).GetComponent().master).gameObject.AddComponent(); } _sycomTracker = drifterSycomComponent; return drifterSycomComponent; } return null; } } private void Awake() { } private void Start() { } private void Update() { } public void AddMedkitProgress(int amount) { medKitProgress += amount; if (medKitProgress >= medKitRequirement) { medKitProgress = 0f; shouldHaveSelfHeal = true; } } public void GiveGunAmmo(int newProgress) { hitProgress += newProgress; SkillLocator component = ((Component)this).GetComponent(); switch (component.secondary.skillDef.skillName) { case "DrifterMagnum": hitConversion = 2; break; case "DrifterShotgun": hitConversion = 2; break; case "DrifterBlunderbuss": hitConversion = 2; break; case "DrifterLasergun": hitConversion = 3; break; case "DrifterRailgun": hitConversion = 3; break; default: hitConversion = 1; break; } if (hitProgress >= hitConversion && hitConversion != 0 && component.secondary.stock < component.secondary.maxStock) { hitProgress = 0; component.secondary.RestockSteplike(); } } } public class DrifterSycomComponent : MonoBehaviour { private Inventory inventory; private void Start() { inventory = ((Component)this).GetComponent(); if (Object.op_Implicit((Object)(object)inventory)) { inventory.onItemAddedClient += Inv_onItemAddedClient; inventory.onInventoryChanged += Inv_onInventoryChanged; } } private void Inv_onInventoryChanged() { if (Object.op_Implicit((Object)(object)inventory) && inventory.GetItemCount(DrifterItems.sycomItemDef) == 0) { inventory.GiveItem(DrifterItems.sycomItemDef, 1); } } private void OnDestroy() { if (Object.op_Implicit((Object)(object)inventory)) { inventory.onItemAddedClient -= Inv_onItemAddedClient; inventory.onInventoryChanged -= Inv_onInventoryChanged; } } private void Inv_onItemAddedClient(ItemIndex obj) { } } public class LowHPOSP : MonoBehaviour { public static float ospThreshold = 0.2f; public static float ospTimer = 0.5f; public static float ospInvul = 0.5f; public CharacterBody characterBody; public HealthComponent healthComponent; private float ospStopwatch; public void Awake() { characterBody = ((Component)this).GetComponent(); healthComponent = characterBody.healthComponent; ospStopwatch = 0f; } public void FixedUpdate() { if (ospStopwatch > 0f) { ospStopwatch -= Time.fixedDeltaTime; } if (TriggerOSP() && Object.op_Implicit((Object)(object)healthComponent) && !(healthComponent.health <= healthComponent.fullHealth * ospThreshold)) { } } public void StartOspTimer() { if (CanTriggerOSP()) { ospStopwatch = ospTimer; } } public bool TriggerOSP() { bool result = false; if (CanTriggerOSP() && ospStopwatch > 0f) { result = true; ospStopwatch = 0f; characterBody.AddTimedBuff(Buffs.HiddenInvincibility, ospInvul); characterBody.outOfDangerStopwatch = 0f; } return result; } public bool CanTriggerOSP() { return !characterBody.HasBuff(DrifterBuffs.disableOSPBuff); } } public class SycomTracker : MonoBehaviour { public GameObject refObject; public Transform followPos; public GameObject owner; public void Start() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_005d: Unknown result type (might be due to invalid IL or missing references) owner = ((Component)this).GetComponent().ownerObject; refObject = new GameObject("FollowPosition"); refObject.transform.SetParent(owner.GetComponent().modelTransform); refObject.transform.localPosition = new Vector3(0f, 1.69f, -1.17f); followPos = refObject.transform; } public void OnDestroy() { Object.Destroy((Object)(object)refObject); } } } namespace DrifterMod.Survivors.Drifter.Achievements { [RegisterAchievement("VCR_DRIFTER_GrandMasteryAchievement", "VCR_DRIFTER_GrandMasteryUnlockable", null, 10u, null)] public class DrifterGrandMasteryAchievement : BaseMasteryAchievement { public const string identifier = "VCR_DRIFTER_GrandMasteryAchievement"; public const string unlockableIdentifier = "VCR_DRIFTER_GrandMasteryUnlockable"; public override string RequiredCharacterBody => CharacterBase.instance.bodyName; public override float RequiredDifficultyCoefficient => 3.5f; } [RegisterAchievement("VCR_DRIFTER_masteryAchievement", "VCR_DRIFTER_masteryUnlockable", null, 10u, null)] public class DrifterMasteryAchievement : BaseMasteryAchievement { public const string identifier = "VCR_DRIFTER_masteryAchievement"; public const string unlockableIdentifier = "VCR_DRIFTER_masteryUnlockable"; public override string RequiredCharacterBody => CharacterBase.instance.bodyName; public override float RequiredDifficultyCoefficient => 3f; } }