Decompiled source of EscanorPaladinSkills v1.1.0
EscanorPaladinSkills.dll
Decompiled 2 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.Merc; using EscanorPaladinSkills.Buffs; using EscanorPaladinSkills.Components; using EscanorPaladinSkills.Overlays; using EscanorPaladinSkills.Projectiles; using EscanorPaladinSkills.SkillDefs; using EscanorPaladinSkills.States; using EscanorPaladinSkills.VFX; using IL.EntityStates; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using PaladinMod; using PaladinMod.Misc; using PaladinMod.Modules; using R2API; using RoR2; using RoR2.Audio; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("EscanorPaladinSkills")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("EscanorPaladinSkills")] [assembly: AssemblyTitle("EscanorPaladinSkills")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace EscanorPaladinSkills { [BepInPlugin("HIFU.EscanorPaladinSkills", "EscanorPaladinSkills", "1.1.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin { public const string PluginGUID = "HIFU.EscanorPaladinSkills"; public const string PluginAuthor = "HIFU"; public const string PluginName = "EscanorPaladinSkills"; public const string PluginVersion = "1.1.0"; public static AssetBundle escanor; public static ManualLogSource logger; public static Xoroshiro128Plus rng; public static ConfigEntry<float> swordScale { get; set; } public void Awake() { logger = ((BaseUnityPlugin)this).Logger; Run.onRunStartGlobal += Run_onRunStartGlobal; swordScale = ((BaseUnityPlugin)this).Config.Bind<float>("Silly", "Sword Scale Multiplier", 1.5f, "Only works with Divine Axe Rhitta as your M1"); escanor = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("EscanorPaladinSkills.dll", "escanorpaladinskills")); All.Init(); DivineAxeRhitta.Init(); FlameOfLife.Init(); TheOne.Init(); CruelSun.Init(); EscanorPaladinSkills.VFX.Judgement.Init(); EscanorPaladinSkills.Projectiles.Judgement.Init(); Sunfall.Init(); Init.SetUpComponents(); } private void Run_onRunStartGlobal(Run run) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown rng = new Xoroshiro128Plus(RoR2Application.rng.nextUlong); } public void Start() { DivineAxeRhittaJank.Init(); AddESM(); IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(SkillDefBase)) select type; logger.LogInfo((object)"==+----------------==SKILLS==----------------+=="); foreach (Type item in enumerable) { SkillDefBase skillDefBase = (SkillDefBase)Activator.CreateInstance(item); if (!skillDefBase.Add) { skillDefBase.Init(); } else if (ValidateSkillDef(skillDefBase)) { skillDefBase.Init(); } } AddStates(); AddSkillUpgrades(); } public void AddESM() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) GameObject characterPrefab = PaladinPlugin.characterPrefab; NetworkStateMachine component = characterPrefab.GetComponent<NetworkStateMachine>(); EntityStateMachine val = characterPrefab.AddComponent<EntityStateMachine>(); val.customName = "Flame"; val.initialStateType = new SerializableEntityStateType(typeof(Idle)); val.mainStateType = new SerializableEntityStateType(typeof(Idle)); Array.Resize(ref component.stateMachines, component.stateMachines.Length + 1); component.stateMachines[component.stateMachines.Length - 1] = val; } public void AddStates() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) bool flag = default(bool); ContentAddition.AddEntityState(typeof(CruelSunState), ref flag); ContentAddition.AddEntityState(typeof(FlameOfLifeState), ref flag); ContentAddition.AddEntityState(typeof(DivineAxeRhittaState), ref flag); ContentAddition.AddEntityState(typeof(SunfallState), ref flag); } public void AddSkillUpgrades() { } public bool ValidateSkillDef(SkillDefBase sdb) { if (sdb.isEnabled && ((BaseUnityPlugin)this).Config.Bind<bool>(sdb.ConfigNameText, "Enable?", true, "Vanilla is false").Value) { return true; } return false; } } internal class Publicize { } } namespace EscanorPaladinSkills.VFX { public static class DivineAxeRhitta { public static GameObject prefab; public static GameObject groundPrefab; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_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_00e0: 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_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Expected O, but got Unknown //IL_0128: 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_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_031e: Unknown result type (might be due to invalid IL or missing references) //IL_0340: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_0381: Unknown result type (might be due to invalid IL or missing references) //IL_0393: Unknown result type (might be due to invalid IL or missing references) //IL_0398: Unknown result type (might be due to invalid IL or missing references) //IL_03b3: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03c9: Unknown result type (might be due to invalid IL or missing references) //IL_03ce: Unknown result type (might be due to invalid IL or missing references) //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03e4: Unknown result type (might be due to invalid IL or missing references) //IL_03e9: Unknown result type (might be due to invalid IL or missing references) //IL_03f3: Expected O, but got Unknown //IL_03ee: Unknown result type (might be due to invalid IL or missing references) //IL_03fe: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_0488: Unknown result type (might be due to invalid IL or missing references) //IL_04b1: Unknown result type (might be due to invalid IL or missing references) //IL_04b6: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: Unknown result type (might be due to invalid IL or missing references) //IL_0500: Unknown result type (might be due to invalid IL or missing references) //IL_0527: Unknown result type (might be due to invalid IL or missing references) //IL_052c: Unknown result type (might be due to invalid IL or missing references) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/MissileVoid/VoidImpactEffect.prefab").WaitForCompletion(), "Divine Axe Rhitta Impact VFX", false); prefab.GetComponent<VFXAttributes>().DoNotPool = true; EffectComponent component = prefab.GetComponent<EffectComponent>(); component.soundName = string.Empty; component.applyScale = true; Light val = prefab.AddComponent<Light>(); ((Behaviour)val).enabled = false; val.range = 13f; val.intensity = 20f; val.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)144, (byte)0, byte.MaxValue)); LightIntensityCurve val2 = prefab.AddComponent<LightIntensityCurve>(); ((Behaviour)val2).enabled = false; val2.light = val; val2.maxIntensity = 20f; val2.timeMax = 0.2f; val2.curve = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 1f), new Keyframe(1f, 0f) }); Transform transform = prefab.transform; for (int i = 0; i < transform.childCount; i++) { Transform child = transform.GetChild(i); child.localScale *= 2.5f; } ParticleSystemRenderer component2 = ((Component)transform.Find("Scaled Hitspark 1 (Random Color)")).GetComponent<ParticleSystemRenderer>(); MainModule main = ((Component)component2).GetComponent<ParticleSystem>().main; MinMaxCurve startLifetime = ((MainModule)(ref main)).startLifetime; ((MinMaxCurve)(ref startLifetime)).constantMin = 0.35f; ((MinMaxCurve)(ref startLifetime)).constantMax = 0.5f; Material val3 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Nullifier/matNullifierPortalEffectCenter.mat").WaitForCompletion()); val3.SetTexture("_RemapTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texRampDivineAxeRhitta1.png")); val3.SetFloat("_InvFade", 0f); val3.SetFloat("_Boost", 8.725851f); val3.SetFloat("_AlphaBoost", 2.285f); val3.SetFloat("_AlphaBias", 0.02575896f); ((Renderer)component2).material = val3; ParticleSystemRenderer component3 = ((Component)transform.Find("Scaled Hitspark 1 (Random Color) (1)")).GetComponent<ParticleSystemRenderer>(); MainModule main2 = ((Component)component3).GetComponent<ParticleSystem>().main; MinMaxGradient startColor = ((MainModule)(ref main2)).startColor; MinMaxCurve startLifetime2 = ((MainModule)(ref main2)).startLifetime; ((MinMaxCurve)(ref startLifetime2)).constantMin = 0.35f; ((MinMaxCurve)(ref startLifetime2)).constantMax = 0.55f; ((MinMaxGradient)(ref startColor)).mode = (ParticleSystemGradientMode)0; ((MinMaxGradient)(ref startColor)).color = Color.white; Material val4 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matOmniHitspark1Void.mat").WaitForCompletion()); val4.SetTexture("_RemapTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texRampDivineAxeRhitta1.png")); val4.SetFloat("_Boost", 20f); val4.SetFloat("_AlphaBoost", 1.120074f); val4.SetFloat("_AlphaBias", 0.1589945f); ((Renderer)component3).material = val4; MainModule main3 = ((Component)transform.Find("Flash, Hard")).GetComponent<ParticleSystem>().main; MinMaxGradient startColor2 = ((MainModule)(ref main3)).startColor; MinMaxCurve startLifetime3 = ((MainModule)(ref main3)).startLifetime; ((MinMaxCurve)(ref startLifetime3)).constant = 0.3f; ((MinMaxGradient)(ref startColor2)).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)206, (byte)78, byte.MaxValue)); ParticleSystemRenderer component4 = ((Component)transform.Find("Impact Shockwave")).GetComponent<ParticleSystemRenderer>(); component4.alignment = (ParticleSystemRenderSpace)3; ((Component)component4).transform.localScale = new Vector3(8f, 0.75f, 8f); SizeOverLifetimeModule sizeOverLifetime = ((Component)component4).GetComponent<ParticleSystem>().sizeOverLifetime; ((SizeOverLifetimeModule)(ref sizeOverLifetime)).size = new MinMaxCurve(1f, new AnimationCurve((Keyframe[])(object)new Keyframe[3] { new Keyframe(0f, 0.85f), new Keyframe(0.85f, 1f), new Keyframe(1f, 0f) })); Material val5 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matOmniRing1Void.mat").WaitForCompletion()); val5.SetTexture("_RemapTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texRampDivineAxeRhitta2.png")); val5.SetFloat("_InvFade", 0f); val5.SetFloat("_Boost", 20f); val5.SetFloat("_AlphaBoost", 1.246044f); val5.SetFloat("_AlphaBias", 0.0275989f); val5.SetTexture("_MainTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/VFX/texOmniHitspark2Mask.png").WaitForCompletion()); ((Renderer)component4).material = val5; ContentAddition.AddEffect(prefab); groundPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidCamp/PurchaseLockVoid.prefab").WaitForCompletion(), "Divine Axe Rhitta Ground VFX", false); Object.Destroy((Object)(object)groundPrefab.GetComponent<NetworkIdentity>()); MeshRenderer component5 = ((Component)groundPrefab.transform.GetChild(0)).GetComponent<MeshRenderer>(); Material val6 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidCamp/matVoidCampLock.mat").WaitForCompletion()); val6.SetColor("_TintColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)213, (byte)0, (byte)133))); ((Renderer)component5).material = val6; EffectComponent val7 = groundPrefab.AddComponent<EffectComponent>(); val7.applyScale = true; val7.positionAtReferencedTransform = true; val7.parentToReferencedTransform = true; ((Component)val7).gameObject.AddComponent<VFXAttributes>(); DestroyOnTimer val8 = groundPrefab.AddComponent<DestroyOnTimer>(); val8.duration = 0.5f; ContentAddition.AddEffect(groundPrefab); } } public static class DivineAxeRhittaJank { public static GameObject swingPrefab; public static void Init() { //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Expected O, but got Unknown GameObject val = Asset.mainAssetBundle.LoadAsset<GameObject>("PaladinSwing"); swingPrefab = PrefabAPI.InstantiateClone(val, "Divine Axe Rhitta Swing VFX", false); VFXAttributes val2 = swingPrefab.AddComponent<VFXAttributes>(); val2.DoNotPool = true; Object.Destroy((Object)(object)swingPrefab.GetComponent<NetworkIdentity>()); swingPrefab.GetComponent<DestroyOnTimer>().duration = 5f; EffectComponent val3 = swingPrefab.AddComponent<EffectComponent>(); val3.applyScale = false; val3.parentToReferencedTransform = true; val3.positionAtReferencedTransform = true; Transform transform = swingPrefab.transform; Transform val4 = transform.Find("SwingTrail"); val4.localScale = Vector3.one * 4f; Material val5 = Object.Instantiate<Material>(Asset.mainAssetBundle.LoadAsset<Material>("matPaladinSwing3")); val5.SetColor("_Color", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)74, byte.MaxValue))); val5.SetColor("_EmissionColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)144, (byte)0, byte.MaxValue))); val5.SetFloat("_Cutoff", 0.12f); val5.SetFloat("_BlendOp", 4f); val5.SetTexture("_MainTex", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texMaskSwing.png")); val5.SetTexture("_EmissionMap", (Texture)(object)Main.escanor.LoadAsset<Texture2D>("texMaskSwing.png")); ((Renderer)((Component)val4).GetComponent<ParticleSystemRenderer>()).material = val5; Transform val6 = val4.Find("SwingTrail2"); val6.localScale = Vector3.one * 2f; Light val7 = ((Component)val4).gameObject.AddComponent<Light>(); val7.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)144, (byte)0, byte.MaxValue)); val7.range = 13f; val7.intensity = 14f; LightIntensityCurve val8 = ((Component)val4).gameObject.AddComponent<LightIntensityCurve>(); val8.light = val7; val8.maxIntensity = 14f; val8.curve = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 1f), new Keyframe(1f, 0f) }); val8.timeMax = 0.5f; ContentAddition.AddEffect(swingPrefab); } } public static class Judgement { public static GameObject prefab; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/OmniImpactVFXSlashMerc.prefab").WaitForCompletion(), "Judgement VFX", false); EffectComponent component = prefab.GetComponent<EffectComponent>(); component.soundName = string.Empty; component.applyScale = true; ContentAddition.AddEffect(prefab); } } } namespace EscanorPaladinSkills.States { public class CruelSunState : BaseState { public static float baseDuration = 0.75f; public float duration; public static string sound; public Ray aimRay; public bool hasFired = false; public bool hasPlayedSound = false; public static float barrierGain = 0.06f; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / base.attackSpeedStat; if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(1f); } ((EntityState)this).PlayAnimation("Gesture, Override", "CastSun", "Spell.playbackRate", duration * 0.5f, 0f); Util.PlaySound("PaladinCloth1", ((EntityState)this).gameObject); Util.PlaySound("PaladinCloth1", ((EntityState)this).gameObject); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } public override void FixedUpdate() { //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) ((EntityState)this).FixedUpdate(); if (!(((EntityState)this).fixedAge < duration) && ((EntityState)this).isAuthority) { if (!hasFired) { aimRay = ((BaseState)this).GetAimRay(); FireProjectile(); hasFired = true; } ((EntityState)this).outer.SetNextStateToMain(); } } public void FireProjectile() { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0065: 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_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: 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) ((BaseState)this).AddRecoil(7f, 7f, -2.5f, 2.5f); ((EntityState)this).PlayAnimation("Gesture, Override", "ThrowSpell", "Spell.playbackRate", duration * 0.5f, 0f); DamageTypeCombo value = default(DamageTypeCombo); ((DamageTypeCombo)(ref value))..ctor(DamageTypeCombo.op_Implicit((DamageType)128), (DamageTypeExtended)0, (DamageSource)2); DamageAPI.AddModdedDamageType(ref value, CruelSun.barrierOnHit); FireProjectileInfo val = default(FireProjectileInfo); val.crit = ((BaseState)this).RollCrit(); val.damage = base.damageStat * 7f; val.damageTypeOverride = value; val.owner = ((EntityState)this).gameObject; val.position = ((EntityState)this).characterBody.corePosition + new Vector3(0f, 4f, 0f); val.projectilePrefab = CruelSun.prefab; val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); FireProjectileInfo val2 = val; ProjectileManager.instance.FireProjectile(val2); Util.PlaySound("Play_grandParent_attack3_sun_spawn", ((EntityState)this).gameObject); } public override void OnExit() { ((EntityState)this).OnExit(); } } public class DivineAxeRhittaState : BaseSkillState, IStepSetter { public static float baseDuration = 1.25f; public static float minimumSprintDuration = 0.4f; public SphereSearch sphereSearch; public List<HurtBox> hurtBoxes; public PaladinSwordController swordController; public bool hasFired = false; public OverlapAttack attack; public HitBoxGroup hitBoxGroup; public Transform modelTransform; public GameObject impact = DivineAxeRhitta.prefab; public int swingIndex; public bool inCombo; public Animator animator; public bool inHitPause; public bool hasHopped; public HitStopCachedState hitStopCachedState; public float hitPauseTimer; public Vector3 storedVelocity; public override void OnEnter() { ((BaseState)this).OnEnter(); swordController = ((EntityState)this).GetComponent<PaladinSwordController>(); hitBoxGroup = null; modelTransform = ((EntityState)this).GetModelTransform(); animator = ((EntityState)this).GetModelAnimator(); ((BaseState)this).StartAimMode(2.5f, false); if (Object.op_Implicit((Object)(object)modelTransform)) { hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup x) => x.groupName == "SayGex"); } Util.PlaySound("PaladinCloth2", ((EntityState)this).gameObject); string text = "Slash" + (1 + swingIndex); if (inCombo) { text = "SlashCombo1"; } ((EntityState)this).PlayCrossfade("Gesture, Override", text, "Slash.playbackRate", baseDuration, 0.05f * baseDuration); if (!animator.GetBool("isMoving") && animator.GetBool("isGrounded")) { ((EntityState)this).PlayCrossfade("FullBody, Override", text, "Slash.playbackRate", baseDuration, 0.05f * baseDuration); } } public void Fire() { //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: 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_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Expected O, but got Unknown ((BaseState)this).AddRecoil(-3f, -6f, -1.5f, 1.5f); Util.PlayAttackSpeedSound("Play_loader_m1_swing", ((EntityState)this).gameObject, 0.5f); Util.PlaySound("Play_item_proc_armorReduction_hit", ((EntityState)this).gameObject); swordController.attacking = true; swordController.PlaySwingSound(); if (((EntityState)this).isAuthority) { string text = ((swingIndex != 0) ? "SwingLeft" : "SwingRight"); EffectManager.SimpleMuzzleFlash(DivineAxeRhittaJank.swingPrefab, ((EntityState)this).gameObject, text, true); } attack = new OverlapAttack { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, attackerFiltering = (AttackerFiltering)2, pushAwayForce = 1500f, damage = ((BaseState)this).damageStat * (7f + (((BaseState)this).attackSpeedStat - 1f) * 4.6666665f), procCoefficient = 1f, isCrit = ((BaseState)this).RollCrit(), procChainMask = default(ProcChainMask), teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject), forceVector = Vector3.zero, hitBoxGroup = hitBoxGroup, hitEffectPrefab = impact, damageType = DamageTypeCombo.GenericPrimary }; if (((EntityState)this).isAuthority && attack.Fire((List<HurtBox>)null)) { OnHit(); } } public void OnHit() { //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_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) Util.PlaySound("Play_item_proc_armorReduction_shatter", ((EntityState)this).gameObject); if (!hasHopped) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, 6f); } hasHopped = true; } if (!inHitPause) { if (((EntityState)this).characterMotor.velocity != Vector3.zero) { storedVelocity = ((EntityState)this).characterMotor.velocity; } hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, "Slash.playbackRate"); hitPauseTimer = 2f * GroundLight.hitPauseDuration; inHitPause = true; } } public void GroundNearby() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Expected O, but got Unknown //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_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_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Expected O, but got Unknown //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { return; } hurtBoxes = new List<HurtBox>(); sphereSearch = new SphereSearch { origin = ((EntityState)this).characterBody.corePosition, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask, radius = 24f }; sphereSearch.RefreshCandidates(); sphereSearch.FilterCandidatesByHurtBoxTeam(TeamMask.GetUnprotectedTeams(((EntityState)this).teamComponent.teamIndex)); sphereSearch.FilterCandidatesByDistinctHurtBoxEntities(); sphereSearch.OrderCandidatesByDistance(); sphereSearch.GetHurtBoxes(hurtBoxes); sphereSearch.ClearCandidates(); if (hurtBoxes.Count > 0) { Util.PlaySound("Play_item_proc_fireRingTornado_end", ((EntityState)this).gameObject); } for (int i = 0; i < hurtBoxes.Count; i++) { HurtBox val = hurtBoxes[i]; HealthComponent healthComponent = val.healthComponent; CharacterBody body = healthComponent.body; RigidbodyMotor component = ((Component)body).GetComponent<RigidbodyMotor>(); Rigidbody rigidbody = body.rigidbody; float num = 1f; if (Object.op_Implicit((Object)(object)component)) { num = component.mass; } else if (Object.op_Implicit((Object)(object)rigidbody)) { num = rigidbody.mass; } if (num < 100f) { num = 100f; } DamageInfo val2 = new DamageInfo { attacker = ((EntityState)this).gameObject, canRejectForce = false, crit = false, damage = 0f, damageType = DamageTypeCombo.op_Implicit((DamageType)2048), procCoefficient = 0f, force = new Vector3(0f, -25f * num, 0f), inflictor = ((EntityState)this).gameObject }; if (NetworkServer.active) { healthComponent.TakeDamage(val2); } EffectData val3 = new EffectData { origin = body.corePosition, rotation = Quaternion.identity, scale = body.radius * 1.5f }; val3.SetNetworkedObjectReference(((Component)body).gameObject); EffectManager.SpawnEffect(DivineAxeRhitta.groundPrefab, val3, true); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } public override void FixedUpdate() { //IL_0037: 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_005b: 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) ((EntityState)this).FixedUpdate(); hitPauseTimer -= Time.fixedDeltaTime; if (hitPauseTimer <= 0f && inHitPause) { ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); inHitPause = false; if (storedVelocity != Vector3.zero) { ((EntityState)this).characterMotor.velocity = storedVelocity; } } if (((EntityState)this).fixedAge <= minimumSprintDuration) { ((EntityState)this).characterBody.isSprinting = false; } if (((EntityState)this).fixedAge >= 0.25f && !hasFired) { Fire(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && Object.op_Implicit((Object)(object)swordController) && swordController.swordActive) { GroundNearby(); } hasFired = true; } if (!(((EntityState)this).fixedAge < baseDuration) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnExit(); if (inHitPause) { ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); inHitPause = false; } if (Object.op_Implicit((Object)(object)swordController)) { swordController.attacking = false; } } public override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); writer.Write((byte)swingIndex); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); swingIndex = reader.ReadByte(); } public void SetStep(int i) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) swingIndex = i; if (swingIndex > 1) { ((InstanceData)((BaseSkillState)this).activatorSkillSlot.skillInstanceData).step = 0; swingIndex = 0; inCombo = true; } } } public class FlameOfLifeState : BaseState { public Transform modelTransform; public static float castAnimationDuration = 0.33f; public static float baseDuration = castAnimationDuration + 7f; public static float interval = 0.2f; public float timer; public bool hasAddedStuff; public override void OnEnter() { ((BaseState)this).OnEnter(); modelTransform = ((EntityState)this).GetModelTransform(); ((EntityState)this).PlayAnimation("Gesture, Override", "LimitBreak", "Rage.playbackRate", 1f, 0f); Util.PlaySound("PaladinCastTorpor", ((EntityState)this).gameObject); Util.PlaySound("Play_item_use_hellfire_start", ((EntityState)this).gameObject); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } public override void FixedUpdate() { //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= castAnimationDuration && !hasAddedStuff) { if (Object.op_Implicit((Object)(object)modelTransform)) { TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((Component)modelTransform).gameObject); val.duration = baseDuration + 0.5f; val.animateShaderAlpha = true; val.alphaCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[4] { new Keyframe(0f, 1f), new Keyframe(0.07f, 1f), new Keyframe(0.9f, 1f), new Keyframe(1f, 0f) }); val.destroyComponentOnEnd = true; val.originalMaterial = FlameOfLife.prefab1; val.inspectorCharacterModel = ((Component)modelTransform).GetComponent<CharacterModel>(); TemporaryOverlayInstance val2 = TemporaryOverlayManager.AddOverlay(((Component)modelTransform).gameObject); val2.duration = baseDuration + 1.5f; val2.animateShaderAlpha = true; val2.alphaCurve = new AnimationCurve((Keyframe[])(object)new Keyframe[4] { new Keyframe(0f, 1f), new Keyframe(0.1f, 1f), new Keyframe(0.85f, 1f), new Keyframe(1f, 0f) }); val2.destroyComponentOnEnd = true; val2.originalMaterial = FlameOfLife.prefab2; val2.inspectorCharacterModel = ((Component)modelTransform).GetComponent<CharacterModel>(); Light component = ((Component)modelTransform).GetComponent<Light>(); if (Object.op_Implicit((Object)(object)component)) { ((Behaviour)component).enabled = true; } LightIntensityCurve component2 = ((Component)modelTransform).GetComponent<LightIntensityCurve>(); if (Object.op_Implicit((Object)(object)component2)) { ((Behaviour)component2).enabled = true; } } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active) { if (((EntityState)this).characterBody.HasBuff(All.flameOfLifeHealingDebuff)) { ((EntityState)this).characterBody.RemoveBuff(All.flameOfLifeHealingDebuff); } ((EntityState)this).characterBody.AddBuff(All.flameOfLifeHealingDebuff); ((EntityState)this).characterBody.AddBuff(All.flameOfLifeBuff); } hasAddedStuff = true; } if (!(((EntityState)this).fixedAge < baseDuration + castAnimationDuration) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); Util.PlaySound("Play_mage_R_end", ((EntityState)this).gameObject); Util.PlaySound("Stop_item_use_hellfire_loop", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(All.flameOfLifeHealingDebuff); ((EntityState)this).characterBody.RemoveBuff(All.flameOfLifeBuff); ((EntityState)this).characterBody.AddTimedBuff(All.flameOfLifeHealingDebuff, 2f); } if (Object.op_Implicit((Object)(object)modelTransform)) { Light component = ((Component)modelTransform).GetComponent<Light>(); if (Object.op_Implicit((Object)(object)component)) { ((Behaviour)component).enabled = false; } LightIntensityCurve component2 = ((Component)modelTransform).GetComponent<LightIntensityCurve>(); if (Object.op_Implicit((Object)(object)component2)) { ((Behaviour)component2).enabled = false; } } } } public class SunfallState : BaseSkillState { public static float baseDuration = 3f; public bool hasFired = false; public bool hasPlayedSound = false; public Ray aimRay; public override void OnEnter() { ((BaseState)this).OnEnter(); ((BaseState)this).StartAimMode(5f, false); Util.PlaySound("PaladinCloth1", ((EntityState)this).gameObject); Util.PlayAttackSpeedSound("Play_loader_m1_swing", ((EntityState)this).gameObject, 0.5f); ((EntityState)this).PlayAnimation("Gesture, Override", "CastSun", "Spell.playbackRate", baseDuration, 0f); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(All.sunfallStunDebuff); } } public IEnumerator Fire() { Util.PlaySound("Play_grandParent_attack3_sun_spawn", ((EntityState)this).gameObject); ((BaseState)this).AddRecoil(-4f, -4.5f, -2.75f, 2.75f); RaycastHit raycastInfo = default(RaycastHit); for (int i = 0; i < 20; i++) { yield return (object)new WaitForSeconds(0.06f); aimRay = new Ray(((EntityState)this).inputBank.aimOrigin + ((EntityState)this).inputBank.aimDirection * 1f, ((EntityState)this).inputBank.aimDirection); if (Physics.Raycast(aimRay, ref raycastInfo, 1000f, LayerMask.op_Implicit(CommonMasks.bullet), (QueryTriggerInteraction)1)) { ((BaseState)this).AddRecoil(-0.5f, 0.5f, -0.75f, 0.75f); FireProjectileInfo fpi = new FireProjectileInfo { crit = ((BaseState)this).RollCrit(), damage = ((BaseState)this).damageStat * (3.5f + (((BaseState)this).attackSpeedStat - 1f) * 2.3333333f), damageTypeOverride = DamageTypeCombo.GenericSpecial, owner = ((EntityState)this).gameObject, position = ((RaycastHit)(ref raycastInfo)).point + new Vector3(Main.rng.RangeFloat(-1.5f * (float)i, 1.5f * (float)i), 45f + Main.rng.RangeFloat(-1.1f * (float)i, 1.1f * (float)i), Main.rng.RangeFloat(-1.51f * (float)i, 1.51f * (float)i)), rotation = Util.QuaternionSafeLookRotation(new Vector3(Main.rng.RangeFloat(0f, 0.02f * (float)i), -1f, Main.rng.RangeFloat(0f, 0.021f * (float)i))), projectilePrefab = Sunfall.prefab }; if (((EntityState)this).isAuthority) { ProjectileManager.instance.FireProjectile(fpi); } } raycastInfo = default(RaycastHit); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.isSprinting = false; if (((EntityState)this).fixedAge >= 0.5f && !hasPlayedSound) { Util.PlayAttackSpeedSound("Play_grandParent_spawn", ((EntityState)this).gameObject, 0.5f); hasPlayedSound = true; } if (((EntityState)this).fixedAge >= 1.5f && !hasFired) { ((MonoBehaviour)((EntityState)this).outer).StartCoroutine(Fire()); hasFired = true; } if (!(((EntityState)this).fixedAge < baseDuration) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); ((EntityState)this).PlayAnimation("Gesture, Override", "ThrowSpell", "Spell.playbackRate", 0.5f, 0f); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) && NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(All.sunfallStunDebuff); } } } } namespace EscanorPaladinSkills.SkillDefs { public class CruelSunSD : SkillDefBase<CruelSunSD> { public override string NameToken => "SUNSHINES_CRUEL_SUN"; public override string NameText => "Sunshine's Cruel Sun"; public override string ConfigNameText => "Sunshines Cruel Sun"; public override string DescriptionText => "<style=cIsDamage>Ignite</style>. Hurl a slow, homing <style=cIsDamage>miniature sun</style> that explodes in a large radius for <style=cIsDamage>700%</style> damage. Gain <style=cIsHealing>6% barrier</style> for each enemy hit."; public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(CruelSunState)); public override string ActivationStateMachineName => "Weapon"; public override int BaseMaxStock => 1; public override float BaseRechargeInterval => 8f; public override bool BeginSkillCooldownOnSkillEnd => true; public override bool CanceledFromSprinting => false; public override bool CancelSprintingOnActivation => true; public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0; public override bool IsCombatSkill => true; public override bool MustKeyPress => true; public override int RechargeStock => 1; public override Sprite Icon => Main.escanor.LoadAsset<Sprite>("texSunshinesCruelSun3.png"); public override int StockToConsume => 1; public override string[] KeywordTokens => new string[1] { "KEYWORD_IGNITE" }; public override bool ResetCooldownTimerOnUse => true; public override int RequiredStock => 1; public override SkillSlot SkillSlot => (SkillSlot)1; public override UnlockableDef UnlockableDef => null; } public class DivineAxeRhittaSD : SkillDefBase<DivineAxeRhittaSD> { public override string NameToken => "DIVINE_AXE_RHITTA"; public override string NameText => "Divine Axe Rhitta"; public override string ConfigNameText => "Divine Axe Rhitta"; public override string DescriptionText => "<style=cIsDamage>Fleeting</style>. Raise your axe for <style=cIsDamage>700% damage</style>. <style=cIsUtility>Grounds nearby enemies</style> if the Paladin is <style=cIsHealing>blessed</style>."; public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(DivineAxeRhittaState)); public override string ActivationStateMachineName => "Weapon"; public override int BaseMaxStock => 1; public override float BaseRechargeInterval => 0f; public override bool BeginSkillCooldownOnSkillEnd => true; public override bool CanceledFromSprinting => false; public override bool CancelSprintingOnActivation => false; public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0; public override bool IsCombatSkill => true; public override bool MustKeyPress => false; public override int RechargeStock => 0; public override Sprite Icon => Main.escanor.LoadAsset<Sprite>("texDivineAxeRhitta4.png"); public override int StockToConsume => 0; public override string[] KeywordTokens => new string[1] { "KEYWORD_FLEETING" }; public override bool ResetCooldownTimerOnUse => true; public override int RequiredStock => 1; public override SkillSlot SkillSlot => (SkillSlot)0; public override UnlockableDef UnlockableDef => null; public override bool IsStepped => true; public override int StepCount => 4; } public class FlameOfLifeSD : SkillDefBase<FlameOfLifeSD> { public override string NameToken => "FLAME_OF_LIFE"; public override string NameText => "Flame of Life"; public override string ConfigNameText => "Flame of Life"; public override string DescriptionText => "<style=cIsUtility>Agile</style>. For the next <style=cIsUtility>7 seconds</style>, become <style=cIsHealing>blessed</style>. All attacks <style=cIsDamage>ignite</style> and deal <style=cIsDamage>60%</style> more damage. Increase <style=cIsUtility>movement speed</style> by <style=cIsUtility>25%</style>. <style=cDeath>Disable all healing</style>."; public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(FlameOfLifeState)); public override string ActivationStateMachineName => "Flame"; public override int BaseMaxStock => 1; public override float BaseRechargeInterval => 11f; public override bool BeginSkillCooldownOnSkillEnd => true; public override bool CanceledFromSprinting => false; public override bool CancelSprintingOnActivation => false; public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0; public override bool IsCombatSkill => false; public override bool MustKeyPress => true; public override int RechargeStock => 1; public override Sprite Icon => Main.escanor.LoadAsset<Sprite>("texFlameOfLife3.png"); public override int StockToConsume => 1; public override string[] KeywordTokens => new string[2] { "KEYWORD_AGILE", "KEYWORD_IGNITE" }; public override bool ResetCooldownTimerOnUse => true; public override int RequiredStock => 1; public override SkillSlot SkillSlot => (SkillSlot)2; public override UnlockableDef UnlockableDef => null; } public abstract class SkillDefBase { public SkillDef skillDef; public SteppedSkillDef steppedSkillDef; public SkillLocator paladinSkillLocator = PaladinPlugin.characterPrefab.GetComponent<SkillLocator>(); public abstract string NameToken { get; } public abstract string NameText { get; } public abstract string ConfigNameText { get; } public abstract string DescriptionText { get; } public abstract SerializableEntityStateType ActivationState { get; } public abstract string ActivationStateMachineName { get; } public abstract int BaseMaxStock { get; } public abstract float BaseRechargeInterval { get; } public abstract bool BeginSkillCooldownOnSkillEnd { get; } public abstract bool CanceledFromSprinting { get; } public abstract bool CancelSprintingOnActivation { get; } public virtual bool FullRestockOnAssign { get; } = true; public abstract InterruptPriority SkillInterruptPriority { get; } public abstract bool IsCombatSkill { get; } public abstract bool MustKeyPress { get; } public abstract int RechargeStock { get; } public abstract Sprite Icon { get; } public abstract int StockToConsume { get; } public abstract string[] KeywordTokens { get; } public abstract bool ResetCooldownTimerOnUse { get; } public abstract int RequiredStock { get; } public abstract SkillSlot SkillSlot { get; } public virtual bool isEnabled { get; } = true; public virtual bool IsStepped { get; } = false; public virtual int StepCount { get; } = 1; public virtual float StepGraceDuration { get; } = 0.5f; public virtual bool Add { get; } = true; public abstract UnlockableDef UnlockableDef { get; } public string d(float f) { return f * 100f + "%"; } public virtual void Init() { //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_03a5: Unknown result type (might be due to invalid IL or missing references) //IL_03f9: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Expected O, but got Unknown //IL_0404: Unknown result type (might be due to invalid IL or missing references) //IL_0406: Unknown result type (might be due to invalid IL or missing references) string text = "PALADIN_" + NameToken.ToUpper() + "_NAME"; string text2 = "PALADIN_" + NameToken.ToUpper() + "_DESCRIPTION"; LanguageAPI.Add(text, NameText); LanguageAPI.Add(text2, DescriptionText); if (IsStepped) { steppedSkillDef = ScriptableObject.CreateInstance<SteppedSkillDef>(); ((SkillDef)steppedSkillDef).skillNameToken = text; ((SkillDef)steppedSkillDef).skillDescriptionToken = text2; ((SkillDef)steppedSkillDef).activationState = ActivationState; ((SkillDef)steppedSkillDef).activationStateMachineName = ActivationStateMachineName; ((SkillDef)steppedSkillDef).baseMaxStock = BaseMaxStock; ((SkillDef)steppedSkillDef).baseRechargeInterval = BaseRechargeInterval; ((SkillDef)steppedSkillDef).beginSkillCooldownOnSkillEnd = BeginSkillCooldownOnSkillEnd; ((SkillDef)steppedSkillDef).canceledFromSprinting = CanceledFromSprinting; ((SkillDef)steppedSkillDef).cancelSprintingOnActivation = CancelSprintingOnActivation; ((SkillDef)steppedSkillDef).fullRestockOnAssign = FullRestockOnAssign; ((SkillDef)steppedSkillDef).interruptPriority = SkillInterruptPriority; ((SkillDef)steppedSkillDef).isCombatSkill = IsCombatSkill; ((SkillDef)steppedSkillDef).mustKeyPress = MustKeyPress; ((SkillDef)steppedSkillDef).rechargeStock = RechargeStock; ((SkillDef)steppedSkillDef).icon = Icon; ((SkillDef)steppedSkillDef).stockToConsume = StockToConsume; ((SkillDef)steppedSkillDef).keywordTokens = KeywordTokens; ((SkillDef)steppedSkillDef).resetCooldownTimerOnUse = ResetCooldownTimerOnUse; ((SkillDef)steppedSkillDef).requiredStock = RequiredStock; steppedSkillDef.stepCount = StepCount; steppedSkillDef.stepGraceDuration = StepGraceDuration; ContentAddition.AddSkillDef((SkillDef)(object)steppedSkillDef); } else { skillDef = ScriptableObject.CreateInstance<SkillDef>(); skillDef.skillNameToken = text; skillDef.skillDescriptionToken = text2; skillDef.activationState = ActivationState; skillDef.activationStateMachineName = ActivationStateMachineName; skillDef.baseMaxStock = BaseMaxStock; skillDef.baseRechargeInterval = BaseRechargeInterval; skillDef.beginSkillCooldownOnSkillEnd = BeginSkillCooldownOnSkillEnd; skillDef.canceledFromSprinting = CanceledFromSprinting; skillDef.cancelSprintingOnActivation = CancelSprintingOnActivation; skillDef.fullRestockOnAssign = FullRestockOnAssign; skillDef.interruptPriority = SkillInterruptPriority; skillDef.isCombatSkill = IsCombatSkill; skillDef.mustKeyPress = MustKeyPress; skillDef.rechargeStock = RechargeStock; skillDef.icon = Icon; skillDef.stockToConsume = StockToConsume; skillDef.keywordTokens = KeywordTokens; skillDef.resetCooldownTimerOnUse = ResetCooldownTimerOnUse; skillDef.requiredStock = RequiredStock; skillDef.skillName = "Paladin" + NameText.Replace(" ", ""); ContentAddition.AddSkillDef(skillDef); } if (Add) { SkillFamily skillFamily = paladinSkillLocator.GetSkill(SkillSlot).skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = (SkillDef)(IsStepped ? ((object)steppedSkillDef) : ((object)skillDef)), unlockableDef = UnlockableDef }; ((Variant)(ref val)).viewableNode = new Node(IsStepped ? ((SkillDef)steppedSkillDef).skillNameToken : skillDef.skillNameToken, false, (Node)null); variants[num] = val; } Main.logger.LogInfo((object)("Added " + NameText)); } } public abstract class SkillDefBase<T> : SkillDefBase where T : SkillDefBase<T> { public static T instance { get; set; } public SkillDefBase() { if (instance != null) { throw new InvalidOperationException("Singleton class " + typeof(T).Name + " was instantiated twice"); } instance = this as T; } } public class SunfallSD : SkillDefBase<SunfallSD> { public override string NameToken => "SUNFALL"; public override string NameText => "Sunfall"; public override string ConfigNameText => "Sunfall"; public override string DescriptionText => "<style=cIsDamage>Fleeting</style>. <style=cDeath>Stun yourself</style> and call down your hand, summoning <style=cIsDamage>20</style> meteors for <style=cIsDamage>350% damage</style> each."; public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(SunfallState)); public override string ActivationStateMachineName => "Weapon"; public override int BaseMaxStock => 5; public override float BaseRechargeInterval => 6f; public override bool BeginSkillCooldownOnSkillEnd => true; public override bool CanceledFromSprinting => false; public override bool CancelSprintingOnActivation => false; public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0; public override bool IsCombatSkill => true; public override bool MustKeyPress => false; public override int RechargeStock => 1; public override Sprite Icon => Main.escanor.LoadAsset<Sprite>("texSunfall.png"); public override int StockToConsume => 5; public override string[] KeywordTokens => new string[1] { "KEYWORD_FLEETING" }; public override bool ResetCooldownTimerOnUse => true; public override int RequiredStock => 5; public override SkillSlot SkillSlot => (SkillSlot)3; public override UnlockableDef UnlockableDef => null; } } namespace EscanorPaladinSkills.Projectiles { public static class CruelSun { public static GameObject prefab; public static ModdedDamageType barrierOnHit = DamageAPI.ReserveDamageType(); public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown //IL_00e0: 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_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02e8: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_034a: Unknown result type (might be due to invalid IL or missing references) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageLightningBombProjectile.prefab").WaitForCompletion(), "Cruel Sun"); Rigidbody component = prefab.GetComponent<Rigidbody>(); component.useGravity = false; component.freezeRotation = false; ProjectileSimple component2 = prefab.GetComponent<ProjectileSimple>(); component2.lifetime = 30f; component2.desiredForwardSpeed = 20f; component2.enableVelocityOverLifetime = true; component2.velocityOverLifetime = new AnimationCurve((Keyframe[])(object)new Keyframe[4] { new Keyframe(0f, 0f), new Keyframe(0.025f, 1f), new Keyframe(0.026f, 1f), new Keyframe(1f, 3f) }); ProjectileDamage component3 = prefab.GetComponent<ProjectileDamage>(); component3.damageType = DamageTypeCombo.op_Implicit((DamageType)128); GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Grandparent/GrandparentSpawnImpact.prefab").WaitForCompletion(), "Cruel Sun Impact", false); Transform val2 = val.transform.Find("Particles"); for (int i = 0; i < val2.childCount; i++) { Transform child = val2.GetChild(i); child.localScale *= 0.5f; } EffectComponent component4 = val.GetComponent<EffectComponent>(); component4.soundName = "PaladinExplosion"; ContentAddition.AddEffect(val); ProjectileImpactExplosion component5 = prefab.GetComponent<ProjectileImpactExplosion>(); component5.impactEffect = val; ((ProjectileExplosion)component5).blastRadius = 18f; ProjectileController component6 = prefab.GetComponent<ProjectileController>(); component6.flightSoundLoop = Addressables.LoadAssetAsync<LoopSoundDef>((object)"RoR2/DLC1/VoidMegaCrab/lsdMegaCrabBlackCannonProjectile.asset").WaitForCompletion(); GameObject val3 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/MegaFireballGhost.prefab").WaitForCompletion(), "Cruel Sun Ghost", false); Transform transform = val3.transform; for (int j = 0; j < transform.childCount; j++) { Transform child2 = transform.GetChild(j); child2.localScale *= 1.1f; } Transform val4 = transform.Find("Point Light"); ((Behaviour)((Component)val4).GetComponent<FlickerLight>()).enabled = false; Light component7 = ((Component)val4).GetComponent<Light>(); component7.range = 16f; component7.intensity = 40f; Mesh mesh = Addressables.LoadAssetAsync<Mesh>((object)"RoR2/Base/Common/VFX/mdlVFXIcosphere.fbx").WaitForCompletion(); ParticleSystemRenderer component8 = ((Component)transform.Find("FlameTrails, World")).GetComponent<ParticleSystemRenderer>(); component8.mesh = mesh; component8.renderMode = (ParticleSystemRenderMode)4; ((Component)component8).gameObject.transform.localScale = Vector3.one * 0.85f; Material val5 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/VFX/matOmniExplosion1.mat").WaitForCompletion()); val5.SetTexture("_RemapTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/DLC1/Common/ColorRamps/texRampConstructLaserTypeB.png").WaitForCompletion()); val5.SetFloat("_AlphaBoost", 1f); ((Renderer)component8).material = val5; ParticleSystemRenderer component9 = ((Component)transform.Find("FlameBillboards, Local")).GetComponent<ParticleSystemRenderer>(); component9.mesh = mesh; component9.renderMode = (ParticleSystemRenderMode)4; ((Component)component9).gameObject.transform.localScale = Vector3.one; ((Renderer)component9).material = val5; component6.ghostPrefab = val3; Object.DestroyImmediate((Object)(object)prefab.GetComponent<AkEvent>()); Object.DestroyImmediate((Object)(object)prefab.GetComponent<AkGameObj>()); Object.Destroy((Object)(object)prefab.GetComponent<ProjectileProximityBeamController>()); Object.Destroy((Object)(object)prefab.GetComponent<AntiGravityForce>()); SphereCollider component10 = prefab.GetComponent<SphereCollider>(); component10.radius = 0.75f; prefab.AddComponent<ProjectileTargetComponent>(); ProjectileSteerTowardTarget val6 = prefab.AddComponent<ProjectileSteerTowardTarget>(); val6.yAxisOnly = false; val6.rotationSpeed = 90f; ProjectileDirectionalTargetFinder val7 = prefab.AddComponent<ProjectileDirectionalTargetFinder>(); val7.lookRange = 20f; val7.lookCone = 35f; val7.targetSearchInterval = 0.1f; val7.onlySearchIfNoTarget = true; val7.allowTargetLoss = false; val7.testLoS = false; val7.ignoreAir = false; val7.flierAltitudeTolerance = float.PositiveInfinity; PrefabAPI.RegisterNetworkPrefab(prefab); ContentAddition.AddProjectile(prefab); GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt; } private static void GlobalEventManager_onServerDamageDealt(DamageReport report) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) CharacterBody attackerBody = report.attackerBody; if (Object.op_Implicit((Object)(object)attackerBody) && DamageAPI.HasModdedDamageType(report.damageInfo, barrierOnHit)) { attackerBody.healthComponent.AddBarrierAuthority(attackerBody.healthComponent.fullCombinedHealth * CruelSunState.barrierGain); } } } public static class Judgement { public static GameObject prefab; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_033c: Unknown result type (might be due to invalid IL or missing references) //IL_0358: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0374: Unknown result type (might be due to invalid IL or missing references) //IL_03a6: Unknown result type (might be due to invalid IL or missing references) //IL_03ab: Unknown result type (might be due to invalid IL or missing references) //IL_03c2: Unknown result type (might be due to invalid IL or missing references) //IL_03c7: Unknown result type (might be due to invalid IL or missing references) //IL_03c9: Unknown result type (might be due to invalid IL or missing references) //IL_03d0: Expected O, but got Unknown //IL_03da: Unknown result type (might be due to invalid IL or missing references) //IL_03e4: Unknown result type (might be due to invalid IL or missing references) //IL_03e9: Unknown result type (might be due to invalid IL or missing references) //IL_03f0: Unknown result type (might be due to invalid IL or missing references) //IL_03fa: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0416: Unknown result type (might be due to invalid IL or missing references) //IL_041b: Unknown result type (might be due to invalid IL or missing references) //IL_042c: Unknown result type (might be due to invalid IL or missing references) //IL_0431: Unknown result type (might be due to invalid IL or missing references) //IL_0442: Unknown result type (might be due to invalid IL or missing references) //IL_0447: Unknown result type (might be due to invalid IL or missing references) //IL_0458: Unknown result type (might be due to invalid IL or missing references) //IL_045d: Unknown result type (might be due to invalid IL or missing references) //IL_046a: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Unknown result type (might be due to invalid IL or missing references) //IL_0475: Unknown result type (might be due to invalid IL or missing references) //IL_0482: Unknown result type (might be due to invalid IL or missing references) //IL_0487: Unknown result type (might be due to invalid IL or missing references) //IL_048b: Unknown result type (might be due to invalid IL or missing references) //IL_0490: Unknown result type (might be due to invalid IL or missing references) //IL_04a8: Unknown result type (might be due to invalid IL or missing references) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElementalRings/FireTornado.prefab").WaitForCompletion(), "WallOfInfernoPillar"); prefab.transform.eulerAngles = new Vector3(0f, 0f, 90f); Object.Destroy((Object)(object)prefab.GetComponent<SphereCollider>()); CapsuleCollider val = prefab.AddComponent<CapsuleCollider>(); ((Collider)val).isTrigger = false; val.center = new Vector3(0f, 0f, 0f); val.radius = 1f; val.height = 1f; Transform child = prefab.transform.GetChild(0); ((Component)child).transform.localScale = new Vector3(4000f, 4000f, 10f); ((Component)child).transform.localPosition = Vector3.zero; ((Component)child).transform.localEulerAngles = new Vector3(0f, 90f, 0f); Rigidbody component = prefab.GetComponent<Rigidbody>(); component.collisionDetectionMode = (CollisionDetectionMode)1; component.useGravity = true; component.freezeRotation = true; ConstantForce val2 = prefab.AddComponent<ConstantForce>(); val2.force = new Vector3(0f, -4500f, 0f); ProjectileStickOnImpact val3 = prefab.AddComponent<ProjectileStickOnImpact>(); val3.ignoreCharacters = true; val3.ignoreWorld = false; val3.alignNormals = false; ProjectileSimple component2 = prefab.GetComponent<ProjectileSimple>(); component2.lifetime = 15f; ProjectileDamage component3 = prefab.GetComponent<ProjectileDamage>(); component3.damageType = DamageTypeCombo.op_Implicit((DamageType)128); ProjectileOverlapAttack component4 = prefab.GetComponent<ProjectileOverlapAttack>(); component4.damageCoefficient = 0.1f; component4.resetInterval = 0.1f; component4.overlapProcCoefficient = 0.75f; ProjectileController component5 = prefab.GetComponent<ProjectileController>(); GameObject val4 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/Mage/MageFirePillarGhost.prefab").WaitForCompletion(), "WallOfInfernoPillarGhost", false); ((Component)val4.transform.GetChild(1)).gameObject.SetActive(false); Transform child2 = val4.transform.GetChild(0); child2.localScale = new Vector3(4000f, 4000f, 10f); ParticleSystem component6 = ((Component)child2).GetComponent<ParticleSystem>(); ParticleSystemRenderer component7 = ((Component)component6).GetComponent<ParticleSystemRenderer>(); component7.maxParticleSize = 1000f; component7.alignment = (ParticleSystemRenderSpace)3; Material val5 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/VFX/matFirePillarParticle.mat").WaitForCompletion()); val5.SetInt("_FadeCloseOn", 1); val5.shaderKeywords = new string[4] { "CLOUDOFFSET", "FADECLOSE", "USE_CLOUDS", "_EMISSION" }; val5.SetFloat("_InvFade", 0.03742486f); val5.SetFloat("_Boost", 9.221877f); val5.SetFloat("_AlphaBoost", 3.994069f); val5.SetFloat("_AlphaBias", 0.4729744f); val5.SetFloat("_FadeCloseDistance", 0.02f); val5.SetFloat("_DistortionStrength", 0.3714001f); val5.SetTextureScale("_MainTex", new Vector2(4000f, 1f)); val5.SetTextureScale("_Cloud1Tex", new Vector2(4000f, 1000f)); val5.SetTexture("_RemapTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/ColorRamps/texRampBeetleQueen.png").WaitForCompletion()); val5.SetInt("_SrcBlend", 8); val5.SetColor("_TintColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)62, (byte)62, byte.MaxValue))); ((Renderer)component7).material = val5; VelocityOverLifetimeModule velocityOverLifetime = component6.velocityOverLifetime; Gradient val6 = new Gradient(); val6.SetKeys((GradientColorKey[])(object)new GradientColorKey[2] { new GradientColorKey(Color.white, 0f), new GradientColorKey(Color.white, 1f) }, (GradientAlphaKey[])(object)new GradientAlphaKey[4] { new GradientAlphaKey(0f, 0f), new GradientAlphaKey(1f, 0.7f), new GradientAlphaKey(1f, 0.9f), new GradientAlphaKey(0f, 1f) }); ColorOverLifetimeModule colorOverLifetime = component6.colorOverLifetime; ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = MinMaxGradient.op_Implicit(val6); MainModule main = component6.main; MinMaxCurve startSpeed = ((MainModule)(ref main)).startSpeed; val4.transform.eulerAngles = new Vector3(0f, 0f, 90f); DestroyOnTimer val7 = val4.AddComponent<DestroyOnTimer>(); val7.duration = 15f; component5.ghostPrefab = val4; ContentAddition.AddProjectile(prefab); } } public static class Sunfall { public static GameObject prefab; public static ModdedDamageType barrierOnHit = DamageAPI.ReserveDamageType(); public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_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_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0270: 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_0291: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_0317: Unknown result type (might be due to invalid IL or missing references) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageLightningBombProjectile.prefab").WaitForCompletion(), "Sunfall"); Rigidbody component = prefab.GetComponent<Rigidbody>(); component.useGravity = false; component.freezeRotation = false; ProjectileSimple component2 = prefab.GetComponent<ProjectileSimple>(); component2.lifetime = 10f; component2.desiredForwardSpeed = 50f; component2.enableVelocityOverLifetime = true; component2.velocityOverLifetime = new AnimationCurve((Keyframe[])(object)new Keyframe[4] { new Keyframe(0f, 0f), new Keyframe(0.025f, 1f), new Keyframe(0.026f, 1f), new Keyframe(1f, 3f) }); ProjectileDamage component3 = prefab.GetComponent<ProjectileDamage>(); component3.damageType = DamageTypeCombo.op_Implicit((DamageType)0); GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Grandparent/GrandparentSpawnImpact.prefab").WaitForCompletion(), "Sunfall Impact", false); EffectComponent component4 = val.GetComponent<EffectComponent>(); component4.soundName = "PaladinExplosion"; ContentAddition.AddEffect(val); ProjectileImpactExplosion component5 = prefab.GetComponent<ProjectileImpactExplosion>(); component5.impactEffect = val; ((ProjectileExplosion)component5).blastRadius = 18f; ProjectileController component6 = prefab.GetComponent<ProjectileController>(); component6.flightSoundLoop = Addressables.LoadAssetAsync<LoopSoundDef>((object)"RoR2/DLC1/VoidMegaCrab/lsdMegaCrabBlackCannonProjectile.asset").WaitForCompletion(); GameObject val2 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/MegaFireballGhost.prefab").WaitForCompletion(), "Sunfall Ghost", false); Transform transform = val2.transform; for (int i = 0; i < transform.childCount; i++) { Transform child = transform.GetChild(i); child.localScale *= 11f / 15f; } Transform val3 = transform.Find("Point Light"); ((Behaviour)((Component)val3).GetComponent<FlickerLight>()).enabled = false; Light component7 = ((Component)val3).GetComponent<Light>(); component7.range = 24f; component7.intensity = 50f; Mesh mesh = Addressables.LoadAssetAsync<Mesh>((object)"RoR2/Base/Common/VFX/mdlVFXIcosphere.fbx").WaitForCompletion(); ParticleSystemRenderer component8 = ((Component)transform.Find("FlameTrails, World")).GetComponent<ParticleSystemRenderer>(); component8.mesh = mesh; component8.renderMode = (ParticleSystemRenderMode)4; ((Component)component8).gameObject.transform.localScale = Vector3.one * (17f / 30f); Material val4 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/VFX/matOmniExplosion1.mat").WaitForCompletion()); val4.SetTexture("_RemapTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/ColorRamps/texRampTritoneSmoothed.png").WaitForCompletion()); val4.SetFloat("_Boost", 4.078308f); val4.SetFloat("_AlphaBoost", 1.062106f); val4.SetFloat("_AlphaBias", 0f); ((Renderer)component8).material = val4; ParticleSystemRenderer component9 = ((Component)transform.Find("FlameBillboards, Local")).GetComponent<ParticleSystemRenderer>(); component9.mesh = mesh; component9.renderMode = (ParticleSystemRenderMode)4; ((Component)component9).gameObject.transform.localScale = Vector3.one; ((Renderer)component9).material = val4; component6.ghostPrefab = val2; Object.DestroyImmediate((Object)(object)prefab.GetComponent<AkEvent>()); Object.DestroyImmediate((Object)(object)prefab.GetComponent<AkGameObj>()); Object.Destroy((Object)(object)prefab.GetComponent<ProjectileProximityBeamController>()); Object.Destroy((Object)(object)prefab.GetComponent<AntiGravityForce>()); SphereCollider component10 = prefab.GetComponent<SphereCollider>(); component10.radius = 0.5f; prefab.AddComponent<SunfallController>(); PrefabAPI.RegisterNetworkPrefab(prefab); ContentAddition.AddProjectile(prefab); GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt; } private static void GlobalEventManager_onServerDamageDealt(DamageReport report) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) CharacterBody attackerBody = report.attackerBody; if (Object.op_Implicit((Object)(object)attackerBody) && DamageAPI.HasModdedDamageType(report.damageInfo, barrierOnHit)) { attackerBody.healthComponent.AddBarrierAuthority(attackerBody.healthComponent.fullCombinedHealth * CruelSunState.barrierGain); } } } public class SunfallController : MonoBehaviour { public SphereCollider sphereCollider; public float timer; public float delay = 0.33f; public void Start() { sphereCollider = ((Component)this).GetComponent<SphereCollider>(); ((Collider)sphereCollider).enabled = false; } public void FixedUpdate() { timer += Time.fixedDeltaTime; if (timer >= delay) { ((Collider)sphereCollider).enabled = true; } } } } namespace EscanorPaladinSkills.Overlays { public static class FlameOfLife { public static Material prefab1; public static Material prefab2; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) prefab1 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashBright.mat").WaitForCompletion()); prefab1.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)191, (byte)11, (byte)3, (byte)170))); prefab2 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashExpanded.mat").WaitForCompletion()); prefab2.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)148, (byte)17, (byte)0, (byte)170))); } } public static class TheOne { public static Material prefab1; public static Material prefab2; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) prefab1 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashBright.mat").WaitForCompletion()); prefab1.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)198, (byte)0, (byte)0, (byte)190))); prefab2 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashExpanded.mat").WaitForCompletion()); prefab2.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)43, (byte)0, (byte)0, (byte)190))); } } } namespace EscanorPaladinSkills.Components { public class Init { public static void SetUpComponents() { CharacterBody.onBodyStartGlobal += CharacterBody_onBodyStartGlobal; } public static void HUD_shouldHudDisplay(HUD hud, ref bool shouldDisplay) { } public static void CharacterBody_onBodyStartGlobal(CharacterBody body) { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Expected O, but got Unknown //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Expected O, but got Unknown if (((Object)body).name != "RobPaladinBody(Clone)") { return; } ModelLocator modelLocator = body.modelLocator; if (!Object.op_Implicit((Object)(object)modelLocator)) { return; } Transform modelTransform = modelLocator.modelTransform; if (!Object.op_Implicit((Object)(object)modelTransform) || (Object)(object)modelTransform.Find("say gex hitbox") != (Object)null) { return; } GameObject val = new GameObject("say gex hitbox"); val.transform.parent = modelTransform; val.AddComponent<HitBox>(); val.transform.localPosition = new Vector3(0f, 0f, 7f); val.transform.localScale = new Vector3(16f, 20f, 24f); val.transform.localEulerAngles = Vector3.zero; HitBoxGroup val2 = ((Component)modelTransform).gameObject.AddComponent<HitBoxGroup>(); val2.hitBoxes = (HitBox[])(object)new HitBox[1] { val.GetComponent<HitBox>() }; val2.groupName = "SayGex"; SkillLocator component = ((Component)body).GetComponent<SkillLocator>(); if (component.primary.skillDef.skillNameToken == "PALADIN_DIVINE_AXE_RHITTA_NAME") { ChildLocator component2 = ((Component)modelTransform).GetComponent<ChildLocator>(); NameTransformPair[] transformPairs = component2.transformPairs; if (transformPairs.Length > 21) { Transform transform = component2.transformPairs[20].transform; if (Object.op_Implicit((Object)(object)transform)) { SwordSizeController swordSizeController = ((Component)transform).gameObject.AddComponent<SwordSizeController>(); swordSizeController.sword = transform; } } } if (component.utility.skillDef.skillNameToken == "PALADIN_FLAME_OF_LIFE_NAME") { Light val3 = ((Component)modelTransform).gameObject.AddComponent<Light>(); ((Behaviour)val3).enabled = false; val3.range = 20f; val3.intensity = 15f; val3.color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)102, (byte)0, byte.MaxValue)); LightIntensityCurve val4 = ((Component)modelTransform).gameObject.AddComponent<LightIntensityCurve>(); ((Behaviour)val4).enabled = false; val4.light = val3; val4.maxIntensity = 15f; val4.timeMax = 8f; val4.curve = new AnimationCurve((Keyframe[])(object)new Keyframe[3] { new Keyframe(0f, 1f), new Keyframe(0.85f, 1f), new Keyframe(1f, 0f) }); } } } public class SwordSizeController : MonoBehaviour { public Vector3 idealSwordSize; public Transform sword; public void Start() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) idealSwordSize = Vector3.one * Main.swordScale.Value; } public void LateUpdate() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)sword)) { sword.localScale = idealSwordSize; } } } } namespace EscanorPaladinSkills.Buffs { public static class All { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients; public static Action<DamageReport> <1>__GlobalEventManager_onServerDamageDealt; public static hook_Heal <2>__HealthComponent_Heal; public static hook_RecalculateStats <3>__CharacterBody_RecalculateStats; public static hook_FixedUpdate <4>__HealthComponent_FixedUpdate; public static hook_FixedUpdate <5>__CharacterBody_FixedUpdate; public static Manipulator <6>__GenericCharacterMain_ProcessJump; } public static BuffDef flameOfLifeHealingDebuff; public static BuffDef flameOfLifeBuff; public static BuffDef sunfallStunDebuff; public static BuffDef theOneBuff; public static BuffDef theOneCurseDebuff; public static void Init() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_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_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_02f0: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Expected O, but got Unknown //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_033d: Expected O, but got Unknown //IL_0353: Unknown result type (might be due to invalid IL or missing references) //IL_0358: Unknown result type (might be due to invalid IL or missing references) //IL_035e: Expected O, but got Unknown //IL_0374: Unknown result type (might be due to invalid IL or missing references) //IL_0379: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Expected O, but got Unknown //IL_0395: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Expected O, but got Unknown //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Unknown result type (might be due to invalid IL or missing references) //IL_03c1: Expected O, but got Unknown flameOfLifeHealingDebuff = ScriptableObject.CreateInstance<BuffDef>(); flameOfLifeHealingDebuff.isDebuff = false; flameOfLifeHealingDebuff.isCooldown = false; flameOfLifeHealingDebuff.canStack = false; flameOfLifeHealingDebuff.buffColor = Color32.op_Implicit(new Color32((byte)246, (byte)119, (byte)32, byte.MaxValue)); flameOfLifeHealingDebuff.iconSprite = Main.escanor.LoadAsset<Sprite>("texBuffFucked.png"); flameOfLifeHealingDebuff.isHidden = false; ((Object)flameOfLifeHealingDebuff).name = "Flame of Life Healing Removal"; ContentAddition.AddBuffDef(flameOfLifeHealingDebuff); flameOfLifeBuff = ScriptableObject.CreateInstance<BuffDef>(); flameOfLifeBuff.isDebuff = false; flameOfLifeBuff.isCooldown = false; flameOfLifeBuff.canStack = false; flameOfLifeBuff.buffColor = Color32.op_Implicit(new Color32((byte)246, (byte)119, (byte)32, byte.MaxValue)); flameOfLifeBuff.iconSprite = Main.escanor.LoadAsset<Sprite>("texBuffEnraged.png"); flameOfLifeBuff.isHidden = false; ((Object)flameOfLifeBuff).name = "Flame of Life Enrage"; ContentAddition.AddBuffDef(flameOfLifeBuff); sunfallStunDebuff = ScriptableObject.CreateInstance<BuffDef>(); sunfallStunDebuff.isDebuff = false; sunfallStunDebuff.isCooldown = false; sunfallStunDebuff.canStack = false; sunfallStunDebuff.buffColor = Color32.op_Implicit(new Color32((byte)246, (byte)119, (byte)32, byte.MaxValue)); sunfallStunDebuff.iconSprite = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/Common/bdSlow50.asset").WaitForCompletion().iconSprite; sunfallStunDebuff.isHidden = false; ((Object)sunfallStunDebuff).name = "Sunfall Slow"; ContentAddition.AddBuffDef(sunfallStunDebuff); theOneBuff = ScriptableObject.CreateInstance<BuffDef>(); theOneBuff.isDebuff = false; theOneBuff.isCooldown = false; theOneBuff.canStack = false; theOneBuff.buffColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)0, byte.MaxValue)); theOneBuff.iconSprite = Main.escanor.LoadAsset<Sprite>("texBuffEnraged.png"); theOneBuff.isHidden = false; ((Object)theOneBuff).name = "The One Blessing"; ContentAddition.AddBuffDef(theOneBuff); theOneCurseDebuff = ScriptableObject.CreateInstance<BuffDef>(); theOneCurseDebuff.isDebuff = false; theOneCurseDebuff.isCooldown = false; theOneCurseDebuff.canStack = false; theOneCurseDebuff.buffColor = Color.gray; theOneCurseDebuff.iconSprite = Main.escanor.LoadAsset<Sprite>("texBuffFucked.png"); theOneCurseDebuff.isHidden = false; ((Object)theOneCurseDebuff).name = "The One Curse"; ContentAddition.AddBuffDef(theOneCurseDebuff); LanguageAPI.Add("KEYWORD_FLEETING", "<style=cKeywordName>Fleeting</style><style=cSub><style=cIsDamage>Attack speed</style> increases <style=cIsDamage>skill damage</style> instead, at <style=cIsDamage>66%</style> effectiveness.</style>"); LanguageAPI.Add("KEYWORD_CURSED", "<style=cKeywordName>Cursed</style><style=cSub>While not <style=cIsDamage>The One</style>, <style=cDeath>reduce all armor</style> by <style=cDeath>40%</style>, <style=cDeath>maximum health</style> by <style=cDeath>20%</style>, and <style=cDeath>all healing</style> by <style=cDeath>25%</style>.</style>"); LanguageAPI.Add("KEYWORD_THEONE", "<style=cKeywordName>The One</style><style=cSub><style=cIsHealing>Increase armor</style> by <style=cIsHealing>30</style>, <style=cIsHealing>health regeneration</style> by <style=cIsHealing>100%</style>, and <style=cIsDamage>upgrade skills</style> in unique ways.</style>"); object obj = <>O.<0>__RecalculateStatsAPI_GetStatCoefficients; if (obj == null) { StatHookEventHandler val =