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 System.Text.RegularExpressions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.Captain.Weapon; using EntityStates.Drifter; using EntityStates.Railgunner.Backpack; using EntityStates.Railgunner.Weapon; using FenrisSkills.Skills; using FenrisSkills.Skills.Components; using FenrisSkills.Skills.States.Captain; using FenrisSkills.Skills.States.Chef; using FenrisSkills.Skills.States.Railgunner; using Microsoft.CodeAnalysis; using R2API; using Rewired.ComponentControls.Effects; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.Audio; using RoR2.ContentManagement; using RoR2.EntityLogic; using RoR2.ExpansionManagement; using RoR2.HudOverlay; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using RoR2BepInExPack.GameAssetPaths.Version_1_39_0; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering.PostProcessing; 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("FenrisSkills")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+c8957e4da98aac4f209e4b429b874a0b0939c4c7")] [assembly: AssemblyProduct("FenrisSkills")] [assembly: AssemblyTitle("FenrisSkills")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace FenrisSkills { public class Assets { public static AssetBundle assetBundle; public static GameObject railCannonProjectilePrefab; public static GameObject railCannonBulletTracerPrefab; public static GameObject railCannonBulletTracerCritPrefab; public static GameObject railCannonImpactPrefab; public static GameObject pyroOverlayPrefab; public static GameObject pyroTracerColdEffectPrefab; public static GameObject pyroHitColdEffectPrefab; public static GameObject pyroTracerWarmEffectPrefab; public static GameObject pyroHitWarmEffectPrefab; public static GameObject pyroTracerHotEffectPrefab; public static GameObject pyroHitHotEffectPrefab; public static GameObject mineExplosiveProjectilePrefab; public static void Init() { GetAssetBundle(); TryBuildAsset("Rail Cannon Assets", CreateRailCannonAssets); TryBuildAsset("Snipe Pyro Assets", CreateSnipePyroAssets); TryBuildAsset("Mine Explosive Assets", CreateMineExplosiveAssets); } private static void TryBuildAsset(string assetName, Action buildAction) { try { buildAction(); } catch (Exception arg) { Log.Warning($"Failed to complete building asset {assetName}!\n\n{arg}"); } } private static void GetAssetBundle() { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("FenrisSkills.mwmwfskillsbundle"); if (stream != null) { assetBundle = AssetBundle.LoadFromStream(stream); } } private static void CreateRailCannonAssets() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0151: 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) GameObject railCannonProjectileChild = assetBundle.LoadAsset("SpawnBulletProjectile"); railCannonProjectileChild.AddComponent(); railCannonProjectilePrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_Base_Captain.CaptainAirstrikeProjectile1_prefab).WaitForCompletion(), "RailCannonProjectile"); TryBuildAsset("Rail Cannon Projectile Prefab", delegate { ProjectileImpactExplosion component = railCannonProjectilePrefab.GetComponent(); ((ProjectileExplosion)component).fireChildren = true; ((ProjectileExplosion)component).childrenCount = 1; ((ProjectileExplosion)component).childrenDamageCoefficient = 1f; ((ProjectileExplosion)component).childrenProjectilePrefab = railCannonProjectileChild; ((ProjectileExplosion)component).blastRadius = 0f; }); railCannonBulletTracerPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.TracerRailgunSuper_prefab).WaitForCompletion(), "RailCannonTracer", false); TryBuildAsset("Rail Cannon Bullet Tracer Prefab", delegate { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0055: 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_0080: 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_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown //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) Tracer component = railCannonBulletTracerPrefab.GetComponent(); component.beamDensity = 1f; component.speed = 600f; railCannonBulletTracerPrefab.transform.localScale = Vector3.one * 6f; railCannonBulletTracerPrefab.transform.Find("FX/BeamParticles, Rings").localScale = Vector3.one * 20f; Transform val = railCannonBulletTracerPrefab.transform.Find("FX/mdlRailgunnerBeam"); val.localScale = Vector3.one * 2f; SkinnedMeshRenderer component2 = ((Component)val.Find("mdlRailgunnerBeamMesh")).GetComponent(); Material val2 = new Material(((Renderer)component2).sharedMaterial); val2.SetTexture("_RemapTex", Addressables.LoadAssetAsync((object)RoR2_Base_Common_ColorRamps.texRampGolem_png).WaitForCompletion()); val2.SetFloat("_AlphaBoost", 5f); val2.SetInt("_Cull", 0); ((Renderer)component2).sharedMaterial = val2; }); railCannonBulletTracerCritPrefab = PrefabAPI.InstantiateClone(railCannonBulletTracerPrefab, "RailCannonTracerCrit", false); TryBuildAsset("Rail Cannon Bullet Tracer Crit Prefab", delegate { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) SkinnedMeshRenderer component = ((Component)railCannonBulletTracerCritPrefab.transform.Find("FX/mdlRailgunnerBeam/mdlRailgunnerBeamMesh")).GetComponent(); Material val = new Material(((Renderer)component).sharedMaterial); val.SetTexture("_RemapTex", Addressables.LoadAssetAsync((object)RoR2_DLC2_Items_SpeedBoostPickup.texSpeedBoostPickupThornRamp_png).WaitForCompletion()); ((Renderer)component).sharedMaterial = val; }); railCannonImpactPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_Base_Captain.CaptainAirstrikeAltImpact_prefab).WaitForCompletion(), "RailCannonImpact", false); TryBuildAsset("Rail Cannon Impact Prefab", delegate { //IL_0063: 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_0103: 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_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_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) Object.Destroy((Object)(object)railCannonImpactPrefab.GetComponent()); Object.Destroy((Object)(object)((Component)railCannonImpactPrefab.transform.Find("captain fletchette")).gameObject); Object.Destroy((Object)(object)((Component)railCannonImpactPrefab.transform.Find("PP")).GetComponent()); railCannonImpactPrefab.transform.Find("Particles").localScale = Vector3.one * 3f; railCannonImpactPrefab.AddComponent().duration = 10f; EffectComponent component = railCannonImpactPrefab.GetComponent(); component.applyScale = false; component.soundName = "Play_railgunner_R_fire"; ShakeEmitter component2 = railCannonImpactPrefab.GetComponent(); component2.wave.amplitude = 3f; component2.wave.frequency = 30f; component2.duration = 0.4f; component2.radius = 200f; ((Component)railCannonImpactPrefab.transform.Find("Particles/Flames")).transform.localScale = Vector3.one * 3f; ParticleSystem component3 = ((Component)railCannonImpactPrefab.transform.Find("Particles/Dust, Directional")).GetComponent(); ShapeModule shape = component3.shape; ((ShapeModule)(ref shape)).radius = ((ShapeModule)(ref shape)).radius * 3f; Transform val = railCannonImpactPrefab.transform.Find("Particles/Decal"); ((Component)val).GetComponent().sharedMesh = Addressables.LoadAssetAsync((object)RoR2_DLC2_FalseSonBoss.meshLunarRainSummonVFX1_FBX_Sphere001_).WaitForCompletion(); ((Renderer)((Component)val).GetComponent()).sharedMaterial = assetBundle.LoadAsset("InvisibleMaterial"); }); railCannonProjectilePrefab.GetComponent().impactEffect = railCannonImpactPrefab; GameObject railCannonGhostPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_Base_Captain.CaptainAirstrikeAltGhost_prefab).WaitForCompletion(), "RailCannonGhost", false); TryBuildAsset("Rail Cannon Ghost Prefab", delegate { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //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) Transform transform = railCannonGhostPrefab.transform; transform.localScale *= 0.7f; Object.Destroy((Object)(object)((Component)railCannonGhostPrefab.transform.Find("AirstrikeOrientation")).gameObject); Object.Destroy((Object)(object)railCannonGhostPrefab.GetComponent()); Object.Destroy((Object)(object)railCannonGhostPrefab.GetComponent()); Object.Destroy((Object)(object)railCannonGhostPrefab.GetComponent()); Object.Destroy((Object)(object)railCannonGhostPrefab.GetComponent()); PlaySoundOnDelay playSoundOnDelay = railCannonGhostPrefab.AddComponent(); playSoundOnDelay.soundString = "Play_captain_shift_preImpact"; playSoundOnDelay.delay = 0.8f; GameObject obj = railCannonGhostPrefab; AkBank[] array = new AkBank[1]; GameObject obj2 = Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerBody_prefab).WaitForCompletion(); array[0] = ((obj2 != null) ? obj2.GetComponent() : null); GiveAkBanksToObject(obj, (AkBank[])(object)array); railCannonProjectilePrefab.GetComponent().ghostPrefab = railCannonGhostPrefab; Transform val = railCannonGhostPrefab.transform.Find("AreaIndicatorCenter"); ((Component)val).GetComponent().slowRotationSpeed = 40f; ((Component)val.Find("IndicatorRing")).GetComponent().timeMax = 2f; ObjectTransformCurve[] componentsInChildren = ((Component)val).GetComponentsInChildren(); ObjectTransformCurve[] array2 = componentsInChildren; foreach (ObjectTransformCurve val2 in array2) { val2.timeMax = 2f; } }); Content.CreateAndAddEffectDef(railCannonImpactPrefab); Content.CreateAndAddEffectDef(railCannonBulletTracerPrefab); Content.CreateAndAddEffectDef(railCannonBulletTracerCritPrefab); ContentPacks.projectilePrefabs.Add(railCannonProjectileChild); ContentPacks.projectilePrefabs.Add(railCannonProjectilePrefab); } private static void CreateSnipePyroAssets() { //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_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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_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_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) pyroOverlayPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerOverchargeUIReady_prefab).WaitForCompletion(), "PyroSnipeOverlay", false); TryBuildAsset("Pyro Overlay Prefab", delegate { //IL_0032: 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_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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) Color val = default(Color); ((Color)(ref val))..ctor(1f, 0.48f, 0.27f); TextMeshProUGUI component = ((Component)pyroOverlayPrefab.transform.Find("BarContainer/SoftGlow/Text, Normal")).GetComponent(); ((TMP_Text)component).m_fontColor32 = Color32.op_Implicit(val); ((TMP_Text)component).m_fontColor = val; Color color = default(Color); ((Color)(ref color))..ctor(0.99f, 0.56f, 0.39f); Image component2 = ((Component)pyroOverlayPrefab.transform.Find("BarContainer/Inner/FillBarDimensions/FillBar")).GetComponent(); ((Graphic)component2).color = color; Image component3 = ((Component)pyroOverlayPrefab.transform.Find("BarContainer/Inner/SpinnySquare")).GetComponent(); ((Graphic)component3).color = color; Image component4 = ((Component)pyroOverlayPrefab.transform.Find("BarContainer/Outer")).GetComponent(); ((Graphic)component4).color = color; PyroUIColorController pyroUIColorController = pyroOverlayPrefab.AddComponent(); pyroUIColorController.imagesToUpdate = (Image[])(object)new Image[3] { component2, component3, component4 }; }); pyroTracerColdEffectPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.TracerRailgunSuper_prefab).WaitForCompletion(), "PyroTracerCold", false); TryBuildAsset("Pyro Tracer Cold Effect Prefab", delegate { //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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_0061: 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_009a: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Expected O, but got Unknown //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Expected O, but got Unknown //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Expected O, but got Unknown //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Expected O, but got Unknown //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) Texture val = Addressables.LoadAssetAsync((object)RoR2_Base_Common_ColorRamps.texRampGolem_png).WaitForCompletion(); LineRenderer component = ((Component)pyroTracerColdEffectPrefab.transform.Find("FX/Brief/Beam, Flash Briefly")).GetComponent(); Material val2 = new Material(((Renderer)component).sharedMaterial); val2.SetFloat("_Boost", 3.5f); val2.SetColor("_TintColor", new Color(0.67f, 0.03f, 0f)); ((Renderer)component).sharedMaterial = val2; component = ((Component)pyroTracerColdEffectPrefab.transform.Find("FX/Longer/Beam, Linger")).GetComponent(); Material val3 = new Material(((Renderer)component).sharedMaterial); val3.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val3; SkinnedMeshRenderer component2 = ((Component)pyroTracerColdEffectPrefab.transform.Find("FX/mdlRailgunnerBeam/mdlRailgunnerBeamMesh")).GetComponent(); Material val4 = new Material(((Renderer)component2).sharedMaterial); val4.SetTexture("_RemapTex", val); ((Renderer)component2).sharedMaterial = val4; ParticleSystemRenderer component3 = ((Component)pyroTracerColdEffectPrefab.transform.Find("FX/BeamParticles, Rings")).GetComponent(); Material val5 = new Material(((Renderer)component3).sharedMaterial); val5.SetTexture("_RemapTex", val); ((Renderer)component3).sharedMaterial = val5; component3 = ((Component)pyroTracerColdEffectPrefab.transform.Find("FX/BeamParticles, Rings/BeamParticles, Small")).GetComponent(); Material val6 = new Material(((Renderer)component3).sharedMaterial); val6.SetTexture("_RemapTex", val); ((Renderer)component3).sharedMaterial = val6; component3 = ((Component)pyroTracerColdEffectPrefab.transform.Find("TracerHead/HarshGlow, Billboard")).GetComponent(); Material val7 = new Material(((Renderer)component3).sharedMaterial); val7.SetTexture("_RemapTex", val); ((Renderer)component3).sharedMaterial = val7; ((Component)pyroTracerColdEffectPrefab.transform.Find("StartTransform/PP")).GetComponent().sharedProfile = Addressables.LoadAssetAsync((object)RoR2_DLC3_SolusHeart.ppvSHLaser_asset).WaitForCompletion(); }); pyroHitColdEffectPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.ImpactRailgun_prefab).WaitForCompletion(), "PyroHitCold", false); TryBuildAsset("Pyro Hit Cold Effect Prefab", delegate { //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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown //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_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) Texture val = Addressables.LoadAssetAsync((object)RoR2_Base_Common_ColorRamps.texRampGolem_png).WaitForCompletion(); ParticleSystemRenderer component = ((Component)pyroHitColdEffectPrefab.transform.Find("BeamParticles, Small")).GetComponent(); Material val2 = new Material(((Renderer)component).sharedMaterial); val2.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val2; component = ((Component)pyroHitColdEffectPrefab.transform.Find("Flash,White")).GetComponent(); Material val3 = new Material(((Renderer)component).sharedMaterial); val3.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val3; component = ((Component)pyroHitColdEffectPrefab.transform.Find("Daggers")).GetComponent(); Material val4 = new Material(((Renderer)component).sharedMaterial); val4.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val4; MainModule main = ((Component)pyroHitColdEffectPrefab.transform.Find("Shockwave")).GetComponent().main; ((MainModule)(ref main)).startColor = new MinMaxGradient(new Color(0.89f, 0.13f, 0.11f)); }); pyroTracerWarmEffectPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.TracerRailgunSuper_prefab).WaitForCompletion(), "PyroTracerWarm", false); TryBuildAsset("Pyro Tracer Warm Effect Prefab", delegate { //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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_005f: 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_0098: Expected O, but got Unknown //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Expected O, but got Unknown //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Expected O, but got Unknown //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Expected O, but got Unknown //IL_01e1: 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) Texture val = Addressables.LoadAssetAsync((object)RoR2_Base_Common_ColorRamps.texRampMagmaWorm_png).WaitForCompletion(); LineRenderer component = ((Component)pyroTracerWarmEffectPrefab.transform.Find("FX/Brief/Beam, Flash Briefly")).GetComponent(); Material val2 = new Material(((Renderer)component).sharedMaterial); val2.SetTexture("_RemapTex", val); val2.SetFloat("_Boost", 7f); val2.SetColor("_TintColor", Color.white); ((Renderer)component).sharedMaterial = val2; component = ((Component)pyroTracerWarmEffectPrefab.transform.Find("FX/Longer/Beam, Linger")).GetComponent(); Material val3 = new Material(((Renderer)component).sharedMaterial); val3.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val3; SkinnedMeshRenderer component2 = ((Component)pyroTracerWarmEffectPrefab.transform.Find("FX/mdlRailgunnerBeam/mdlRailgunnerBeamMesh")).GetComponent(); Material val4 = new Material(((Renderer)component2).sharedMaterial); val4.SetTexture("_RemapTex", val); ((Renderer)component2).sharedMaterial = val4; ParticleSystemRenderer component3 = ((Component)pyroTracerWarmEffectPrefab.transform.Find("FX/BeamParticles, Rings")).GetComponent(); Material val5 = new Material(((Renderer)component3).sharedMaterial); val5.SetTexture("_RemapTex", val); ((Renderer)component3).sharedMaterial = val5; component3 = ((Component)pyroTracerWarmEffectPrefab.transform.Find("FX/BeamParticles, Rings/BeamParticles, Small")).GetComponent(); Material val6 = new Material(((Renderer)component3).sharedMaterial); val6.SetTexture("_RemapTex", val); val6.SetFloat("_AlphaBias", 0.05f); ((Renderer)component3).sharedMaterial = val6; component3 = ((Component)pyroTracerWarmEffectPrefab.transform.Find("TracerHead/HarshGlow, Billboard")).GetComponent(); Material val7 = new Material(((Renderer)component3).sharedMaterial); val7.SetTexture("_RemapTex", val); ((Renderer)component3).sharedMaterial = val7; ((Component)pyroTracerWarmEffectPrefab.transform.Find("StartTransform/PP")).GetComponent().sharedProfile = Addressables.LoadAssetAsync((object)RoR2_DLC3_SolusHeart.ppvSHLaser_asset).WaitForCompletion(); }); pyroHitWarmEffectPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.ImpactRailgun_prefab).WaitForCompletion(), "PyroHitWarm", false); TryBuildAsset("Pyro Hit Warm Effect Prefab", delegate { //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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_010c: 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) Texture val = Addressables.LoadAssetAsync((object)RoR2_Base_Common_ColorRamps.texRampMagmaWorm_png).WaitForCompletion(); ParticleSystemRenderer component = ((Component)pyroHitWarmEffectPrefab.transform.Find("BeamParticles, Small")).GetComponent(); Material val2 = new Material(((Renderer)component).sharedMaterial); val2.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val2; component = ((Component)pyroHitWarmEffectPrefab.transform.Find("Flash,White")).GetComponent(); Material val3 = new Material(((Renderer)component).sharedMaterial); val3.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val3; component = ((Component)pyroHitWarmEffectPrefab.transform.Find("Daggers")).GetComponent(); Material val4 = new Material(((Renderer)component).sharedMaterial); val4.SetTexture("_RemapTex", val); val4.SetFloat("_AlphaBias", 0f); ((Renderer)component).sharedMaterial = val4; MainModule main = ((Component)pyroHitWarmEffectPrefab.transform.Find("Shockwave")).GetComponent().main; ((MainModule)(ref main)).startColor = new MinMaxGradient(new Color(0.89f, 0.67f, 0.11f)); }); pyroTracerHotEffectPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.TracerRailgunSuper_prefab).WaitForCompletion(), "PyroTracerHot", false); TryBuildAsset("Pyro Tracer Hot Effect Prefab", delegate { //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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_005f: 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_0098: Expected O, but got Unknown //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Expected O, but got Unknown //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Expected O, but got Unknown //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Expected O, but got Unknown Texture val = Addressables.LoadAssetAsync((object)RoR2_DLC1_Common_ColorRamps.texRampMinorConstructProjectile_png).WaitForCompletion(); LineRenderer component = ((Component)pyroTracerHotEffectPrefab.transform.Find("FX/Brief/Beam, Flash Briefly")).GetComponent(); Material val2 = new Material(((Renderer)component).sharedMaterial); val2.SetTexture("_RemapTex", val); val2.SetFloat("_Boost", 7f); val2.SetColor("_TintColor", Color.white); ((Renderer)component).sharedMaterial = val2; component = ((Component)pyroTracerHotEffectPrefab.transform.Find("FX/Longer/Beam, Linger")).GetComponent(); Material val3 = new Material(((Renderer)component).sharedMaterial); val3.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val3; SkinnedMeshRenderer component2 = ((Component)pyroTracerHotEffectPrefab.transform.Find("FX/mdlRailgunnerBeam/mdlRailgunnerBeamMesh")).GetComponent(); Material val4 = new Material(((Renderer)component2).sharedMaterial); val4.SetTexture("_RemapTex", val); ((Renderer)component2).sharedMaterial = val4; ParticleSystemRenderer component3 = ((Component)pyroTracerHotEffectPrefab.transform.Find("FX/BeamParticles, Rings")).GetComponent(); Material val5 = new Material(((Renderer)component3).sharedMaterial); val5.SetTexture("_RemapTex", val); ((Renderer)component3).sharedMaterial = val5; component3 = ((Component)pyroTracerHotEffectPrefab.transform.Find("FX/BeamParticles, Rings/BeamParticles, Small")).GetComponent(); Material val6 = new Material(((Renderer)component3).sharedMaterial); val6.SetTexture("_RemapTex", val); ((Renderer)component3).sharedMaterial = val6; component3 = ((Component)pyroTracerHotEffectPrefab.transform.Find("TracerHead/HarshGlow, Billboard")).GetComponent(); Material val7 = new Material(((Renderer)component3).sharedMaterial); val7.SetTexture("_RemapTex", val); ((Renderer)component3).sharedMaterial = val7; }); pyroHitHotEffectPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.ImpactRailgun_prefab).WaitForCompletion(), "PyroHitHot", false); TryBuildAsset("Pyro Hit Hot Effect Prefab", delegate { //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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) Texture val = Addressables.LoadAssetAsync((object)RoR2_DLC1_Common_ColorRamps.texRampMinorConstructProjectile_png).WaitForCompletion(); ParticleSystemRenderer component = ((Component)pyroHitHotEffectPrefab.transform.Find("BeamParticles, Small")).GetComponent(); Material val2 = new Material(((Renderer)component).sharedMaterial); val2.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val2; component = ((Component)pyroHitHotEffectPrefab.transform.Find("Flash,White")).GetComponent(); Material val3 = new Material(((Renderer)component).sharedMaterial); val3.SetTexture("_RemapTex", val); ((Renderer)component).sharedMaterial = val3; component = ((Component)pyroHitHotEffectPrefab.transform.Find("Daggers")).GetComponent(); Material val4 = new Material(((Renderer)component).sharedMaterial); val4.SetTexture("_RemapTex", val); val4.SetFloat("_AlphaBias", 0f); ((Renderer)component).sharedMaterial = val4; MainModule main = ((Component)pyroHitHotEffectPrefab.transform.Find("Shockwave")).GetComponent().main; ((MainModule)(ref main)).startColor = new MinMaxGradient(Color.white); }); Content.CreateAndAddEffectDef(pyroTracerColdEffectPrefab); Content.CreateAndAddEffectDef(pyroHitColdEffectPrefab); Content.CreateAndAddEffectDef(pyroTracerWarmEffectPrefab); Content.CreateAndAddEffectDef(pyroHitWarmEffectPrefab); Content.CreateAndAddEffectDef(pyroTracerHotEffectPrefab); Content.CreateAndAddEffectDef(pyroHitHotEffectPrefab); } private static void CreateMineExplosiveAssets() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_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_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) GameObject mineExplosiveChildProjectilePrefab = assetBundle.LoadAsset("ExplosionDamageProjectile"); TryBuildAsset("Mine Explosive Child Projectile Prefab", delegate { mineExplosiveChildProjectilePrefab.AddComponent(); }); GameObject mineExplosiveGhostPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerMineGhost_prefab).WaitForCompletion(), "RailgunnerMineExplosiveGhost", false); TryBuildAsset("Mine Explosive Ghost Prefab", delegate { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown //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) MeshRenderer component = ((Component)mineExplosiveGhostPrefab.transform.Find("mdlRailGunnerBasicMine/mdlRailGunnerBasicMine/centerlight emit shell")).GetComponent(); Material val = new Material(((Renderer)component).sharedMaterial); val.SetTexture("_EmTex", Addressables.LoadAssetAsync((object)RoR2_DLC3.texRampFire02_png).WaitForCompletion()); val.SetFloat("_EmPower", 5f); ((Renderer)component).sharedMaterial = val; }); GameObject mineExplosiveExplosionEffectPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerMineExplosion_prefab).WaitForCompletion(), "RailgunnerMineExplosiveExplosion", false); TryBuildAsset("Mine Explosive Explosion Effect Prefab", delegate { //IL_002a: 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: Expected O, but got Unknown //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_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) //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_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_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Expected O, but got Unknown //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) ((Component)mineExplosiveExplosionEffectPrefab.transform.Find("Point Light")).GetComponent().color = new Color(1f, 0.54f, 0.07f); ParticleSystemRenderer component = ((Component)mineExplosiveExplosionEffectPrefab.transform.Find("SparksOut")).GetComponent(); Material val = new Material(((Renderer)component).sharedMaterial); val.SetTexture("_RemapTex", Addressables.LoadAssetAsync((object)RoR2_DLC3.texRampFire02_png).WaitForCompletion()); val.SetTexture("_MainTex", Addressables.LoadAssetAsync((object)RoR2_Base_Common_VFX.texOmniHitspark3Mask_png).WaitForCompletion()); ((Renderer)component).sharedMaterial = val; MainModule main = ((Component)mineExplosiveExplosionEffectPrefab.transform.Find("Flash, Colored")).GetComponent().main; ((MainModule)(ref main)).startColor = new MinMaxGradient(new Color(1f, 0.54f, 0.07f)); component = ((Component)mineExplosiveExplosionEffectPrefab.transform.Find("Sphere, Color")).GetComponent(); Material val2 = new Material(((Renderer)component).sharedMaterial); val2.SetTexture("_RemapTex", Addressables.LoadAssetAsync((object)RoR2_DLC3.texRampFire01_png).WaitForCompletion()); ((Renderer)component).sharedMaterial = val2; }); mineExplosiveProjectilePrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerMine_prefab).WaitForCompletion(), "RailgunnerMineExplosive"); TryBuildAsset("Mine Explosive Projectile Prefab", delegate { //IL_008b: 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_00bc: Expected O, but got Unknown //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_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Expected O, but got Unknown //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0184: 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_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Expected O, but got Unknown ProjectileExplosion component = mineExplosiveProjectilePrefab.GetComponent(); if (Object.op_Implicit((Object)(object)mineExplosiveChildProjectilePrefab)) { component.childrenProjectilePrefab = mineExplosiveChildProjectilePrefab; component.fireChildren = true; component.childrenCount = 1; } mineExplosiveProjectilePrefab.GetComponent().ghostPrefab = mineExplosiveGhostPrefab; mineExplosiveProjectilePrefab.GetComponent().explosionEffect = mineExplosiveExplosionEffectPrefab; ((Component)mineExplosiveProjectilePrefab.transform.Find("PrepEffect/Point Light")).GetComponent().color = new Color(1f, 0.54f, 0.07f); ParticleSystemRenderer component2 = ((Component)mineExplosiveProjectilePrefab.transform.Find("PrepEffect/ChargeIn")).GetComponent(); Material val = new Material(((Renderer)component2).sharedMaterial); val.SetTexture("_RemapTex", Addressables.LoadAssetAsync((object)RoR2_DLC3.texRampFire02_png).WaitForCompletion()); val.SetTexture("_MainTex", Addressables.LoadAssetAsync((object)RoR2_Base_Common_VFX_ParticleMasks.texSpark1Mask_png).WaitForCompletion()); ((Renderer)component2).sharedMaterial = val; component2 = ((Component)mineExplosiveProjectilePrefab.transform.Find("PrepEffect/Core")).GetComponent(); Material val2 = new Material(((Renderer)component2).sharedMaterial); val2.SetTexture("_RemapTex", Addressables.LoadAssetAsync((object)RoR2_Base_Common_ColorRamps.texRampInfusion_png).WaitForCompletion()); ((Renderer)component2).sharedMaterial = val2; Transform val3 = mineExplosiveProjectilePrefab.transform.Find("PrepEffect/SoftGlow"); MainModule main = ((Component)val3).GetComponent().main; ((MainModule)(ref main)).startColor = new MinMaxGradient(new Color(1f, 0.54f, 0.07f)); component2 = ((Component)val3).GetComponent(); Material val4 = new Material(((Renderer)component2).sharedMaterial); val4.renderQueue += 1; ((Renderer)component2).sharedMaterial = val4; }); ContentPacks.projectilePrefabs.Add(mineExplosiveChildProjectilePrefab); ContentPacks.projectilePrefabs.Add(mineExplosiveProjectilePrefab); Content.CreateAndAddEffectDef(mineExplosiveExplosionEffectPrefab); } private static void GiveAkBanksToObject(GameObject obj, AkBank[] banks) { foreach (AkBank val in banks) { if ((Object)(object)val != (Object)null) { AkBank val2 = obj.AddComponent(); ((AkTriggerHandler)val2).triggerList = ((AkTriggerHandler)val).triggerList; val2.data.WwiseObjectReference = val.data.WwiseObjectReference; val2.unloadTriggerList = val.unloadTriggerList; } } } } internal class Content { internal static void Init() { Assets.Init(); InitSkills(); InitStates(); } private static void InitSkills() { new CookSkill().Init(); new CallRailgunStrikeSkill().Init(); new PrepRailgunStrikeSkill().Init(); new ChargeSnipePyroSkill().Init(); new FireSnipePyroSkill().Init(); new global::FenrisSkills.Skills.FireMineExplosive().Init(); } private static void InitStates() { ContentPacks.entityStates.Add(typeof(CookItem)); ContentPacks.entityStates.Add(typeof(SetupRailgunStrike)); ContentPacks.entityStates.Add(typeof(CallRailgunStrikeEnter)); ContentPacks.entityStates.Add(typeof(CallRailgunStrikeBase)); ContentPacks.entityStates.Add(typeof(CallRailgunStrike)); ContentPacks.entityStates.Add(typeof(ChargeSnipePyro)); ContentPacks.entityStates.Add(typeof(ChargingPyro)); ContentPacks.entityStates.Add(typeof(ChargedPyro)); ContentPacks.entityStates.Add(typeof(ExpiredPyro)); ContentPacks.entityStates.Add(typeof(OnlinePyro)); ContentPacks.entityStates.Add(typeof(UsePyro)); ContentPacks.entityStates.Add(typeof(FireSnipePyro)); ContentPacks.entityStates.Add(typeof(WindupSnipePyro)); ContentPacks.entityStates.Add(typeof(global::FenrisSkills.Skills.States.Railgunner.FireMineExplosive)); } 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 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 static List networkedObjectPrefabs = new List(); public static List itemDefs = new List(); public static List itemTierDefs = new List(); public string identifier => "mwmw.FenrisSkills"; public void Init() { //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()); contentPack.networkedObjectPrefabs.Add(networkedObjectPrefabs.ToArray()); contentPack.itemDefs.Add(itemDefs.ToArray()); contentPack.itemTierDefs.Add(itemTierDefs.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; } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("mwmw.FenrisSkills", "FenrisSkills", "1.1.0")] public class FenrisSkills : BaseUnityPlugin { public const string PluginGUID = "mwmw.FenrisSkills"; public const string PluginAuthor = "mwmw"; public const string PluginName = "FenrisSkills"; public const string PluginVersion = "1.1.0"; public static ConfigFile config; public void Awake() { config = ((BaseUnityPlugin)this).Config; Log.Init(((BaseUnityPlugin)this).Logger); Content.Init(); Options.Init(); new ContentPacks().Init(); RoR2Application.onLoadFinished = (Action)Delegate.Combine(RoR2Application.onLoadFinished, new Action(OnLoadFinished)); } private void OnLoadFinished() { Assets.railCannonProjectilePrefab.GetComponent().impactEffect = Assets.railCannonImpactPrefab; } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } public class Options { private static bool? _rooEnabled; public static ConfigEntry produceStrongFoods; public static ConfigEntry pyroMinDamageCoeff; public static ConfigEntry pyroMaxDamageCoeff; public static ConfigEntry pyroDmgIncreaseSpd; public static ConfigEntry pyroSelfDmgTimerMult; public static bool rooEnabled { get { if (!_rooEnabled.HasValue) { _rooEnabled = Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions"); } return _rooEnabled.Value; } } public static void Init() { produceStrongFoods = FenrisSkills.config.Bind("CHEF: Cook", "Produce Strong Foods", false, "Whether or not the Cook skill can produce a permanent Ultimate Meal or Sautéed Worms, given the ingredients."); pyroMinDamageCoeff = FenrisSkills.config.Bind("Railgunner: Pyrocharge", "Min Damage Coeff.", 10f, "The damage coefficient of Pyrocharge immediately upon activation."); pyroMaxDamageCoeff = FenrisSkills.config.Bind("Railgunner: Pyrocharge", "Max Damage Coeff.", 80f, "The damage coefficient of Pyrocharge if charged to max."); pyroDmgIncreaseSpd = FenrisSkills.config.Bind("Railgunner: Pyrocharge", "Damage Increase Speed", 0.18f, "How fast the damage of Pyrocharge increases along its logarithmic curve."); pyroSelfDmgTimerMult = FenrisSkills.config.Bind("Railgunner: Pyrocharge", "Self-Damage Timer Mult.", 0.9f, "The multiplier for the time between self-burn stacks. Smaller values mean faster stacks."); if (rooEnabled) { RoOInit(); } } public static void OnLoadFinished() { } private static void RoOInit() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown //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_002b: 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_0046: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown //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_0061: 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_007c: Expected O, but got Unknown //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_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_00b2: Expected O, but got Unknown //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Expected O, but got Unknown //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_00cd: 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_00e8: Expected O, but got Unknown //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Expected O, but got Unknown ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(produceStrongFoods, new CheckBoxConfig())); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(pyroMinDamageCoeff, new StepSliderConfig { min = 0f, max = 1000f, increment = 1f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(pyroMaxDamageCoeff, new StepSliderConfig { min = 0f, max = 1000f, increment = 1f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(pyroDmgIncreaseSpd, new StepSliderConfig { min = 0f, max = 100f, increment = 0.001f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(pyroSelfDmgTimerMult, new StepSliderConfig { min = 0f, max = 1f, increment = 0.001f })); ModSettingsManager.SetModDescription("Config options for FenrisSkills."); ModSettingsManager.SetModIcon(Assets.assetBundle.LoadAsset("icon")); } } public static class Utils { public static Random random = new Random(); public static SphereSearch ExcludeByBuff(this SphereSearch self, BuffDef buff) { for (int num = self.searchData.candidatesCount - 1; num >= 0; num--) { HurtBox hurtBox = ((SearchData)(ref self.searchData)).GetCandidate(num).hurtBox; bool? obj; if (hurtBox == null) { obj = null; } else { HealthComponent healthComponent = hurtBox.healthComponent; if (healthComponent == null) { obj = null; } else { CharacterBody body = healthComponent.body; obj = ((body != null) ? new bool?(!body.HasBuff(buff)) : ((bool?)null)); } } if ((!obj) ?? false) { ((SearchData)(ref self.searchData)).RemoveCandidate(num); } } return self; } public static TSource RandomOrDefault(this IList enumerable) { if (enumerable.Count > 0) { return enumerable[Random.Range(0, enumerable.Count - 1)]; } return default(TSource); } } } namespace FenrisSkills.Skills { public abstract class BaseCaptainOrbitalSkill : BaseSkill where T : BaseCaptainOrbitalSkill { protected virtual Sprite disabledIcon => Addressables.LoadAssetAsync((object)RoR2_Base_Captain.texCaptainSkillIcons_png_texCaptainSkillIcons_4_).WaitForCompletion(); protected virtual string disabledNameToken => "CAPTAIN_SKILL_DISCONNECT_NAME"; protected virtual string disabledDescriptionToken => "CAPTAIN_SKILL_DISCONNECT_DESCRIPTION"; protected override Type skillDefType => typeof(CaptainOrbitalSkillDef); protected override void CreateSkill() { base.CreateSkill(); SkillDef obj = BaseSkill.skillDef; CaptainOrbitalSkillDef val = (CaptainOrbitalSkillDef)(object)((obj is CaptainOrbitalSkillDef) ? obj : null); val.disabledIcon = disabledIcon; val.disabledNameToken = disabledNameToken; val.disabledDescriptionToken = disabledDescriptionToken; } } public abstract class BaseRailgunSkillDef : BaseSkill where T : BaseRailgunSkillDef { protected virtual Sprite offlineIcon => Addressables.LoadAssetAsync((object)RoR2_Base_Captain.texCaptainSkillIcons_png_texCaptainSkillIcons_4_).WaitForCompletion(); protected virtual bool restockOnReload => false; protected override Type skillDefType => typeof(RailgunSkillDef); protected override void CreateSkill() { base.CreateSkill(); SkillDef obj = BaseSkill.skillDef; RailgunSkillDef val = (RailgunSkillDef)(object)((obj is RailgunSkillDef) ? obj : null); val.offlineIcon = offlineIcon; val.restockOnReload = restockOnReload; } } public abstract class BaseSkill where T : BaseSkill { public enum Skill { Primary, Secondary, Utility, Special } public static SkillDef skillDef; protected abstract string skillName { get; } protected abstract string skillDescription { get; } protected abstract Type activationState { get; } protected abstract string activationStateMachineName { get; } protected abstract GameObject bodyPrefab { get; } protected abstract Skill skillCategory { get; } protected abstract Sprite icon { get; } protected abstract int baseMaxStock { get; } protected abstract float baseRechargeInterval { get; } protected abstract bool beginSkillCooldownOnSkillEnd { get; } protected abstract bool canceledFromSprinting { get; } protected abstract bool cancelSprintingOnActivation { get; } protected abstract bool fullRestockOnAssign { get; } protected abstract InterruptPriority interruptPriority { get; } protected abstract bool isCombatSkill { get; } protected abstract bool mustKeyPress { get; } protected abstract int rechargeStock { get; } protected abstract int requiredStock { get; } protected abstract int stockToConsume { get; } protected virtual bool addToSkillFamily => true; protected virtual Type skillDefType => typeof(SkillDef); protected virtual void CreateSkill() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_024d: 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_027f: Expected O, but got Unknown //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) string text = "FenrisSkills".ToUpper() + "_" + Regex.Replace(skillName.ToUpper(), "[\\s\\p{P}]", ""); ScriptableObject obj = ScriptableObject.CreateInstance(skillDefType); skillDef = (SkillDef)(object)((obj is SkillDef) ? obj : null); skillDef.activationState = new SerializableEntityStateType(activationState); skillDef.activationStateMachineName = activationStateMachineName; skillDef.baseMaxStock = baseMaxStock; skillDef.baseRechargeInterval = baseRechargeInterval; skillDef.beginSkillCooldownOnSkillEnd = beginSkillCooldownOnSkillEnd; skillDef.canceledFromSprinting = canceledFromSprinting; skillDef.cancelSprintingOnActivation = cancelSprintingOnActivation; skillDef.fullRestockOnAssign = fullRestockOnAssign; skillDef.interruptPriority = interruptPriority; skillDef.isCombatSkill = isCombatSkill; skillDef.mustKeyPress = mustKeyPress; skillDef.rechargeStock = rechargeStock; skillDef.requiredStock = requiredStock; skillDef.stockToConsume = stockToConsume; skillDef.icon = icon; skillDef.skillDescriptionToken = text + "_DESC"; skillDef.skillName = "{prefix}_NAME"; skillDef.skillNameToken = text + "_NAME"; LanguageAPI.Add(text + "_NAME", skillName); LanguageAPI.Add(text + "_DESC", skillDescription); ContentPacks.skillDefs.Add(skillDef); if (addToSkillFamily) { SkillLocator component = bodyPrefab.GetComponent(); SkillFamily val = null; switch (skillCategory) { case Skill.Primary: val = component.primary.skillFamily; break; case Skill.Secondary: val = component.secondary.skillFamily; break; case Skill.Utility: val = component.utility.skillFamily; break; case Skill.Special: val = component.special.skillFamily; break; } Array.Resize(ref val.variants, val.variants.Length + 1); Variant[] variants = val.variants; int num = variants.Length - 1; Variant val2 = new Variant { skillDef = skillDef, unlockableDef = null }; ((Variant)(ref val2)).viewableNode = new Node(skillDef.skillNameToken, false, (Node)null); variants[num] = val2; } } public void Init() { CreateSkill(); } } public class CallRailgunStrikeSkill : BaseSkill { protected override string skillName => "OGM-84 'ATLAS' Strike"; protected override string skillDescription => "Stunning. Request an orbital railcannon strike from the UES Safe Travels, dealing 3000% damage, or 4500% damage on a critical hit."; protected override Type activationState => typeof(CallRailgunStrikeEnter); protected override string activationStateMachineName => "Weapon"; protected override GameObject bodyPrefab => Addressables.LoadAssetAsync((object)RoR2_Base_Captain.CaptainBody_prefab).WaitForCompletion(); protected override Skill skillCategory => Skill.Primary; protected override Sprite icon => Assets.assetBundle.LoadAsset("texRailCannon"); protected override int baseMaxStock => 1; protected override float baseRechargeInterval => 0f; protected override bool beginSkillCooldownOnSkillEnd => false; protected override bool canceledFromSprinting => true; protected override bool cancelSprintingOnActivation => true; protected override bool fullRestockOnAssign => true; protected override InterruptPriority interruptPriority => (InterruptPriority)2; protected override bool isCombatSkill => true; protected override bool mustKeyPress => true; protected override int rechargeStock => 0; protected override int requiredStock => 1; protected override int stockToConsume => 1; protected override bool addToSkillFamily => false; } public class ChargeSnipePyroSkill : BaseRailgunSkillDef { protected override string skillName => "Pyrocharge"; protected override string skillDescription => "Ignite. Fire a piercing round for 1000%-8000% damage. Damage increases the longer you hold the skill. Holding the skill causes you to overheat, taking rapidly increasing damage."; protected override Type activationState => typeof(ChargeSnipePyro); protected override string activationStateMachineName => "Weapon"; protected override GameObject bodyPrefab => Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerBody_prefab).WaitForCompletion(); protected override Skill skillCategory => Skill.Special; protected override Sprite icon => Assets.assetBundle.LoadAsset("texPyroSnipe"); protected override int baseMaxStock => 1; protected override float baseRechargeInterval => 12f; protected override bool beginSkillCooldownOnSkillEnd => false; protected override bool canceledFromSprinting => false; protected override bool cancelSprintingOnActivation => true; protected override bool fullRestockOnAssign => true; protected override InterruptPriority interruptPriority => (InterruptPriority)1; protected override bool isCombatSkill => false; protected override bool mustKeyPress => false; protected override int rechargeStock => 1; protected override int requiredStock => 1; protected override int stockToConsume => 1; } public class CookSkill : BaseSkill { protected override string skillName => "Cook"; protected override string skillDescription => "Produce 4 food-related temporary items. Has a small chance to produce permanent meal items if you have the correct ingredients."; protected override Type activationState => typeof(CookItem); protected override string activationStateMachineName => "Weapon"; protected override GameObject bodyPrefab => Addressables.LoadAssetAsync((object)RoR2_DLC2_Chef.ChefBody_prefab).WaitForCompletion(); protected override Skill skillCategory => Skill.Special; protected override Sprite icon => Assets.assetBundle.LoadAsset("texChefCook"); protected override int baseMaxStock => 1; protected override float baseRechargeInterval => 35f; protected override bool beginSkillCooldownOnSkillEnd => false; protected override bool canceledFromSprinting => false; protected override bool cancelSprintingOnActivation => true; protected override bool fullRestockOnAssign => true; protected override InterruptPriority interruptPriority => (InterruptPriority)2; protected override bool isCombatSkill => false; protected override bool mustKeyPress => true; protected override int rechargeStock => 1; protected override int requiredStock => 1; protected override int stockToConsume => 1; } public class FireMineExplosive : BaseSkill { protected override string skillName => "Kinetic Device"; protected override string skillDescription => "Throw out a device that deals 500% damage, and pushes you and all nearby enemies."; protected override Type activationState => typeof(global::FenrisSkills.Skills.States.Railgunner.FireMineExplosive); protected override string activationStateMachineName => "WeaponMine"; protected override GameObject bodyPrefab => Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerBody_prefab).WaitForCompletion(); protected override Skill skillCategory => Skill.Utility; protected override Sprite icon => Assets.assetBundle.LoadAsset("texRailgunnerFireMineExplosive"); protected override int baseMaxStock => 1; protected override float baseRechargeInterval => 8f; protected override bool beginSkillCooldownOnSkillEnd => false; protected override bool canceledFromSprinting => false; protected override bool cancelSprintingOnActivation => false; protected override bool fullRestockOnAssign => true; protected override InterruptPriority interruptPriority => (InterruptPriority)2; protected override bool isCombatSkill => false; protected override bool mustKeyPress => true; protected override int rechargeStock => 1; protected override int requiredStock => 1; protected override int stockToConsume => 1; } public class FireSnipePyroSkill : BaseRailgunSkillDef { protected override string skillName => "Pyrocharged Railgun"; protected override string skillDescription => "Ignite. Launch a super-heated projectile for 1000%-8000% damage."; protected override Type activationState => typeof(WindupSnipePyro); protected override string activationStateMachineName => "Weapon"; protected override GameObject bodyPrefab => Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerBody_prefab).WaitForCompletion(); protected override Skill skillCategory => Skill.Special; protected override Sprite icon => Assets.assetBundle.LoadAsset("texPyroSnipeFire"); protected override int baseMaxStock => 1; protected override float baseRechargeInterval => 1f; protected override bool beginSkillCooldownOnSkillEnd => false; protected override bool canceledFromSprinting => false; protected override bool cancelSprintingOnActivation => true; protected override bool fullRestockOnAssign => true; protected override InterruptPriority interruptPriority => (InterruptPriority)1; protected override bool isCombatSkill => true; protected override bool mustKeyPress => false; protected override int rechargeStock => 1; protected override int requiredStock => 1; protected override int stockToConsume => 1; protected override bool addToSkillFamily => false; } public class PrepRailgunStrikeSkill : BaseCaptainOrbitalSkill { protected override string skillName => "OGM-84 'ATLAS' Strike"; protected override string skillDescription => "Stunning. Request up to 3 orbital railcannon strikes from the UES Safe Travels. Each strike deals 750% damage, or 1500% damage on a critical hit."; protected override Type activationState => typeof(SetupRailgunStrike); protected override string activationStateMachineName => "Skillswap"; protected override GameObject bodyPrefab => Addressables.LoadAssetAsync((object)RoR2_Base_Captain.CaptainBody_prefab).WaitForCompletion(); protected override Skill skillCategory => Skill.Utility; protected override Sprite icon => Assets.assetBundle.LoadAsset("texRailCannon"); protected override int baseMaxStock => 1; protected override float baseRechargeInterval => 16f; protected override bool beginSkillCooldownOnSkillEnd => true; protected override bool canceledFromSprinting => true; protected override bool cancelSprintingOnActivation => true; protected override bool fullRestockOnAssign => true; protected override InterruptPriority interruptPriority => (InterruptPriority)2; protected override bool isCombatSkill => true; protected override bool mustKeyPress => true; protected override int rechargeStock => 1; protected override int requiredStock => 1; protected override int stockToConsume => 1; } } namespace FenrisSkills.Skills.States.Railgunner { public class ChargedPyro : BaseCharged { private const float applyDotMaxTime = 0.5f; private const float applyDotMinTime = 0.05f; public float damageCoefficient = minCoeff; private float currentApplyDotTime = 0.5f; private float applyDotStopwatch = 0.5f; private DotController dotController; private PyroUIColorController colorController; private static Color[] gradient = (Color[])(object)new Color[6] { new Color(0.27f, 0.08f, 0f), new Color(1f, 0.14f, 0.14f), new Color(1f, 0.58f, 0.04f), new Color(1f, 0.98f, 0.75f), Color.white, Color.white }; public static GameObject pyroCrosshairOverridePrefab = Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerSuperchargeCrosshair_prefab).WaitForCompletion(); public static LoopSoundDef pyroLoopSoundDef = Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.lsdRailgunnerBackpackCharged_asset).WaitForCompletion(); public static float minCoeff => Options.pyroMinDamageCoeff.Value; public static float maxCoeff => Options.pyroMaxDamageCoeff.Value; public static float damageIncreaseSpd => Options.pyroDmgIncreaseSpd.Value; private static float applyDotTimeReductionMult => Options.pyroSelfDmgTimerMult.Value; public override void OnEnter() { Util.PlaySound("Play_lemurianBruiser_m1_fly_loop", ((EntityState)this).gameObject); base.crosshairOverridePrefab = pyroCrosshairOverridePrefab; base.animationStateName = "Charged"; base.animationPlaybackRateParam = "Backpack.playbackRate"; base.animationLayerName = "Backpack"; base.primaryOverride = BaseSkill.skillDef; base.overlayPrefab = Assets.pyroOverlayPrefab; base.overlayChildLocatorEntry = "CrosshairExtras"; ((BaseBackpack)this).mecanimBoolName = "isBackpackActive"; ((BaseBackpack)this).loopSoundDef = pyroLoopSoundDef; ((BaseBackpack)this).enterSoundString = "Play_railgunner_R_gun_ready"; base.duration = 9999f; ((BaseCharged)this).OnEnter(); base.overlayController.onInstanceAdded += delegate(OverlayController controller, GameObject instance) { colorController = instance.GetComponent(); }; } public override void FixedUpdate() { //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: 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_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_010d: Unknown result type (might be due to invalid IL or missing references) ((BaseCharged)this).FixedUpdate(); damageCoefficient = Mathf.Lerp(damageCoefficient, maxCoeff, damageIncreaseSpd * Time.deltaTime); if (base.duration > 0f) { float num = damageCoefficient / maxCoeff; foreach (ImageFillController fillUi in base.fillUiList) { fillUi.SetTValue(num); } if (Object.op_Implicit((Object)(object)colorController) && gradient.Length > 2) { float num2 = 1f / (float)(gradient.Length - 1); int num3 = Mathf.Clamp(Mathf.FloorToInt((float)(gradient.Length - 1) * num), 0, gradient.Length - 2); Color color = Color.Lerp(gradient[num3], gradient[num3 + 1], (num - num2 * (float)num3) / num2); colorController.UpdateColors(color); } } if (!NetworkServer.active) { return; } applyDotStopwatch += Time.deltaTime; if (!(applyDotStopwatch > currentApplyDotTime)) { return; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)((EntityState)this).healthComponent)) { while (applyDotStopwatch >= currentApplyDotTime) { InflictDotInfo val = new InflictDotInfo { victimObject = ((EntityState)this).gameObject, attackerObject = ((EntityState)this).gameObject, totalDamage = ((EntityState)this).healthComponent.fullHealth * 0.1f, dotIndex = (DotIndex)1, damageMultiplier = 1f, hitHurtBox = ((EntityState)this).characterBody.mainHurtBox }; DotController.InflictDot(ref val); if (!Object.op_Implicit((Object)(object)dotController)) { DotController.dotControllerLocator.TryGetValue(((Object)((EntityState)this).gameObject).GetInstanceID(), out dotController); } if (Object.op_Implicit((Object)(object)dotController) && dotController.dotStackList.Count > 0) { List dotStackList = dotController.dotStackList; dotStackList[dotStackList.Count - 1].timer = 0.5f; List dotStackList2 = dotController.dotStackList; dotStackList2[dotStackList2.Count - 1].totalDuration = 0.5f; } applyDotStopwatch -= currentApplyDotTime; } } applyDotStopwatch = 0f; currentApplyDotTime = Mathf.Clamp(currentApplyDotTime * applyDotTimeReductionMult, 0.05f, 0.5f); } public override EntityState InstantiateExpiredState() { return (EntityState)(object)new ExpiredPyro(); } } public class ChargeSnipePyro : BaseChargeSnipe { public override void OnEnter() { base.baseDuration = 2f; base.animationStateName = "ChargeSuper"; base.animationPlaybackRateParam = "Super.playbackRate"; base.animationLayerName = "Gesture, Override"; ((BaseChargeSnipe)this).OnEnter(); } public override EntityState InstantiateBackpackState() { return (EntityState)(object)new ChargingPyro(); } } public class ChargingPyro : BaseCharging { public static GameObject pyroCrosshairOverridePrefab = Addressables.LoadAssetAsync((object)RoR2_Base_UI.SimpleDotCrosshair_prefab).WaitForCompletion(); public static LoopSoundDef pyroLoopSoundDef = Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.lsdRailgunnerBackpackCharging_asset).WaitForCompletion(); public override void OnEnter() { ((BaseBackpack)this).mecanimBoolName = "mecanimBoolName"; ((BaseBackpack)this).loopSoundDef = pyroLoopSoundDef; ((BaseBackpack)this).enterSoundString = "Play_railgunner_R_gun_swap"; base.crosshairOverridePrefab = pyroCrosshairOverridePrefab; base.baseDuration = 2f; base.animationStateName = "Charging"; base.animationPlaybackRateParam = "Backpack.playbackRate"; base.animationLayerName = "Backpack"; base.overlayPrefab = Assets.pyroOverlayPrefab; base.overlayChildLocatorEntry = "CrosshairExtras"; ((BaseCharging)this).OnEnter(); } public override EntityState InstantiateChargedState() { return (EntityState)(object)new ChargedPyro(); } } public class ExpiredPyro : BaseExpired { public override void OnEnter() { base.animationStateName = "Expired"; base.animationPlaybackRateParam = "Backpack.playbackRate"; base.animationLayerName = "Backpack"; base.forceShieldRegen = true; base.duration = 0.5f; ((BaseExpired)this).OnEnter(); } public override EntityState InstantiateNextState() { return (EntityState)(object)new OnlinePyro(); } } public class FireMineExplosive : BaseFireMine { public override void OnEnter() { base.baseCrossfadeDuration = 0.05f; base.animationStateName = "ThrowMine"; base.animationPlaybackRateParam = "ThrowMine.playbackRate"; base.animationLayerName = "Gesture, Override"; base.projectilePrefab = Assets.mineExplosiveProjectilePrefab; base.muzzleName = "MuzzlePistol"; base.force = 4000f; base.enterSoundString = "Play_railgunner_shift_throw"; base.damageCoefficient = 0f; base.baseDuration = 0.23f; ((BaseFireMine)this).OnEnter(); } } public class FireSnipePyro : BaseFireSnipe { public static GameObject pyroMuzzleFlashPrefab = Addressables.LoadAssetAsync((object)RoR2_Base_Common_VFX.Muzzleflash1_prefab).WaitForCompletion(); public override void OnEnter() { EntityStateMachine val = ((EntityState)this).FindSiblingStateMachine("Backpack"); if (Object.op_Implicit((Object)(object)val) && val.state is ChargedPyro chargedPyro) { ((GenericBulletBaseState)this).damageCoefficient = chargedPyro.damageCoefficient; } else { ((GenericBulletBaseState)this).damageCoefficient = ChargedPyro.minCoeff; } Util.PlaySound("Stop_lemurianBruiser_m1_fly_loop", ((EntityState)this).gameObject); if (((GenericBulletBaseState)this).damageCoefficient > ChargedPyro.maxCoeff * 0.75f) { ((GenericBulletBaseState)this).hitEffectPrefab = Assets.pyroHitHotEffectPrefab; ((GenericBulletBaseState)this).tracerEffectPrefab = Assets.pyroTracerHotEffectPrefab; } else if (((GenericBulletBaseState)this).damageCoefficient > ChargedPyro.maxCoeff * 0.45f) { ((GenericBulletBaseState)this).hitEffectPrefab = Assets.pyroHitWarmEffectPrefab; ((GenericBulletBaseState)this).tracerEffectPrefab = Assets.pyroTracerWarmEffectPrefab; } else { ((GenericBulletBaseState)this).hitEffectPrefab = Assets.pyroHitColdEffectPrefab; ((GenericBulletBaseState)this).tracerEffectPrefab = Assets.pyroTracerColdEffectPrefab; } base.headshotSoundString = "Play_railgunner_m2_headshot"; ((GenericBulletBaseState)this).force = 4000f; ((GenericBulletBaseState)this).fireSoundString = "Play_railgunner_R_fire"; base.critDamageMultiplier = 1f; ((GenericBulletBaseState)this).bulletRadius = 2f; ((GenericBulletBaseState)this).bulletCount = 1; ((GenericBulletBaseState)this).baseDuration = 1f; base.animationStateName = "FireSuper"; base.animationPlaybackRateParam = "Super.playbackRate"; base.animationLayerName = "Gesture, Override"; ((GenericBulletBaseState)this).recoilAmplitudeY = 6f; ((GenericBulletBaseState)this).recoilAmplitudeX = 1f; base.queueReload = false; ((GenericBulletBaseState)this).procCoefficient = 1.5f; base.piercingDamageCoefficientPerTarget = 1f; ((GenericBulletBaseState)this).muzzleName = "MuzzleRight"; ((GenericBulletBaseState)this).muzzleFlashPrefab = pyroMuzzleFlashPrefab; ((GenericBulletBaseState)this).minSpread = 0f; ((GenericBulletBaseState)this).maxSpread = 0f; ((GenericBulletBaseState)this).maxDistance = 9999f; base.isPiercing = true; ((GenericBulletBaseState)this).useSmartCollision = true; base.useSecondaryStocks = false; base.trajectoryAimAssistMultiplier = 0f; ((GenericBulletBaseState)this).spreadYawScale = 0f; ((GenericBulletBaseState)this).spreadPitchScale = 0f; ((GenericBulletBaseState)this).spreadBloomValue = 0f; base.selfKnockbackForce = 3000f; ((BaseFireSnipe)this).OnEnter(); } public override void ModifyBullet(BulletAttack bulletAttack) { //IL_000b: 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_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) ((BaseFireSnipe)this).ModifyBullet(bulletAttack); bulletAttack.damageType |= new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)128), (DamageTypeExtended)0, (DamageSource)8); } public override EntityState InstantiateBackpackState() { return (EntityState)(object)new UsePyro(); } } public class OnlinePyro : BaseOnline { public override void OnEnter() { base.cooldownParamName = "SpecialCooldown"; base.animationStateName = "Idle"; base.animationLayerName = "Backpack"; base.requiredSkillDef = BaseSkill.skillDef; ((BaseOnline)this).OnEnter(); } } public class UsePyro : BaseBackpack { public float duration = 1f; public string animationLayerName; public string animationStateName; public string animationPlaybackRateParam; public override void OnEnter() { ((BaseBackpack)this).OnEnter(); ((EntityState)this).PlayAnimation(animationLayerName, animationStateName, animationPlaybackRateParam, duration, 0f); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextState((EntityState)(object)new OnlinePyro()); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0003: 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) return (InterruptPriority)9; } } public class WindupSnipePyro : BaseWindupSnipe { public static GameObject pyroCrosshairOverridePrefab = Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.RailgunnerSuperchargeCrosshair_prefab).WaitForCompletion(); public static GameObject pyroWindupEffectPrefab = Addressables.LoadAssetAsync((object)RoR2_DLC1_Railgunner.WindupRailgunnerSuper_prefab).WaitForCompletion(); public override void OnEnter() { base.crosshairOverridePrefab = pyroCrosshairOverridePrefab; base.animationStateName = "WindupSuper"; base.animationPlaybackRateParam = "Super.playbackRate"; base.animationLayerName = "Gesture, Override"; base.windupEffectPrefab = pyroWindupEffectPrefab; base.windupEffectMuzzle = "MuzzleSniper"; base.enterSoundString = "Play_railgunner_R_preFire"; base.duration = 0.3f; ((BaseWindupSnipe)this).OnEnter(); } public override EntityState InstantiateNextState() { return (EntityState)(object)new FireSnipePyro(); } } } namespace FenrisSkills.Skills.States.Chef { public class CookItem : BaseState { public float firstDropDelay = 0.4f; public float delayBetweenDrops = 0.2f; public float dropForce = 15f; public float dropForceIncreasePerItem = 5f; public float moveSpeedCoefficient = 0.6f; public static PickupDropTable tempItemsDropTable = Assets.assetBundle.LoadAsset("dtChefCook"); private Xoroshiro128Plus rng; private int itemsToDrop; private int itemsDropped; private WalkSpeedPenaltyModifier walkSpeedModifier; private float itemDropTimeoutAuthority; private bool _isFirstDrop; private bool droppedItemServer; private bool exitingStatePermanently = true; private float currentTriggerTime; private static HashSet foodIndices = new HashSet { PickupCatalog.FindPickupIndex(Items.CookedSteak.itemIndex), PickupCatalog.FindPickupIndex(Items.Stew.itemIndex), PickupCatalog.FindPickupIndex(Items.BonusHealthBoost.itemIndex), PickupCatalog.FindPickupIndex(Items.WyrmOnHit.itemIndex), PickupCatalog.FindPickupIndex(Items.UltimateMeal.itemIndex) }; private static HashSet strongFoodIndices = new HashSet { PickupCatalog.FindPickupIndex(Items.WyrmOnHit.itemIndex), PickupCatalog.FindPickupIndex(Items.UltimateMeal.itemIndex) }; public HashSet craftableFoodItems; private static ExpansionDef requiredExpansion = Addressables.LoadAssetAsync((object)RoR2_DLC3.DLC3_asset).WaitForCompletion(); private float checkingTime { get { if (!_isFirstDrop) { return delayBetweenDrops; } return firstDropDelay; } } public override void OnEnter() { //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Expected O, but got Unknown //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_00b0: Expected O, but got Unknown ((BaseState)this).OnEnter(); currentTriggerTime = 0f; itemsToDrop = 4; if (itemsDropped == 0) { _isFirstDrop = true; ((EntityState)this).PlayAnimation("Gesture, Additive", "FireYesChef", "FireYesChef.playbackRate", 0.6f, 0f); ((EntityState)this).PlayAnimation("Gesture, Override", "FireYesChef", "FireYesChef.playbackRate", 0.6f, 0f); Util.PlaySound("Play_chef_skill4_boost_activate", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { walkSpeedModifier = new WalkSpeedPenaltyModifier { penalty = 1f - moveSpeedCoefficient }; ((EntityState)this).characterMotor.AddWalkSpeedPenalty(walkSpeedModifier); } } if (NetworkServer.active) { rng = new Xoroshiro128Plus(Run.instance.treasureRng.nextUlong); } ((BaseState)this).StartAimMode(checkingTime + 0.5f, false); itemDropTimeoutAuthority = checkingTime + 0.05f; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (NetworkServer.active && !droppedItemServer) { currentTriggerTime += ((EntityState)this).GetDeltaTime(); if (currentTriggerTime >= checkingTime) { DropTempItemServer(); } } if (((EntityState)this).isAuthority && (((EntityState)this).fixedAge > itemDropTimeoutAuthority || droppedItemServer)) { SetNextStateAuthority(); } } private void SetNextStateAuthority() { if (((EntityState)this).isAuthority) { if (itemsDropped >= itemsToDrop - 1) { ((EntityState)this).outer.SetNextStateToMain(); return; } CookItem cookItem = EntityStateCatalog.InstantiateState(typeof(CookItem)) as CookItem; cookItem.itemsDropped = itemsDropped + 1; cookItem.craftableFoodItems = craftableFoodItems; ((EntityState)this).outer.SetNextState((EntityState)(object)cookItem); } } private void DropTempItemServer() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0069: 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_0081: 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_009e: 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_011b: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0132: 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_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Invalid comparison between Unknown and I4 //IL_0107: 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_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Expected O, but got Unknown //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active || droppedItemServer) { return; } Transform modelTransform = ((EntityState)this).GetModelTransform(); float num = 12f; Vector3 val = modelTransform.right * (3f * ((float)itemsDropped + 1f) - 6f); Vector3 val2 = modelTransform.forward * dropForce + val; ((Vector3)(ref val2))..ctor(val2.x, num, val2.z); Vector3 position = ((EntityState)this).transform.position; if (Object.op_Implicit((Object)(object)tempItemsDropTable)) { UniquePickup pickup = default(UniquePickup); if (!Run.instance.IsExpansionEnabled(requiredExpansion) || !(Random.value > 0.95f) || !GetMealItem(ref pickup)) { pickup = tempItemsDropTable.GeneratePickup(rng); pickup.decayValue = 1f; } if (((EntityState)this).characterBody.isPlayerControlled) { PickupDropletController.CreatePickupDroplet(pickup, position, val2, false, false); } else { PickupDef pickupDef = PickupCatalog.GetPickupDef(pickup.pickupIndex); ItemIndex itemIndex = pickupDef.itemIndex; ScrapperController.CreateItemTakenOrb(position, ((EntityState)this).gameObject, itemIndex); ((EntityState)this).characterBody.inventory.GiveItemTemp(itemIndex, 1f); string baseToken = (((int)((EntityState)this).teamComponent.teamIndex == 1) ? "PLAYER_PICKUP" : "MONSTER_PICKUP"); PlayerPickupChatMessage val3 = new PlayerPickupChatMessage(); ((SubjectChatMessage)val3).subjectAsCharacterBody = ((EntityState)this).characterBody; ((SubjectChatMessage)val3).baseToken = baseToken; val3.pickupToken = Language.GetStringFormatted("ITEM_MODIFIER_TEMP", new object[1] { Language.GetStringFormatted(pickupDef.nameToken, Array.Empty()) }); val3.pickupColor = Color32.op_Implicit(pickupDef.baseColor); val3.pickupQuantity = 1u; PlayerPickupChatMessage val4 = val3; Chat.SendBroadcastChat((ChatMessageBase)(object)val4); } } droppedItemServer = true; } private bool GetMealItem(ref UniquePickup pickup) { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) if (craftableFoodItems == null) { GetCraftableFoodItems(); } if (craftableFoodItems.Count > 0) { pickup.pickupIndex = craftableFoodItems.ElementAt(Random.Range(0, craftableFoodItems.Count - 1)); return true; } return false; } private void GetCraftableFoodItems() { //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_0074: 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_00a0: 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_00e5: 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_0126: Unknown result type (might be due to invalid IL or missing references) craftableFoodItems = new HashSet(); if (!Object.op_Implicit((Object)(object)((EntityState)this).characterBody) || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody.inventory)) { return; } int count = ((EntityState)this).characterBody.inventory.itemAcquisitionOrder.Count; List list = new List(); for (int i = 0; i < count; i++) { ItemIndex val = ((EntityState)this).characterBody.inventory.itemAcquisitionOrder[i]; PickupIndex item = PickupCatalog.FindPickupIndex(val); for (int j = 0; j < ((EntityState)this).characterBody.inventory.GetItemCountEffective(val); j++) { list.Add(item); } } RecipeEntry[] array = CraftableCatalog.FindApplicableRecipesByIngredients(list.ToArray()); RecipeEntry[] array2 = array; foreach (RecipeEntry val2 in array2) { if (foodIndices.Contains(val2.result) && (Options.produceStrongFoods.Value || !strongFoodIndices.Contains(val2.result))) { craftableFoodItems.Add(val2.result); } } } public override void ModifyNextState(EntityState nextState) { ((EntityState)this).ModifyNextState(nextState); Salvage val = (Salvage)(object)((nextState is Salvage) ? nextState : null); exitingStatePermanently = val == null; if (!exitingStatePermanently && NetworkServer.active && !droppedItemServer) { DropTempItemServer(); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && walkSpeedModifier != null) { ((EntityState)this).characterMotor.RemoveWalkSpeedPenalty(walkSpeedModifier); } ((EntityState)this).OnExit(); } 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)7; } public override void OnSerialize(NetworkWriter writer) { ((EntityState)this).OnSerialize(writer); writer.Write((byte)itemsDropped); } public override void OnDeserialize(NetworkReader reader) { ((EntityState)this).OnDeserialize(reader); itemsDropped = reader.ReadByte(); } } } namespace FenrisSkills.Skills.States.Captain { public class CallRailgunStrike : CallRailgunStrikeBase { public const float projectileForce = 4000f; private static int CallAirstrike3StateHash = Animator.StringToHash("CallAirstrike3"); public override void OnExit() { ((EntityState)this).PlayAnimation("Gesture, Override", CallAirstrike3StateHash); ((EntityState)this).PlayAnimation("Gesture, Additive", CallAirstrike3StateHash); ((BaseState)this).AddRecoil(-2f, -2f, -0.5f, 0.5f); base.OnExit(); } public override void ModifyProjectile(ref FireProjectileInfo fireProjectileInfo) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) ((CallAirstrikeBase)this).ModifyProjectile(ref fireProjectileInfo); fireProjectileInfo.force = 4000f; fireProjectileInfo.damageTypeOverride = new DamageTypeCombo(DamageTypeCombo.op_Implicit((DamageType)32), (DamageTypeExtended)0, (DamageSource)4); } } public class CallRailgunStrikeBase : CallAirstrikeBase { private static GameObject endpointVisualizer = Addressables.LoadAssetAsync((object)RoR2_Base_Treebot.TreebotMortarAreaIndicator_prefab).WaitForCompletion(); public override void OnEnter() { base.airstrikeRadius = 20f; base.bloom = 0.4f; ((AimThrowableBase)this).maxDistance = 1000f; ((AimThrowableBase)this).rayRadius = 0.2f; ((AimThrowableBase)this).projectilePrefab = Assets.railCannonProjectilePrefab; ((AimThrowableBase)this).endpointVisualizerPrefab = endpointVisualizer; ((AimThrowableBase)this).endpointVisualizerRadiusScale = 0f; ((AimThrowableBase)this).setFuse = false; ((AimThrowableBase)this).damageCoefficient = 30f; ((AimThrowableBase)this).baseMinimumDuration = 0.1f; ((CallAirstrikeBase)this).OnEnter(); } public override void OnExit() { ((CallAirstrikeBase)this).OnExit(); } } public class CallRailgunStrikeEnter : BaseSkillState { public override void OnEnter() { ((BaseState)this).OnEnter(); if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)(object)new CallRailgunStrike()); } } 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 SetupRailgunStrike : BaseState { public static SkillDef primarySkillDef = BaseSkill.skillDef; public static GameObject crosshairOverridePrefab = Addressables.LoadAssetAsync((object)RoR2_Base_Captain.CaptainAirstrikeCrosshair_prefab).WaitForCompletion(); public static string enterSoundString = "Play_captain_shift_start"; public static string exitSoundString = "Play_captain_shift_end"; public static GameObject effectMuzzlePrefab = Addressables.LoadAssetAsync((object)RoR2_Base_Captain.CaptainRadioEffect_prefab).WaitForCompletion(); public static string effectMuzzleString = "MuzzleHandRadio"; public static float baseExitDuration = 0.3f; private GenericSkill primarySkillSlot; private GameObject effectMuzzleInstance; private Animator modelAnimator; private float timerSinceComplete; private bool beginExit; private OverrideRequest crosshairOverrideRequest; private static int PrepAirstrikeHash = Animator.StringToHash("PrepAirstrike"); private float exitDuration => baseExitDuration / base.attackSpeedStat; public override void OnEnter() { ((BaseState)this).OnEnter(); primarySkillSlot = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) ? ((EntityState)this).skillLocator.primary : null); if (Object.op_Implicit((Object)(object)primarySkillSlot)) { primarySkillSlot.SetSkillOverride((object)this, primarySkillDef, (SkillOverridePriority)4); } modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { modelAnimator.SetBool(PrepAirstrikeHash, true); } ((EntityState)this).PlayCrossfade("Gesture, Override", PrepAirstrikeHash, 0.1f); ((EntityState)this).PlayCrossfade("Gesture, Additive", PrepAirstrikeHash, 0.1f); Transform val = ((BaseState)this).FindModelChild(effectMuzzleString); if (Object.op_Implicit((Object)(object)val)) { effectMuzzleInstance = Object.Instantiate(effectMuzzlePrefab, val); } if (Object.op_Implicit((Object)(object)crosshairOverridePrefab)) { crosshairOverrideRequest = CrosshairUtils.RequestOverrideForBody(((EntityState)this).characterBody, crosshairOverridePrefab, (OverridePriority)1); } Util.PlaySound(enterSoundString, ((EntityState)this).gameObject); Util.PlaySound("Play_captain_shift_active_loop", ((EntityState)this).gameObject); } public override void FixedUpdate() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { CharacterDirection characterDirection = ((EntityState)this).characterDirection; Ray aimRay = ((BaseState)this).GetAimRay(); characterDirection.moveVector = ((Ray)(ref aimRay)).direction; } if (!Object.op_Implicit((Object)(object)primarySkillSlot) || primarySkillSlot.stock == 0) { beginExit = true; } if (beginExit) { timerSinceComplete += ((EntityState)this).GetDeltaTime(); if (timerSinceComplete > exitDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } } public override void OnExit() { if (Object.op_Implicit((Object)(object)primarySkillSlot)) { primarySkillSlot.UnsetSkillOverride((object)this, primarySkillDef, (SkillOverridePriority)4); } Util.PlaySound(exitSoundString, ((EntityState)this).gameObject); Util.PlaySound("Stop_captain_shift_active_loop", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)effectMuzzleInstance)) { EntityState.Destroy((Object)(object)effectMuzzleInstance); } if (Object.op_Implicit((Object)(object)modelAnimator)) { modelAnimator.SetBool(PrepAirstrikeHash, false); } OverrideRequest obj = crosshairOverrideRequest; if (obj != null) { obj.Dispose(); } ((EntityState)this).OnExit(); } } } namespace FenrisSkills.Skills.Components { public class CreateMineDamageBlast : MonoBehaviour { public void Start() { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: 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_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_00f4: Expected O, but got Unknown //IL_00f6: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { ProjectileDamage component = ((Component)this).GetComponent(); ProjectileController component2 = ((Component)this).GetComponent(); CharacterBody val = default(CharacterBody); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)component2.owner) && component2.owner.TryGetComponent(ref val) && Object.op_Implicit((Object)(object)val.teamComponent)) { BlastAttack val2 = new BlastAttack { position = ((Component)this).transform.position, attacker = component2.owner, baseDamage = val.damage * 5f, damageColorIndex = (DamageColorIndex)0, damageType = component.damageType, falloffModel = (FalloffModel)3, procChainMask = default(ProcChainMask), procCoefficient = 1f, radius = 20f, crit = val.RollCrit(), teamIndex = val.teamComponent.teamIndex }; val2.Fire(); } Object.Destroy((Object)(object)((Component)this).gameObject); } } } public class CreateRailgunBullet : MonoBehaviour { public void Start() { //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_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_0088: 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_0092: 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_00b9: 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_00dd: 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_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_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_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_0138: 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_014a: 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_0157: 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_0161: 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_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Expected O, but got Unknown ProjectileDamage component = ((Component)this).GetComponent(); ProjectileController component2 = ((Component)this).GetComponent(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component2)) { bool flag = false; if (Object.op_Implicit((Object)(object)component2.owner)) { CharacterBody component3 = component2.owner.GetComponent(); if (component3 != null) { flag = component3.RollCrit(); } } BulletAttack val = new BulletAttack { aimVector = Vector3.down, origin = ((Component)this).transform.position + Vector3.up * 1000f, owner = component2.owner, weapon = ((Component)((Component)this).transform.Find("Muzzle")).gameObject, bulletCount = 1u, damage = (flag ? (component.damage * 1.5f) : component.damage), damageColorIndex = (DamageColorIndex)0, damageType = component.damageType, falloffModel = (FalloffModel)0, force = component.force, HitEffectNormal = false, procChainMask = default(ProcChainMask), procCoefficient = 1f, maxDistance = 2000f, radius = 14f, isCrit = flag, minSpread = 0f, maxSpread = 0f, stopperMask = LayerMask.op_Implicit(0), smartCollision = false, sniper = false, tracerEffectPrefab = (flag ? Assets.railCannonBulletTracerCritPrefab : Assets.railCannonBulletTracerPrefab) }; val.Fire(); } Object.Destroy((Object)(object)((Component)this).gameObject); } } public class PlaySoundOnDelay : MonoBehaviour { public float delay = 1f; public string soundString; public bool resetOnEnable = true; private float stopwatch; private bool activated; private void OnEnable() { if (resetOnEnable) { stopwatch = 0f; activated = false; } } public void Update() { if (!activated) { stopwatch += Time.deltaTime; if (stopwatch >= delay) { Util.PlaySound(soundString, ((Component)this).gameObject); activated = true; } } } } public class PyroUIColorController : MonoBehaviour { public Image[] imagesToUpdate; public void UpdateColors(Color color) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) if (imagesToUpdate != null) { Image[] array = imagesToUpdate; foreach (Image val in array) { ((Graphic)val).color = color; } } } } }