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 Katarina v2.3.1
Katarina.dll
Decompiled 9 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.Merc; using ExtraSkillSlots; using HG.BlendableTypes; using JetBrains.Annotations; using KinematicCharacterController; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; [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("Katarina")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+a41d6ac7b436e54b01c6c9c8ae94ee9fdc6a7cd8")] [assembly: AssemblyProduct("Katarina")] [assembly: AssemblyTitle("Katarina")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Katarina; internal class BladeController : MonoBehaviour { public enum BladeIndex { blade1 = 1, blade2, blade3, blade4, blade5, blade6 } private GameObject areaIndicator; private GameObject boxlider; private CharacterBody selfBody; private ChildLocator childLocator; private List<string> childNameList = new List<string> { "blade1", "blade2", "blade3", "blade4", "blade5", "blade6" }; private BladeIndex blade = (BladeIndex)0; public Vector3 areaIndicatorPosition => Object.op_Implicit((Object)(object)areaIndicator) ? areaIndicator.transform.position : selfBody.corePosition; public BladeIndex bladeIndex => blade; public void InstantiateAreaIndicator() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0029: 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) areaIndicator = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab").WaitForCompletion()); areaIndicator.transform.localScale = Vector3.one * 3f; } public void UpdateAreIndicatorPosition(Ray aimRay) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)areaIndicator)) { return; } RaycastHit val = default(RaycastHit); if (Physics.Raycast(aimRay, ref val, GlobalValues.maxBlinkDistance, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask))) { string name = ((Object)((Component)((RaycastHit)(ref val)).transform).gameObject).name; if (!(((Object)boxlider).name == name)) { areaIndicator.transform.position = ((RaycastHit)(ref val)).point; areaIndicator.transform.up = ((RaycastHit)(ref val)).normal; } } else { areaIndicator.transform.position = ((Ray)(ref aimRay)).GetPoint(GlobalValues.maxBlinkDistance); } } public void DestroyAreaIndicator() { if (Object.op_Implicit((Object)(object)areaIndicator)) { Object.Destroy((Object)(object)areaIndicator); } } public void SetBlade(BladeIndex index) { blade = index; UpdateModel(); } private void Awake() { blade = BladeIndex.blade1; selfBody = ((Component)this).GetComponent<CharacterBody>(); ModelLocator component = ((Component)this).GetComponent<ModelLocator>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.modelTransform)) { childLocator = ((Component)component.modelTransform).GetComponent<ChildLocator>(); } if (Object.op_Implicit((Object)(object)childLocator)) { boxlider = ((Component)((Component)childLocator).gameObject.transform.GetChild(10)).gameObject; } } private void UpdateModel() { if (!Object.op_Implicit((Object)(object)childLocator)) { return; } string text = blade.ToString(); foreach (string childName in childNameList) { if (childName == text) { ((Component)childLocator.FindChild(text)).gameObject.SetActive(true); } else { ((Component)childLocator.FindChild(childName)).gameObject.SetActive(false); } } } } internal class BladePickupBehaviour : MonoBehaviour, IProjectileImpactBehavior { private bool inAir = true; private SphereSearch sphereSearch = new SphereSearch(); private float stopwatch; private float searchInterval = 0.5f; private ProjectileController controller; private GameObject owner; public void OnProjectileImpact(ProjectileImpactInfo impactInfo) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)impactInfo.collider) && !Object.op_Implicit((Object)(object)((Component)impactInfo.collider).GetComponent<HurtBox>())) { inAir = false; } } private void OnEnable() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) sphereSearch = new SphereSearch(); sphereSearch.origin = ((Component)this).transform.position; sphereSearch.radius = GlobalValues.daggerPickupRadius; sphereSearch.mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask; } private void FixedUpdate() { //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) stopwatch += Time.fixedDeltaTime; if (!Object.op_Implicit((Object)(object)controller) || !Object.op_Implicit((Object)(object)owner)) { controller = ((Component)this).GetComponent<ProjectileController>(); if (Object.op_Implicit((Object)(object)controller) && Object.op_Implicit((Object)(object)controller.owner)) { owner = controller.owner; } } if (!Object.op_Implicit((Object)(object)owner)) { return; } EntityStateMachine val = Array.Find(owner.GetComponents<EntityStateMachine>(), (EntityStateMachine element) => element.customName == "Speen"); float num = Vector3.Distance(((Component)this).transform.position, owner.transform.position); if (!(num <= GlobalValues.daggerPickupRadius)) { return; } if (Object.op_Implicit((Object)(object)val)) { CharacterMotor component = owner.GetComponent<CharacterMotor>(); if (inAir) { val.SetInterruptState((EntityState)(object)new DaggerPickupAir(), (InterruptPriority)5); } else { val.SetInterruptState((EntityState)(object)new BaseDaggerPickupState(), (InterruptPriority)5); } } Object.Destroy((Object)(object)((Component)this).gameObject); } } internal class DestroyProjectileOnImpact : MonoBehaviour, IProjectileImpactBehavior { public bool destroyOnEntity = true; public bool destroyOnTerrain = false; public void OnProjectileImpact(ProjectileImpactInfo impactInfo) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((Component)impactInfo.collider).GetComponent<HurtBox>()) && destroyOnEntity) { Object.Destroy((Object)(object)((Component)this).gameObject); } } } internal class KatarinaSkillSwitchBehaviour : MonoBehaviour { } internal class KatarinaTracker : HuntressTracker { public bool enable = true; private float stopwatch; public bool canExecute => Object.op_Implicit((Object)(object)base.trackingTarget) ? true : false; private void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown base.indicator = new Indicator(((Component)this).gameObject, Prefabs.aimIndicator); } private void Start() { base.maxTrackingDistance = 370f; base.search.viewer = null; ((HuntressTracker)this).Start(); } private void FixedUpdate() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) base.trackerUpdateStopwatch = 10f; stopwatch += Time.fixedDeltaTime; if (stopwatch >= 1f / base.trackerUpdateFrequency) { stopwatch -= 1f / base.trackerUpdateFrequency; Ray aimRay = default(Ray); ((Ray)(ref aimRay))..ctor(base.inputBank.aimOrigin, base.inputBank.aimDirection); SearchForTargetNoLos(aimRay); base.indicator.targetTransform = (Object.op_Implicit((Object)(object)base.trackingTarget) ? ((Component)base.trackingTarget).transform : null); } } private void SearchForTargetNoLos(Ray aimRay) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) base.search.teamMaskFilter = TeamMask.GetUnprotectedTeams(base.teamComponent.teamIndex); base.search.filterByLoS = false; base.search.searchOrigin = ((Ray)(ref aimRay)).origin; base.search.searchDirection = ((Ray)(ref aimRay)).direction; base.search.sortMode = (SortMode)1; base.search.maxDistanceFilter = base.maxTrackingDistance; base.search.maxAngleFilter = 15f; base.search.RefreshCandidates(); base.search.FilterOutGameObject(((Component)this).gameObject); base.trackingTarget = base.search.GetResults().FirstOrDefault(); } } internal class LotusBladeOrb : Orb { public float speed; public float damage; internal GameObject owner; public GameObject orbEffect; public float procCoefficient; public override void Begin() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown ((Orb)this).duration = ((Orb)this).distanceToTarget / speed; EffectData val = new EffectData { origin = base.origin, genericFloat = ((Orb)this).duration }; val.SetHurtBoxReference(base.target); EffectManager.SpawnEffect(orbEffect, val, true); } public override void OnArrival() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)base.target) && Object.op_Implicit((Object)(object)base.target.healthComponent)) { DamageInfo val = new DamageInfo { attacker = owner, inflictor = owner, damage = damage, procCoefficient = procCoefficient, damageType = DamageTypeCombo.op_Implicit((DamageTypeExtended)0), damageColorIndex = (DamageColorIndex)0, position = ((Component)base.target).transform.position, rejected = false }; base.target.healthComponent.TakeDamage(val); } } } internal class GlobalValues { internal static float secondaryHealCoefficient = 0.1f; internal static float daggerPickupRadius = MainPlugin.daggerpickupzone.Value; internal static float daggerPickupExplosionRadius = MainPlugin.daggerpickupslash.Value; internal static float maxBlinkDistance = 175f; internal static float specialProjectileSpeed = 51f; internal static float specialCDReductionOnKill = 4f; } internal class Hook { internal static void Hooks() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal; GlobalEventManager.onClientDamageNotified += GlobalEventManager_onClientDamageNotified; } private static void GlobalEventManager_onClientDamageNotified(DamageDealtMessage damageDealtMessage) { } private static void GlobalEventManager_onCharacterDeathGlobal(DamageReport damageReport) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0422: 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_05e0: Unknown result type (might be due to invalid IL or missing references) //IL_05e5: Unknown result type (might be due to invalid IL or missing references) //IL_0449: Unknown result type (might be due to invalid IL or missing references) //IL_044e: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_05ed: Unknown result type (might be due to invalid IL or missing references) //IL_05f2: Unknown result type (might be due to invalid IL or missing references) //IL_05fc: Invalid comparison between Unknown and I4 //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_068b: Unknown result type (might be due to invalid IL or missing references) //IL_0690: Unknown result type (might be due to invalid IL or missing references) //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_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Expected O, but got Unknown //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Expected O, but got Unknown //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_0320: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_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_0376: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Expected O, but got Unknown //IL_0392: Unknown result type (might be due to invalid IL or missing references) //IL_0397: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: 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_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Expected O, but got Unknown //IL_0404: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Expected O, but got Unknown //IL_03cf: Unknown result type (might be due to invalid IL or missing references) //IL_03d4: Unknown result type (might be due to invalid IL or missing references) //IL_03dd: Unknown result type (might be due to invalid IL or missing references) //IL_03e2: 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_03f5: Expected O, but got Unknown //IL_05b0: Unknown result type (might be due to invalid IL or missing references) //IL_05b5: Unknown result type (might be due to invalid IL or missing references) //IL_05be: Unknown result type (might be due to invalid IL or missing references) //IL_05c3: Unknown result type (might be due to invalid IL or missing references) //IL_05c5: Unknown result type (might be due to invalid IL or missing references) //IL_05d6: Expected O, but got Unknown //IL_058e: Unknown result type (might be due to invalid IL or missing references) //IL_0593: Unknown result type (might be due to invalid IL or missing references) //IL_0595: Unknown result type (might be due to invalid IL or missing references) //IL_05a6: Expected O, but got Unknown DamageInfo damageInfo = damageReport.damageInfo; if (!Object.op_Implicit((Object)(object)damageReport.victim) || !Object.op_Implicit((Object)(object)damageReport.victimBody) || !Object.op_Implicit((Object)(object)damageReport.attacker) || !Object.op_Implicit((Object)(object)damageReport.attackerBody)) { return; } if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade1) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade2) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade3) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade4) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade5) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade6)) { if (damageReport.attackerBody.skillLocator.secondary.baseRechargeInterval == 9f) { damageReport.attackerBody.skillLocator.secondary.AddOneStock(); } else if (damageReport.attackerBody.skillLocator.secondary.baseRechargeInterval == 5.5f) { bool flag = damageReport.attackerBody.skillLocator.secondary.stock == 1; bool flag2 = damageReport.attackerBody.skillLocator.secondary.stock == 0; if (flag || flag2) { damageReport.attackerBody.skillLocator.secondary.Reset(); } else { damageReport.attackerBody.skillLocator.secondary.AddOneStock(); } } if (NetworkServer.active) { damageReport.attackerBody.healthComponent.Heal(damageReport.victimBody.healthComponent.fullHealth * GlobalValues.secondaryHealCoefficient, default(ProcChainMask), true); } if (MainPlugin.killexplosionfx.Value) { if (!MainPlugin.collapseEveryone.Value) { EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/Bandit2ResetEffect"), new EffectData { origin = damageInfo.position }, true); } else { EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/BleedOnHitVoid/FractureImpactEffect.prefab").WaitForCompletion(), new EffectData { origin = damageInfo.position }, true); } } } if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blink)) { ExtraSkillLocator component = ((Component)damageReport.attackerBody).GetComponent<ExtraSkillLocator>(); if (component.extraThird.stock == 0) { component.extraThird.AddOneStock(); } if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.utility.stock == 0) { damageReport.attackerBody.skillLocator.utility.AddOneStock(); } if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.secondary.stock == 0) { damageReport.attackerBody.skillLocator.secondary.AddOneStock(); } bool isFlying = damageReport.victimBody.isFlying; bool flag3 = damageReport.victimBody.bodyIndex == MainPlugin.vultureIndex; bool flag4 = damageReport.victimBody.bodyIndex == MainPlugin.pestIndex; switch (MainPlugin.shunpoSetting.Value) { case 0: EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/Bandit2ResetEffect"), new EffectData { origin = damageInfo.position }, true); break; case 1: EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/BleedOnHitVoid/FractureImpactEffect.prefab").WaitForCompletion(), new EffectData { origin = damageInfo.position }, true); break; case 2: if (isFlying || flag4 || flag3) { EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/BleedOnHitVoid/FractureImpactEffect.prefab").WaitForCompletion(), new EffectData { origin = damageInfo.position }, true); } else { EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/Bandit2ResetEffect"), new EffectData { origin = damageInfo.position }, true); } break; } } if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.daggerPickup)) { ExtraSkillLocator component2 = ((Component)damageReport.attackerBody).GetComponent<ExtraSkillLocator>(); if (damageReport.attackerBody.bodyIndex == MainPlugin.katIndex && Object.op_Implicit((Object)(object)damageReport.attackerBody)) { damageReport.attackerBody.AddTimedBuff(Buffs.KillMoveSpeed, 2f); } if (component2.extraThird.stock == 0) { component2.extraThird.AddOneStock(); } if (component2.extraSecond.stock == 0) { component2.extraSecond.AddOneStock(); } if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.secondary.stock == 0) { damageReport.attackerBody.skillLocator.secondary.AddOneStock(); } if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.utility.stock == 0) { damageReport.attackerBody.skillLocator.utility.AddOneStock(); } if (MainPlugin.killexplosionfx.Value) { if (!MainPlugin.collapseEveryone.Value) { EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/Bandit2ResetEffect"), new EffectData { origin = damageInfo.position }, true); } else { EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/BleedOnHitVoid/FractureImpactEffect.prefab").WaitForCompletion(), new EffectData { origin = damageInfo.position }, true); } } } if (damageReport.attackerBody.bodyIndex == MainPlugin.katIndex && (int)DamageTypeCombo.op_Implicit(damageInfo.damageType) == 524288) { ExtraSkillLocator component3 = ((Component)damageReport.attackerBody).GetComponent<ExtraSkillLocator>(); if (Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && damageReport.attackerBody.skillLocator.utility.stock == 0) { damageReport.attackerBody.skillLocator.utility.AddOneStock(); } if (component3.extraThird.stock == 0) { component3.extraThird.AddOneStock(); } } if (damageReport.attackerBody.bodyIndex == MainPlugin.katIndex && Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator) && Object.op_Implicit((Object)(object)damageReport.attackerBody.skillLocator.special) && NetworkServer.active) { damageReport.attackerBody.skillLocator.special.RunRecharge(GlobalValues.specialCDReductionOnKill); } } private static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_0002: 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_00be: 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_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Invalid comparison between Unknown and I4 //IL_00e5: 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_0134: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_0190: 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_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_0346: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_03aa: Unknown result type (might be due to invalid IL or missing references) //IL_030a: Unknown result type (might be due to invalid IL or missing references) //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0311: Unknown result type (might be due to invalid IL or missing references) //IL_040e: Unknown result type (might be due to invalid IL or missing references) //IL_036e: Unknown result type (might be due to invalid IL or missing references) //IL_0373: Unknown result type (might be due to invalid IL or missing references) //IL_0375: 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_03d2: Unknown result type (might be due to invalid IL or missing references) //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_03d9: Unknown result type (might be due to invalid IL or missing references) //IL_0436: Unknown result type (might be due to invalid IL or missing references) //IL_043b: Unknown result type (might be due to invalid IL or missing references) //IL_043d: Unknown result type (might be due to invalid IL or missing references) //IL_0497: Unknown result type (might be due to invalid IL or missing references) //IL_049c: Unknown result type (might be due to invalid IL or missing references) //IL_049e: Unknown result type (might be due to invalid IL or missing references) if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.bladeBleed) && NetworkServer.active) { DotController.InflictDot(((Component)self).gameObject, damageInfo.attacker, (DotIndex)6, 15f * damageInfo.procCoefficient, 1f, (uint?)null); } if (Object.op_Implicit((Object)(object)damageInfo.attacker) && ((Object)damageInfo.attacker).name.Contains("NinesKatarinaBody")) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && NetworkServer.active && (int)DamageTypeCombo.op_Implicit(damageInfo.damageType) != 2) { } } if ((DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade1) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade2) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade3) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade4) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade5) || DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade6)) && NetworkServer.active) { CharacterBody component2 = damageInfo.attacker.GetComponent<CharacterBody>(); component2.healthComponent.Heal(damageInfo.damage * 0.08f, default(ProcChainMask), true); } if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.daggerPickup)) { CharacterBody component3 = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component3) && NetworkServer.active) { component3.healthComponent.Heal(damageInfo.damage * 0.03f, default(ProcChainMask), true); } } if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blink)) { CharacterBody component4 = damageInfo.attacker.GetComponent<CharacterBody>(); float num = self.health * 0.1f; float num2 = damageInfo.damage + num; float damage = ((!self.body.isBoss) ? num2 : (num2 * 0.7f)); damageInfo.damage = damage; float num3 = damageInfo.damage * 0.07f; component4.healthComponent.Heal(num3, default(ProcChainMask), true); } orig.Invoke(self, damageInfo); if (!Object.op_Implicit((Object)(object)damageInfo.attacker) || !self.alive) { return; } Vector3 val = Vector3.up * 40f + Vector3.forward * 15f; if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade1)) { if (NetworkServer.active) { ProjectileManager.instance.FireProjectile(Prefabs.dagger1ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade2)) { if (NetworkServer.active) { ProjectileManager.instance.FireProjectile(Prefabs.dagger2ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade3)) { if (NetworkServer.active) { ProjectileManager.instance.FireProjectile(Prefabs.dagger3ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade4)) { if (NetworkServer.active) { ProjectileManager.instance.FireProjectile(Prefabs.dagger4ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade5)) { if (NetworkServer.active) { ProjectileManager.instance.FireProjectile(Prefabs.dagger5ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } else if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.blade6) && NetworkServer.active) { ProjectileManager.instance.FireProjectile(Prefabs.dagger6ProjectilePickup, damageInfo.position, Util.QuaternionSafeLookRotation(val), damageInfo.attacker, 0f, 0f, false, (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null); } } } internal class KatarinaSkillDef : SkillDef { private class InstanceData : BaseSkillInstanceData { public KatarinaTracker katarinaTracker; } public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot) { return (BaseSkillInstanceData)(object)new InstanceData { katarinaTracker = ((Component)skillSlot).GetComponent<KatarinaTracker>() }; } internal static bool IsExecutable([NotNull] GenericSkill skillSlot) { KatarinaTracker katarinaTracker = ((InstanceData)(object)skillSlot.skillInstanceData).katarinaTracker; return katarinaTracker.canExecute; } public override bool CanExecute([NotNull] GenericSkill skillSlot) { return IsExecutable(skillSlot) && ((SkillDef)this).CanExecute(skillSlot); } public override bool IsReady([NotNull] GenericSkill skillSlot) { return ((SkillDef)this).IsReady(skillSlot) && IsExecutable(skillSlot); } } internal class KatAssets { public static AssetBundle MainAssetBundle; public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Katarina.katarinaassets"); MainAssetBundle = AssetBundle.LoadFromStream(stream); } using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Katarina.BattleQueenSounds.bnk"); byte[] array = new byte[stream2.Length]; stream2.Read(array, 0, array.Length); SoundBanks.Add(array); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Nines.Katarina", "Katarina", "2.2.0")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class MainPlugin : BaseUnityPlugin { public const string MODUID = "com.Nines.Katarina"; public const string MODNAME = "Katarina"; public const string VERSION = "2.2.0"; public const string SURVIVORNAME = "NinesKatarina"; public const string SURVIVORNAMEKEY = "NINESKATARINA"; public static GameObject characterPrefab; private static readonly Color characterColor = new Color(0.9254902f, 37f / 85f, 0.9137255f); internal static ConfigEntry<bool> shunpofx; internal static ConfigEntry<bool> killexplosionfx; internal static ConfigEntry<bool> enablelotusvoice; internal static ConfigEntry<bool> enablemeleevoice; internal static ConfigEntry<bool> enabledaggervoice; internal static ConfigEntry<bool> loudshunpo; internal static ConfigEntry<bool> silentslash; internal static ConfigEntry<bool> randomdaggers; internal static ConfigEntry<bool> altlotusfx; internal static ConfigEntry<bool> shunpodamagefx; internal static ConfigEntry<bool> collapseEveryone; internal static ConfigEntry<float> throwvelocity; internal static ConfigEntry<float> daggerpickupzone; internal static ConfigEntry<float> daggerpickupslash; internal static ConfigEntry<float> radialhealpercent; internal static ConfigEntry<float> blinkdmg; internal static ConfigEntry<float> ihateflyingenemies; internal static ConfigEntry<float> daggerspherebox; internal static ConfigEntry<int> shunpoSetting; internal static ConfigEntry<float> mainRootSpeed; internal static ConfigEntry<float> baseMaxHealth; internal static ConfigEntry<float> levelMaxHealth; internal static ConfigEntry<float> baseRegen; internal static ConfigEntry<float> levelRegen; internal static ConfigEntry<float> baseMoveSpeed; internal static ConfigEntry<float> levelMoveSpeed; internal static ConfigEntry<float> baseAcceleration; internal static ConfigEntry<float> baseJumpPower; internal static ConfigEntry<float> levelJumpPower; internal static ConfigEntry<float> levelDamage; internal static ConfigEntry<float> baseAttackSpeed; internal static ConfigEntry<float> levelAttackSpeed; internal static ConfigEntry<float> baseArmor; internal static ConfigEntry<float> levelArmor; internal static ConfigEntry<float> sprintingSpeedMultiplier; internal static Shader hopooshaders = Resources.Load<Shader>("Shaders/Deferred/HGStandard"); public static BodyIndex vultureIndex; public static BodyIndex pestIndex; public static BodyIndex katIndex; private void Awake() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_002c: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown //IL_005c: Expected O, but got Unknown //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown //IL_008c: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Expected O, but got Unknown //IL_00bc: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Expected O, but got Unknown //IL_00ec: Expected O, but got Unknown //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Expected O, but got Unknown //IL_011c: Expected O, but got Unknown //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Expected O, but got Unknown //IL_014c: Expected O, but got Unknown //IL_0161: 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_017c: Expected O, but got Unknown //IL_017c: Expected O, but got Unknown //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Expected O, but got Unknown //IL_01ac: Expected O, but got Unknown //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Expected O, but got Unknown //IL_01dc: Expected O, but got Unknown //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Expected O, but got Unknown //IL_020c: Expected O, but got Unknown //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Expected O, but got Unknown //IL_023c: Expected O, but got Unknown //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Expected O, but got Unknown //IL_0270: Expected O, but got Unknown //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Expected O, but got Unknown //IL_02a4: Expected O, but got Unknown //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Expected O, but got Unknown //IL_02d8: Expected O, but got Unknown //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Expected O, but got Unknown //IL_030c: Expected O, but got Unknown //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Unknown result type (might be due to invalid IL or missing references) //IL_0340: Expected O, but got Unknown //IL_0340: Expected O, but got Unknown //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_036a: Unknown result type (might be due to invalid IL or missing references) //IL_0374: Expected O, but got Unknown //IL_0374: Expected O, but got Unknown //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_039e: Unknown result type (might be due to invalid IL or missing references) //IL_03a8: Expected O, but got Unknown //IL_03a8: Expected O, but got Unknown shunpofx = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("VFX", "Shunpo VFX"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); killexplosionfx = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("VFX", "Special Effects On Reset"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); collapseEveryone = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("VFX", "Special Effect Choice"), false, new ConfigDescription("false for Lights Out, true for Collapse", (AcceptableValueBase)null, Array.Empty<object>())); shunpoSetting = ((BaseUnityPlugin)this).Config.Bind<int>(new ConfigDefinition("VFX", "Shunpo Kill Effect"), 2, new ConfigDescription("0: Lights Out 1: Collapse 2: Lights Out for ground enemies and Collapse for flying enemies", (AcceptableValueBase)null, Array.Empty<object>())); altlotusfx = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("VFX", "Alternate Death Lotus Projectiles"), false, new ConfigDescription("False for red daggers, True for Scheman magic bursts", (AcceptableValueBase)null, Array.Empty<object>())); enablelotusvoice = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Voice", "Death Lotus Voice"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); enablemeleevoice = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Voice", "Sinister Steel Voice"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); enabledaggervoice = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Voice", "Voracious Blade Voice"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); randomdaggers = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Daggers", "True Random Daggers"), false, new ConfigDescription("true to randomize her weapons and dagger pickups, false to sync them together", (AcceptableValueBase)null, Array.Empty<object>())); loudshunpo = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Shunpo", "Shunpo Explosion Sound"), true, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); silentslash = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Sinister Steel", "Quieter Impact"), true, new ConfigDescription("Mercenary slash impact sfx, turned off by default", (AcceptableValueBase)null, Array.Empty<object>())); shunpodamagefx = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Shunpo", "Enemy Damage FX"), true, new ConfigDescription("Collapse effect on enemy", (AcceptableValueBase)null, Array.Empty<object>())); blinkdmg = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Shunpo", "Damage Coefficient"), 2.6f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); ihateflyingenemies = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Shunpo", "Flying Enemy Damage Coefficient"), 4.6f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); daggerpickupzone = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Pickup Zone Radius"), 5f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); daggerpickupslash = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Pickup Slash Radius"), 15f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); radialhealpercent = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Omnivamp"), 0.3f, new ConfigDescription("Percent of damage dealt on a per enemy basis. 0.3 is 3% of damage done to one enemy, times the number of enemies hit.", (AcceptableValueBase)null, Array.Empty<object>())); daggerspherebox = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Hitbox"), 1.1f, new ConfigDescription("Feel free to mess with this, it's measured as a radius. Serrated Shiv is 0.3", (AcceptableValueBase)null, Array.Empty<object>())); throwvelocity = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Daggers", "Velocity"), 200f, new ConfigDescription("Default is 185, changed to 200 for v2.2, Serrated Shiv is 160", (AcceptableValueBase)null, Array.Empty<object>())); KatAssets.PopulateAssets(); Prefabs.CreatePrefabs(); CreateSurvPrefab(); RegisterStates(); RegisterCharacter(); Hook.Hooks(); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) vultureIndex = BodyCatalog.FindBodyIndex("VultureBody"); pestIndex = BodyCatalog.FindBodyIndex("FlyingVerminBody"); katIndex = BodyCatalog.FindBodyIndex("NinesKatarinaBody"); }); } internal static void CreateSurvPrefab() { //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Expected O, but got Unknown //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Expected O, but got Unknown //IL_0174: 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_0196: 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_01d5: 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_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_03a1: 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_03cc: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_0417: Unknown result type (might be due to invalid IL or missing references) //IL_047b: Unknown result type (might be due to invalid IL or missing references) //IL_0480: Unknown result type (might be due to invalid IL or missing references) //IL_0498: Unknown result type (might be due to invalid IL or missing references) //IL_049d: Unknown result type (might be due to invalid IL or missing references) //IL_04ae: Unknown result type (might be due to invalid IL or missing references) //IL_04b3: Unknown result type (might be due to invalid IL or missing references) //IL_04c4: Unknown result type (might be due to invalid IL or missing references) //IL_04c9: Unknown result type (might be due to invalid IL or missing references) //IL_04da: Unknown result type (might be due to invalid IL or missing references) //IL_04df: Unknown result type (might be due to invalid IL or missing references) //IL_04fa: Unknown result type (might be due to invalid IL or missing references) //IL_04ff: Unknown result type (might be due to invalid IL or missing references) //IL_0504: Unknown result type (might be due to invalid IL or missing references) //IL_050e: Unknown result type (might be due to invalid IL or missing references) //IL_0515: Expected O, but got Unknown //IL_0542: Unknown result type (might be due to invalid IL or missing references) //IL_0554: Unknown result type (might be due to invalid IL or missing references) //IL_0591: Unknown result type (might be due to invalid IL or missing references) //IL_0596: Unknown result type (might be due to invalid IL or missing references) //IL_061d: Unknown result type (might be due to invalid IL or missing references) //IL_063b: Unknown result type (might be due to invalid IL or missing references) //IL_0654: Unknown result type (might be due to invalid IL or missing references) //IL_0672: Unknown result type (might be due to invalid IL or missing references) //IL_067f: Unknown result type (might be due to invalid IL or missing references) //IL_0681: Unknown result type (might be due to invalid IL or missing references) //IL_0685: Unknown result type (might be due to invalid IL or missing references) //IL_0709: Unknown result type (might be due to invalid IL or missing references) //IL_0753: Unknown result type (might be due to invalid IL or missing references) //IL_0767: Unknown result type (might be due to invalid IL or missing references) //IL_077b: Unknown result type (might be due to invalid IL or missing references) //IL_078f: Unknown result type (might be due to invalid IL or missing references) //IL_07e1: Unknown result type (might be due to invalid IL or missing references) //IL_09aa: Unknown result type (might be due to invalid IL or missing references) //IL_0a66: Unknown result type (might be due to invalid IL or missing references) //IL_0a6b: Unknown result type (might be due to invalid IL or missing references) //IL_0a99: Unknown result type (might be due to invalid IL or missing references) //IL_0a9e: Unknown result type (might be due to invalid IL or missing references) //IL_0ac7: Unknown result type (might be due to invalid IL or missing references) //IL_0acc: Unknown result type (might be due to invalid IL or missing references) //IL_0add: Unknown result type (might be due to invalid IL or missing references) //IL_0ae2: Unknown result type (might be due to invalid IL or missing references) //IL_0b0b: Unknown result type (might be due to invalid IL or missing references) //IL_0b10: Unknown result type (might be due to invalid IL or missing references) //IL_0b21: Unknown result type (might be due to invalid IL or missing references) //IL_0b26: Unknown result type (might be due to invalid IL or missing references) //IL_0b4f: Unknown result type (might be due to invalid IL or missing references) //IL_0b54: Unknown result type (might be due to invalid IL or missing references) //IL_0b65: Unknown result type (might be due to invalid IL or missing references) //IL_0b6a: Unknown result type (might be due to invalid IL or missing references) //IL_0b93: Unknown result type (might be due to invalid IL or missing references) //IL_0b98: Unknown result type (might be due to invalid IL or missing references) //IL_0ba9: Unknown result type (might be due to invalid IL or missing references) //IL_0bae: Unknown result type (might be due to invalid IL or missing references) //IL_0c1a: Unknown result type (might be due to invalid IL or missing references) //IL_0c3c: Unknown result type (might be due to invalid IL or missing references) //IL_0c61: Unknown result type (might be due to invalid IL or missing references) characterPrefab = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody"), "NinesKatarinaBody", true); characterPrefab.AddComponent<BladeController>(); characterPrefab.AddComponent<ExtraSkillLocator>(); characterPrefab.GetComponent<NetworkIdentity>().localPlayerAuthority = true; Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("ModelBase")).gameObject); Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("CameraPivot")).gameObject); Object.Destroy((Object)(object)((Component)characterPrefab.transform.Find("AimOrigin")).gameObject); GameObject val = KatAssets.MainAssetBundle.LoadAsset<GameObject>("katarina"); KatarinaTracker katarinaTracker = characterPrefab.AddComponent<KatarinaTracker>(); ((HuntressTracker)katarinaTracker).maxTrackingAngle = 93f; ((HuntressTracker)katarinaTracker).maxTrackingDistance = 21f; GameObject val2 = new GameObject("ModelBase"); val2.transform.parent = characterPrefab.transform; val2.transform.localPosition = new Vector3(0f, -0.94f, 0f); val2.transform.localRotation = Quaternion.identity; val2.transform.localScale = new Vector3(1.42f, 1.42f, 1.42f); GameObject val3 = new GameObject("AimOrigin"); val3.transform.parent = val2.transform; val3.transform.localPosition = new Vector3(0f, 1.7f, 0f); val3.transform.localRotation = Quaternion.identity; val3.transform.localScale = Vector3.one; Transform transform = val.transform; transform.parent = val2.transform; transform.localPosition = Vector3.zero; transform.localScale = new Vector3(1f, 1f, 1f); transform.localRotation = Quaternion.identity; CharacterDirection component = characterPrefab.GetComponent<CharacterDirection>(); component.moveVector = Vector3.zero; component.targetTransform = val2.transform; component.overrideAnimatorForwardTransform = null; component.rootMotionAccumulator = null; component.modelAnimator = val.GetComponentInChildren<Animator>(); component.driveFromRootRotation = false; component.turnSpeed = 720f; CharacterBody component2 = characterPrefab.GetComponent<CharacterBody>(); ((Object)component2).name = "NinesKatarinaBody"; component2.baseNameToken = "NINESKATARINA_NAME"; component2.subtitleNameToken = "NINESKATARINA_SUBTITLE"; component2.bodyFlags = (BodyFlags)16; component2.bodyFlags = (BodyFlags)32; component2.rootMotionInMainState = false; component2.mainRootSpeed = 0f; component2.baseMaxHealth = 120f; component2.levelMaxHealth = 35f; component2.baseRegen = 1f; component2.levelRegen = 0.33f; component2.baseMaxShield = 0f; component2.levelMaxShield = 0f; component2.baseMoveSpeed = 7f; component2.levelMoveSpeed = 0f; component2.baseAcceleration = 110f; component2.baseJumpPower = 15f; component2.levelJumpPower = 0f; component2.baseDamage = 13f; component2.levelDamage = 2.8f; component2.baseAttackSpeed = 1.3f; component2.levelAttackSpeed = 0.02f; component2.baseCrit = 1f; component2.levelCrit = 0f; component2.baseArmor = 20f; component2.levelArmor = 0f; component2.baseJumpCount = 1; component2.sprintingSpeedMultiplier = 1.45f; component2.wasLucky = false; component2._defaultCrosshairPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2CrosshairPrepRevolver.prefab").WaitForCompletion(); component2.hideCrosshair = false; component2.aimOriginTransform = val3.transform; component2.hullClassification = (HullClassification)0; component2.portraitIcon = KatAssets.MainAssetBundle.LoadAsset<Texture>("KatIcon"); component2.isChampion = false; component2.currentVehicle = null; component2.skinIndex = 0u; component2.preferredPodPrefab = LegacyResourcesAPI.Load<GameObject>("prefabs/networkedobjects/robocratepod"); component2.bodyColor = characterColor; CharacterMotor component3 = characterPrefab.GetComponent<CharacterMotor>(); component3.walkSpeedPenaltyCoefficient = 1f; component3.characterDirection = component; component3.muteWalkMotion = false; component3.mass = 110f; component3.airControl = 0.25f; component3.disableAirControlUntilCollision = false; component3.generateParametersOnAwake = true; InputBankTest component4 = characterPrefab.GetComponent<InputBankTest>(); component4.moveVector = Vector3.zero; CharacterCameraParams val4 = ScriptableObject.CreateInstance<CharacterCameraParams>(); val4.data.minPitch = BlendableFloat.op_Implicit(-70f); val4.data.maxPitch = BlendableFloat.op_Implicit(70f); val4.data.wallCushion = BlendableFloat.op_Implicit(0.1f); val4.data.pivotVerticalOffset = BlendableFloat.op_Implicit(0.6f); val4.data.idealLocalCameraPos = BlendableVector3.op_Implicit(new Vector3(0f, 0f, -10f)); GameObject val5 = new GameObject("CameraPivot"); val5.transform.parent = characterPrefab.transform; val5.transform.localPosition = new Vector3(0f, 0.5f, 0f); val5.transform.localRotation = Quaternion.identity; CameraTargetParams component5 = characterPrefab.GetComponent<CameraTargetParams>(); component5.cameraParams = val4; component5.cameraPivotTransform = characterPrefab.transform.Find("CameraPivot"); component5.recoil = Vector2.zero; component5.dontRaycastToPivot = false; ModelLocator component6 = characterPrefab.GetComponent<ModelLocator>(); component6.modelTransform = transform; component6.modelBaseTransform = val2.transform; component6.dontReleaseModelOnDeath = false; component6.autoUpdateModelTransform = true; component6.dontDetatchFromParent = false; component6.noCorpse = false; component6.normalizeToFloor = false; component6.preserveModel = false; ChildLocator component7 = val.GetComponent<ChildLocator>(); CharacterModel val6 = val.AddComponent<CharacterModel>(); SkinnedMeshRenderer[] componentsInChildren = val.GetComponentsInChildren<SkinnedMeshRenderer>(); List<RendererInfo> list = new List<RendererInfo>(); for (int i = 0; i < componentsInChildren.Length; i++) { RendererInfo val7 = default(RendererInfo); val7.renderer = (Renderer)(object)componentsInChildren[i]; val7.defaultMaterial = Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.color, ((Renderer)componentsInChildren[i]).material.GetTexture("_MainTex"), Color.white, 0f, null, 1f, null); val7.defaultShadowCastingMode = (ShadowCastingMode)1; val7.ignoreOverlays = false; RendererInfo item = val7; list.Add(item); } val6.baseRendererInfos = list.ToArray(); val6.autoPopulateLightInfos = true; val6.invisibilityCount = 0; val6.temporaryOverlays = new List<TemporaryOverlayInstance>(); Reflection.SetFieldValue<SkinnedMeshRenderer>((object)val6, "mainSkinnedMeshRenderer", componentsInChildren[0]); SkinnedMeshRenderer fieldValue = Reflection.GetFieldValue<SkinnedMeshRenderer>((object)val6, "mainSkinnedMeshRenderer"); ModelSkinController val8 = val.AddComponent<ModelSkinController>(); LanguageAPI.Add("NINESKATARINABODY_DEFAULT_SKIN_NAME", "Default"); SkinDefInfo val9 = default(SkinDefInfo); val9.BaseSkins = Array.Empty<SkinDef>(); val9.MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0]; val9.ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0]; val9.GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[0]; val9.Icon = LoadoutAPI.CreateSkinIcon(new Color(0.9098039f, 23f / 51f, 0.8901961f), new Color(0.9372549f, 44f / 51f, 56f / 85f), new Color(38f / 85f, 0.38039216f, 0.5254902f), new Color(50f / 51f, 16f / 51f, 49f / 85f)); val9.MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0]; val9.Name = "Default"; val9.NameToken = "Battle Queen"; val9.RendererInfos = val6.baseRendererInfos; val9.RootObject = val; val9.UnlockableDef = null; SkinDef val10 = LoadoutAPI.CreateNewSkinDef(val9); val8.skins = (SkinDef[])(object)new SkinDef[1] { val10 }; HealthComponent component8 = characterPrefab.GetComponent<HealthComponent>(); component8.health = 110f; component8.shield = 0f; component8.barrier = 0f; component8.magnetiCharge = 0f; component8.body = null; component8.dontShowHealthbar = false; component8.globalDeathEventChanceCoefficient = 1f; characterPrefab.GetComponent<Interactor>().maxInteractionDistance = 3f; characterPrefab.GetComponent<InteractionDriver>().highlightInteractor = true; SfxLocator component9 = characterPrefab.GetComponent<SfxLocator>(); component9.deathSound = "Play_DeathQuote"; component9.barkSound = ""; component9.openSound = ""; component9.landingSound = "Play_char_land"; component9.fallDamageSound = "Play_char_land_fall_damage"; component9.aliveLoopStart = ""; component9.aliveLoopStop = ""; Rigidbody component10 = characterPrefab.GetComponent<Rigidbody>(); component10.mass = 100f; component10.drag = 0f; component10.angularDrag = 0f; component10.useGravity = false; component10.isKinematic = true; component10.interpolation = (RigidbodyInterpolation)0; component10.collisionDetectionMode = (CollisionDetectionMode)0; component10.constraints = (RigidbodyConstraints)0; CapsuleCollider component11 = ((Component)component7.FindChild("collider")).GetComponent<CapsuleCollider>(); ((Collider)component11).isTrigger = false; ((Collider)component11).material = null; KinematicCharacterMotor component12 = characterPrefab.GetComponent<KinematicCharacterMotor>(); HurtBoxGroup val11 = val.AddComponent<HurtBoxGroup>(); HurtBox val12 = ((Component)component11).gameObject.AddComponent<HurtBox>(); ((Component)val12).gameObject.layer = LayerIndex.entityPrecise.intVal; val12.healthComponent = component8; val12.isBullseye = true; val12.damageModifier = (DamageModifier)0; val12.hurtBoxGroup = val11; val12.indexInGroup = 0; val11.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val12 }; val11.mainHurtBox = val12; val11.bullseyeCount = 1; AimAnimator val13 = val.AddComponent<AimAnimator>(); val13.inputBank = component4; val13.directionComponent = component; val13.pitchRangeMax = 55f; val13.pitchRangeMin = -50f; val13.yawRangeMin = -44f; val13.yawRangeMax = 44f; val13.pitchGiveupRange = 30f; val13.yawGiveupRange = 10f; val13.giveupDuration = 8f; EntityStateMachine component13 = ((Component)component2).GetComponent<EntityStateMachine>(); component13.mainStateType = new SerializableEntityStateType(typeof(CharacterMain)); CharacterDeathBehavior component14 = characterPrefab.GetComponent<CharacterDeathBehavior>(); component14.deathStateMachine = characterPrefab.GetComponent<EntityStateMachine>(); component14.deathState = new SerializableEntityStateType(typeof(GenericCharacterDeath)); EntityStateMachine val14 = characterPrefab.AddComponent<EntityStateMachine>(); val14.customName = "Blade"; val14.initialStateType = new SerializableEntityStateType(typeof(Idle)); val14.mainStateType = new SerializableEntityStateType(typeof(Idle)); EntityStateMachine val15 = characterPrefab.AddComponent<EntityStateMachine>(); val15.customName = "Blink"; val15.initialStateType = new SerializableEntityStateType(typeof(Idle)); val15.mainStateType = new SerializableEntityStateType(typeof(Idle)); EntityStateMachine val16 = characterPrefab.AddComponent<EntityStateMachine>(); val16.customName = "Speen"; val16.initialStateType = new SerializableEntityStateType(typeof(Idle)); val16.mainStateType = new SerializableEntityStateType(typeof(Idle)); EntityStateMachine val17 = characterPrefab.AddComponent<EntityStateMachine>(); val17.customName = "Swipe"; val17.initialStateType = new SerializableEntityStateType(typeof(Idle)); val17.mainStateType = new SerializableEntityStateType(typeof(Idle)); NetworkStateMachine component15 = ((Component)component2).GetComponent<NetworkStateMachine>(); List<EntityStateMachine> list2 = component15.stateMachines.ToList(); list2.Add(val14); list2.Add(val15); list2.Add(val16); list2.Add(val17); component15.stateMachines = list2.ToArray(); GameObject val18 = Utils.CreateHitbox("Primary", val.transform, new Vector3(3.5f, 4.5f, 3.8f)); val18.transform.localPosition = new Vector3(0f, 1f, 1f); Utils.CreateHitbox("Utility", val.transform, new Vector3(8f, 8f, 8f)); ContentAddition.AddBody(characterPrefab); } private void RegisterCharacter() { //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(((Component)characterPrefab.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "NinesKatarinaDisplay", true); val.AddComponent<NetworkIdentity>(); string text = "Katarina is a blazing-speed melee assassin who can infinitely reset her abilities so long as there is something to kill.<style=cSub>\r\n\r\n< ! > Using your abilities in the correct order will allow you to reset them more than once against even a single enemy. Experiment with different combos to maximize your damage output and zip around the battlefield.<style=cSub>\r\n\r\n< ! > The fan of daggers from Voracious Blade will not spawn pickups, but are good for dealing with tanky enemies at range.<style=cSub>\r\n\r\n< ! > Shunpo does additional bonus damage based on the target's current % HP and heals you for a portion of that amount. Naturally you'll yield the highest damage/healing output by casting it on full-health targets.<style=cSub>\r\n\r\n< ! > Death lotus targets more enemies the greater attack speed you have and its cooldown is decreased by 4 seconds with each kill."; string text2 = "..and so she left, her instincts, and her blades honed evermore."; string text3 = "..and so she stayed, her hubris proving lethal."; LanguageAPI.Add("NINESKATARINA_NAME", "Katarina"); LanguageAPI.Add("NINESKATARINA_DESCRIPTION", text); LanguageAPI.Add("NINESKATARINA_SUBTITLE", "The Sinister Blade"); LanguageAPI.Add("NINESKATARINA_OUTRO", text2); LanguageAPI.Add("NINESKATARINA_FAIL", text3); SurvivorDef val2 = ScriptableObject.CreateInstance<SurvivorDef>(); val2.cachedName = "NINESKATARINA_NAME"; val2.unlockableDef = null; val2.descriptionToken = "NINESKATARINA_DESCRIPTION"; val2.primaryColor = characterColor; val2.bodyPrefab = characterPrefab; val2.displayPrefab = val; val2.outroFlavorToken = "NINESKATARINA_OUTRO"; val2.desiredSortPosition = 30f; val2.mainEndingEscapeFailureFlavorToken = "NINESKATARINA_FAIL"; ContentAddition.AddSurvivorDef(val2); SkillSetup(); GameObject val3 = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterMasters/CommandoMonsterMaster"), "NinesKatarinaMaster", true); ContentAddition.AddMaster(val3); CharacterMaster component = val3.GetComponent<CharacterMaster>(); component.bodyPrefab = characterPrefab; } private void RegisterStates() { //IL_0003: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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) bool flag = default(bool); ContentAddition.AddEntityState<Primary>(ref flag); ContentAddition.AddEntityState<Secondary>(ref flag); ContentAddition.AddEntityState<ThrowSingleDagger>(ref flag); ContentAddition.AddEntityState<ThrowGenjiDaggers>(ref flag); ContentAddition.AddEntityState<Utility>(ref flag); ContentAddition.AddEntityState<AltUtility>(ref flag); ContentAddition.AddEntityState<Blink>(ref flag); ContentAddition.AddEntityState<BlinkTarget>(ref flag); ContentAddition.AddEntityState<Special>(ref flag); ContentAddition.AddEntityState<CharacterMain>(ref flag); ContentAddition.AddEntityState<BaseDaggerPickupState>(ref flag); ContentAddition.AddEntityState<DaggerPickupAir>(ref flag); } private void SkillSetup() { GenericSkill[] componentsInChildren = characterPrefab.GetComponentsInChildren<GenericSkill>(); foreach (GenericSkill val in componentsInChildren) { Object.DestroyImmediate((Object)(object)val); } PassiveSetup(); PrimarySetup(); SecondarySetup(); ExtraSecondary(); AltUtilitySetup(); ExtraUtility(); SpecialSetup(); } private void PassiveSetup() { SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("NINESKATARINA_PASSIVE_NAME", "Voracity"); LanguageAPI.Add("NINESKATARINA_PASSIVE_DESCRIPTION", "Always looking for her next target, Katarina <color=#E92630>resets</color> her ability cooldowns <style=cIsDamage>on-kill</style>. Hitting an enemy with a Voracious Blade will spawn a <color=#E92630>dagger</color> that can be picked up for <style=cIsDamage>500% damage</style>."); component.passiveSkill.enabled = true; component.passiveSkill.skillNameToken = "NINESKATARINA_PASSIVE_NAME"; component.passiveSkill.skillDescriptionToken = "NINESKATARINA_PASSIVE_DESCRIPTION"; component.passiveSkill.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("Passive1"); } private void PrimarySetup() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Expected O, but got Unknown //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("NINESKATARINA_M1", "Sinister Steel"); LanguageAPI.Add("NINESKATARINA_M1_DESCRIPTION", "<style=cIsDamage>Slayer.</style> Swipe your blades in front of you for <style=cIsDamage>210% damage.</style>"); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Primary)); val.activationStateMachineName = "Weapon"; val.baseMaxStock = 0; val.baseRechargeInterval = 0f; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.fullRestockOnAssign = true; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = true; val.mustKeyPress = false; val.cancelSprintingOnActivation = true; val.rechargeStock = 0; val.requiredStock = 0; val.stockToConsume = 0; val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("primary"); val.skillDescriptionToken = "NINESKATARINA_M1_DESCRIPTION"; val.skillName = "NINESKATARINA_M1"; val.skillNameToken = "NINESKATARINA_M1"; val.keywordTokens = new string[1] { "KEYWORD_SLAYER" }; ContentAddition.AddSkillDef(val); component.primary = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.primary, "_skillFamily", val2); SkillFamily skillFamily = component.primary.skillFamily; Variant[] variants = skillFamily.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(skillFamily); } private void SecondarySetup() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Expected O, but got Unknown //IL_015a: 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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("NINESKATARINA_M2", "Voracious Blade"); LanguageAPI.Add("NINESKATARINA_M2_DESCRIPTION", "Throw a dagger for <style=cIsDamage>360% damage</style>, or hold to throw a fan of daggers for <style=cIsDamage>5x135% damage</style> that <style=cIsHealth>hemorrhage.</style>"); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Secondary)); val.activationStateMachineName = "Blade"; val.baseMaxStock = 1; val.baseRechargeInterval = 5.5f; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = true; val.mustKeyPress = true; val.cancelSprintingOnActivation = false; val.rechargeStock = 1; val.dontAllowPastMaxStocks = true; val.requiredStock = 1; val.stockToConsume = 1; val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("secondary"); val.skillDescriptionToken = "NINESKATARINA_M2_DESCRIPTION"; val.skillName = "NINESKATARINA_M2"; val.skillNameToken = "NINESKATARINA_M2"; ContentAddition.AddSkillDef(val); component.secondary = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.secondary, "_skillFamily", val2); SkillFamily skillFamily = component.secondary.skillFamily; Variant[] variants = skillFamily.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(skillFamily); } private void ExtraSecondary() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) ExtraSkillLocator component = characterPrefab.GetComponent<ExtraSkillLocator>(); LanguageAPI.Add("NINESKATARINA_ALT2_SECONDARY", "Preparation"); LanguageAPI.Add("NINESKATARINA_ALT2_SECONDARY_DESCRIPTION", "Swipe your blades around you for <style=cIsDamage>500% damage</style>. Decreases the cooldown of both <color=#E92630>Shunpo</color> techniques by <style=cIsUtility>7 seconds</style>."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(BaseDaggerPickupState)); val.activationStateMachineName = "Swipe"; val.baseMaxStock = 1; val.baseRechargeInterval = 6f; val.beginSkillCooldownOnSkillEnd = false; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = true; val.mustKeyPress = true; val.cancelSprintingOnActivation = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("Preparation"); val.skillDescriptionToken = "NINESKATARINA_ALT2_SECONDARY_DESCRIPTION"; val.skillName = "NINESKATARINA_ALT2_SECONDARY"; val.skillNameToken = "NINESKATARINA_ALT2_SECONDARY"; ContentAddition.AddSkillDef(val); component.extraSecond = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.extraSecond, "_skillFamily", val2); SkillFamily skillFamily = component.extraSecond.skillFamily; Variant[] variants = skillFamily.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(skillFamily); } private void UtilitySetup() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0066: 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_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Expected O, but got Unknown //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) KatarinaSkillSwitchBehaviour component = characterPrefab.GetComponent<KatarinaSkillSwitchBehaviour>(); SkillLocator component2 = characterPrefab.GetComponent<SkillLocator>(); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Utility)); val.activationStateMachineName = "Blink"; val.baseMaxStock = 1; val.baseRechargeInterval = 10f; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = false; val.mustKeyPress = true; val.cancelSprintingOnActivation = true; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("utility"); val.skillDescriptionToken = "NINESKATARINA_UTIL_DESCRIPTION"; val.skillName = "NINESKATARINA_UTIL"; val.skillNameToken = "NINESKATARINA_UTIL"; ContentAddition.AddSkillDef(val); component2.utility = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component2.utility, "_skillFamily", val2); SkillFamily skillFamily = component2.utility.skillFamily; Variant[] variants = skillFamily.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(skillFamily); } private void AltUtilitySetup() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Expected O, but got Unknown //IL_015a: 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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("NINESKATARINAALT_UTIL", "Scheman Shunpo"); LanguageAPI.Add("NINESKATARINAALT_UTIL_DESCRIPTION", "Dash in the <color=#E92630>blink of an eye</color> to target enemy for <style=cIsDamage>260% damage</style>."); KatarinaSkillDef katarinaSkillDef = ScriptableObject.CreateInstance<KatarinaSkillDef>(); ((SkillDef)katarinaSkillDef).activationState = new SerializableEntityStateType(typeof(AltUtility)); ((SkillDef)katarinaSkillDef).activationStateMachineName = "Blink"; ((SkillDef)katarinaSkillDef).baseMaxStock = 1; ((SkillDef)katarinaSkillDef).baseRechargeInterval = 6.5f; ((SkillDef)katarinaSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)katarinaSkillDef).canceledFromSprinting = false; ((SkillDef)katarinaSkillDef).fullRestockOnAssign = false; ((SkillDef)katarinaSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)katarinaSkillDef).isCombatSkill = false; ((SkillDef)katarinaSkillDef).mustKeyPress = true; ((SkillDef)katarinaSkillDef).cancelSprintingOnActivation = false; ((SkillDef)katarinaSkillDef).rechargeStock = 1; ((SkillDef)katarinaSkillDef).requiredStock = 1; ((SkillDef)katarinaSkillDef).stockToConsume = 1; ((SkillDef)katarinaSkillDef).forceSprintDuringState = true; ((SkillDef)katarinaSkillDef).icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("utility2"); ((SkillDef)katarinaSkillDef).skillDescriptionToken = "NINESKATARINAALT_UTIL_DESCRIPTION"; ((SkillDef)katarinaSkillDef).skillName = "NINESKATARINAALT_UTIL"; ((SkillDef)katarinaSkillDef).skillNameToken = "NINESKATARINAALT_UTIL"; ContentAddition.AddSkillDef((SkillDef)(object)katarinaSkillDef); component.utility = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>(); val.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.utility, "_skillFamily", val); SkillFamily skillFamily = component.utility.skillFamily; Variant[] variants = skillFamily.variants; Variant val2 = new Variant { skillDef = (SkillDef)(object)katarinaSkillDef }; ((Variant)(ref val2)).viewableNode = new Node(((SkillDef)katarinaSkillDef).skillNameToken, false, (Node)null); variants[0] = val2; ContentAddition.AddSkillFamily(skillFamily); } private void ExtraUtility() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) ExtraSkillLocator component = characterPrefab.GetComponent<ExtraSkillLocator>(); LanguageAPI.Add("NINESKATARINA_UTIL", "Noxian Shunpo"); LanguageAPI.Add("NINESKATARINA_UTIL_DESCRIPTION", "Dash in the <color=#E92630>blink of an eye</color> to target location for <style=cIsDamage>260% damage</style>."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Utility)); val.activationStateMachineName = "Blink"; val.baseMaxStock = 1; val.baseRechargeInterval = 9f; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)0; val.isCombatSkill = false; val.mustKeyPress = true; val.cancelSprintingOnActivation = true; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("utility"); val.skillDescriptionToken = "NINESKATARINA_UTIL_DESCRIPTION"; val.skillName = "NINESKATARINA_UTIL"; val.skillNameToken = "NINESKATARINA_UTIL"; ContentAddition.AddSkillDef(val); component.extraThird = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.extraThird, "_skillFamily", val2); SkillFamily skillFamily = component.extraThird.skillFamily; Variant[] variants = skillFamily.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(skillFamily); } private void SpecialSetup() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("NINESKATARINA_SPEC", "Death Lotus"); LanguageAPI.Add("NINESKATARINA_SPEC_DESCRIPTION", "<style=cIsUtility>Channel for 3 seconds,</style> rapidly throwing daggers at the nearest <style=cIsDamage>5 enemies</style> for <style=cIsDamage>195% damage</style> per dagger."); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.activationState = new SerializableEntityStateType(typeof(Special)); val.activationStateMachineName = "Body"; val.baseMaxStock = 1; val.baseRechargeInterval = 45f; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = true; val.fullRestockOnAssign = false; val.interruptPriority = (InterruptPriority)2; val.isCombatSkill = true; val.mustKeyPress = true; val.cancelSprintingOnActivation = false; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.icon = KatAssets.MainAssetBundle.LoadAsset<Sprite>("special"); val.skillDescriptionToken = "NINESKATARINA_SPEC_DESCRIPTION"; val.skillName = "NINESKATARINA_SPEC"; val.skillNameToken = "NINESKATARINA_SPEC"; ContentAddition.AddSkillDef(val); component.special = characterPrefab.AddComponent<GenericSkill>(); SkillFamily val2 = ScriptableObject.CreateInstance<SkillFamily>(); val2.variants = (Variant[])(object)new Variant[1]; Reflection.SetFieldValue<SkillFamily>((object)component.special, "_skillFamily", val2); SkillFamily skillFamily = component.special.skillFamily; Variant[] variants = skillFamily.variants; Variant val3 = new Variant { skillDef = val }; ((Variant)(ref val3)).viewableNode = new Node(val.skillNameToken, false, (Node)null); variants[0] = val3; ContentAddition.AddSkillFamily(skillFamily); } } internal class Prefabs { internal static GameObject dagger1ProjectileThrow; internal static GameObject dagger2ProjectileThrow; internal static GameObject dagger3ProjectileThrow; internal static GameObject dagger4ProjectileThrow; internal static GameObject dagger5ProjectileThrow; internal static GameObject dagger6ProjectileThrow; internal static GameObject dagger1ProjectilePickup; internal static GameObject dagger2ProjectilePickup; internal static GameObject dagger3ProjectilePickup; internal static GameObject dagger4ProjectilePickup; internal static GameObject dagger5ProjectilePickup; internal static GameObject dagger6ProjectilePickup; internal static GameObject dagger1ProjectileThrowBleed; internal static GameObject dagger2ProjectileThrowBleed; internal static GameObject dagger3ProjectileThrowBleed; internal static GameObject dagger4ProjectileThrowBleed; internal static GameObject dagger5ProjectileThrowBleed; internal static GameObject dagger6ProjectileThrowBleed; internal static GameObject pickupfx; internal static GameObject lotusfx; internal static GameObject altlotusfx; internal static GameObject shunpofx; internal static GameObject silentshunpofx; internal static GameObject silentslashfx; internal static GameObject silentcollapseEffect; internal static GameObject aimIndicator; internal static ModdedDamageType blade1; internal static ModdedDamageType blade2; internal static ModdedDamageType blade3; internal static ModdedDamageType blade4; internal static ModdedDamageType blade5; internal static ModdedDamageType blade6; internal static ModdedDamageType bladeBleed; internal static ModdedDamageType blink; internal static ModdedDamageType daggerPickup; private static float daggerMaxPickupTime = 5.5f; internal static void CreatePrefabs() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //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_00cc: 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_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02f4: Unknown result type (might be due to invalid IL or missing references) //IL_0445: Unknown result type (might be due to invalid IL or missing references) //IL_0510: Unknown result type (might be due to invalid IL or missing references) //IL_05db: Unknown result type (might be due to invalid IL or missing references) //IL_06a6: Unknown result type (might be due to invalid IL or missing references) //IL_0771: Unknown result type (might be due to invalid IL or missing references) //IL_07ba: Unknown result type (might be due to invalid IL or missing references) //IL_07bf: Unknown result type (might be due to invalid IL or missing references) //IL_07fc: Unknown result type (might be due to invalid IL or missing references) //IL_0801: Unknown result type (might be due to invalid IL or missing references) //IL_083e: Unknown result type (might be due to invalid IL or missing references) //IL_0843: Unknown result type (might be due to invalid IL or missing references) //IL_0880: Unknown result type (might be due to invalid IL or missing references) //IL_0885: Unknown result type (might be due to invalid IL or missing references) //IL_08a3: Unknown result type (might be due to invalid IL or missing references) //IL_08a8: Unknown result type (might be due to invalid IL or missing references) //IL_08e5: Unknown result type (might be due to invalid IL or missing references) //IL_08ea: Unknown result type (might be due to invalid IL or missing references) //IL_0927: Unknown result type (might be due to invalid IL or missing references) //IL_092c: Unknown result type (might be due to invalid IL or missing references) //IL_0a41: Unknown result type (might be due to invalid IL or missing references) //IL_0a46: Unknown result type (might be due to invalid IL or missing references) //IL_0a74: Unknown result type (might be due to invalid IL or missing references) //IL_0b20: Unknown result type (might be due to invalid IL or missing references) //IL_0b61: Unknown result type (might be due to invalid IL or missing references) //IL_0ba2: Unknown result type (might be due to invalid IL or missing references) //IL_0be3: Unknown result type (might be due to invalid IL or missing references) //IL_0c24: Unknown result type (might be due to invalid IL or missing references) //IL_0d3e: Unknown result type (might be due to invalid IL or missing references) blade1 = DamageAPI.ReserveDamageType(); blade2 = DamageAPI.ReserveDamageType(); blade3 = DamageAPI.ReserveDamageType(); blade4 = DamageAPI.ReserveDamageType(); blade5 = DamageAPI.ReserveDamageType(); blade6 = DamageAPI.ReserveDamageType(); bladeBleed = DamageAPI.ReserveDamageType(); blink = DamageAPI.ReserveDamageType(); daggerPickup = DamageAPI.ReserveDamageType(); OrbAPI.AddOrb(typeof(LotusBladeOrb)); GameObject obj = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab").WaitForCompletion(); GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2ShivProjectile.prefab").WaitForCompletion(), "BaseProjectile", false); val.GetComponent<ProjectileDamage>().damageType = DamageTypeCombo.op_Implicit((DamageType)0); val.GetComponent<ProjectileSingleTargetImpact>().hitSoundString = null; val.GetComponent<ProjectileSingleTargetImpact>().enemyHitSoundString = null; aimIndicator = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressTrackingIndicator.prefab").WaitForCompletion(), "KatAimIndicator", false); SpriteRenderer[] componentsInChildren = aimIndicator.GetComponentsInChildren<SpriteRenderer>(); float num = default(float); float num2 = default(float); float num3 = default(float); float num4 = default(float); float num5 = default(float); float num6 = default(float); foreach (SpriteRenderer val2 in componentsInChildren) { Color.RGBToHSV(Color.magenta, ref num, ref num2, ref num3); Color.RGBToHSV(val2.color, ref num4, ref num5, ref num6); Color color = Color.HSVToRGB(num, num5, num6); color.a = val2.color.a; val2.color = color; } GameObject val3 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger1fab"), "KatarinaBlade1ProjectileGhost", false); val3.AddComponent<ProjectileGhostController>(); Utils.CreateNewColoredIndicator(obj, val3.transform, new Color(1f, 0f, 0.7921569f)); GameObject val4 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger2fab"), "KatarinaBlade2ProjectileGhost", false); val4.AddComponent<ProjectileGhostController>(); Utils.CreateNewColoredIndicator(obj, val4.transform, new Color(0.5921569f, 0f, 82f / 85f)); GameObject val5 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger3fab"), "KatarinaBlade3ProjectileGhost", false); val5.AddComponent<ProjectileGhostController>(); Utils.CreateNewColoredIndicator(obj, val5.transform, new Color(0f, 82f / 85f, 7f / 85f)); GameObject val6 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger4fab"), "KatarinaBlade4ProjectileGhost", false); val6.AddComponent<ProjectileGhostController>(); Utils.CreateNewColoredIndicator(obj, val6.transform, new Color(1f, 0f, 0f)); GameObject val7 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger5fab"), "KatarinaBlade5ProjectileGhost", false); val7.AddComponent<ProjectileGhostController>(); Utils.CreateNewColoredIndicator(obj, val7.transform, new Color(2f / 85f, 52f / 85f, 1f)); GameObject val8 = PrefabAPI.InstantiateClone(KatAssets.MainAssetBundle.LoadAsset<GameObject>("dagger6fab"), "KatarinaBlade6ProjectileGhost", false); val8.AddComponent<ProjectileGhostController>(); Utils.CreateNewColoredIndicator(obj, val8.transform, new Color(0.20784314f, 0.031372547f, 0.5372549f)); dagger1ProjectilePickup = PrefabAPI.InstantiateClone(val, "KatarinaBlade1ProjectilePickup", true); dagger1ProjectilePickup.GetComponent<ProjectileController>().ghostPrefab = val3; dagger1ProjectilePickup.GetComponent<ProjectileStickOnImpact>().ignoreCharacters = true; dagger1ProjectilePickup.GetComponent<ProjectileStickOnImpact>().stickSoundS