Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Shyvana v1.0.3
Shyvana.dll
Decompiled 2 years 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.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.Croco; using EntityStates.Huntress; using EntityStates.LemurianBruiserMonster; using EntityStates.Mage; using EntityStates.Merc; using KinematicCharacterController; using On.RoR2; using On.RoR2.UI; using R2API; using R2API.Utils; using RoR2; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using TMPro; using ThreeEyedGames; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Bindings; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.Rendering.PostProcessing; using UnityEngine.UI; [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("Shyvana")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: AssemblyProduct("Shyvana")] [assembly: AssemblyTitle("Shyvana")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Shyvana; internal class Assets { public static AssetBundle MainAssetBundle; public static T Load<T>(string name) where T : Object { return MainAssetBundle.LoadAsset<T>(name); } public static void PopulateAssets() { if ((Object)(object)MainAssetBundle == (Object)null) { using Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Shyvana.shyvanaassets"); MainAssetBundle = AssetBundle.LoadFromStream(stream); } using Stream stream2 = Assembly.GetExecutingAssembly().GetManifestResourceStream("Shyvana.Shyvana.bnk"); byte[] array = new byte[stream2.Length]; stream2.Read(array, 0, array.Length); SoundBanks.Add(array); } } internal class AnimEventsBehaviour : MonoBehaviour { public void WingFlap() { AkSoundEngine.PostEvent(Sounds.Play_Shyvana_Wing_Flap, ((Component)this).gameObject); } } internal class BezierCurveLineScaler : BezierCurveLine { private int size = 98; private void FixedUpdate() { //IL_0008: 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) size = Mathf.RoundToInt(Util.Remap(Vector3.Distance(((Component)this).transform.position, base.endTransform.position), 0f, 280f, 24f, 98f)); if (((BezierCurveLine)this).lineRenderer.numPositions != size) { ((BezierCurveLine)this).lineRenderer.numPositions = size; Array.Resize(ref base.vertexList, size + 1); } } } internal class DisplayAnimEventBehaviour : MonoBehaviour { private uint ID; private GameObject wings; private void OnEnable() { ID = AkSoundEngine.PostEvent(Sounds.Play_Shyvana_Recall, ((Component)this).gameObject); wings = ((Component)((Component)this).GetComponent<ChildLocator>().FindChild("wings")).gameObject; } public void EnableWings() { wings.SetActive(true); } private void OnDisable() { AkSoundEngine.StopPlayingID(ID); } } internal class MasterBehaviour : MonoBehaviour { public CharacterMaster master; public ShyvanaBehaviour behaviour; public CharacterBody body; public float maxPowerupValue = 2f; public float powerupValue = 2f; public float stopwatch = 0f; public GameObject powerupBar; public TextMeshProUGUI currentPowerup; public Image barImage; public bool transformed; public bool despawned; public Vector3[] positions; public float passivePowerupGain { get { if (MainPlugin.enableDragonDuration.Value && transformed) { return (0f - maxPowerupValue) / MainPlugin.minDragonDuration.Value; } return transformed ? (-0.04f) : 0.02f; } } public void AddFury(float value) { powerupValue += value; } private void Start() { master = ((Component)this).GetComponent<CharacterMaster>(); } private void OnEnable() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown HUD.Update += new hook_Update(HUD_Update); Stage.onStageStartGlobal += delegate { powerupBar = null; positions = Array.Empty<Vector3>(); }; } private void OnDisable() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown HUD.Update -= new hook_Update(HUD_Update); } private void HUD_Update(orig_Update orig, HUD self) { orig.Invoke(self); if (!Object.op_Implicit((Object)(object)master) || !Object.op_Implicit((Object)(object)self.targetMaster) || !((Object)(object)self.targetMaster == (Object)(object)master)) { return; } if (Object.op_Implicit((Object)(object)barImage) && Object.op_Implicit((Object)(object)currentPowerup)) { barImage.fillAmount = powerupValue / maxPowerupValue; string text = Mathf.Clamp((float)Mathf.RoundToInt(powerupValue * 100f), 0f, maxPowerupValue * 100f).ToString(); ((TMP_Text)currentPowerup).text = text; } if (!Object.op_Implicit((Object)(object)self.mainUIPanel) || Object.op_Implicit((Object)(object)powerupBar)) { return; } HealthBar componentInChildren = self.mainUIPanel.GetComponentInChildren<HealthBar>(); if (Object.op_Implicit((Object)(object)componentInChildren) && Object.op_Implicit((Object)(object)((Component)componentInChildren).gameObject)) { Image[] componentsInChildren = ((Component)componentInChildren).gameObject.GetComponentsInChildren<Image>(); if (componentsInChildren.Length >= 5 && Object.op_Implicit((Object)(object)self.targetBodyObject) && Util.HasEffectiveAuthority(self.targetBodyObject)) { AddBar(((Component)componentInChildren).gameObject); } } } private void AddBar(GameObject healthBar) { //IL_0199: Unknown result type (might be due to invalid IL or missing references) powerupBar = Object.Instantiate<GameObject>(healthBar, healthBar.transform.parent); ((Object)powerupBar).name = "PowerupBar"; Object.Destroy((Object)(object)powerupBar.GetComponent<HealthBar>()); TextMeshProUGUI[] componentsInChildren = powerupBar.GetComponentsInChildren<TextMeshProUGUI>(); for (int i = 0; i < componentsInChildren.Length; i++) { if (Object.op_Implicit((Object)(object)componentsInChildren[i]) && Object.op_Implicit((Object)(object)((Component)componentsInChildren[i]).gameObject)) { if (((Object)((Component)componentsInChildren[i]).gameObject).name == "CurrentHealthText") { currentPowerup = componentsInChildren[i]; ((TMP_Text)currentPowerup).text = "0"; } if (((Object)((Component)componentsInChildren[i]).gameObject).name == "FullHealthText") { ((TMP_Text)componentsInChildren[i]).text = (maxPowerupValue * 100f).ToString(); } } } Image[] componentsInChildren2 = powerupBar.GetComponentsInChildren<Image>(); for (int j = 0; j < componentsInChildren2.Length; j++) { if (Object.op_Implicit((Object)(object)componentsInChildren2[j]) && Object.op_Implicit((Object)(object)((Component)componentsInChildren2[j]).gameObject)) { if ((Object)(object)componentsInChildren2[j] != (Object)(object)componentsInChildren2[3] && (Object)(object)componentsInChildren2[j] != (Object)(object)componentsInChildren2[0]) { Object.Destroy((Object)(object)((Component)componentsInChildren2[j]).gameObject); } if ((Object)(object)componentsInChildren2[j] == (Object)(object)componentsInChildren2[3]) { barImage = componentsInChildren2[j]; ((Graphic)barImage).color = new Color(0.61176f, 0.04314f, 0.07059f); barImage.type = (Type)3; barImage.fillMethod = (FillMethod)0; barImage.fillCenter = false; } } } } private void FixedUpdate() { if (Object.op_Implicit((Object)(object)master) && !Object.op_Implicit((Object)(object)body)) { body = master.GetBody(); } if (Object.op_Implicit((Object)(object)master) && Object.op_Implicit((Object)(object)body)) { stopwatch += Time.fixedDeltaTime; if (stopwatch >= 1f) { stopwatch = 0f; powerupValue += passivePowerupGain; } powerupValue = Mathf.Clamp(powerupValue, 0f, maxPowerupValue); if (Object.op_Implicit((Object)(object)body) && transformed && powerupValue <= 0f && Object.op_Implicit((Object)(object)behaviour) && behaviour.canExecute) { Detransform(); } } } private void Detransform() { transformed = false; despawned = true; if (Object.op_Implicit((Object)(object)body) && body.hasEffectiveAuthority) { behaviour.CallCmdTransformBody("ShyvanaBody"); } } } internal class ShyvanaBehaviour : NetworkBehaviour { public bool canExecute = true; private CharacterBody body; private CharacterMaster master; public MasterBehaviour behaviour; public float powerupValue; public GameObject effect; public uint ID; private static int kCmdCmdAddFury; private static int kRpcRpcAddFury; private static int kCmdCmdTransformBody; public void AddFury(float value) { if (Object.op_Implicit((Object)(object)behaviour.behaviour)) { behaviour.AddFury(value); } } [Command] public void CmdAddFury(float value) { if (Object.op_Implicit((Object)(object)behaviour.behaviour)) { CallRpcAddFury(value); } } [ClientRpc] public void RpcAddFury(float value) { if (Object.op_Implicit((Object)(object)behaviour.behaviour)) { behaviour.AddFury(value); } } [Command] public void CmdTransformBody(string bodyName) { if (Object.op_Implicit((Object)(object)master)) { master.TransformBody(bodyName); } } private void OnEnable() { body = ((Component)this).GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.masterObject)) { master = body.master; behaviour = body.masterObject.GetComponent<MasterBehaviour>(); if (Object.op_Implicit((Object)(object)behaviour)) { behaviour.behaviour = this; } } } private void FixedUpdate() { if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.masterObject)) { if (!Object.op_Implicit((Object)(object)master)) { master = body.masterObject.GetComponent<CharacterMaster>(); } if (!Object.op_Implicit((Object)(object)behaviour)) { behaviour = body.masterObject.GetComponent<MasterBehaviour>(); if (!Object.op_Implicit((Object)(object)behaviour)) { behaviour = body.masterObject.AddComponent<MasterBehaviour>(); if (Object.op_Implicit((Object)(object)behaviour)) { behaviour.behaviour = this; } } } else if (!Object.op_Implicit((Object)(object)behaviour.behaviour)) { behaviour.behaviour = this; } } if (Object.op_Implicit((Object)(object)behaviour)) { powerupValue = behaviour.powerupValue; } } private void UNetVersion() { } protected static void InvokeCmdCmdAddFury(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdAddFury called on client."); } else { ((ShyvanaBehaviour)(object)obj).CmdAddFury(reader.ReadSingle()); } } protected static void InvokeCmdCmdTransformBody(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdTransformBody called on client."); } else { ((ShyvanaBehaviour)(object)obj).CmdTransformBody(reader.ReadString()); } } public void CallCmdAddFury(float value) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdAddFury called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdAddFury(value); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdAddFury); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); val.Write(value); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdAddFury"); } public void CallCmdTransformBody(string bodyName) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdTransformBody called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdTransformBody(bodyName); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdTransformBody); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); val.Write(bodyName); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdTransformBody"); } protected static void InvokeRpcRpcAddFury(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkClient.active) { Debug.LogError((object)"RPC RpcAddFury called on server."); } else { ((ShyvanaBehaviour)(object)obj).RpcAddFury(reader.ReadSingle()); } } public void CallRpcAddFury(float value) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { Debug.LogError((object)"RPC Function RpcAddFury called on client."); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)2); val.WritePackedUInt32((uint)kRpcRpcAddFury); val.Write(((Component)this).GetComponent<NetworkIdentity>().netId); val.Write(value); ((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcAddFury"); } static ShyvanaBehaviour() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown kCmdCmdAddFury = 176434748; NetworkBehaviour.RegisterCommandDelegate(typeof(ShyvanaBehaviour), kCmdCmdAddFury, new CmdDelegate(InvokeCmdCmdAddFury)); kCmdCmdTransformBody = 418286099; NetworkBehaviour.RegisterCommandDelegate(typeof(ShyvanaBehaviour), kCmdCmdTransformBody, new CmdDelegate(InvokeCmdCmdTransformBody)); kRpcRpcAddFury = -1349243482; NetworkBehaviour.RegisterRpcDelegate(typeof(ShyvanaBehaviour), kRpcRpcAddFury, new CmdDelegate(InvokeRpcRpcAddFury)); NetworkCRC.RegisterBehaviour("ShyvanaBehaviour", 0); } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { bool result = default(bool); return result; } public override void OnDeserialize(NetworkReader reader, bool initialState) { } } internal class Hook { private static int tick; 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 //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); } 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_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Invalid comparison between Unknown and I4 //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) if (DamageAPI.HasModdedDamageType(damageInfo, Prefabs.ruin) && Object.op_Implicit((Object)(object)damageInfo.attacker)) { tick++; HealthComponent component = damageInfo.attacker.GetComponent<HealthComponent>(); if (Object.op_Implicit((Object)(object)component)) { component.Heal(damageInfo.damage * 0.2f, default(ProcChainMask), true); } } if ((int)damageInfo.damageType == 131136 && Object.op_Implicit((Object)(object)damageInfo.attacker.GetComponent<ShyvanaBehaviour>())) { damageInfo.damageType = (DamageType)0; HealthComponent component2 = damageInfo.attacker.GetComponent<HealthComponent>(); if (Object.op_Implicit((Object)(object)component2)) { component2.Heal(component2.fullHealth * 0.025f, default(ProcChainMask), true); } } orig.Invoke(self, damageInfo); } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(Prefabs.flameBuff)) { args.armorAdd += 25f; args.moveSpeedMultAdd += 1.25f; } } } [BepInPlugin("com.Dragonyck.Shyvana", "Shyvana", "1.0.2")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInIncompatibility("com.Wolfo.WolfoQualityOfLife")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class MainPlugin : BaseUnityPlugin { public const string MODUID = "com.Dragonyck.Shyvana"; public const string MODNAME = "Shyvana"; public const string VERSION = "1.0.2"; public const string SURVIVORNAME = "Shyvana"; public const string SURVIVORNAMEKEY = "SHYVANA"; public const string DSURVIVORNAME = "Shyvana (Dragon Form)"; public const string DSURVIVORNAMEKEY = "DRAGONSHYVANA"; public static GameObject characterPrefab; public static GameObject dragonCharacterPrefab; public static readonly Color characterColor = new Color(0.02745f, 0.92549f, 0.61176f); protected internal static ConfigEntry<bool> enableDragonDuration; protected internal static ConfigEntry<float> minDragonDuration; 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_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown //IL_0060: Expected O, but got Unknown enableDragonDuration = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Enable Dragon Form Minimum Duration", "Value"), false, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); minDragonDuration = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Minimum Dragon Form Duration", "Value"), 40f, new ConfigDescription("", (AcceptableValueBase)null, Array.Empty<object>())); Assets.PopulateAssets(); Prefabs.CreatePrefabs(); CreatePrefab(); CreateDragonPrefab(); RegisterStates(); RegisterCharacter(); Hook.Hooks(); } internal static void CreatePrefab() { //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Expected O, but got Unknown //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Expected O, but got Unknown //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_034a: Unknown result type (might be due to invalid IL or missing references) //IL_0395: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_0417: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Unknown result type (might be due to invalid IL or missing references) //IL_04c1: 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_04ec: Unknown result type (might be due to invalid IL or missing references) //IL_059e: Unknown result type (might be due to invalid IL or missing references) //IL_066a: Unknown result type (might be due to invalid IL or missing references) //IL_06d5: Unknown result type (might be due to invalid IL or missing references) //IL_06f3: Unknown result type (might be due to invalid IL or missing references) //IL_0761: 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_0777: Unknown result type (might be due to invalid IL or missing references) //IL_077c: Unknown result type (might be due to invalid IL or missing references) //IL_07aa: Unknown result type (might be due to invalid IL or missing references) //IL_07af: Unknown result type (might be due to invalid IL or missing references) GameObject val = Prefabs.Load<GameObject>("RoR2/Base/Commando/CommandoBody.prefab"); characterPrefab = PrefabAPI.InstantiateClone(val, "ShyvanaBody", true); characterPrefab.AddComponent<ShyvanaBehaviour>(); 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 val2 = Assets.MainAssetBundle.LoadAsset<GameObject>("shyvana"); GameObject val3 = new GameObject("ModelBase"); val3.transform.parent = characterPrefab.transform; val3.transform.localPosition = new Vector3(0f, -0.94f, 0f); val3.transform.localRotation = Quaternion.identity; val3.transform.localScale = Vector3.one * 1.3f; GameObject val4 = new GameObject("AimOrigin"); val4.transform.parent = val3.transform; val4.transform.localPosition = new Vector3(0f, 1.4f, 0f); val4.transform.localRotation = Quaternion.identity; val4.transform.localScale = Vector3.one; Transform transform = val2.transform; transform.parent = val3.transform; transform.localPosition = Vector3.zero; transform.localScale = new Vector3(1f, 1f, 1f); transform.localRotation = Quaternion.identity; CharacterDirection component = characterPrefab.GetComponent<CharacterDirection>(); component.targetTransform = val3.transform; component.modelAnimator = val2.GetComponentInChildren<Animator>(); CharacterBody component2 = characterPrefab.GetComponent<CharacterBody>(); ((Object)component2).name = "ShyvanaBody"; component2.baseNameToken = "SHYVANA_NAME"; component2.subtitleNameToken = "SHYVANA_SUBTITLE"; component2.bodyFlags = (BodyFlags)16; component2.rootMotionInMainState = false; component2.mainRootSpeed = 0f; component2.baseMaxHealth = 160f; component2.levelMaxHealth = 48f; component2.baseRegen = 2.5f; component2.levelRegen = 0.5f; component2.baseMaxShield = 0f; component2.levelMaxShield = 0f; component2.baseMoveSpeed = 7f; component2.levelMoveSpeed = 0f; component2.baseAcceleration = 110f; component2.baseJumpPower = 15f; component2.levelJumpPower = 0f; component2.baseDamage = 12f; component2.levelDamage = 2.4f; component2.baseAttackSpeed = 1f; component2.levelAttackSpeed = 0f; component2.baseCrit = 1f; component2.levelCrit = 0f; component2.baseArmor = 20f; component2.levelArmor = 0f; component2.baseJumpCount = 1; component2.sprintingSpeedMultiplier = 1.45f; component2.wasLucky = false; component2.hideCrosshair = false; component2.aimOriginTransform = val4.transform; component2.hullClassification = (HullClassification)0; component2.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portrait").texture; component2._defaultCrosshairPrefab = Prefabs.Load<GameObject>("RoR2/Base/UI/SimpleDotCrosshair.prefab"); component2.isChampion = false; component2.currentVehicle = null; component2.skinIndex = 0u; component2.bodyColor = characterColor; CharacterMotor component3 = characterPrefab.GetComponent<CharacterMotor>(); component3.walkSpeedPenaltyCoefficient = 1f; component3.characterDirection = component; component3.muteWalkMotion = false; component3.mass = 160f; component3.airControl = 0.25f; component3.disableAirControlUntilCollision = false; component3.generateParametersOnAwake = true; CameraTargetParams component4 = characterPrefab.GetComponent<CameraTargetParams>(); component4.cameraParams = Prefabs.Load<CharacterCameraParams>("RoR2/Base/Common/ccpStandardMelee.asset"); component4.cameraPivotTransform = null; component4.recoil = Vector2.zero; component4.dontRaycastToPivot = false; ModelLocator component5 = characterPrefab.GetComponent<ModelLocator>(); component5.modelTransform = transform; component5.modelBaseTransform = val3.transform; component5.dontReleaseModelOnDeath = false; component5.autoUpdateModelTransform = true; component5.dontDetatchFromParent = false; component5.noCorpse = false; component5.normalizeToFloor = false; component5.preserveModel = false; CharacterModel val5 = val2.AddComponent<CharacterModel>(); SkinnedMeshRenderer[] componentsInChildren = val2.GetComponentsInChildren<SkinnedMeshRenderer>(true); List<RendererInfo> list = new List<RendererInfo>(); for (int i = 0; i < componentsInChildren.Length; i++) { Material val6 = Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.mainTexture); ((Renderer)componentsInChildren[i]).material = val6; list.Add(new RendererInfo { renderer = (Renderer)(object)componentsInChildren[i], defaultMaterial = val6, defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false }); } RendererInfo[] array = list.ToArray(); val5.body = component2; val5.baseRendererInfos = array; val5.autoPopulateLightInfos = true; val5.invisibilityCount = 0; val5.temporaryOverlays = new List<TemporaryOverlay>(); val5.mainSkinnedMeshRenderer = componentsInChildren[0]; ((Component)val2.GetComponent<ChildLocator>().FindChild("wings")).gameObject.SetActive(false); GameObject gameObject = ((Component)transform).gameObject; ModelSkinController val7 = gameObject.AddComponent<ModelSkinController>(); LanguageAPI.Add("SHYVANABODY_DEFAULT_SKIN_NAME", "Ruined"); val7.skins = (SkinDef[])(object)new SkinDef[1] { LoadoutAPI.CreateNewSkinDef(Utils.CreateNewSkinDefInfo(componentsInChildren, gameObject, "SHYVANABODY_DEFAULT_SKIN_NAME", array)) }; HealthComponent component6 = characterPrefab.GetComponent<HealthComponent>(); component6.health = component2.baseMaxHealth; component6.shield = 0f; component6.barrier = 0f; component6.magnetiCharge = 0f; component6.body = null; component6.dontShowHealthbar = false; component6.globalDeathEventChanceCoefficient = 1f; CapsuleCollider[] componentsInChildren2 = val2.GetComponentsInChildren<CapsuleCollider>(); HurtBoxGroup val8 = val2.AddComponent<HurtBoxGroup>(); List<HurtBox> list2 = new List<HurtBox>(); CapsuleCollider[] array2 = componentsInChildren2; foreach (CapsuleCollider val9 in array2) { HurtBox val10 = ((Component)val9).gameObject.AddComponent<HurtBox>(); ((Component)val10).gameObject.layer = LayerIndex.entityPrecise.intVal; val10.healthComponent = component6; val10.isBullseye = true; val10.damageModifier = (DamageModifier)0; val10.hurtBoxGroup = val8; val10.indexInGroup = 0; val8.mainHurtBox = val10; val8.bullseyeCount = 1; list2.Add(val10); } val8.hurtBoxes = list2.ToArray(); Utils.CreateHitbox("Swing", val2.transform, new Vector3(4.2f, 4.2f, 4.7f)).transform.localPosition = new Vector3(0f, 1f, 1.5f); KinematicCharacterMotor component7 = characterPrefab.GetComponent<KinematicCharacterMotor>(); component7.CharacterController = (BaseCharacterController)(object)component3; FootstepHandler val11 = val2.AddComponent<FootstepHandler>(); val11.baseFootstepString = "Play_player_footstep"; val11.sprintFootstepOverrideString = ""; val11.enableFootstepDust = true; val11.footstepDustPrefab = Prefabs.Load<GameObject>("RoR2/Base/Common/VFX/GenericFootstepDust.prefab"); EntityStateMachine component8 = ((Component)component2).GetComponent<EntityStateMachine>(); component8.initialStateType = new SerializableEntityStateType(typeof(ShyvanaSpawnState)); component8.mainStateType = new SerializableEntityStateType(typeof(GenericCharacterMain)); CharacterDeathBehavior component9 = characterPrefab.GetComponent<CharacterDeathBehavior>(); component9.deathStateMachine = characterPrefab.GetComponent<EntityStateMachine>(); component9.deathState = new SerializableEntityStateType(typeof(GenericCharacterDeath)); Utils.NewStateMachine<Idle>(characterPrefab, "Burnout"); NetworkStateMachine component10 = ((Component)component2).GetComponent<NetworkStateMachine>(); component10.stateMachines = ((Component)component2).GetComponents<EntityStateMachine>(); ContentAddition.AddBody(characterPrefab); } internal static void CreateDragonPrefab() { //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Expected O, but got Unknown //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_0424: Unknown result type (might be due to invalid IL or missing references) //IL_04c2: Unknown result type (might be due to invalid IL or missing references) //IL_04f2: 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_061a: Unknown result type (might be due to invalid IL or missing references) //IL_068c: Unknown result type (might be due to invalid IL or missing references) //IL_06aa: Unknown result type (might be due to invalid IL or missing references) //IL_072c: Unknown result type (might be due to invalid IL or missing references) //IL_0731: Unknown result type (might be due to invalid IL or missing references) //IL_0742: Unknown result type (might be due to invalid IL or missing references) //IL_0747: Unknown result type (might be due to invalid IL or missing references) //IL_0775: 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) GameObject val = Prefabs.Load<GameObject>("RoR2/Base/Commando/CommandoBody.prefab"); dragonCharacterPrefab = PrefabAPI.InstantiateClone(val, "DragonShyvanaBody", true); dragonCharacterPrefab.GetComponent<NetworkIdentity>().localPlayerAuthority = true; dragonCharacterPrefab.AddComponent<ShyvanaBehaviour>(); Object.Destroy((Object)(object)((Component)dragonCharacterPrefab.transform.Find("ModelBase")).gameObject); Object.Destroy((Object)(object)((Component)dragonCharacterPrefab.transform.Find("CameraPivot")).gameObject); Object.Destroy((Object)(object)((Component)dragonCharacterPrefab.transform.Find("AimOrigin")).gameObject); GameObject val2 = Assets.MainAssetBundle.LoadAsset<GameObject>("dragon"); val2.AddComponent<AnimEventsBehaviour>(); GameObject val3 = new GameObject("ModelBase"); val3.transform.parent = dragonCharacterPrefab.transform; val3.transform.localPosition = new Vector3(0f, -0.94f, 0f); val3.transform.localRotation = Quaternion.identity; val3.transform.localScale = Vector3.one * 2f; GameObject val4 = new GameObject("AimOrigin"); val4.transform.parent = val3.transform; val4.transform.localPosition = new Vector3(0f, 2.4f, 0f); val4.transform.localRotation = Quaternion.identity; val4.transform.localScale = Vector3.one; Transform transform = val2.transform; transform.parent = val3.transform; transform.localPosition = Vector3.zero; transform.localScale = new Vector3(1f, 1f, 1f); transform.localRotation = Quaternion.identity; CharacterDirection component = dragonCharacterPrefab.GetComponent<CharacterDirection>(); component.targetTransform = val3.transform; component.modelAnimator = val2.GetComponentInChildren<Animator>(); CharacterBody component2 = dragonCharacterPrefab.GetComponent<CharacterBody>(); ((Object)component2).name = "DragonShyvanaBody"; component2.baseNameToken = "DRAGONSHYVANA_NAME"; component2.subtitleNameToken = "DRAGONSHYVANA_SUBTITLE"; component2.bodyFlags = (BodyFlags)16; component2.rootMotionInMainState = false; component2.mainRootSpeed = 0f; component2.baseMaxHealth = 410f; component2.levelMaxHealth = 48f; component2.baseRegen = 2.5f; component2.levelRegen = 0.5f; component2.baseMaxShield = 0f; component2.levelMaxShield = 0f; component2.baseMoveSpeed = 7f; component2.levelMoveSpeed = 0f; component2.baseAcceleration = 110f; component2.baseJumpPower = 20f; component2.levelJumpPower = 0f; component2.baseDamage = 12f; component2.levelDamage = 2.4f; component2.baseAttackSpeed = 1f; component2.levelAttackSpeed = 0f; component2.baseCrit = 1f; component2.levelCrit = 0f; component2.baseArmor = 20f; component2.levelArmor = 3f; component2.baseJumpCount = 99; component2.sprintingSpeedMultiplier = 1.45f; component2.wasLucky = false; component2.hideCrosshair = false; component2.aimOriginTransform = val4.transform; component2.hullClassification = (HullClassification)0; component2.portraitIcon = (Texture)(object)Assets.MainAssetBundle.LoadAsset<Sprite>("portraitDragon").texture; component2._defaultCrosshairPrefab = Prefabs.Load<GameObject>("RoR2/Base/UI/SimpleDotCrosshair.prefab"); component2.isChampion = false; component2.currentVehicle = null; component2.skinIndex = 0u; component2.bodyColor = characterColor; CharacterMotor component3 = dragonCharacterPrefab.GetComponent<CharacterMotor>(); component3.walkSpeedPenaltyCoefficient = 1f; component3.characterDirection = component; component3.muteWalkMotion = false; component3.mass = 450f; component3.airControl = 0.25f; component3.disableAirControlUntilCollision = false; component3.generateParametersOnAwake = true; CameraTargetParams component4 = dragonCharacterPrefab.GetComponent<CameraTargetParams>(); component4.cameraParams = Prefabs.Load<CharacterCameraParams>("RoR2/Base/Common/ccpStandardMelee.asset"); component4.cameraPivotTransform = null; component4.recoil = Vector2.zero; component4.dontRaycastToPivot = false; ModelLocator component5 = dragonCharacterPrefab.GetComponent<ModelLocator>(); component5.modelTransform = transform; component5.modelBaseTransform = val3.transform; component5.dontReleaseModelOnDeath = false; component5.autoUpdateModelTransform = true; component5.dontDetatchFromParent = false; component5.noCorpse = false; component5.normalizeToFloor = false; component5.preserveModel = false; dragonCharacterPrefab.GetComponent<Interactor>().maxInteractionDistance = 6f; ChildLocator component6 = val2.GetComponent<ChildLocator>(); CharacterModel val5 = val2.AddComponent<CharacterModel>(); SkinnedMeshRenderer[] componentsInChildren = val2.GetComponentsInChildren<SkinnedMeshRenderer>(true); List<RendererInfo> list = new List<RendererInfo>(); for (int i = 0; i < componentsInChildren.Length; i++) { list.Add(new RendererInfo { renderer = (Renderer)(object)componentsInChildren[i], defaultMaterial = Utils.InstantiateMaterial(((Renderer)componentsInChildren[i]).material.mainTexture), defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false }); } RendererInfo[] baseRendererInfos = list.ToArray(); val5.body = component2; val5.baseRendererInfos = baseRendererInfos; val5.autoPopulateLightInfos = true; val5.invisibilityCount = 0; val5.temporaryOverlays = new List<TemporaryOverlay>(); val5.mainSkinnedMeshRenderer = componentsInChildren[0]; HealthComponent component7 = dragonCharacterPrefab.GetComponent<HealthComponent>(); component7.health = component2.baseMaxHealth; component7.shield = 0f; component7.barrier = 0f; component7.magnetiCharge = 0f; component7.body = null; component7.dontShowHealthbar = false; component7.globalDeathEventChanceCoefficient = 1f; CapsuleCollider[] componentsInChildren2 = val2.GetComponentsInChildren<CapsuleCollider>(); HurtBoxGroup val6 = val2.AddComponent<HurtBoxGroup>(); List<HurtBox> list2 = new List<HurtBox>(); CapsuleCollider[] array = componentsInChildren2; foreach (CapsuleCollider val7 in array) { HurtBox val8 = ((Component)val7).gameObject.AddComponent<HurtBox>(); ((Component)val8).gameObject.layer = LayerIndex.entityPrecise.intVal; val8.healthComponent = component7; val8.isBullseye = true; val8.damageModifier = (DamageModifier)0; val8.hurtBoxGroup = val6; val8.indexInGroup = 0; val6.mainHurtBox = val8; val6.bullseyeCount = 1; list2.Add(val8); } val6.hurtBoxes = list2.ToArray(); val2.AddComponent<AimAnimator>(); Utils.CreateHitbox("Swing", val2.transform, new Vector3(6.2f, 6.2f, 6.7f)).transform.localPosition = new Vector3(0f, 1f, 1.5f); KinematicCharacterMotor component8 = dragonCharacterPrefab.GetComponent<KinematicCharacterMotor>(); component8.CharacterController = (BaseCharacterController)(object)component3; dragonCharacterPrefab.GetComponent<SfxLocator>().landingSound = "Play_gravekeeper_land"; FootstepHandler val9 = val2.AddComponent<FootstepHandler>(); val9.baseFootstepString = "Play_parent_step"; val9.sprintFootstepOverrideString = ""; val9.enableFootstepDust = true; val9.footstepDustPrefab = Prefabs.Load<GameObject>("RoR2/Base/Common/VFX/GenericHugeFootstepDust.prefab"); EntityStateMachine component9 = ((Component)component2).GetComponent<EntityStateMachine>(); component9.initialStateType = new SerializableEntityStateType(typeof(DragonSpawnState)); component9.mainStateType = new SerializableEntityStateType(typeof(CharacterMain)); CharacterDeathBehavior component10 = dragonCharacterPrefab.GetComponent<CharacterDeathBehavior>(); component10.deathStateMachine = dragonCharacterPrefab.GetComponent<EntityStateMachine>(); component10.deathState = new SerializableEntityStateType(typeof(GenericCharacterDeath)); NetworkStateMachine component11 = ((Component)component2).GetComponent<NetworkStateMachine>(); component11.stateMachines = ((Component)component2).GetComponents<EntityStateMachine>(); ContentAddition.AddBody(dragonCharacterPrefab); } private void RegisterCharacter() { //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) string text = "<style=cSub>\r\n\r\n< ! > Fury gain from Twin Bite is a flat amount, regardless of the number of enemies hit." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > Burnout's health drain can get you out of tough situations as well as keep you healthy in the thick of fights, use it wisely." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > You have a nearly infinite amount of jumps in dragon form and you can cancel Draconic Leap into Exhale Fire, allowing for extremely versatile mobility while transformed." + Environment.NewLine + "<style=cSub>\r\n\r\n< ! > The damage per tick for Exhale Fire scales with your attack speed."; string text2 = "..and so she left, to decimate other lands with her ire."; string text3 = "..and so she vanished, her fury finally extinguished."; LanguageAPI.Add("SHYVANA_NAME", "Shyvana"); LanguageAPI.Add("SHYVANA_DESCRIPTION", text); LanguageAPI.Add("SHYVANA_SUBTITLE", ""); LanguageAPI.Add("SHYVANA_OUTRO", text2); LanguageAPI.Add("SHYVANA_FAIL", text3); SurvivorDef val = ScriptableObject.CreateInstance<SurvivorDef>(); val.cachedName = "SHYVANA_NAME"; val.unlockableDef = null; val.descriptionToken = "SHYVANA_DESCRIPTION"; val.primaryColor = characterColor; val.bodyPrefab = characterPrefab; val.displayPrefab = Utils.NewDisplayModel(((Component)characterPrefab.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "ShyvanaDisplay"); val.outroFlavorToken = "SHYVANA_OUTRO"; val.desiredSortPosition = 32f; val.mainEndingEscapeFailureFlavorToken = "SHYVANA_FAIL"; ContentAddition.AddSurvivorDef(val); val = ScriptableObject.CreateInstance<SurvivorDef>(); val.cachedName = "DRAGONSHYVANA_NAME"; val.unlockableDef = null; val.descriptionToken = "SHYVANA_DESCRIPTION"; val.primaryColor = characterColor; val.bodyPrefab = dragonCharacterPrefab; val.displayPrefab = Utils.NewDisplayModel(((Component)dragonCharacterPrefab.GetComponent<ModelLocator>().modelBaseTransform).gameObject, "Shyvana (Dragon Form)Display"); val.outroFlavorToken = "SHYVANA_OUTRO"; val.mainEndingEscapeFailureFlavorToken = "SHYVANA_FAIL"; val.desiredSortPosition = 32.1f; val.hidden = true; ContentAddition.AddSurvivorDef(val); SkillSetup(); DragonSkillSetup(); GameObject val2 = PrefabAPI.InstantiateClone(Prefabs.Load<GameObject>("RoR2/Base/Commando/CommandoMonsterMaster.prefab"), "ShyvanaMaster", true); ContentAddition.AddMaster(val2); CharacterMaster component = val2.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) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) bool flag = default(bool); ContentAddition.AddEntityState<ShyvanaSpawnState>(ref flag); ContentAddition.AddEntityState<BaseShyvanaState>(ref flag); ContentAddition.AddEntityState<Primary>(ref flag); ContentAddition.AddEntityState<DragonPrimary>(ref flag); ContentAddition.AddEntityState<Secondary>(ref flag); ContentAddition.AddEntityState<DragonSecondary>(ref flag); ContentAddition.AddEntityState<DragonSecondaryEnd>(ref flag); ContentAddition.AddEntityState<Utility>(ref flag); ContentAddition.AddEntityState<DragonUtility>(ref flag); ContentAddition.AddEntityState<SpecialSelect>(ref flag); ContentAddition.AddEntityState<Special>(ref flag); ContentAddition.AddEntityState<DragonSpecial>(ref flag); ContentAddition.AddEntityState<CharacterMain>(ref flag); ContentAddition.AddEntityState<DragonSpawnState>(ref flag); } private void SkillSetup() { GenericSkill[] componentsInChildren = characterPrefab.GetComponentsInChildren<GenericSkill>(); foreach (GenericSkill val in componentsInChildren) { Object.DestroyImmediate((Object)(object)val); } PassiveSetup(characterPrefab); PrimarySetup(); SecondarySetup(); UtilitySetup(); SpecialSetup(); } private void PassiveSetup(GameObject prefab) { SkillLocator component = prefab.GetComponent<SkillLocator>(); LanguageAPI.Add("DRAGONFORM_KEYWORD", "[ Dragon Form ]"); LanguageAPI.Add("SHYVANA_PASSIVE_NAME", "Blood of the Dragonborn"); LanguageAPI.Add("SHYVANA_PASSIVE_DESCRIPTION", "Your draconic bloodline allows you to shapeshift <color=#9C0B12>upon exceeding the Fury threshold</color>. You gain <color=#9C0B12>2 Fury</color> per second in human form and <color=#9C0B12>3 Fury</color> on hitting enemies with Twin Bite. While transformed you drain <color=#9C0B12>4 Fury</color> per second."); component.passiveSkill.enabled = true; component.passiveSkill.skillNameToken = "SHYVANA_PASSIVE_NAME"; component.passiveSkill.skillDescriptionToken = "SHYVANA_PASSIVE_DESCRIPTION"; component.passiveSkill.icon = Assets.MainAssetBundle.LoadAsset<Sprite>("shyvanareinforcedscales"); } private void DragonSkillSetup() { GenericSkill[] componentsInChildren = dragonCharacterPrefab.GetComponentsInChildren<GenericSkill>(); foreach (GenericSkill val in componentsInChildren) { Object.DestroyImmediate((Object)(object)val); } PassiveSetup(dragonCharacterPrefab); DragonPrimarySetup(); DragonSecondarySetup(); DragonUtilitySetup(); DragonSpecialSetup(); } private void DragonPrimarySetup() { //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) SkillLocator component = dragonCharacterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("DRAGONSHYVANA_M1", "Twin Bite"); LanguageAPI.Add("DRAGONSHYVANA_M1_DESCRIPTION", "Cleave enemies in front of you for <style=cIsDamage>350% damage</style>. <color=#9C0B12>Grants +2 Fury on-hit</color>."); ShyvSkillDef shyvSkillDef = ScriptableObject.CreateInstance<ShyvSkillDef>(); ((SkillDef)shyvSkillDef).activationState = new SerializableEntityStateType(typeof(DragonPrimary)); ((SkillDef)shyvSkillDef).activationStateMachineName = "Weapon"; ((SkillDef)shyvSkillDef).baseMaxStock = 0; ((SkillDef)shyvSkillDef).baseRechargeInterval = 0f; ((SkillDef)shyvSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)shyvSkillDef).canceledFromSprinting = false; ((SkillDef)shyvSkillDef).fullRestockOnAssign = true; ((SkillDef)shyvSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)shyvSkillDef).isCombatSkill = true; ((SkillDef)shyvSkillDef).mustKeyPress = false; ((SkillDef)shyvSkillDef).cancelSprintingOnActivation = true; ((SkillDef)shyvSkillDef).rechargeStock = 0; ((SkillDef)shyvSkillDef).requiredStock = 0; ((SkillDef)shyvSkillDef).stockToConsume = 0; ((SkillDef)shyvSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("shyvanatwinbite"); ((SkillDef)shyvSkillDef).skillDescriptionToken = "DRAGONSHYVANA_M1_DESCRIPTION"; ((SkillDef)shyvSkillDef).skillName = "DRAGONSHYVANA_M1"; ((SkillDef)shyvSkillDef).skillNameToken = "DRAGONSHYVANA_M1"; ContentAddition.AddSkillDef((SkillDef)(object)shyvSkillDef); component.primary = Utils.NewGenericSkill(dragonCharacterPrefab, (SkillDef)(object)shyvSkillDef); } private void DragonSecondarySetup() { //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) SkillLocator component = dragonCharacterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("DRAGONSHYVANA_M2", "Exhale Fire"); LanguageAPI.Add("DRAGONSHYVANA_M2_DESCRIPTION", "Breathe fire in a cone in front of you for <style=cIsDamage>50% damage</style>."); ShyvSkillDef shyvSkillDef = ScriptableObject.CreateInstance<ShyvSkillDef>(); ((SkillDef)shyvSkillDef).activationState = new SerializableEntityStateType(typeof(DragonSecondary)); ((SkillDef)shyvSkillDef).activationStateMachineName = "Slide"; ((SkillDef)shyvSkillDef).baseMaxStock = 1; ((SkillDef)shyvSkillDef).baseRechargeInterval = 1f; ((SkillDef)shyvSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)shyvSkillDef).canceledFromSprinting = false; ((SkillDef)shyvSkillDef).fullRestockOnAssign = false; ((SkillDef)shyvSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)shyvSkillDef).isCombatSkill = true; ((SkillDef)shyvSkillDef).mustKeyPress = true; ((SkillDef)shyvSkillDef).cancelSprintingOnActivation = true; ((SkillDef)shyvSkillDef).rechargeStock = 1; ((SkillDef)shyvSkillDef).requiredStock = 1; ((SkillDef)shyvSkillDef).stockToConsume = 1; ((SkillDef)shyvSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("Incinerate"); ((SkillDef)shyvSkillDef).skillDescriptionToken = "DRAGONSHYVANA_M2_DESCRIPTION"; ((SkillDef)shyvSkillDef).skillName = "DRAGONSHYVANA_M2"; ((SkillDef)shyvSkillDef).skillNameToken = "DRAGONSHYVANA_M2"; ContentAddition.AddSkillDef((SkillDef)(object)shyvSkillDef); component.secondary = Utils.NewGenericSkill(dragonCharacterPrefab, (SkillDef)(object)shyvSkillDef); } private void DragonUtilitySetup() { //IL_004d: 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_008b: Unknown result type (might be due to invalid IL or missing references) SkillLocator component = dragonCharacterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("SHYVANARUIN_KEYWORD", "<style=cKeywordName>Ruin</style><style=cSub>Ruined areas deal <style=cIsDamage>2240% damage over time</style>, <style=cIsHealing>heals 20%</style> of the damage dealt."); LanguageAPI.Add("DRAGONSHYVANA_UTIL", "Draconic Leap"); LanguageAPI.Add("DRAGONSHYVANA_UTIL_DESCRIPTION", "Flap your wings and leap in a direction, dealing <style=cIsDamage>320% damage</style>, and <color=#5EE3AA>Ruining</color> an area on impact."); ShyvSkillDef shyvSkillDef = ScriptableObject.CreateInstance<ShyvSkillDef>(); ((SkillDef)shyvSkillDef).activationState = new SerializableEntityStateType(typeof(DragonUtility)); ((SkillDef)shyvSkillDef).activationStateMachineName = "Body"; ((SkillDef)shyvSkillDef).baseMaxStock = 1; ((SkillDef)shyvSkillDef).baseRechargeInterval = 5f; ((SkillDef)shyvSkillDef).beginSkillCooldownOnSkillEnd = false; ((SkillDef)shyvSkillDef).canceledFromSprinting = false; ((SkillDef)shyvSkillDef).fullRestockOnAssign = false; ((SkillDef)shyvSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)shyvSkillDef).isCombatSkill = false; ((SkillDef)shyvSkillDef).mustKeyPress = true; ((SkillDef)shyvSkillDef).cancelSprintingOnActivation = false; ((SkillDef)shyvSkillDef).rechargeStock = 1; ((SkillDef)shyvSkillDef).requiredStock = 1; ((SkillDef)shyvSkillDef).stockToConsume = 1; ((SkillDef)shyvSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("Pillar_of_Flame"); ((SkillDef)shyvSkillDef).skillDescriptionToken = "DRAGONSHYVANA_UTIL_DESCRIPTION"; ((SkillDef)shyvSkillDef).skillName = "DRAGONSHYVANA_UTIL"; ((SkillDef)shyvSkillDef).skillNameToken = "DRAGONSHYVANA_UTIL"; ((SkillDef)shyvSkillDef).keywordTokens = new string[1] { "SHYVANARUIN_KEYWORD" }; ContentAddition.AddSkillDef((SkillDef)(object)shyvSkillDef); component.utility = Utils.NewGenericSkill(dragonCharacterPrefab, (SkillDef)(object)shyvSkillDef); } private void DragonSpecialSetup() { //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) SkillLocator component = dragonCharacterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("DRAGONSHYVANA_SPEC", "Scorched Earth"); LanguageAPI.Add("DRAGONSHYVANA_SPEC_DESCRIPTION", "Spit a fireball which flies in an arc and explodes for <style=cIsDamage>700% damage,</style> <color=#5EE3AA>Ruining</color> the area of impact."); ShyvSkillDef shyvSkillDef = ScriptableObject.CreateInstance<ShyvSkillDef>(); ((SkillDef)shyvSkillDef).activationState = new SerializableEntityStateType(typeof(DragonSpecial)); ((SkillDef)shyvSkillDef).activationStateMachineName = "Body"; ((SkillDef)shyvSkillDef).baseMaxStock = 1; ((SkillDef)shyvSkillDef).baseRechargeInterval = 8f; ((SkillDef)shyvSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)shyvSkillDef).canceledFromSprinting = false; ((SkillDef)shyvSkillDef).fullRestockOnAssign = false; ((SkillDef)shyvSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)shyvSkillDef).isCombatSkill = true; ((SkillDef)shyvSkillDef).mustKeyPress = true; ((SkillDef)shyvSkillDef).cancelSprintingOnActivation = false; ((SkillDef)shyvSkillDef).rechargeStock = 1; ((SkillDef)shyvSkillDef).requiredStock = 1; ((SkillDef)shyvSkillDef).stockToConsume = 1; ((SkillDef)shyvSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("Disintegrate"); ((SkillDef)shyvSkillDef).skillDescriptionToken = "DRAGONSHYVANA_SPEC_DESCRIPTION"; ((SkillDef)shyvSkillDef).skillName = "DRAGONSHYVANA_SPEC"; ((SkillDef)shyvSkillDef).skillNameToken = "DRAGONSHYVANA_SPEC"; ((SkillDef)shyvSkillDef).keywordTokens = new string[1] { "SHYVANARUIN_KEYWORD" }; ContentAddition.AddSkillDef((SkillDef)(object)shyvSkillDef); component.special = Utils.NewGenericSkill(dragonCharacterPrefab, (SkillDef)(object)shyvSkillDef); } 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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("SHYVANA_M1", "Twin Bite"); LanguageAPI.Add("SHYVANA_M1_DESCRIPTION", "Swing your gauntlets for <style=cIsDamage>285% damage</style>. <color=#9C0B12>Grants +2 Fury on-hit</color>."); ShyvSkillDef shyvSkillDef = ScriptableObject.CreateInstance<ShyvSkillDef>(); ((SkillDef)shyvSkillDef).activationState = new SerializableEntityStateType(typeof(Primary)); ((SkillDef)shyvSkillDef).activationStateMachineName = "Weapon"; ((SkillDef)shyvSkillDef).baseMaxStock = 0; ((SkillDef)shyvSkillDef).baseRechargeInterval = 0f; ((SkillDef)shyvSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)shyvSkillDef).canceledFromSprinting = false; ((SkillDef)shyvSkillDef).fullRestockOnAssign = true; ((SkillDef)shyvSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)shyvSkillDef).isCombatSkill = true; ((SkillDef)shyvSkillDef).mustKeyPress = false; ((SkillDef)shyvSkillDef).cancelSprintingOnActivation = false; ((SkillDef)shyvSkillDef).rechargeStock = 0; ((SkillDef)shyvSkillDef).requiredStock = 0; ((SkillDef)shyvSkillDef).stockToConsume = 0; ((SkillDef)shyvSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("shyvanatwinbite"); ((SkillDef)shyvSkillDef).skillDescriptionToken = "SHYVANA_M1_DESCRIPTION"; ((SkillDef)shyvSkillDef).skillName = "SHYVANA_M1"; ((SkillDef)shyvSkillDef).skillNameToken = "SHYVANA_M1"; ((SkillDef)shyvSkillDef).keywordTokens = new string[3] { "DRAGONFORM_KEYWORD", "DRAGONSHYVANA_M1", "DRAGONSHYVANA_M1_DESCRIPTION" }; ContentAddition.AddSkillDef((SkillDef)(object)shyvSkillDef); component.primary = Utils.NewGenericSkill(characterPrefab, (SkillDef)(object)shyvSkillDef); } 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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("SHYVANA_M2", "Flame Breath"); LanguageAPI.Add("SHYVANA_M2_DESCRIPTION", "Shoot a slow-moving fireball that <style=cIsDamage>explodes</style> on impact for <style=cIsDamage>315% damage</style>, and <style=cIsDamage>ignites</style> enemies."); ShyvSkillDef shyvSkillDef = ScriptableObject.CreateInstance<ShyvSkillDef>(); ((SkillDef)shyvSkillDef).activationState = new SerializableEntityStateType(typeof(Secondary)); ((SkillDef)shyvSkillDef).activationStateMachineName = "Slide"; ((SkillDef)shyvSkillDef).baseMaxStock = 1; ((SkillDef)shyvSkillDef).baseRechargeInterval = 5f; ((SkillDef)shyvSkillDef).beginSkillCooldownOnSkillEnd = false; ((SkillDef)shyvSkillDef).canceledFromSprinting = false; ((SkillDef)shyvSkillDef).fullRestockOnAssign = false; ((SkillDef)shyvSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)shyvSkillDef).isCombatSkill = true; ((SkillDef)shyvSkillDef).mustKeyPress = true; ((SkillDef)shyvSkillDef).cancelSprintingOnActivation = false; ((SkillDef)shyvSkillDef).rechargeStock = 1; ((SkillDef)shyvSkillDef).requiredStock = 1; ((SkillDef)shyvSkillDef).stockToConsume = 1; ((SkillDef)shyvSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("shyvanaflamebreath"); ((SkillDef)shyvSkillDef).skillDescriptionToken = "SHYVANA_M2_DESCRIPTION"; ((SkillDef)shyvSkillDef).skillName = "SHYVANA_M2"; ((SkillDef)shyvSkillDef).skillNameToken = "SHYVANA_M2"; ((SkillDef)shyvSkillDef).keywordTokens = new string[3] { "DRAGONFORM_KEYWORD", "DRAGONSHYVANA_M2", "DRAGONSHYVANA_M2_DESCRIPTION" }; ContentAddition.AddSkillDef((SkillDef)(object)shyvSkillDef); component.secondary = Utils.NewGenericSkill(characterPrefab, (SkillDef)(object)shyvSkillDef); } private void UtilitySetup() { //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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("SHYVANA_UTIL", "Burnout"); LanguageAPI.Add("SHYVANA_UTIL_DESCRIPTION", "Wreath yourself in flames and damage enemies for <style=cIsDamage>750% damage</style> per tick, <style=cIsHealth>draining their health</style>. Gain increased movement speed while the flames are active."); ShyvSkillDef shyvSkillDef = ScriptableObject.CreateInstance<ShyvSkillDef>(); ((SkillDef)shyvSkillDef).activationState = new SerializableEntityStateType(typeof(Utility)); ((SkillDef)shyvSkillDef).activationStateMachineName = "Burnout"; ((SkillDef)shyvSkillDef).baseMaxStock = 1; ((SkillDef)shyvSkillDef).baseRechargeInterval = 5f; ((SkillDef)shyvSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)shyvSkillDef).canceledFromSprinting = false; ((SkillDef)shyvSkillDef).fullRestockOnAssign = false; ((SkillDef)shyvSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)shyvSkillDef).isCombatSkill = false; ((SkillDef)shyvSkillDef).mustKeyPress = true; ((SkillDef)shyvSkillDef).cancelSprintingOnActivation = false; ((SkillDef)shyvSkillDef).rechargeStock = 1; ((SkillDef)shyvSkillDef).requiredStock = 1; ((SkillDef)shyvSkillDef).stockToConsume = 1; ((SkillDef)shyvSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("shyvanascorchedearth"); ((SkillDef)shyvSkillDef).skillDescriptionToken = "SHYVANA_UTIL_DESCRIPTION"; ((SkillDef)shyvSkillDef).skillName = "SHYVANA_UTIL"; ((SkillDef)shyvSkillDef).skillNameToken = "SHYVANA_UTIL"; ((SkillDef)shyvSkillDef).keywordTokens = new string[4] { "DRAGONFORM_KEYWORD", "DRAGONSHYVANA_UTIL", "DRAGONSHYVANA_UTIL_DESCRIPTION", "SHYVANARUIN_KEYWORD" }; ContentAddition.AddSkillDef((SkillDef)(object)shyvSkillDef); component.utility = Utils.NewGenericSkill(characterPrefab, (SkillDef)(object)shyvSkillDef); } 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) SkillLocator component = characterPrefab.GetComponent<SkillLocator>(); LanguageAPI.Add("SHYVANA_SPEC", "Dragon's Descent"); LanguageAPI.Add("SHYVANA_SPEC_DESCRIPTION", "<color=#9C0B12>Usable at >150 Fury.</color> Leap to target location, dealing <style=cIsDamage>380% damage</style> on impact and assuming your true form, <style=cIsUtility>changing all of your abilities</style>."); ShyvSkillDef shyvSkillDef = ScriptableObject.CreateInstance<ShyvSkillDef>(); ((SkillDef)shyvSkillDef).activationState = new SerializableEntityStateType(typeof(SpecialSelect)); ((SkillDef)shyvSkillDef).activationStateMachineName = "Slide"; ((SkillDef)shyvSkillDef).baseMaxStock = 1; ((SkillDef)shyvSkillDef).baseRechargeInterval = 8f; ((SkillDef)shyvSkillDef).beginSkillCooldownOnSkillEnd = true; ((SkillDef)shyvSkillDef).canceledFromSprinting = false; ((SkillDef)shyvSkillDef).fullRestockOnAssign = false; ((SkillDef)shyvSkillDef).interruptPriority = (InterruptPriority)0; ((SkillDef)shyvSkillDef).isCombatSkill = true; ((SkillDef)shyvSkillDef).mustKeyPress = true; ((SkillDef)shyvSkillDef).cancelSprintingOnActivation = false; ((SkillDef)shyvSkillDef).rechargeStock = 1; ((SkillDef)shyvSkillDef).requiredStock = 1; ((SkillDef)shyvSkillDef).stockToConsume = 1; ((SkillDef)shyvSkillDef).icon = Assets.MainAssetBundle.LoadAsset<Sprite>("shyvanadragonsdescent"); ((SkillDef)shyvSkillDef).skillDescriptionToken = "SHYVANA_SPEC_DESCRIPTION"; ((SkillDef)shyvSkillDef).skillName = "SHYVANA_SPEC"; ((SkillDef)shyvSkillDef).skillNameToken = "SHYVANA_SPEC"; ((SkillDef)shyvSkillDef).keywordTokens = new string[4] { "DRAGONFORM_KEYWORD", "DRAGONSHYVANA_SPEC", "DRAGONSHYVANA_SPEC_DESCRIPTION", "SHYVANARUIN_KEYWORD" }; ContentAddition.AddSkillDef((SkillDef)(object)shyvSkillDef); component.special = Utils.NewGenericSkill(characterPrefab, (SkillDef)(object)shyvSkillDef); } } internal class Prefabs { internal static GameObject fireProjectile; internal static GameObject fireProjectileGhost; internal static GameObject fireProjectileExplosion; internal static GameObject fireBallProjectile; internal static GameObject fireBallProjectileGhost; internal static GameObject fireBallProjectileExplosion; internal static GameObject fireBallProjectileDotZone; internal static GameObject flameBreathEffect; internal static GameObject ringEffect; internal static GameObject despawnEffect; internal static GameObject swingHitEffect; internal static GameObject dragonSwingHitEffect; internal static GameObject dragonSlamEffect; internal static GameObject dragonTransformEffect; internal static GameObject fireImmolateHitEffect; internal static GameObject immolateEffect; internal static GameObject lineIndicator; internal static GameObject transformIndicator; internal static GameObject swingEffect; internal static GameObject leapEffect; internal static BuffDef flameBuff; internal static Material baseIndicatorMat; internal static Material redIndicatorMat; internal static Material baseArcMat; internal static Material redArcMat; internal static ModdedDamageType ruin; internal static T Load<T>(string path) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) return Addressables.LoadAssetAsync<T>((object)path).WaitForCompletion(); } 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_0079: 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_00da: 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_012e: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_0489: Unknown result type (might be due to invalid IL or missing references) //IL_048e: 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_049f: Expected O, but got Unknown //IL_0570: Unknown result type (might be due to invalid IL or missing references) //IL_0631: Unknown result type (might be due to invalid IL or missing references) //IL_06c1: Unknown result type (might be due to invalid IL or missing references) //IL_075b: Unknown result type (might be due to invalid IL or missing references) //IL_08f8: Unknown result type (might be due to invalid IL or missing references) //IL_0902: Unknown result type (might be due to invalid IL or missing references) //IL_091d: Unknown result type (might be due to invalid IL or missing references) //IL_0948: Unknown result type (might be due to invalid IL or missing references) //IL_094d: Unknown result type (might be due to invalid IL or missing references) //IL_0a51: Unknown result type (might be due to invalid IL or missing references) //IL_0a97: Unknown result type (might be due to invalid IL or missing references) //IL_0a9c: Unknown result type (might be due to invalid IL or missing references) //IL_0aa9: Unknown result type (might be due to invalid IL or missing references) //IL_0aae: Unknown result type (might be due to invalid IL or missing references) //IL_0ab7: Unknown result type (might be due to invalid IL or missing references) //IL_0ace: Unknown result type (might be due to invalid IL or missing references) //IL_0b36: Unknown result type (might be due to invalid IL or missing references) //IL_0b7e: Unknown result type (might be due to invalid IL or missing references) //IL_0c1a: Unknown result type (might be due to invalid IL or missing references) //IL_0d11: Unknown result type (might be due to invalid IL or missing references) //IL_0d5d: Unknown result type (might be due to invalid IL or missing references) //IL_0d67: Unknown result type (might be due to invalid IL or missing references) //IL_0d9b: Unknown result type (might be due to invalid IL or missing references) //IL_0da0: Unknown result type (might be due to invalid IL or missing references) //IL_0db1: Unknown result type (might be due to invalid IL or missing references) //IL_0db6: Unknown result type (might be due to invalid IL or missing references) //IL_0dd3: Unknown result type (might be due to invalid IL or missing references) //IL_0ddd: Unknown result type (might be due to invalid IL or missing references) //IL_0df3: Unknown result type (might be due to invalid IL or missing references) //IL_0df8: Unknown result type (might be due to invalid IL or missing references) //IL_0fbe: Unknown result type (might be due to invalid IL or missing references) //IL_1059: Unknown result type (might be due to invalid IL or missing references) //IL_1063: Unknown result type (might be due to invalid IL or missing references) //IL_0e52: Unknown result type (might be due to invalid IL or missing references) //IL_0e7f: Unknown result type (might be due to invalid IL or missing references) //IL_0e89: Unknown result type (might be due to invalid IL or missing references) ruin = DamageAPI.ReserveDamageType(); Material material = Load<Material>("RoR2/Base/Engi/matOmniExplosion1Engi.mat"); Material material2 = Load<Material>("RoR2/Base/Engi/matEngiExplosion.mat"); Material material3 = Load<Material>("RoR2/Base/ElitePoison/matElitePoisonDarkTrail.mat"); Material material4 = Load<Material>("RoR2/Base/ElitePoison/matElitePoisonOverlay.mat"); Material material5 = Load<Material>("RoR2/Base/ElitePoison/matElitePoisonParticleReplacement.mat"); Material material6 = Load<Material>("RoR2/Base/Engi/matEngiHarpoonRing.mat"); Material val = Load<Material>("RoR2/Base/Engi/matEngiTrailExplosion.mat"); baseIndicatorMat = Object.Instantiate<Material>(Load<Material>("RoR2/Base/Common/VFX/matAreaIndicatorRim.mat")); baseIndicatorMat.SetColor("_TintColor", MainPlugin.characterColor); redIndicatorMat = Object.Instantiate<Material>(baseIndicatorMat); redIndicatorMat.SetColor("_TintColor", new Color(1f, 0f, 0f, 0.75f)); baseArcMat = Object.Instantiate<Material>(Load<Material>("RoR2/Base/Common/VFX/matArcVisual.mat")); baseArcMat.SetColor("_TintColor", MainPlugin.characterColor); redArcMat = Object.Instantiate<Material>(baseArcMat); redArcMat.SetColor("_TintColor", new Color(1f, 0f, 0f, 0.75f)); flameBuff = Utils.NewBuffDef("Burnout", stack: false, hidden: false, Assets.Load<Sprite>("shyvanaBuff"), Color.white); swingEffect = PrefabAPI.InstantiateClone(Assets.Load<GameObject>("SlashEffect"), "ShyvanaSlashEffect", false); Utils.RegisterEffect(swingEffect, 1f).applyScale = true; leapEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Brother/BrotherDashEffect.prefab"), "ShyvanaLeapEffect", false); leapEffect.transform.rotation = Quaternion.Euler(-90f, 0f, 0f); ParticleSystemRenderer[] componentsInChildren = leapEffect.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val2 in componentsInChildren) { string name = ((Object)val2).name; if (name == "Donut") { ((Renderer)val2).materials = (Material[])(object)new Material[10] { val, val, val, val, val, val, val, val, val, val }; } if (name == "Dash") { ((Renderer)val2).material = material2; } } Utils.RegisterEffect(leapEffect, -1f); dragonTransformEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Grandparent/GrandParentSunSpawn.prefab"), "ShyvanaDragonTransformEffect", false); Object.Destroy((Object)(object)dragonTransformEffect.GetComponentInChildren<LightIntensityCurve>()); dragonTransformEffect.GetComponentInChildren<PostProcessVolume>().profile = Load<PostProcessProfile>("RoR2/Base/title/ppLocalArtifactShellHurt.asset"); Light componentInChildren = dragonTransformEffect.GetComponentInChildren<Light>(); componentInChildren.intensity = 45f; componentInChildren.range = 50f; componentInChildren.colorTemperature = 5000f; componentInChildren.color = Color.cyan; ParticleSystemRenderer[] componentsInChildren2 = dragonTransformEffect.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val3 in componentsInChildren2) { string name2 = ((Object)val3).name; if (name2 == "Goo, Drip" || name2 == "Trails") { ((Renderer)val3).enabled = false; } if (name2 == "Goo, Billboard Huge") { ((Renderer)val3).material = material; } if (name2 == "Goo, Burst") { ((Renderer)val3).material = Load<Material>("RoR2/Junk/ClayMan/matClaySwingtrail.mat"); } if (name2 == "Donut") { ((Renderer)val3).material = val; } } Utils.RegisterEffect(dragonTransformEffect, 1f); transformIndicator = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab"), "SphereIndicator", false); Material val4 = Object.Instantiate<Material>(Load<Material>("RoR2/Base/Common/VFX/matAreaIndicatorRim.mat")); val4.SetColor("_TintColor", MainPlugin.characterColor); ((Renderer)transformIndicator.GetComponentInChildren<MeshRenderer>()).material = val4; lineIndicator = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Common/VFX/BasicThrowableVisualizer.prefab"), "LineIndicator", false); LineRenderer component = lineIndicator.GetComponent<LineRenderer>(); component.widthMultiplier = 1f; component.textureMode = (LineTextureMode)0; component.numPositions = 98; BezierCurveLineScaler bezierCurveLineScaler = lineIndicator.AddComponent<BezierCurveLineScaler>(); ((BezierCurveLine)bezierCurveLineScaler).v0 = new Vector3(0f, 20f, 0f); GameObject val5 = new GameObject("EndTransform"); val5.transform.SetParent(lineIndicator.transform); ((BezierCurveLine)bezierCurveLineScaler).endTransform = val5.transform; immolateEffect = PrefabAPI.InstantiateClone(Assets.Load<GameObject>("ImmolateEffect"), "ShyvanaImmolateEffect", false); Utils.AddScaleComponent(((Component)immolateEffect.transform.GetChild(0)).gameObject, 0.15f).overallCurve = AnimationCurve.Linear(0f, 0.7f, 1f, 1f); immolateEffect.AddComponent<DestroyOnTimer>().duration = 8f; fireImmolateHitEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Engi/ImpactEngiTurret.prefab"), "ShyvanaDragonImmolateHitEffect", false); ParticleSystemRenderer[] componentsInChildren3 = fireImmolateHitEffect.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val6 in componentsInChildren3) { ((Renderer)val6).material.SetColor("_TintColor", MainPlugin.characterColor); } Utils.RegisterEffect(fireImmolateHitEffect, 1f, "Play_Shyvana_Immolate_Hit"); dragonSlamEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Parent/ParentSlamEffect.prefab"), "ShyvanaDragonSlamEffect", false); Utils.RegisterEffect(dragonSlamEffect, 1f, "Play_Shyvana_Transform_Hit"); swingHitEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Merc/OmniImpactVFXSlashMerc.prefab"), "ShyvanaSwingHitEffect", false); Object.Destroy((Object)(object)swingHitEffect.GetComponent<OmniEffect>()); ParticleSystemRenderer[] componentsInChildren4 = swingHitEffect.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val7 in componentsInChildren4) { ((Component)val7).gameObject.SetActive(true); ((Renderer)val7).material.SetColor("_TintColor", Color.green); } Utils.RegisterEffect(swingHitEffect, 1f, "Play_Shyvana_Auto_Hit"); dragonSwingHitEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Merc/MercExposeConsumeEffect.prefab"), "ShyvanaDragonSwingHitEffect", false); Object.Destroy((Object)(object)dragonSwingHitEffect.GetComponent<OmniEffect>()); ParticleSystemRenderer[] componentsInChildren5 = dragonSwingHitEffect.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val8 in componentsInChildren5) { ((Component)val8).gameObject.SetActive(true); ((Renderer)val8).material.SetColor("_TintColor", Color.green); if (((Object)val8).name == "PulseEffect, Ring (1)") { Material material7 = ((Renderer)val8).material; material7.mainTexture = (Texture)(object)Load<Texture2D>("RoR2/Base/Common/VFX/texArcaneCircleProviMask.png"); } } Utils.RegisterEffect(dragonSwingHitEffect, 1f, "Play_Shyvana_Dragon_Auto_Hit"); despawnEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/ImpBoss/ImpBossBlink.prefab"), "ShyvanaDespawnEffect", false); Object.Destroy((Object)(object)despawnEffect.GetComponent<DestroyOnParticleEnd>()); despawnEffect.GetComponentInChildren<Light>(true).color = MainPlugin.characterColor; despawnEffect.GetComponentInChildren<PostProcessVolume>(true).profile = Load<PostProcessProfile>("RoR2/Base/title/ppLocalElectricWorm.asset"); ParticleSystemRenderer[] componentsInChildren6 = despawnEffect.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val9 in componentsInChildren6) { string name3 = ((Object)val9).name; if (name3 == "Dash") { ((Renderer)val9).material = material2; } if (name3 == "Dash, Bright") { ((Renderer)val9).material = val; } if (name3 == "DashRings" || name3 == "Sphere" || name3 == "LongLifeNoiseTrails") { ((Renderer)val9).material = material; } if (name3 == "LongLifeNoiseTrails, Bright") { ((Renderer)val9).material = material5; } if (name3 == "Flash, Red") { ((Renderer)val9).material = material6; } } Utils.RegisterEffect(despawnEffect, -1f); ringEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Icicle/IcicleAura.prefab"), "ShyvanaRingEffect", false); Object.Destroy((Object)(object)ringEffect.GetComponent<IcicleAuraController>()); Object.Destroy((Object)(object)ringEffect.GetComponent<BuffWard>()); Object.Destroy((Object)(object)ringEffect.GetComponent<TeamFilter>()); Object.Destroy((Object)(object)ringEffect.GetComponent<Rigidbody>()); Object.Destroy((Object)(object)ringEffect.GetComponent<AkGameObj>()); ringEffect.transform.localScale = Vector3.one * 9f; ringEffect.transform.GetChild(0).localScale = Vector3.one; ParticleSystem[] componentsInChildren7 = ringEffect.GetComponentsInChildren<ParticleSystem>(true); foreach (ParticleSystem val10 in componentsInChildren7) { MainModule main = val10.main; ((MainModule)(ref main)).playOnAwake = true; ParticleSystemRenderer component2 = ((Component)val10).GetComponent<ParticleSystemRenderer>(); string name4 = ((Object)component2).name; if (name4 == "Ring, Core") { ((Renderer)component2).material = material3; } if (name4 == "Ring, Outer") { ((Renderer)component2).material = material4; } if (name4 == "Ring, Procced") { ((Renderer)component2).material = material3; } if (name4 == "Area") { ((Renderer)component2).material = material4; } if (name4 == "SpinningSharpChunks" || name4 == " Chunks") { ((Renderer)component2).enabled = false; } } flameBreathEffect = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Lemurian/FlamebreathEffect.prefab"), "ShyvanaFlameBreathEffect", false); flameBreathEffect.GetComponentInChildren<Light>().color = new Color(0.24706f, 0.74902f, 0.5098f); flameBreathEffect.GetComponent<ScaleParticleSystemDuration>().newDuration = 1f; ParticleSystemRenderer[] componentsInChildren8 = flameBreathEffect.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val11 in componentsInChildren8) { ParticleSystem component3 = ((Component)val11).GetComponent<ParticleSystem>(); MainModule main2 = component3.main; ((MainModule)(ref main2)).loop = true; EmissionModule emission = component3.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(55f); ((Renderer)val11).material.SetColor("_TintColor", MainPlugin.characterColor); } fireProjectileExplosion = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Engi/EngiMineExplosion.prefab"), "ShyvanaFireProjectileExplosion", false); Utils.RegisterEffect(fireProjectileExplosion, 1f, "Play_Shyvana_Fireball_Hit").applyScale = true; Material val12 = Object.Instantiate<Material>(Load<Material>("RoR2/Base/LunarExploder/matLunarExploderDeathDecal.mat")); val12.SetColor("_Color", MainPlugin.characterColor); fireBallProjectileDotZone = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/LunarExploder/LunarExploderProjectileDotZone.prefab"), "ShyvanaFireBallProjectileDotZone", true); fireBallProjectileDotZone.GetComponentInChildren<Decal>().Material = Load<Material>("RoR2/DLC1/AcidLarva/matAcidLarvaDeathDecal.mat"); fireBallProjectileDotZone.GetComponentInChildren<Light>().color = Color.green; ParticleSystemRenderer[] componentsInChildren9 = fireBallProjectileDotZone.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val13 in componentsInChildren9) { string name5 = ((Object)val13).name; if (name5 == "Fire, Billboard" || name5 == "Fire, Stretched") { ((Renderer)val13).material = material; } if (name5 == "Spores") { ((Renderer)val13).material = Load<Material>("RoR2/Base/Croco/matCrocoGooLarge.mat"); } } fireBallProjectileDotZone.AddComponent<ModdedDamageTypeHolderComponent>().Add(ruin); ContentAddition.AddProjectile(fireBallProjectileDotZone); fireBallProjectileExplosion = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/BFG/BeamSphereExplosion.prefab"), "ShyvanaFireBallProjectileExplosion", false); ParticleSystemRenderer[] componentsInChildren10 = fireBallProjectileExplosion.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val14 in componentsInChildren10) { string name6 = ((Object)val14).name; if (name6 == "Chunks, Sharp" || name6 == "Lightning" || name6 == "Ring") { ((Renderer)val14).material = material3; } if (name6 == "Flames") { ((Renderer)val14).material = material; } } Utils.RegisterEffect(fireBallProjectileExplosion, 2f, "Play_Shyvana_Dragon_Fireball_Hit"); fireBallProjectileGhost = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/LunarWisp/LunarWispTrackingBombGhost.prefab"), "ShyvanaFireBallProjectileGhost", false); fireBallProjectileGhost.GetComponentInChildren<Light>().color = Color.green; ParticleSystemRenderer[] componentsInChildren11 = fireBallProjectileGhost.GetComponentsInChildren<ParticleSystemRenderer>(true); foreach (ParticleSystemRenderer val15 in componentsInChildren11) { string name7 = ((Object)val15).name; if (name7 == "BombOrb") { ((Component)val15).transform.localScale = Vector3.one * 2f; ((Renderer)val15).material = val; } if (name7 == "Trail_Ps") { ParticleSystem component4 = ((Component)val15).GetComponent<ParticleSystem>(); MainModule main3 = component4.main; ((MainModule)(ref main3)).startLifetimeMultiplier = 0.1f; ShapeModule shape = component4.shape; ((ShapeModule)(ref shape)).radius = ((ShapeModule)(ref shape)).radius * 0.2f; ((Component)val15).transform.localScale = Vector3.one * 8f; ((Renderer)val15).material = material; ((MainModule)(ref main3)).startColor = MinMaxGradient.op_Implicit(MainPlugin.characterColor); } if (name7 == "Sparks") { ((Renderer)val15).enabled = false; } if (name7 == "Glow") { ((Renderer)val15).material = Load<Material>("RoR2/Base/Grandparent/matGrandParentSunGlow.mat"); ((Renderer)val15).material.SetColor("_TintColor", MainPlugin.characterColor); Material material8 = ((Renderer)val15).material; material8.mainTexture = (Texture)(object)Load<Texture2D>("RoR2/Base/Common/VFX/texFluffyCloud2Mask.png"); ((Component)val15).transform.localScale = Vector3.one * 1.5f; } } fireBallProjectile = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Mage/MageLightningBombProjectile.prefab"), "ShyvanaFireBallProjectile", true); Object.Destroy((Object)(object)fireBallProjectile.GetComponent<AkEvent>()); Object.Destroy((Object)(object)fireBallProjectile.GetComponent<AkGameObj>()); Object.Destroy((Object)(object)fireBallProjectile.GetComponent<ProjectileProximityBeamController>()); Object.Destroy((Object)(object)fireBallProjectile.GetComponent<AntiGravityForce>()); fireBallProjectile.GetComponent<ProjectileController>().ghostPrefab = fireBallProjectileGhost; ProjectileImpactExplosion component5 = fireBallProjectile.GetComponent<ProjectileImpactExplosion>(); component5.impactEffect = fireBallProjectileExplosion; ((ProjectileExplosion)component5).explosionEffect = fireBallProjectileExplosion; ((ProjectileExplosion)component5).childrenCount = 1; ((ProjectileExplosion)component5).fireChildren = true; ((ProjectileExplosion)component5).childrenDamageCoefficient = 1f; ((ProjectileExplosion)component5).childrenProjectilePrefab = fireBallProjectileDotZone; ContentAddition.AddProjectile(fireBallProjectile); fireProjectileGhost = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Mage/MageFireboltGhost.prefab"), "ShyvanaFireProjectileGhost", false); Renderer[] componentsInChildren12 = fireProjectileGhost.GetComponentsInChildren<Renderer>(true); foreach (Renderer val16 in componentsInChildren12) { ((Component)val16).gameObject.SetActive(true); val16.material.SetColor("_TintColor", MainPlugin.characterColor); MeshFilter component6 = ((Component)val16).GetComponent<MeshFilter>(); if (Object.op_Implicit((Object)(object)component6)) { component6.mesh = Load<GameObject>("RoR2/Base/UtilitySkillMagazine/mdlAfterburner.fbx").GetComponentInChildren<MeshFilter>().mesh; } TrailRenderer val17; if ((Object)(object)(val17 = (TrailRenderer)(object)((val16 is TrailRenderer) ? val16 : null)) != (Object)null) { val17.time *= 1.5f; val17.widthMultiplier *= 1.5f; } } fireProjectileGhost.transform.localScale = Vector3.one * 1.5f; fireProjectile = PrefabAPI.InstantiateClone(Load<GameObject>("RoR2/Base/Mage/MageFireboltBasic.prefab"), "ShyvanaFireProjectile", true); fireProjectile.GetComponent<ProjectileController>().ghostPrefab = fireProjectileGhost; ProjectileImpactExplosion component7 = fireProjectile.GetComponent<ProjectileImpactExplosion>(); component7.impactEffect = fireProjectileExplosion; ((ProjectileExplosion)component7).explosionEffect = fireProjectileExplosion; ContentAddition.AddProjectile(fireProjectile); } } internal class ShyvSkillDef : SkillDef { private class InstanceData : BaseSkillInstanceData { public SkillLocator skillLocator; public ShyvanaBehaviour behaviour; public CharacterMotor motor; } public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot) { return (BaseSkillInstanceData)(object)new InstanceData { skillLocator = ((Component)skillSlot).GetComponent<SkillLocator>(), behaviour = ((Component)skillSlot).GetComponent<ShyvanaBehaviour>() }; } internal static bool IsExecutable([NotNull] GenericSkill skillSlot) { InstanceData instanceData = (InstanceData)(object)skillSlot.skillInstanceData; ShyvanaBehaviour behaviour = instanceData.behaviour; SkillLocator skillLocator = instanceData.skillLocator; CharacterMotor motor = instanceData.motor; if (Object.op_Implicit((Object)(object)skillLocator) && Object.op_Implicit((Object)(object)behaviour) && Object.op_Implicit((Object)(object)behaviour.behaviour)) { if ((Object)(object)skillSlot == (Object)(object)skillLocator.primary) { } if ((Object)(object)skillSlot == (Object)(object)skillLocator.secondary) { } if ((Object)(object)skillSlot == (Object)(object)skillLocator.utility) { } if (!behaviour.behaviour.transformed && (Object)(object)skillSlot == (Object)(object)skillLocator.special) { return behaviour.canExecute && behaviour.powerupValue >= 1.5f; } return behaviour.canExecute; } return true; } 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 BaseShyvanaState : BaseSkillState { public Animator animator; public ShyvanaBehaviour behaviour; public MasterBehaviour masterBehaviour; public CharacterMaster master; public override void OnEnter() { ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); behaviour = ((EntityState)this).GetComponent<ShyvanaBehaviour>(); if (Object.op_Implicit((Object)(object)behaviour) && Object.op_Implicit((Object)(object)behaviour.behaviour)) { masterBehaviour = behaviour.behaviour; } master = ((EntityState)this).characterBody.master; } public void LockSkills() { if (Object.op_Implicit((Object)(object)behaviour)) { behaviour.canExecute = false; } } public void UnlockSkills() { if (Object.op_Implicit((Object)(object)behaviour)) { behaviour.canExecute = true; } } public void AdjustModelForward(Vector3 dir) { //IL_0011: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_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_004e: 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) if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) && dir != Vector3.zero) { ((Vector3)(ref dir)).Normalize(); Vector3 val = new Vector3(dir.x, 0f, dir.y); Vector3 normalized = ((Vector3)(ref val)).normalized; ((EntityState)this).characterDirection.moveVector = normalized; } } public void AdjustModelForwardAim() { //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_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_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: 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_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0064: 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) if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { Ray aimRay = ((BaseState)this).GetAimRay(); Vector2 val = Util.Vector3XZToVector2XY(((Ray)(ref aimRay)).direction); if (val != Vector2.zero) { ((Vector2)(ref val)).Normalize(); Vector3 val2 = new Vector3(val.x, 0f, val.y); Vector3 normalized = ((Vector3)(ref val2)).normalized; ((EntityState)this).characterDirection.moveVector = normalized; } } } } internal class ShyvanaSpawnState : SpawnTeleporterState { public override void OnEnter() { //IL_0068: 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) ((SpawnTeleporterState)this).OnEnter(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody.masterObject)) { MasterBehaviour component = ((EntityState)this).characterBody.masterObject.GetComponent<MasterBehaviour>(); if (Object.op_Implicit((Object)(object)component) && component.despawned) { component.despawned = false; base.hasTeleported = true; base.duration = 0f; EffectManager.SimpleEffect(Prefabs.despawnEffect, ((EntityState)this).characterBody.corePosition, Quaternion.identity, false); AkSoundEngine.PostEvent(Sounds.Play_Shyvana_Immolate_Deactivate, ((EntityState)this).gameObject); } } CharacterModel characterModel = base.characterModel; characterModel.invisibilityCount--; } public override void OnExit() { ((SpawnTeleporterState)this).OnExit(); if (NetworkServer.active) { ((EntityState)this).characterBody.ClearTimedBuffs(Buffs.HiddenInvincibility); } } } internal class CharacterMain : GenericCharacterMain { private uint ID; private bool playingID; private ShyvanaBehaviour behaviour; public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); behaviour = ((EntityState)this).GetComponent<ShyvanaBehaviour>(); } public override void FixedUpdate() { ((GenericCharacterMain)this).FixedUpdate(); if (((EntityState)this).characterBody.outOfCombatStopwatch >= 2f && ((EntityState)this).characterBody.outOfDangerStopwatch >= 2f && behaviour.canExecute) { if (!playingID) { playingID = true; ID = AkSoundEngine.PostEvent(Sounds.Play_Shyvana_Dragon_Idle, ((EntityState)this).gameObject); } } else if (playingID) { playingID = false; AkSoundEngine.StopPlayingID(ID); } } public override void OnExit() { ((GenericCharacterMain)this).OnExit(); AkSoundEngine.StopPlayingID(ID); } } internal class DragonPrimary : Primary { public override float comboDamageCoefficient => 3.5f; public override bool dragonForm => true; public override void SetState() { DragonPrimary dragonPrimary = new DragonPrimary(); dragonPrimary.comboState = ((comboState == 2) ? 1 : (comboState + 1)); ((EntityState)this).outer.SetNextState((EntityState)(object)dragonPrimary); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } internal class DragonSecondary : BaseShyvanaState { private ChildLocator childLocator; private Transform muzzleTransform; private float stopwatch; private float burstStopwatch; private float attackDelay; private Ray aimRay; private GameObject hitEffectPrefab = Prefabs.Load<GameObject>("RoR2/Base/Engi/ImpactEngiTurret.prefab"); private float startup = 0.2f; public override void OnEnter() { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) base.OnEnter(); ((BaseState)this).StartAimMode(2f, false); attackDelay = 0.125f; childLocator = ((EntityState)this).GetModelChildLocator(); muzzleTransform = childLocator.FindChild("jawMuzzle"); AkSoundEngine.PostEvent(Sounds.Play_Shyvana_Wing_Flap_Hard, ((EntityState)this).gameObject); aimRay = ((BaseState)this).GetAimRay(); ((EntityState)this).PlayAnimation("FullBody, Override", "Spell2"); LockSkills(); } public override void Update() { ((EntityState)this).Update(); UpdateFlamethrowerEffect(); if (Object.op_Implicit((Object)(object)animator)) { animator.SetBool("isMoving", false); } } public override void FixedUpdate() { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_0129: 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_0145: 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_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= startup && !Object.op_Implicit((Object)(object)behaviour.effect)) { AkSoundEngine.PostEvent(Sounds.Play_Shyvana_Dragon_Fireball_Cast, ((EntityState)this).gameObject); behaviour.ID = AkSoundEngine.PostEvent(Sounds.Play_Shyvana_Dragon_Flames, ((EntityState)this).gameObject); behaviour.effect = Object.Instantiate<GameObject>(Prefabs.flameBreathEffect, muzzleTransform); behaviour.effect.transform.localPosition = Vector3.zero; behaviour.effect.transform.localScale = Vector3.one * -1f; } ((EntityState)this).characterBody.isSprinting = false; if (((EntityState)this).isAuthority) { float y = ((EntityState)this).characterMotor.velocity.y; y = Mathf.MoveTowards(y, JetpackOn.hoverVelocity, JetpackOn.hoverAcceleration / 1.75f * Time.fixedDeltaTime); ((EntityState)this).characterMotor.velocity = new Vector3(((EntityState)this).characterMotor.velocity.x, y, ((EntityState)this).characterMotor.velocity.z); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { Ray val = ((BaseState)this).GetAimRay(); Vector2 val2 = Util.Vector3XZToVector2XY(((Ray)(ref val)).direction); if (val2 != Vector2.zero) { ((Vector2)(ref val2)).Normalize(); Vector3 val3 = new Vector3(val2.x, 0f, val2.y); Vector3 normalized = ((Vector3)(ref val3)).normalized; ((EntityState)this).characterDirection.moveVector = normalized; } } if (((EntityState)this).fixedAge >= startup) { stopwatch += Time.fixedDeltaTime; if (stopwatch >= attackDelay) { stopwatch = 0f; Fire(); } } if ((((EntityState)this).isAuthority && !((EntityState)this).inputBank.skill2.down) || behaviour.powerupValue <= 0f) { ((EntityState)this).outer.SetNextState((EntityState)(object)new DragonSecondaryEnd()); } UpdateFlamethrowerEffect(); } private void UpdateFlamethrowerEffect() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)behaviour.effect)) { Transform transform = behaviour.effect.transform; Ray val = ((BaseState)this).GetAimRay(); transform.forward = ((Ray)(ref val)).direction; } } private void Fire() { //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_001