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 JJBA Dio v1.0.0
plugins/JJBADio.dll
Decompiled a day 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.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using EntityStates; using JJBAMod.Modules; using JJBAMod.Modules.BaseStates; using JJBAMod.Modules.Characters; using JJBAMod.Modules.Stands; using JJBAMod.Survivors.Dio.Components; using JJBAMod.Survivors.Dio.SkillStates; using KinematicCharacterController; using R2API; using R2API.Utils; using RoR2; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.Projectile; using RoR2.Skills; using RoR2.WwiseUtils; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.Rendering.PostProcessing; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("JJBADio")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+384ff630de143ea0a2c0f656a44d2900138c18b5")] [assembly: AssemblyProduct("JJBADio")] [assembly: AssemblyTitle("JJBADio")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace JJBAMod.Survivors.Dio { public static class DioAI { public static void Init(GameObject bodyPrefab, string masterName) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_018c: 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_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02d3: Unknown result type (might be due to invalid IL or missing references) //IL_02f7: Unknown result type (might be due to invalid IL or missing references) //IL_0313: Unknown result type (might be due to invalid IL or missing references) //IL_0325: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) GameObject obj = Prefabs.CreateBlankMasterPrefab(bodyPrefab, masterName); BaseAI component = obj.GetComponent<BaseAI>(); component.aimVectorDampTime = 0.1f; component.aimVectorMaxSpeed = 360f; AISkillDriver obj2 = obj.AddComponent<AISkillDriver>(); obj2.customName = "Use Primary Swing"; obj2.skillSlot = (SkillSlot)0; obj2.requiredSkill = null; obj2.requireSkillReady = false; obj2.requireEquipmentReady = false; obj2.minUserHealthFraction = float.NegativeInfinity; obj2.maxUserHealthFraction = float.PositiveInfinity; obj2.minTargetHealthFraction = float.NegativeInfinity; obj2.maxTargetHealthFraction = float.PositiveInfinity; obj2.minDistance = 0f; obj2.maxDistance = 8f; obj2.selectionRequiresTargetLoS = false; obj2.selectionRequiresOnGround = false; obj2.selectionRequiresAimTarget = false; obj2.maxTimesSelected = -1; obj2.moveTargetType = (TargetType)0; obj2.activationRequiresTargetLoS = false; obj2.activationRequiresAimTargetLoS = false; obj2.activationRequiresAimConfirmation = false; obj2.movementType = (MovementType)1; obj2.moveInputScale = 1f; obj2.aimType = (AimType)1; obj2.ignoreNodeGraph = false; obj2.shouldSprint = false; obj2.shouldFireEquipment = false; obj2.buttonPressType = (ButtonPressType)0; obj2.driverUpdateTimerOverride = -1f; obj2.resetCurrentEnemyOnNextDriverSelection = false; obj2.noRepeat = false; obj2.nextHighPriorityOverride = null; AISkillDriver obj3 = obj.AddComponent<AISkillDriver>(); obj3.customName = "Use Secondary First Bomb"; obj3.skillSlot = (SkillSlot)1; obj3.requireSkillReady = true; obj3.minDistance = 0f; obj3.maxDistance = 8f; obj3.selectionRequiresTargetLoS = false; obj3.selectionRequiresOnGround = false; obj3.selectionRequiresAimTarget = false; obj3.maxTimesSelected = -1; obj3.moveTargetType = (TargetType)0; obj3.activationRequiresTargetLoS = false; obj3.activationRequiresAimTargetLoS = false; obj3.activationRequiresAimConfirmation = true; obj3.movementType = (MovementType)1; obj3.moveInputScale = 1f; obj3.aimType = (AimType)1; obj3.buttonPressType = (ButtonPressType)0; AISkillDriver obj4 = obj.AddComponent<AISkillDriver>(); obj4.customName = "Use Utility Bomb Dash"; obj4.skillSlot = (SkillSlot)2; obj4.requireSkillReady = true; obj4.minDistance = 8f; obj4.maxDistance = 20f; obj4.selectionRequiresTargetLoS = true; obj4.selectionRequiresOnGround = false; obj4.selectionRequiresAimTarget = false; obj4.maxTimesSelected = -1; obj4.moveTargetType = (TargetType)0; obj4.activationRequiresTargetLoS = false; obj4.activationRequiresAimTargetLoS = false; obj4.activationRequiresAimConfirmation = false; obj4.movementType = (MovementType)2; obj4.moveInputScale = 1f; obj4.aimType = (AimType)1; obj4.buttonPressType = (ButtonPressType)0; AISkillDriver obj5 = obj.AddComponent<AISkillDriver>(); obj5.customName = "Use Special Sheer Heart Attack"; obj5.skillSlot = (SkillSlot)3; obj5.requireSkillReady = true; obj5.minDistance = 0f; obj5.maxDistance = 20f; obj5.selectionRequiresTargetLoS = false; obj5.selectionRequiresOnGround = false; obj5.selectionRequiresAimTarget = false; obj5.maxTimesSelected = -1; obj5.moveTargetType = (TargetType)0; obj5.activationRequiresTargetLoS = false; obj5.activationRequiresAimTargetLoS = false; obj5.activationRequiresAimConfirmation = false; obj5.movementType = (MovementType)1; obj5.moveInputScale = 1f; obj5.aimType = (AimType)1; obj5.buttonPressType = (ButtonPressType)0; AISkillDriver obj6 = obj.AddComponent<AISkillDriver>(); obj6.customName = "Chase"; obj6.skillSlot = (SkillSlot)(-1); obj6.requireSkillReady = false; obj6.minDistance = 0f; obj6.maxDistance = float.PositiveInfinity; obj6.moveTargetType = (TargetType)0; obj6.activationRequiresTargetLoS = false; obj6.activationRequiresAimTargetLoS = false; obj6.activationRequiresAimConfirmation = false; obj6.movementType = (MovementType)1; obj6.moveInputScale = 1f; obj6.aimType = (AimType)1; obj6.buttonPressType = (ButtonPressType)0; } } public static class DioAssets { public static GameObject theWorldModel; public static GameObject knifeProjectilePrefab; public static GameObject roadRollerPrefab; public static TextAsset ultimateScene; public static Texture cutInTexture; public static Texture2D auraTexture; public static ModdedDamageType vampireDamageType; public static ModdedDamageType drainDamageType; public static NetworkSoundEventDef[] standPunchHitSoundEvents; public static NetworkSoundEventDef dioPunchHitSoundEvent; public static NetworkSoundEventDef knifeHitSoundEvent; public static NetworkSoundEventDef timeSkipHitSoundEvent; private static AssetBundle _assetBundle; public static void Init(AssetBundle assetBundle) { //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) _assetBundle = assetBundle; standPunchHitSoundEvents = (NetworkSoundEventDef[])(object)new NetworkSoundEventDef[DioSounds.standPunchHits.Length]; for (int i = 0; i < standPunchHitSoundEvents.Length; i++) { standPunchHitSoundEvents[i] = Content.CreateAndAddNetworkSoundEventDef(DioSounds.standPunchHits[i]); } dioPunchHitSoundEvent = Content.CreateAndAddNetworkSoundEventDef("Play_bandit2_m2_impact"); knifeHitSoundEvent = Content.CreateAndAddNetworkSoundEventDef("Play_JJBA_KnifeHit"); timeSkipHitSoundEvent = Content.CreateAndAddNetworkSoundEventDef("Play_Dio_TimeSkipHit"); theWorldModel = _assetBundle.LoadAsset<GameObject>("mdlTheWorld3"); cutInTexture = (Texture)(object)_assetBundle.LoadAsset<Texture2D>("texDioCutIn"); auraTexture = _assetBundle.LoadAsset<Texture2D>("texDioAura"); TheWorldTimeStop.track = StandCinematic.LoadTrack(_assetBundle.LoadAsset<TextAsset>("DioTimeStopCamera")); vampireDamageType = DamageAPI.ReserveDamageType(); drainDamageType = DamageAPI.ReserveDamageType(); DioFX.Init(); DioRoadRollerCutscene.track = StandCinematic.LoadTrack(_assetBundle.LoadAsset<TextAsset>("DioUltimateCamera")); ultimateScene = _assetBundle.LoadAsset<TextAsset>("DioUltimateScene"); DioRoadRollerCutscene.scene = RoadRollerScene.Load(ultimateScene); Asset.ConvertAllRenderersToHopooShader(theWorldModel); roadRollerPrefab = _assetBundle.LoadAsset<GameObject>("DioRoadRoller"); if (Object.op_Implicit((Object)(object)roadRollerPrefab)) { Asset.ConvertAllRenderersToHopooShader(roadRollerPrefab); } CreateKnife(); if (Object.op_Implicit((Object)(object)knifeProjectilePrefab)) { Content.AddProjectilePrefab(knifeProjectilePrefab); } } private static void CreateKnife() { //IL_017e: 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_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) knifeProjectilePrefab = Asset.CloneProjectilePrefab("CommandoGrenadeProjectile", "DioKnifeProjectile"); Object.DestroyImmediate((Object)(object)knifeProjectilePrefab.GetComponent<ProjectileImpactExplosion>()); ApplyTorqueOnStart component = knifeProjectilePrefab.GetComponent<ApplyTorqueOnStart>(); if (Object.op_Implicit((Object)(object)component)) { Object.DestroyImmediate((Object)(object)component); } ProjectileSingleTargetImpact obj = knifeProjectilePrefab.AddComponent<ProjectileSingleTargetImpact>(); obj.destroyOnWorld = true; obj.destroyWhenNotAlive = true; obj.impactEffect = SharedEffects.punchHitImpactEffect; obj.enemyHitSound = knifeHitSoundEvent; Rigidbody component2 = knifeProjectilePrefab.GetComponent<Rigidbody>(); if (Object.op_Implicit((Object)(object)component2)) { component2.useGravity = false; component2.freezeRotation = true; component2.collisionDetectionMode = (CollisionDetectionMode)2; } SphereCollider component3 = knifeProjectilePrefab.GetComponent<SphereCollider>(); if (Object.op_Implicit((Object)(object)component3)) { component3.radius = 0.2f; } ProjectileSimple val = knifeProjectilePrefab.GetComponent<ProjectileSimple>(); if (!Object.op_Implicit((Object)(object)val)) { val = knifeProjectilePrefab.AddComponent<ProjectileSimple>(); } val.desiredForwardSpeed = 110f; val.updateAfterFiring = true; val.lifetime = 1.2f; knifeProjectilePrefab.AddComponent<TimeStopKnife>(); knifeProjectilePrefab.AddComponent<KnifeCollisionGuard>(); ProjectileController component4 = knifeProjectilePrefab.GetComponent<ProjectileController>(); component4.startSound = ""; component4.procCoefficient = 1f; if ((Object)(object)_assetBundle.LoadAsset<GameObject>("DioKnifeGhost") != (Object)null) { GameObject val2 = Asset.CreateProjectileGhostPrefab(_assetBundle, "DioKnifeGhost"); if (val2.transform.childCount > 0) { val2.transform.GetChild(0).localRotation = Quaternion.Euler(DioStaticValues.knifeGhostRotation); } val2.transform.localScale = Vector3.one * 1.6f; component4.ghostPrefab = val2; } } } public static class DioFX { public static readonly Color gold = new Color(1f, 0.82f, 0.2f); public static readonly Color paleGold = new Color(1f, 0.95f, 0.7f); public static readonly Color blood = new Color(0.75f, 0.02f, 0.05f); public static GameObject timeStopFlash; public static GameObject goldFlash; public static GameObject bloodSpray; public static GameObject stingyEyesTracer; public static GameObject frostBurst; public static readonly Color frost = new Color(0.7f, 0.9f, 1f); public static void Init() { timeStopFlash = Register(TimeStopFlash()); goldFlash = Register(GoldFlash()); bloodSpray = Register(BloodSpray()); frostBurst = Register(FrostBurst()); stingyEyesTracer = Asset.CloneTracer("TracerGolem", "DioStingyEyesTracer") ?? Asset.CloneTracer("TracerCommandoDefault", "DioStingyEyesTracer"); } private static GameObject Register(GameObject effect) { Content.CreateAndAddEffectDef(effect); return effect; } private static Color A(Color color, float alpha) { //IL_0000: 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_000c: 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) return new Color(color.r, color.g, color.b, alpha); } private static GameObject TimeStopFlash() { //IL_0052: 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_0061: 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) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_0144: 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_015d: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) GameObject obj = FX.NewEffect("DioTimeStopFlash", 2.5f, (string)null); ParticleSystem obj2 = FX.Particles(obj, "Wave", (Texture)(object)FX.Ring, (Facing)0); FX.Burst(obj2, 1, 0f); FX.Life(obj2, 1.1f, 1.1f, 30f, 30f, 0f, 0f); FX.Colors(obj2, A(paleGold, 0.9f), A(gold, 0f), 0.01f); FX.Blast(obj2, 0.02f, 1f); ParticleSystem obj3 = FX.Particles(obj, "Floor", (Texture)(object)FX.Ring, (Facing)1); FX.Burst(obj3, 1, 0f); FX.Life(obj3, 0.9f, 0.9f, 18f, 18f, 0f, 0f); FX.Colors(obj3, A(gold, 0.8f), A(gold, 0f), 0.01f); FX.Blast(obj3, 0.05f, 1f); ParticleSystem obj4 = FX.Particles(obj, "Core", (Texture)(object)FX.SoftDot, (Facing)0); FX.Burst(obj4, 3, 0f); FX.Life(obj4, 0.35f, 0.5f, 5f, 7f, 0f, 0f); FX.Colors(obj4, A(Color.white, 1f), A(gold, 0f), 0.01f); FX.Grow(obj4, 0.4f, 1.3f); ParticleSystem obj5 = FX.Particles(obj, "Sparks", (Texture)(object)FX.Spark, (Facing)2); FX.Burst(obj5, 60, 0f); FX.Life(obj5, 0.4f, 0.9f, 0.08f, 0.18f, 14f, 30f); FX.Sphere(obj5, 0.4f, 1f); FX.Drag(obj5, 0.08f); FX.Colors(obj5, A(Color.white, 1f), A(gold, 0f), 0.05f); FX.AddLight(obj, gold, 30f, 12f, 0.9f); return obj; } private static GameObject GoldFlash() { //IL_0052: 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_0061: 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) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) GameObject obj = FX.NewEffect("DioGoldFlash", 1.2f, (string)null); ParticleSystem obj2 = FX.Particles(obj, "Ring", (Texture)(object)FX.Ring, (Facing)0); FX.Burst(obj2, 1, 0f); FX.Life(obj2, 0.35f, 0.35f, 3f, 3f, 0f, 0f); FX.Colors(obj2, A(paleGold, 0.85f), A(gold, 0f), 0.01f); FX.Blast(obj2, 0.1f, 1f); ParticleSystem obj3 = FX.Particles(obj, "Core", (Texture)(object)FX.SoftDot, (Facing)0); FX.Burst(obj3, 2, 0f); FX.Life(obj3, 0.2f, 0.3f, 1.6f, 2.2f, 0f, 0f); FX.Colors(obj3, A(Color.white, 0.9f), A(gold, 0f), 0.01f); ParticleSystem obj4 = FX.Particles(obj, "Sparks", (Texture)(object)FX.Spark, (Facing)2); FX.Burst(obj4, 18, 0f); FX.Life(obj4, 0.2f, 0.45f, 0.05f, 0.1f, 6f, 14f); FX.Sphere(obj4, 0.3f, 1f); FX.Drag(obj4, 0.1f); FX.Colors(obj4, A(Color.white, 1f), A(gold, 0f), 0.05f); FX.AddLight(obj, gold, 8f, 6f, 0.35f); return obj; } private static GameObject BloodSpray() { //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) GameObject obj = FX.NewEffect("DioBloodSpray", 1.5f, (string)null); ParticleSystem obj2 = FX.Particles(obj, "Drops", (Texture)(object)FX.Spark, (Facing)2); FX.Burst(obj2, 26, 0f); FX.Life(obj2, 0.4f, 0.8f, 0.05f, 0.11f, 3f, 7f); FX.Sphere(obj2, 0.4f, 1f); FX.Gravity(obj2, 1.2f); FX.Colors(obj2, A(blood, 1f), A(blood * 0.5f, 0.6f), 0.01f); ParticleSystem obj3 = FX.Particles(obj, "Mist", (Texture)(object)FX.SoftDot, (Facing)0); FX.Burst(obj3, 6, 0f); FX.Life(obj3, 0.4f, 0.7f, 0.5f, 0.9f, 0.2f, 0.6f); FX.Sphere(obj3, 0.3f, 1f); FX.Colors(obj3, A(blood, 0.6f), A(blood, 0f), 0.05f); FX.Grow(obj3, 0.6f, 1.3f); return obj; } private static GameObject FrostBurst() { //IL_0052: 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_0061: 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) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) GameObject obj = FX.NewEffect("DioFrostBurst", 1.6f, (string)null); ParticleSystem obj2 = FX.Particles(obj, "Ring", (Texture)(object)FX.Ring, (Facing)1); FX.Burst(obj2, 1, 0f); FX.Life(obj2, 0.5f, 0.5f, 2f, 2f, 0f, 0f); FX.Colors(obj2, A(Color.white, 0.9f), A(frost, 0f), 0.01f); FX.Blast(obj2, 0.1f, 1f); ParticleSystem obj3 = FX.Particles(obj, "Shards", (Texture)(object)FX.Spark, (Facing)2); FX.Burst(obj3, 40, 0f); FX.Life(obj3, 0.35f, 0.8f, 0.06f, 0.14f, 6f, 16f); FX.Sphere(obj3, 0.3f, 1f); FX.Gravity(obj3, 1f); FX.Colors(obj3, A(Color.white, 1f), A(frost, 0f), 0.05f); ParticleSystem obj4 = FX.Particles(obj, "Mist", (Texture)(object)FX.SoftDot, (Facing)0); FX.Burst(obj4, 10, 0f); FX.Life(obj4, 0.6f, 1.1f, 0.6f, 1.2f, 0.3f, 1f); FX.Sphere(obj4, 0.5f, 1f); FX.Colors(obj4, A(frost, 0.5f), A(frost, 0f), 0.05f); FX.Grow(obj4, 0.6f, 1.6f); FX.AddLight(obj, frost, 10f, 5f, 0.4f); return obj; } } public static class DioSounds { public static readonly string[] standPunchSwings = new string[3] { "Play_JJBA_StandSwing1", "Play_JJBA_StandSwing2", "Play_JJBA_StandSwing3" }; public static readonly string[] standPunchHits = new string[3] { "Play_JJBA_StandHit1", "Play_JJBA_StandHit2", "Play_JJBA_StandHit3" }; public static readonly string[] dioSwings = new string[3] { "Play_Kira_Swing1", "Play_Kira_Swing2", "Play_Kira_Swing3" }; public const string dioPunchHit = "Play_bandit2_m2_impact"; private static readonly string[][] punchShouts = new string[3][] { new string[1] { "Play_Dio_Shout1" }, new string[1] { "Play_Dio_Shout2" }, new string[1] { "Play_Dio_Shout3" } }; public const string knifeThrow = "Play_Dio_KnifeThrow"; public const string knifeHit = "Play_JJBA_KnifeHit"; public const string dash = "Play_Dio_Dash"; public const string timeSkip = "Play_Dio_TimeSkip"; public const string timeSkipHit = "Play_Dio_TimeSkipHit"; public const string rushStart = "Play_Dio_Rush"; public const string rushFinish = "Play_Dio_RushFinish"; public const string heatStart = "Play_Dio_HeatStart"; public const string heatHit = "Play_Dio_HeatHit"; public const string ghaHit = "Play_Dio_GhaHit"; public const string ghaAtk = "Play_Dio_GhaAtk"; public const string timeStopCall = "Play_Dio_TheWorld"; public const string timeStop = "Play_JJBA_TimeStop"; public const string timeResume = "Play_JJBA_TimeResume"; public const string timeResumeLine = "Play_Dio_TimeResume"; public const string timeStopShot = "Play_Dio_TimeStopShot"; public const string drainLunge = "Play_Dio_DrainLunge"; public const string drainGrab = "Play_Dio_DrainGrab"; public const string drainSuck = "Play_Dio_DrainSuck"; public const string drainEnd = "Play_Dio_DrainEnd"; public const string knifeWall = "Play_Dio_KnifeWall"; public const string muda = "Play_Dio_Muda"; public const string step = "Play_Dio_Step"; public static string PunchShout(int step) { return Pick(punchShouts[step % punchShouts.Length]); } private static string Pick(string[] options) { return options[Random.Range(0, options.Length)]; } } public static class DioStates { public static void Init() { Content.AddEntityState(typeof(TheWorldPunch)); Content.AddEntityState(typeof(KnifeThrow)); Content.AddEntityState(typeof(MudaRush)); Content.AddEntityState(typeof(TheWorldUltimate)); Content.AddEntityState(typeof(TheWorldTimeStop)); Content.AddEntityState(typeof(TimeSkip)); Content.AddEntityState(typeof(DioHeatAttack)); Content.AddEntityState(typeof(DioHeatStrike)); Content.AddEntityState(typeof(DioRoadRollerCutscene)); Content.AddEntityState(typeof(StingyEyes)); Content.AddEntityState(typeof(VaporizationFreezing)); Content.AddEntityState(typeof(DioFreezeShatter)); Content.AddEntityState(typeof(BehindYou)); Content.AddEntityState(typeof(WryyyDive)); Content.AddEntityState(typeof(WryyyDiveLanding)); Content.AddEntityState(typeof(VampireStrike)); Content.AddEntityState(typeof(MudaFinisher)); Content.AddEntityState(typeof(DioBloodDrain)); Content.AddEntityState(typeof(DioBloodDrink)); Content.AddEntityState(typeof(TimeStoppedState)); } } public static class DioStaticValues { public const float punchDamageCoefficient = 2.6f; public const float dioPunchDamageCoefficient = 1.2f; public const float punchLockOnRange = 15f; public const float punchStandCost = 4f; public const int knivesPerThrow = 3; public const float knifeDamageCoefficient = 1.6f; public const float knifeSpread = 7f; public const float knifeSpeed = 110f; public static readonly Vector3 knifeGhostRotation = new Vector3(0f, 0f, 0f); public const int rushHits = 12; public const float rushHitDamageCoefficient = 0.7f; public const float rushFinisherDamageCoefficient = 5f; public const float rushStandCost = 30f; public const float timeStopDuration = 5f; public const float timeStopStandCost = 50f; public const float timeStopCooldown = 40f; public const float knifeHangDistance = 1.5f; public const float timeSkipDistance = 24f; public const float timeSkipDamageCoefficient = 4f; public const float timeSkipStandCost = 20f; public const float timeSkipCooldown = 8f; public const float heatRange = 30f; public const float heatStandCost = 40f; public const float heatCooldown = 25f; public const float heatHitDamageCoefficient = 3f; public const float heatFinisherDamageCoefficient = 21f; public const float ghaOpeningDamageCoefficient = 3f; public const float ghaLandingDamageCoefficient = 12f; public const float ghaPoundDamageCoefficient = 0.6f; public const float ghaFinaleDamageCoefficient = 30f; public const float drainLungeSpeed = 22f; public const float drainTickDamageCoefficient = 1.2f; public const int drainTicks = 6; public const float drainEndDamageCoefficient = 5f; public const float drainHealFraction = 0.5f; public const float drainStandRestore = 4f; public const float drainStandCost = 10f; public const float drainCooldown = 12f; public const float freezeGrabDamageCoefficient = 2f; public const float freezeShatterDamageCoefficient = 8f; public const float freezeShatterRadius = 9f; public const float freezeStandCost = 15f; public const float freezeCooldown = 10f; public const float vampireDamageCoefficient = 2.4f; public const float vampireHealFraction = 0.12f; public const float stingyEyesDamageCoefficient = 3.2f; public const float stingyEyesRange = 120f; public const float stingyEyesCooldown = 6f; public const float behindYouRange = 30f; public const float behindYouBlinkDistance = 14f; public const float behindYouDamageCoefficient = 5f; public const float behindYouStandCost = 15f; public const float behindYouCooldown = 6f; public const float mudaDamageCoefficient = 3.5f; public const float mudaFinalDamageCoefficient = 9f; public const float mudaStandCost = 25f; public const float mudaCooldown = 8f; public const float diveLeapSpeed = 30f; public const float diveSpeed = 70f; public const float diveStopDuration = 3f; public const float diveDamageCoefficient = 16f; public const float diveRadius = 12f; public const float diveStandCost = 35f; public const float diveCooldown = 25f; } public static class DioTokens { public static void Init() { string text = "KAVAHN_DIO_"; string text2 = "DIO, the vampire of Part 3, and his stand The World.<color=#CCD3E0>\n\n< ! > The World's punches lock on and fly to the enemy, so keep moving while it fights.\n\n< ! > Knives thrown while time is stopped hang in the air and all strike when it starts again.\n\n< ! > Save Road Roller for a boss: on one it becomes a cutscene, on anything else a heavy strike.</color>"; Language.Add(text + "NAME", "Dio Brando"); Language.Add(text + "DESCRIPTION", text2); Language.Add(text + "SUBTITLE", "The World"); Language.Add(text + "LORE", "\"The World! Time, stop!\""); Language.Add(text + "OUTRO_FLAVOR", "...and so he left, to rule the world from the shadows."); Language.Add(text + "OUTRO_FAILURE", "...and so he vanished, turned to ash by the sun."); Language.Add(text + "STAND_NAME", "THE WORLD"); Language.Add(text + "DEFAULT_SKIN_NAME", "Default"); Language.Add(text + "PASSIVE_NAME", "Stand: The World"); Language.Add(text + "PASSIVE_DESCRIPTION", "The World's attacks spend its <style=cIsUtility>stand meter</style>. While it's out, it takes <style=cIsHealing>half the damage</style> aimed at Dio. If the meter runs dry, the stand <style=cDeath>breaks</style>."); Language.Add(text + "PRIMARY_PUNCH_NAME", "The World"); Language.Add(text + "PRIMARY_PUNCH_DESCRIPTION", "<style=cIsUtility>Agile.</style> " + $"<style=cIsUtility>Lock on</style> to an enemy within {15f}m. The World <style=cIsUtility>dashes</style> to it and punches for <style=cIsDamage>{260f}% damage</style>. Without his stand, Dio strikes for <style=cIsDamage>{120.00001f}% damage</style>."); Language.Add(text + "SECONDARY_KNIVES_NAME", "Knife Throw"); Language.Add(text + "SECONDARY_KNIVES_DESCRIPTION", $"Throw a fan of <style=cIsDamage>{3}</style> knives for <style=cIsDamage>{160f}% damage</style> each. In stopped time they <style=cIsUtility>hang in the air</style> until time moves again."); Language.Add(text + "UTILITY_TIMESKIP_NAME", "Time Skip"); Language.Add(text + "UTILITY_TIMESKIP_DESCRIPTION", $"Time stops for an instant and you <style=cIsUtility>dash {24f}m</style> where you aim. The World hits everything in your path for <style=cIsDamage>{400f}% damage</style> and <style=cIsDamage>stuns</style>."); Language.Add(text + "SPECIAL_RUSH_NAME", "MUDA MUDA MUDA"); Language.Add(text + "SPECIAL_RUSH_DESCRIPTION", $"The World punches the locked-on enemy <style=cIsDamage>{12} times for {70f}% damage</style> each, then hits once more for <style=cIsDamage>{500f}% damage</style>."); Language.Add(text + "ULTIMATE_TIMESTOP_NAME", "THE WORLD"); Language.Add(text + "ULTIMATE_TIMESTOP_DESCRIPTION", $"<style=cIsUtility>Ultimate.</style> <style=cIsUtility>Stop time</style> for {5f} seconds. Enemies and their projectiles freeze while you keep moving. Bosses stop for half as long. Costs {50f} stand meter."); Language.Add(text + "TIMESTOP_LABEL", "TIME STOPPED"); Language.Add(text + "ULTIMATE_TITLE", "THE WORLD"); Language.Add(text + "HEAT_NAME", "Road Roller"); Language.Add(text + "HEAT_DESCRIPTION", $"<style=cIsUtility>Heat attack.</style> On a <style=cIsDamage>boss</style>: stop time and crush it under a road roller for up to <style=cIsDamage>{7440f}% damage</style>. Otherwise: appear behind the enemy, jab 3 times for <style=cIsDamage>{300f}% damage</style>, then punch through it for <style=cIsDamage>{2100f}% damage</style>. Costs {40f} stand meter."); Language.Add(text + "GHA_TITLE", "ROAD ROLLER DA!"); Language.Add(text + "STANDSPECIAL_DRAIN_NAME", "Blood Drain"); Language.Add(text + "STANDSPECIAL_DRAIN_DESCRIPTION", $"Lunge and <style=cIsUtility>grab</style> an enemy, then drink its blood: <style=cIsDamage>{6}x{120.00001f}% damage</style>, healing for <style=cIsHealing>{50f}%</style> of it and <style=cIsUtility>refilling the stand meter</style>. Then throw it away for <style=cIsDamage>{500f}% damage</style>."); Language.Add(text + "STANDSPECIAL_FREEZE_NAME", "Vaporization Freezing"); Language.Add(text + "STANDSPECIAL_FREEZE_DESCRIPTION", $"Lunge and grab an enemy, <style=cIsUtility>freezing</style> it for <style=cIsDamage>{200f}% damage</style>. The World shatters it for <style=cIsDamage>{800f}% damage</style>, <style=cIsUtility>freezing</style> everything within {9f}m. Costs {15f} stand meter."); Language.Add(text + "PRIMARY_VAMPIRE_NAME", "Vampire Strikes"); Language.Add(text + "PRIMARY_VAMPIRE_DESCRIPTION", "<style=cIsUtility>Agile.</style> " + $"Claw with your own hands for <style=cIsDamage>{240.00002f}% damage</style>, healing for <style=cIsHealing>{12f}%</style> of the damage dealt. No stand needed."); Language.Add(text + "SECONDARY_EYES_NAME", "Space Ripper Stingy Eyes"); Language.Add(text + "SECONDARY_EYES_DESCRIPTION", $"Fire two high-pressure beams from your eyes for <style=cIsDamage>2x{320f}% damage</style>. They <style=cIsUtility>pierce</style> every enemy in the line. No stand needed."); Language.Add(text + "UTILITY_BEHIND_NAME", "Behind You"); Language.Add(text + "UTILITY_BEHIND_DESCRIPTION", $"Time stops for an instant and you <style=cIsUtility>appear behind</style> the targeted enemy. The World kicks it away for <style=cIsDamage>{500f}% damage</style> and <style=cIsDamage>stuns</style>. With no target, <style=cIsUtility>blink {14f}m</style> ahead. Costs {15f} stand meter."); Language.Add(text + "SPECIAL_MUDA_NAME", "MUDA!"); Language.Add(text + "SPECIAL_MUDA_DESCRIPTION", $"The World flies at the locked-on enemy and lands two blows for <style=cIsDamage>{350f}% damage</style>, then a last one for <style=cIsDamage>{900f}% damage</style>."); Language.Add(text + "ULTIMATE_DIVE_NAME", "WRYYY!"); Language.Add(text + "ULTIMATE_DIVE_DESCRIPTION", $"<style=cIsUtility>Ultimate.</style> Leap high and <style=cIsUtility>stop time</style> for {3f} seconds at the top, then dive at where you aim. The landing hits everything within {12f}m for <style=cIsDamage>{1600f}% damage</style> and <style=cIsDamage>stuns</style>. Costs {35f} stand meter."); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.kavahn.JJBADio", "JJBADio", "1.0.0")] public class DioPlugin : BaseUnityPlugin { private void Awake() { string? directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location); Asset.AddBundleFolder(directoryName); SoundBanks.Add(directoryName, "JJBADio.bnk"); JJBAPlugin.Safely((Action)delegate { ((CharacterBase<DioSurvivor>)(object)new DioSurvivor()).Initialize(); }); } } public class DioSurvivor : SurvivorBase<DioSurvivor> { public const string DIO_PREFIX = "KAVAHN_DIO_"; public const float modelScale = 1.34f; private static bool hooked; public override string assetBundleName => "jjbadio"; public override string bodyName => "KavahnDioBody"; public override string masterName => "KavahnDioMonsterMaster"; public override string modelPrefabName => "mdlDio"; public override string displayPrefabName => "DioDisplay"; public override string survivorTokenPrefix => "KAVAHN_DIO_"; public bool Available { get { if (Object.op_Implicit((Object)(object)((CharacterBase<DioSurvivor>)(object)this).assetBundle)) { return ((CharacterBase<DioSurvivor>)(object)this).assetBundle.Contains(((CharacterBase<DioSurvivor>)(object)this).modelPrefabName); } return false; } } public override BodyInfo bodyInfo => new BodyInfo { bodyName = ((CharacterBase<DioSurvivor>)(object)this).bodyName, bodyNameToken = "KAVAHN_DIO_NAME", subtitleNameToken = "KAVAHN_DIO_SUBTITLE", characterPortrait = Icon<Texture>("texDioIcon", "texHenryIcon"), bodyColor = new Color(0.95f, 0.78f, 0.25f), sortPosition = 104f, crosshair = Asset.LoadCrosshair("Standard"), podPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/NetworkedObjects/SurvivorPod"), maxHealth = 110f, healthRegen = 1.5f, armor = 0f, moveSpeed = 7.5f, jumpCount = 1, cameraParamsVerticalOffset = 1.7f, cameraParamsDepth = -12f }; public override CustomRendererInfo[] customRendererInfos { get { //IL_003e: 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_0045: 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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown ChildLocator val = (Object.op_Implicit((Object)(object)((CharacterBase<DioSurvivor>)(object)this).characterModelObject) ? ((CharacterBase<DioSurvivor>)(object)this).characterModelObject.GetComponent<ChildLocator>() : null); if (!Object.op_Implicit((Object)(object)val)) { return (CustomRendererInfo[])(object)new CustomRendererInfo[0]; } List<CustomRendererInfo> list = new List<CustomRendererInfo>(); NameTransformPair[] transformPairs = val.transformPairs; foreach (NameTransformPair val2 in transformPairs) { if (val2.name.StartsWith("Mesh")) { list.Add(new CustomRendererInfo { childName = val2.name }); } } return list.ToArray(); } } public override UnlockableDef characterUnlockableDef => null; public override ItemDisplaysBase itemDisplays => null; public override AssetBundle assetBundle { get; protected set; } public override GameObject bodyPrefab { get; protected set; } public override CharacterBody prefabCharacterBody { get; protected set; } public override GameObject characterModelObject { get; protected set; } public override CharacterModel prefabCharacterModel { get; protected set; } public override GameObject displayPrefab { get; protected set; } private T Icon<T>(string name, string fallback) where T : Object { T val = ((CharacterBase<DioSurvivor>)(object)this).assetBundle.LoadAsset<T>(name); if (!Object.op_Implicit((Object)(object)val)) { return ((CharacterBase<DioSurvivor>)(object)this).assetBundle.LoadAsset<T>(fallback); } return val; } public override void Initialize() { ((CharacterBase<DioSurvivor>)(object)this).assetBundle = Asset.LoadAssetBundle(((CharacterBase<DioSurvivor>)(object)this).assetBundleName); if (!Available) { Log.Warning((object)"the asset bundle has no dio in it yet, skipping him (rebuild it with Tools/build_bundle.sh)"); } else { ((CharacterBase<DioSurvivor>)(object)this).Initialize(); } } public override void InitializeCharacter() { base.InitializeCharacter(); DioStates.Init(); DioTokens.Init(); DioAssets.Init(((CharacterBase<DioSurvivor>)(object)this).assetBundle); ((CharacterBase<DioSurvivor>)(object)this).InitializeEntityStateMachines(); ((CharacterBase<DioSurvivor>)(object)this).InitializeSkills(); ((CharacterBase<DioSurvivor>)(object)this).InitializeSkins(); ((CharacterBase<DioSurvivor>)(object)this).InitializeCharacterMaster(); AdditionalBodySetup(); } private void AdditionalBodySetup() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_00a1: 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_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: 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_0155: Expected O, but got Unknown Transform transform = ((CharacterBase<DioSurvivor>)(object)this).characterModelObject.transform; transform.localScale *= 1.34f; if (Object.op_Implicit((Object)(object)((SurvivorBase<DioSurvivor>)this).displayPrefab)) { Transform transform2 = ((SurvivorBase<DioSurvivor>)this).displayPrefab.transform; transform2.localScale *= 1.34f; } Prefabs.SetupHitBoxGroup(((CharacterBase<DioSurvivor>)(object)this).characterModelObject, "SwordGroup", new string[1] { "SwordHitbox" }); if (!Object.op_Implicit((Object)(object)((CharacterBase<DioSurvivor>)(object)this).bodyPrefab.GetComponent<AkGameObj>())) { ((CharacterBase<DioSurvivor>)(object)this).bodyPrefab.AddComponent<AkGameObj>(); } ((CharacterBase<DioSurvivor>)(object)this).bodyPrefab.AddComponent<TimeStop>(); Stands.AddStandUser(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, ((CharacterBase<DioSurvivor>)(object)this).bodyName, new StandDefinition { standNameToken = "KAVAHN_DIO_STAND_NAME", color = new Color(1f, 0.82f, 0.25f), standModelPrefab = DioAssets.theWorldModel, modelScale = 1.29f, actionModelScale = 1.5f, standOffset = new Vector3(0.7f, 0f, -1f), standoffFromTarget = 1.3f, hitboxCenter = new Vector3(0f, 0f, 1.2f), hitboxSize = new Vector3(3.3f, 3.3f, 3.5f), maxGauge = 130f }); ((CharacterBase<DioSurvivor>)(object)this).bodyPrefab.AddComponent<StandTracker>().maxTrackingDistance = 15f; ((CharacterBase<DioSurvivor>)(object)this).bodyPrefab.AddComponent<DioAura>(); if (!hooked) { hooked = true; GlobalEventManager.onServerDamageDealt += OnServerDamageDealt; } GameObject[] array = (GameObject[])(object)new GameObject[2] { ((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, ((SurvivorBase<DioSurvivor>)this).displayPrefab }; foreach (GameObject val in array) { if (Object.op_Implicit((Object)(object)val)) { val.AddComponent<SoundbankLoader>().soundbankStrings = SharedEffects.vanillaSoundbanks; } } } private static void OnServerDamageDealt(DamageReport report) { //IL_0028: 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_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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) DamageInfo damageInfo = report.damageInfo; CharacterBody attackerBody = report.attackerBody; if (damageInfo == null || !Object.op_Implicit((Object)(object)attackerBody) || !Object.op_Implicit((Object)(object)attackerBody.healthComponent)) { return; } if (DamageAPI.HasModdedDamageType(damageInfo, DioAssets.vampireDamageType)) { attackerBody.healthComponent.Heal(report.damageDealt * 0.12f, default(ProcChainMask), true); } if (DamageAPI.HasModdedDamageType(damageInfo, DioAssets.drainDamageType)) { attackerBody.healthComponent.Heal(report.damageDealt * 0.5f, default(ProcChainMask), true); StandUser component = ((Component)attackerBody).GetComponent<StandUser>(); if (Object.op_Implicit((Object)(object)component)) { component.Restore(4f); } } } public override void InitializeEntityStateMachines() { Prefabs.ClearEntityStateMachines(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab); Prefabs.AddMainEntityStateMachine(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, "Body", typeof(GenericCharacterMain), typeof(SpawnTeleporterState)); Prefabs.AddEntityStateMachine(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, "Weapon", (Type)null, (Type)null, true, true); Prefabs.AddEntityStateMachine(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, "Weapon2", (Type)null, (Type)null, true, true); } public override void InitializeSkills() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0061: 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_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Expected O, but got Unknown //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Expected O, but got Unknown //IL_013f: 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_014f: 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_0165: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Expected O, but got Unknown //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Expected O, but got Unknown //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Expected O, but got Unknown //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_0311: Unknown result type (might be due to invalid IL or missing references) //IL_0325: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_036a: Expected O, but got Unknown //IL_03ce: Unknown result type (might be due to invalid IL or missing references) //IL_03d3: Unknown result type (might be due to invalid IL or missing references) //IL_03e7: Unknown result type (might be due to invalid IL or missing references) //IL_044e: Unknown result type (might be due to invalid IL or missing references) //IL_0455: Expected O, but got Unknown //IL_04b1: Unknown result type (might be due to invalid IL or missing references) //IL_04b6: Unknown result type (might be due to invalid IL or missing references) //IL_04ca: Unknown result type (might be due to invalid IL or missing references) //IL_0510: Unknown result type (might be due to invalid IL or missing references) //IL_0517: Expected O, but got Unknown //IL_0573: Unknown result type (might be due to invalid IL or missing references) //IL_0578: Unknown result type (might be due to invalid IL or missing references) //IL_058c: Unknown result type (might be due to invalid IL or missing references) //IL_05ed: Unknown result type (might be due to invalid IL or missing references) //IL_05f4: Expected O, but got Unknown //IL_0650: Unknown result type (might be due to invalid IL or missing references) //IL_0655: Unknown result type (might be due to invalid IL or missing references) //IL_0669: Unknown result type (might be due to invalid IL or missing references) //IL_06b7: Unknown result type (might be due to invalid IL or missing references) //IL_06be: Expected O, but got Unknown //IL_0722: Unknown result type (might be due to invalid IL or missing references) //IL_0727: Unknown result type (might be due to invalid IL or missing references) //IL_073b: Unknown result type (might be due to invalid IL or missing references) //IL_07a3: Unknown result type (might be due to invalid IL or missing references) //IL_07aa: Expected O, but got Unknown //IL_0806: Unknown result type (might be due to invalid IL or missing references) //IL_080b: Unknown result type (might be due to invalid IL or missing references) //IL_081f: Unknown result type (might be due to invalid IL or missing references) //IL_0894: Unknown result type (might be due to invalid IL or missing references) //IL_089b: Expected O, but got Unknown //IL_08ff: Unknown result type (might be due to invalid IL or missing references) //IL_0904: Unknown result type (might be due to invalid IL or missing references) //IL_0918: Unknown result type (might be due to invalid IL or missing references) //IL_0987: Unknown result type (might be due to invalid IL or missing references) //IL_098e: Expected O, but got Unknown //IL_09ea: Unknown result type (might be due to invalid IL or missing references) //IL_09ef: Unknown result type (might be due to invalid IL or missing references) //IL_0a03: Unknown result type (might be due to invalid IL or missing references) Skills.ClearGenericSkills(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab); ((CharacterBase<DioSurvivor>)(object)this).bodyPrefab.GetComponent<SkillLocator>().passiveSkill = new PassiveSkill { enabled = true, skillNameToken = "KAVAHN_DIO_PASSIVE_NAME", skillDescriptionToken = "KAVAHN_DIO_PASSIVE_DESCRIPTION", keywordToken = "KEYWORD_JJBA_STAND", icon = Icon<Sprite>("texDioPassive", "texPassiveIcon") }; Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, (SkillSlot)0, false); SteppedSkillDef val = Skills.CreateSkillDef<SteppedSkillDef>(new SkillDefInfo("DioTheWorld", "KAVAHN_DIO_PRIMARY_PUNCH_NAME", "KAVAHN_DIO_PRIMARY_PUNCH_DESCRIPTION", Icon<Sprite>("texDioPrimary", "texPrimaryIcon"), new SerializableEntityStateType(typeof(TheWorldPunch)), "Weapon", true)); val.stepCount = 3; val.stepGraceDuration = 0.5f; SteppedSkillDef val2 = Skills.CreateSkillDef<SteppedSkillDef>(new SkillDefInfo("DioVampireStrikes", "KAVAHN_DIO_PRIMARY_VAMPIRE_NAME", "KAVAHN_DIO_PRIMARY_VAMPIRE_DESCRIPTION", Icon<Sprite>("texDioPrimaryVampire", "texPrimaryIcon"), new SerializableEntityStateType(typeof(VampireStrike)), "Weapon", true)); val2.stepCount = 3; val2.stepGraceDuration = 0.5f; Skills.AddPrimarySkills(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, (SkillDef[])(object)new SkillDef[2] { (SkillDef)val, (SkillDef)val2 }); Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, (SkillSlot)1, false); SkillDef val3 = Skills.CreateSkillDef(new SkillDefInfo { skillName = "DioKnifeThrow", skillNameToken = "KAVAHN_DIO_SECONDARY_KNIVES_NAME", skillDescriptionToken = "KAVAHN_DIO_SECONDARY_KNIVES_DESCRIPTION", skillIcon = Icon<Sprite>("texDioSecondary", "texSecondaryIcon"), activationState = new SerializableEntityStateType(typeof(KnifeThrow)), activationStateMachineName = "Weapon2", interruptPriority = (InterruptPriority)1, baseRechargeInterval = 3.5f, baseMaxStock = 2, rechargeStock = 1, requiredStock = 1, stockToConsume = 1, fullRestockOnAssign = true, mustKeyPress = false, isCombatSkill = true, cancelSprintingOnActivation = true }); SkillDef val4 = Skills.CreateSkillDef(new SkillDefInfo { skillName = "DioStingyEyes", skillNameToken = "KAVAHN_DIO_SECONDARY_EYES_NAME", skillDescriptionToken = "KAVAHN_DIO_SECONDARY_EYES_DESCRIPTION", skillIcon = Icon<Sprite>("texDioSecondaryFan", "texSecondaryIcon"), activationState = new SerializableEntityStateType(typeof(StingyEyes)), activationStateMachineName = "Weapon2", interruptPriority = (InterruptPriority)1, baseRechargeInterval = 6f, baseMaxStock = 1, fullRestockOnAssign = true, mustKeyPress = false, isCombatSkill = true, cancelSprintingOnActivation = true }); Skills.AddSecondarySkills(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, (SkillDef[])(object)new SkillDef[2] { val3, val4 }); Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, (SkillSlot)2, false); SkillDefInfo val5 = new SkillDefInfo(); val5.skillName = "DioTimeSkip"; val5.skillNameToken = "KAVAHN_DIO_UTILITY_TIMESKIP_NAME"; val5.skillDescriptionToken = "KAVAHN_DIO_UTILITY_TIMESKIP_DESCRIPTION"; val5.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val5.skillIcon = Icon<Sprite>("texDioUtility", "texUtilityIcon"); val5.activationState = new SerializableEntityStateType(typeof(TimeSkip)); val5.activationStateMachineName = "Body"; val5.interruptPriority = (InterruptPriority)2; val5.baseRechargeInterval = 8f; val5.baseMaxStock = 1; val5.fullRestockOnAssign = true; val5.isCombatSkill = true; StandSkillDef val6 = Skills.CreateSkillDef<StandSkillDef>(val5); val6.standCost = 20f; val5 = new SkillDefInfo(); val5.skillName = "DioBehindYou"; val5.skillNameToken = "KAVAHN_DIO_UTILITY_BEHIND_NAME"; val5.skillDescriptionToken = "KAVAHN_DIO_UTILITY_BEHIND_DESCRIPTION"; val5.keywordTokens = new string[2] { "KEYWORD_JJBA_STAND", "KEYWORD_STUNNING" }; val5.skillIcon = Icon<Sprite>("texDioUtilityStep", "texUtilityIcon"); val5.activationState = new SerializableEntityStateType(typeof(BehindYou)); val5.activationStateMachineName = "Body"; val5.interruptPriority = (InterruptPriority)2; val5.baseRechargeInterval = 6f; val5.baseMaxStock = 1; val5.fullRestockOnAssign = true; val5.isCombatSkill = true; StandSkillDef val7 = Skills.CreateSkillDef<StandSkillDef>(val5); val7.standCost = 15f; Skills.AddUtilitySkills(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, (SkillDef[])(object)new SkillDef[2] { (SkillDef)val6, (SkillDef)val7 }); Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, (SkillSlot)3, false); val5 = new SkillDefInfo(); val5.skillName = "DioMudaRush"; val5.skillNameToken = "KAVAHN_DIO_SPECIAL_RUSH_NAME"; val5.skillDescriptionToken = "KAVAHN_DIO_SPECIAL_RUSH_DESCRIPTION"; val5.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val5.skillIcon = Icon<Sprite>("texDioSpecial", "texSpecialIcon"); val5.activationState = new SerializableEntityStateType(typeof(MudaRush)); val5.activationStateMachineName = "Weapon2"; val5.interruptPriority = (InterruptPriority)1; val5.baseRechargeInterval = 9f; val5.baseMaxStock = 1; val5.fullRestockOnAssign = true; val5.isCombatSkill = true; val5.cancelSprintingOnActivation = true; StandSkillDef val8 = Skills.CreateSkillDef<StandSkillDef>(val5); val8.standCost = 30f; val5 = new SkillDefInfo(); val5.skillName = "DioMudaFinisher"; val5.skillNameToken = "KAVAHN_DIO_SPECIAL_MUDA_NAME"; val5.skillDescriptionToken = "KAVAHN_DIO_SPECIAL_MUDA_DESCRIPTION"; val5.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val5.skillIcon = Icon<Sprite>("texDioSpecialMuda", "texSpecialIcon"); val5.activationState = new SerializableEntityStateType(typeof(MudaFinisher)); val5.activationStateMachineName = "Weapon2"; val5.interruptPriority = (InterruptPriority)1; val5.baseRechargeInterval = 8f; val5.baseMaxStock = 1; val5.fullRestockOnAssign = true; val5.isCombatSkill = true; val5.cancelSprintingOnActivation = true; StandSkillDef val9 = Skills.CreateSkillDef<StandSkillDef>(val5); val9.standCost = 25f; Skills.AddSpecialSkills(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, (SkillDef[])(object)new SkillDef[2] { (SkillDef)val8, (SkillDef)val9 }); val5 = new SkillDefInfo(); val5.skillName = "DioBloodDrain"; val5.skillNameToken = "KAVAHN_DIO_STANDSPECIAL_DRAIN_NAME"; val5.skillDescriptionToken = "KAVAHN_DIO_STANDSPECIAL_DRAIN_DESCRIPTION"; val5.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val5.skillIcon = Icon<Sprite>("texDioDrain", "texSpecialIcon"); val5.activationState = new SerializableEntityStateType(typeof(DioBloodDrain)); val5.activationStateMachineName = "Body"; val5.interruptPriority = (InterruptPriority)2; val5.baseRechargeInterval = 12f; val5.baseMaxStock = 1; val5.fullRestockOnAssign = true; val5.mustKeyPress = true; val5.isCombatSkill = true; val5.cancelSprintingOnActivation = true; StandSkillDef val10 = Skills.CreateSkillDef<StandSkillDef>(val5); val10.standCost = 10f; val5 = new SkillDefInfo(); val5.skillName = "DioVaporizationFreezing"; val5.skillNameToken = "KAVAHN_DIO_STANDSPECIAL_FREEZE_NAME"; val5.skillDescriptionToken = "KAVAHN_DIO_STANDSPECIAL_FREEZE_DESCRIPTION"; val5.keywordTokens = new string[2] { "KEYWORD_JJBA_STAND", "KEYWORD_FREEZING" }; val5.skillIcon = Icon<Sprite>("texDioWall", "texSecondaryIcon"); val5.activationState = new SerializableEntityStateType(typeof(VaporizationFreezing)); val5.activationStateMachineName = "Body"; val5.interruptPriority = (InterruptPriority)2; val5.baseRechargeInterval = 10f; val5.baseMaxStock = 1; val5.fullRestockOnAssign = true; val5.mustKeyPress = true; val5.isCombatSkill = true; val5.cancelSprintingOnActivation = true; StandSkillDef val11 = Skills.CreateSkillDef<StandSkillDef>(val5); val11.standCost = 15f; Skills.AddSkillToFamily(ExtraSkills.AddStandSpecial(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, (SkillDef)(object)val10).skillFamily, (SkillDef)(object)val11, (UnlockableDef)null); val5 = new SkillDefInfo(); val5.skillName = "DioTimeStop"; val5.skillNameToken = "KAVAHN_DIO_ULTIMATE_TIMESTOP_NAME"; val5.skillDescriptionToken = "KAVAHN_DIO_ULTIMATE_TIMESTOP_DESCRIPTION"; val5.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val5.skillIcon = Icon<Sprite>("texDioUltimate", "texSpecialIcon"); val5.activationState = new SerializableEntityStateType(typeof(TheWorldUltimate)); val5.activationStateMachineName = "Weapon2"; val5.interruptPriority = (InterruptPriority)1; val5.baseRechargeInterval = 40f; val5.baseMaxStock = 1; val5.fullRestockOnAssign = true; val5.mustKeyPress = true; val5.isCombatSkill = true; val5.cancelSprintingOnActivation = true; StandSkillDef val12 = Skills.CreateSkillDef<StandSkillDef>(val5); val12.standCost = 50f; GenericSkill val13 = Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, "TheWorld", "Ultimate", false); Skills.AddSkillToFamily(val13.skillFamily, (SkillDef)(object)val12, (UnlockableDef)null); val5 = new SkillDefInfo(); val5.skillName = "DioWryyyDive"; val5.skillNameToken = "KAVAHN_DIO_ULTIMATE_DIVE_NAME"; val5.skillDescriptionToken = "KAVAHN_DIO_ULTIMATE_DIVE_DESCRIPTION"; val5.keywordTokens = new string[2] { "KEYWORD_JJBA_STAND", "KEYWORD_STUNNING" }; val5.skillIcon = Icon<Sprite>("texDioQuickStop", "texSpecialIcon"); val5.activationState = new SerializableEntityStateType(typeof(WryyyDive)); val5.activationStateMachineName = "Body"; val5.interruptPriority = (InterruptPriority)2; val5.baseRechargeInterval = 25f; val5.baseMaxStock = 1; val5.fullRestockOnAssign = true; val5.mustKeyPress = true; val5.isCombatSkill = true; val5.cancelSprintingOnActivation = true; StandSkillDef val14 = Skills.CreateSkillDef<StandSkillDef>(val5); val14.standCost = 35f; Skills.AddSkillToFamily(val13.skillFamily, (SkillDef)(object)val14, (UnlockableDef)null); ExtraSkills.Slots(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab).skill = val13; val5 = new SkillDefInfo(); val5.skillName = "DioRoadRoller"; val5.skillNameToken = "KAVAHN_DIO_HEAT_NAME"; val5.skillDescriptionToken = "KAVAHN_DIO_HEAT_DESCRIPTION"; val5.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val5.skillIcon = Icon<Sprite>("texDioHeat", "texSpecialIcon"); val5.activationState = new SerializableEntityStateType(typeof(DioHeatAttack)); val5.activationStateMachineName = "Body"; val5.interruptPriority = (InterruptPriority)2; val5.baseRechargeInterval = 25f; val5.baseMaxStock = 1; val5.fullRestockOnAssign = true; val5.mustKeyPress = true; val5.isCombatSkill = true; val5.cancelSprintingOnActivation = true; StandSkillDef val15 = Skills.CreateSkillDef<StandSkillDef>(val5); val15.standCost = 40f; GenericSkill val16 = Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, "HeatAttack", "HeatAttack", false); Skills.AddSkillToFamily(val16.skillFamily, (SkillDef)(object)val15, (UnlockableDef)null); ExtraSkills.Slots(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab).heatAttack = val16; } public override void InitializeSkins() { ModelSkinController obj = ((Component)((CharacterBase<DioSurvivor>)(object)this).prefabCharacterModel).gameObject.AddComponent<ModelSkinController>(); SkinDef val = Skins.CreateSkinDef("DEFAULT_SKIN", Icon<Sprite>("texDioSkin", "texMainSkin"), ((CharacterBase<DioSurvivor>)(object)this).prefabCharacterModel.baseRendererInfos, ((Component)((CharacterBase<DioSurvivor>)(object)this).prefabCharacterModel).gameObject, (UnlockableDef)null); obj.skins = (SkinDef[])(object)new SkinDef[1] { val }; } public override void InitializeCharacterMaster() { DioAI.Init(((CharacterBase<DioSurvivor>)(object)this).bodyPrefab, ((SurvivorBase<DioSurvivor>)this).masterName); } } } namespace JJBAMod.Survivors.Dio.SkillStates { public class VampireStrike : BaseMeleeAttack { public override void OnEnter() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) base.hitboxGroupName = "SwordGroup"; base.damageType = DamageTypeCombo.GenericPrimary; base.damageCoefficient = 2.4f; base.procCoefficient = 1f; base.pushForce = 250f; base.baseDuration = 0.7f; base.attackStartPercentTime = 0.2f; base.attackEndPercentTime = 0.45f; base.earlyExitPercentTime = 0.55f; base.hitStopDuration = 0.03f; base.attackRecoil = 0.5f; base.hitHopVelocity = 5f; base.muzzleString = ((base.swingIndex % 2 == 0) ? "SwingLeft" : "SwingRight"); base.swingSoundString = DioSounds.dioSwings[base.swingIndex % DioSounds.dioSwings.Length]; base.swingEffectPrefab = SharedEffects.punchSwingEffect; base.hitEffectPrefab = (Object.op_Implicit((Object)(object)DioFX.bloodSpray) ? DioFX.bloodSpray : SharedEffects.punchHitImpactEffect); base.impactSound = DioAssets.dioPunchHitSoundEvent.index; ((BaseMeleeAttack)this).OnEnter(); if (base.swingIndex == 2) { Util.PlaySound(DioSounds.PunchShout(base.swingIndex), ((EntityState)this).gameObject); } } protected override void ModifyOverlapAttack(OverlapAttack attack) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) ((BaseMeleeAttack)this).ModifyOverlapAttack(attack); DamageAPI.AddModdedDamageType(attack, DioAssets.vampireDamageType); } } public class MudaFinisher : BaseSkillState { public static float baseDuration = 1.1f; private static readonly float[] hitTimes = new float[3] { 0.15f, 0.4f, 0.75f }; private float duration; private int hitIndex; private StandUser standUser; private OverlapAttack attack; private Vector3 aim; private readonly List<HurtBox> hits = new List<HurtBox>(); public override void OnEnter() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0151: 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_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: 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_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Expected O, but got Unknown //IL_00bf: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; standUser = ((EntityState)this).GetComponent<StandUser>(); Ray aimRay = ((BaseState)this).GetAimRay(); aim = ((Ray)(ref aimRay)).direction; ((BaseState)this).StartAimMode(duration + 0.3f, false); if (Object.op_Implicit((Object)(object)standUser)) { standUser.UseStand(25f); object obj; if (!((EntityState)this).isAuthority) { obj = null; } else { StandTracker obj2 = StandTracker.Of(((EntityState)this).gameObject); obj = ((obj2 != null) ? obj2.GetTrackingTarget() : null); } HurtBox val = (HurtBox)obj; if (Object.op_Implicit((Object)(object)val)) { standUser.BeginTargetedAction(val, duration, hitTimes[0] * duration); } else { standUser.BeginAction(aim, 2.6f, duration); } standUser.PlayStandAnimation("Muda1", 0.05f); } ((EntityState)this).PlayCrossfade("Gesture, Override", "StandPunch3", "Slash.playbackRate", duration, 0.05f); Util.PlaySound("Play_Dio_Muda", ((EntityState)this).gameObject); DioAura.Surge(((EntityState)this).gameObject, duration + 0.3f); attack = new OverlapAttack { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = ((BaseState)this).GetTeam(), procCoefficient = 1f, hitEffectPrefab = SharedEffects.punchHitImpactEffect, hitBoxGroup = ((Object.op_Implicit((Object)(object)standUser) && Object.op_Implicit((Object)(object)standUser.hitBoxGroup)) ? standUser.hitBoxGroup : ((BaseState)this).FindHitBoxGroup("SwordGroup")), isCrit = ((BaseState)this).RollCrit(), damageType = DamageTypeCombo.GenericSpecial, impactSound = DioAssets.standPunchHitSoundEvents[0].index }; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); while (hitIndex < hitTimes.Length && ((EntityState)this).fixedAge >= hitTimes[hitIndex] * duration) { Hit(hitIndex++); } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Hit(int index) { //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Expected O, but got Unknown //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) bool flag = index == hitTimes.Length - 1; if (index > 0 && Object.op_Implicit((Object)(object)standUser)) { standUser.PlayStandAnimation("Muda" + (1 + index), 0.05f); } Util.PlaySound(DioSounds.standPunchSwings[index % DioSounds.standPunchSwings.Length], Object.op_Implicit((Object)(object)standUser) ? standUser.StandObject : ((EntityState)this).gameObject); if (flag) { Util.PlaySound(DioSounds.PunchShout(2), ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)DioFX.goldFlash) && Object.op_Implicit((Object)(object)standUser)) { EffectManager.SpawnEffect(DioFX.goldFlash, new EffectData { origin = standUser.ActionPoint, scale = 1.2f }, false); } } if (((EntityState)this).isAuthority) { Vector3 val = new Vector3(aim.x, 0f, aim.z); Vector3 normalized = ((Vector3)(ref val)).normalized; attack.ResetIgnoredHealthComponents(); attack.damage = (flag ? 9f : 3.5f) * ((BaseState)this).damageStat; attack.forceVector = (flag ? (normalized * 4000f + Vector3.up * 1500f) : (normalized * 400f)); attack.damageType = (flag ? DamageTypeCombo.GenericSpecial : (DamageTypeCombo.GenericSpecial | DamageTypeCombo.op_Implicit((DamageType)32))); hits.Clear(); attack.Fire(hits); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class DioBloodDrain : BaseSkillState { public static float lungeTime = 0.35f; private Vector3 lungeDirection; private OverlapAttack attack; private readonly List<HurtBox> hits = new List<HurtBox>(); protected virtual float StandCost => 10f; public override void OnEnter() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: 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_0030: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); StandUser component = ((EntityState)this).GetComponent<StandUser>(); if (Object.op_Implicit((Object)(object)component)) { component.UseStand(StandCost); } Ray aimRay = ((BaseState)this).GetAimRay(); lungeDirection = ((Ray)(ref aimRay)).direction; lungeDirection.y = Mathf.Clamp(lungeDirection.y, -0.2f, 0.25f); ((Vector3)(ref lungeDirection)).Normalize(); Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(lungeDirection.x, 0f, lungeDirection.z); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) && ((Vector3)(ref val)).sqrMagnitude > 0.01f) { ((EntityState)this).characterDirection.forward = ((Vector3)(ref val)).normalized; } ((EntityState)this).PlayAnimation("FullBody, Override", "DrainStart", "ShootGun.playbackRate", lungeTime, 0f); Util.PlaySound("Play_Dio_DrainLunge", ((EntityState)this).gameObject); DioAura.Surge(((EntityState)this).gameObject, lungeTime + 0.3f); attack = LungeAttack(); } protected virtual OverlapAttack LungeAttack() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return DioBloodDrink.MakeAttack(((EntityState)this).gameObject, ((BaseState)this).GetTeam(), 1.2f * ((BaseState)this).damageStat, ((BaseState)this).RollCrit(), ((BaseState)this).FindHitBoxGroup("SwordGroup")); } protected virtual EntityState Caught(HurtBoxReference victim) { //IL_0006: 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 (EntityState)(object)new DioBloodDrink { victim = victim }; } public override void FixedUpdate() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (!((EntityState)this).isAuthority) { return; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = lungeDirection * 22f; } hits.Clear(); if (attack.Fire(hits) && hits.Count > 0) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } ((EntityState)this).outer.SetNextState(Caught(HurtBoxReference.FromHurtBox(hits[0]))); } else if (((EntityState)this).fixedAge >= lungeTime) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity *= 0.2f; } ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class DioBloodDrink : BaseSkillState { public static float grabTime = 0.25f; public static float tickInterval = 0.2f; public static float endTime = 0.45f; public HurtBoxReference victim; private HurtBox victimBox; private OverlapAttack attack; private int ticks; private bool ending; private float endAge; private bool thrown; private readonly List<HurtBox> hits = new List<HurtBox>(); public static OverlapAttack MakeAttack(GameObject owner, TeamIndex team, float damage, bool crit, HitBoxGroup group) { //IL_0000: 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) //IL_000c: 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_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0021: 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_0034: 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_003c: 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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_005d: Expected O, but got Unknown //IL_005e: Expected O, but got Unknown OverlapAttack val = new OverlapAttack { attacker = owner, inflictor = owner, teamIndex = team, damage = damage, procCoefficient = 0.5f, hitBoxGroup = group, isCrit = crit, damageType = (DamageTypeCombo.GenericSpecial | DamageTypeCombo.op_Implicit((DamageType)32)) }; DamageAPI.AddModdedDamageType(val, DioAssets.drainDamageType); return val; } public override void OnEnter() { //IL_0077: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); victimBox = ((HurtBoxReference)(ref victim)).ResolveHurtBox(); ((EntityState)this).PlayAnimation("FullBody, Override", "DrainGrab", "ShootGun.playbackRate", grabTime, 0f); Util.PlaySound("Play_Dio_DrainGrab", ((EntityState)this).gameObject); Blood(); DioAura.Surge(((EntityState)this).gameObject, grabTime + tickInterval * 6f + endTime); attack = MakeAttack(((EntityState)this).gameObject, ((BaseState)this).GetTeam(), 1.2f * ((BaseState)this).damageStat, ((BaseState)this).RollCrit(), ((BaseState)this).FindHitBoxGroup("SwordGroup")); } public override void FixedUpdate() { //IL_0021: 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_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Expected O, but got Unknown ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } if (!ending) { if (!(((EntityState)this).fixedAge < grabTime)) { int num = Mathf.Min(6, 1 + (int)((((EntityState)this).fixedAge - grabTime) / tickInterval)); while (ticks < num) { Tick(ticks++); } bool flag = Object.op_Implicit((Object)(object)victimBox) && Object.op_Implicit((Object)(object)victimBox.healthComponent) && victimBox.healthComponent.alive; if (ticks >= 6 || (((EntityState)this).isAuthority && !flag && ticks > 0)) { End(); } } return; } endAge += Time.fixedDeltaTime; if (!thrown && endAge >= endTime * 0.3f) { thrown = true; if (((EntityState)this).isAuthority) { attack.ResetIgnoredHealthComponents(); attack.damage = 5f * ((BaseState)this).damageStat; attack.damageType = DamageTypeCombo.GenericSpecial; attack.forceVector = ((EntityState)this).transform.forward * 3000f + Vector3.up * 1200f; hits.Clear(); attack.Fire(hits); } if (Object.op_Implicit((Object)(object)DioFX.goldFlash) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { EffectManager.SpawnEffect(DioFX.goldFlash, new EffectData { origin = ((EntityState)this).characterBody.corePosition + ((EntityState)this).transform.forward, scale = 1f }, false); } } if (((EntityState)this).isAuthority && endAge >= endTime) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Tick(int index) { if (index == 0) { ((EntityState)this).PlayCrossfade("FullBody, Override", "DrainLoop", "ShootGun.playbackRate", tickInterval * 2f, 0.05f); } if (index % 2 == 0) { Util.PlaySound("Play_Dio_DrainSuck", ((EntityState)this).gameObject); } Blood(); if (((EntityState)this).isAuthority) { attack.ResetIgnoredHealthComponents(); hits.Clear(); attack.Fire(hits); } } private void End() { ending = true; ((EntityState)this).PlayAnimation("FullBody, Override", "DrainEnd", "ShootGun.playbackRate", endTime, 0f); Util.PlaySound("Play_Dio_DrainEnd", ((EntityState)this).gameObject); } private void Blood() { //IL_001e: 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_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)DioFX.bloodSpray) && Object.op_Implicit((Object)(object)victimBox)) { EffectManager.SpawnEffect(DioFX.bloodSpray, new EffectData { origin = ((Component)victimBox).transform.position, scale = 1f }, false); } } public override void OnSerialize(NetworkWriter writer) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) ((BaseSkillState)this).OnSerialize(writer); NetworkExtensions.Write(writer, victim); } public override void OnDeserialize(NetworkReader reader) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) ((BaseSkillState)this).OnDeserialize(reader); victim = NetworkExtensions.ReadHurtBoxReference(reader); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)7; } } public class DioHeatAttack : BaseSkillState { public static float bossStartDuration = 4f / 15f; private HurtBoxReference targetReference; private HurtBox target; private bool boss; private StandUser standUser; public override void OnEnter() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); standUser = ((EntityState)this).GetComponent<StandUser>(); if (((EntityState)this).isAuthority) { target = FindTarget(); targetReference = HurtBoxReference.FromHurtBox(target); } else { target = ((HurtBoxReference)(ref targetReference)).ResolveHurtBox(); } CharacterBody val = ((Object.op_Implicit((Object)(object)target) && Object.op_Implicit((Object)(object)target.healthComponent)) ? target.healthComponent.body : null); boss = Object.op_Implicit((Object)(object)val) && (val.isChampion || val.isBoss); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } if (Object.op_Implicit((Object)(object)target)) { Vector3 val2 = ((Component)target).transform.position - ((EntityState)this).transform.position; val2.y = 0f; if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) && ((Vector3)(ref val2)).sqrMagnitude > 0.01f) { ((EntityState)this).characterDirection.forward = ((Vector3)(ref val2)).normalized; } } if (Object.op_Implicit((Object)(object)standUser)) { standUser.UseStand(40f); } if (boss) { ((EntityState)this).PlayAnimation("FullBody, Override", "GhaStart", "ShootGun.playbackRate", bossStartDuration, 0f); if (Object.op_Implicit((Object)(object)standUser)) { standUser.PlayStandAnimation("GhaStart", 0.05f); } Util.PlaySound("Play_Dio_HeatStart", ((EntityState)this).gameObject); } if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.HiddenInvincibility, bossStartDuration + 0.2f); } } private HurtBox FindTarget() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: 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_0036: 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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: 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_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) StandTracker val = StandTracker.Of(((EntityState)this).gameObject); HurtBox val2 = (Object.op_Implicit((Object)(object)val) ? val.GetTrackingTarget() : null); if (Object.op_Implicit((Object)(object)val2)) { return val2; } Ray aimRay = ((BaseState)this).GetAimRay(); BullseyeSearch val3 = new BullseyeSearch { teamMaskFilter = TeamMask.GetEnemyTeams(((BaseState)this).GetTeam()), filterByLoS = true, searchOrigin = ((Ray)(ref aimRay)).origin, searchDirection = ((Ray)(ref aimRay)).direction, sortMode = (SortMode)3, maxDistanceFilter = 30f, maxAngleFilter = 45f }; val3.RefreshCandidates(); val3.FilterOutGameObject(((EntityState)this).gameObject); return val3.GetResults().FirstOrDefault(); } public override void FixedUpdate() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } if (((EntityState)this).isAuthority) { if (!boss) { ((EntityState)this).outer.SetNextState((EntityState)(object)new DioHeatStrike { targetReference = targetReference }); } else if (((EntityState)this).fixedAge >= bossStartDuration) { ((EntityState)this).outer.SetNextState((EntityState)(object)new DioRoadRollerCutscene { targetReference = targetReference }); } } } public override void OnSerialize(NetworkWriter writer) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) ((BaseSkillState)this).OnSerialize(writer); NetworkExtensions.Write(writer, targetReference); } public override void OnDeserialize(NetworkReader reader) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) ((BaseSkillState)this).OnDeserialize(reader); targetReference = NetworkExtensions.ReadHurtBoxReference(reader); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)7; } } public class DioHeatStrike : BaseState { public HurtBoxReference targetReference; public static float arriveTime = 0.15f; public static float[] jabTimes = new float[3] { 0.4f, 0.52f, 0.64f }; public static float windupTime = 0.75f; public static float donutTime = 0.95f; public static float duration = 1.6f; public static float stopDuration = 1.1f; public static float behindGap = 2.5f; private HurtBox target; private StandUser standUser; private CharacterModel characterModel; private HurtBoxGroup hurtBoxGroup; private bool hidden; private bool arrived; private int jabIndex; private bool woundUp; private bool donut; private Vector3 forward; public override void OnEnter() { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); standUser = ((EntityState)this).GetComponent<StandUser>(); target = ((HurtBoxReference)(ref targetReference)).ResolveHurtBox(); forward = (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).transform.forward); Util.PlaySound("Play_JJBA_TimeStop", ((EntityState)this).gameObject); Util.PlaySound("Play_Dio_TimeSkip", ((EntityState)this).gameObject); TimeStop component = ((EntityState)this).GetComponent<TimeStop>(); if (Object.op_Implicit((Object)(object)component) && !component.Running) { component.Begin(stopDuration); } DioAura.Surge(((EntityState)this).gameObject, duration); ((EntityState)this).PlayAnimation("Gesture, Override", "Blink", "ThrowBomb.playbackRate", arriveTime + 0.15f, 0f); Flash(((EntityState)this).characterBody.corePosition, 1f); DioAfterimage.Spawn(((EntityState)this).characterBody, 0.7f, 0.7f); Hide(hide: true); if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.ArmorBoost, duration); } } public override void FixedUpdate() { //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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = new Vector3(0f, Mathf.Min(((EntityState)this).characterMotor.velocity.y, 0f), 0f); } if (!arrived && ((EntityState)this).fixedAge >= arriveTime) { Arrive(); } while (arrived && jabIndex < jabTimes.Length && ((EntityState)this).fixedAge >= jabTimes[jabIndex]) { if (Object.op_Implicit((Object)(object)standUser)) { standUser.PlayStandAnimation("Muda" + (1 + jabIndex % 3), 0.05f); } jabIndex++; Hit(3f, 200f, finisher: false); } if (arrived && !woundUp && ((EntityState)this).fixedAge >= windupTime) { woundUp = true; if (Object.op_Implicit((Object)(object)standUser)) { standUser.PlayStandAnimation("Punch3", 0.05f); } ((EntityState)this).PlayCrossfade("Gesture, Override", "StandPunch3", "Slash.playbackRate", duration - windupTime, 0.05f); Util.PlaySound(DioSounds.PunchShout(3), ((EntityState)this).gameObject); } if (arrived && !donut && ((EntityState)this).fixedAge >= donutTime) { donut = true; Donut(); } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Arrive() { //IL_0084: 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_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0042: 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_00e3: 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) arrived = true; if (((EntityState)this).isAuthority && TargetAlive()) { Vector3 facing; Vector3 val = BehindTarget(out facing); TeleportHelper.TeleportBody(((EntityState)this).characterBody, val + Vector3.up * 0.1f, false); forward = facing; if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.forward = facing; } } Hide(hide: false); DioAfterimage.Spawn(((EntityState)this).characterBody); Flash(((EntityState)this).characterBody.corePosition, 0.8f); Util.PlaySound("Play_Dio_HeatStart", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)standUser)) { if (TargetAlive()) { standUser.BeginTargetedAction(target, duration - arriveTime, 0.2f); } else { standUser.BeginAction(forward, 3f, duration - arriveTime); } standUser.PlayStandAnimation("Appear", 0.05f); } } private Vector3 BehindTarget(out Vector3 facing) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) return BehindSpot(((EntityState)this).characterBody, target, forward, behindGap, out facing); } public static Vector3 Beh