Decompiled source of Katarina v2.3.0
Katarina.dll
Decompiled 4 days 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+8efcd1570d3abb25c7c57c88c8d7b21803bb851d")] [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 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 : Vector3.zero; 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_008b: 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_006a: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)areaIndicator)) { 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))) { 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; 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>(); } } 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_0708: Unknown result type (might be due to invalid IL or missing references) //IL_0752: Unknown result type (might be due to invalid IL or missing references) //IL_0766: Unknown result type (might be due to invalid IL or missing references) //IL_077a: Unknown result type (might be due to invalid IL or missing references) //IL_078e: Unknown result type (might be due to invalid IL or missing references) //IL_07e0: Unknown result type (might be due to invalid IL or missing references) //IL_09a9: Unknown result type (might be due to invalid IL or missing references) //IL_0a65: Unknown result type (might be due to invalid IL or missing references) //IL_0a6a: Unknown result type (might be due to invalid IL or missing references) //IL_0a98: Unknown result type (might be due to invalid IL or missing references) //IL_0a9d: Unknown result type (might be due to invalid IL or missing references) //IL_0ac6: Unknown result type (might be due to invalid IL or missing references) //IL_0acb: Unknown result type (might be due to invalid IL or missing references) //IL_0adc: Unknown result type (might be due to invalid IL or missing references) //IL_0ae1: Unknown result type (might be due to invalid IL or missing references) //IL_0b0a: Unknown result type (might be due to invalid IL or missing references) //IL_0b0f: 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_0b25: Unknown result type (might be due to invalid IL or missing references) //IL_0b4e: Unknown result type (might be due to invalid IL or missing references) //IL_0b53: Unknown result type (might be due to invalid IL or missing references) //IL_0b64: Unknown result type (might be due to invalid IL or missing references) //IL_0b69: Unknown result type (might be due to invalid IL or missing references) //IL_0b92: Unknown result type (might be due to invalid IL or missing references) //IL_0b97: Unknown result type (might be due to invalid IL or missing references) //IL_0ba8: Unknown result type (might be due to invalid IL or missing references) //IL_0bad: Unknown result type (might be due to invalid IL or missing references) //IL_0c19: Unknown result type (might be due to invalid IL or missing references) //IL_0c3b: Unknown result type (might be due to invalid IL or missing references) //IL_0c60: 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> on-arrival."); 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> on-arrival."); 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>().stickSoundString = "Play_DaggerLand"; dagger1ProjectilePickup.GetComponent<ProjectileSimple>().desiredForwardSpeed = 20f; dagger1ProjectilePickup.GetComponent<Rigidbody>().mass = 1f; ProjectileImpactExplosion val9 = dagger1ProjectilePickup.AddComponent<ProjectileImpactExplosion>(); val9.lifetime = 10f; val9.destroyOnEnemy = false; val9.destroyOnWorld = false; val9.timerAfterImpact = true; val9.lifetimeAfterImpact = d