Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of EscanorPaladinSkills v1.1.1
EscanorPaladinSkills.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.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.1")] [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.1"; 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>__CharacterBody_FixedUpdate; public static Manipulator <5>__GenericCharacterMain_ProcessJump_bool; } 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 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 = RecalculateStatsAPI_GetStatCoefficients; <>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerD