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 Pucci v1.0.1
plugins/JJBAPucci.dll
Decompiled 11 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using EntityStates; using HG; using JJBAMod.Modules; using JJBAMod.Modules.BaseStates; using JJBAMod.Modules.Characters; using JJBAMod.Modules.Stands; using JJBAMod.Survivors.Pucci.Components; using JJBAMod.Survivors.Pucci.SkillStates; using R2API; using R2API.Utils; using RoR2; using RoR2.CharacterAI; using RoR2.Projectile; using RoR2.Skills; using RoR2.WwiseUtils; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [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("JJBAPucci")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("JJBAPucci")] [assembly: AssemblyTitle("JJBAPucci")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace JJBAMod.Survivors.Pucci { public static class PucciAI { 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 PucciAssets { public class Spin : MonoBehaviour { private void Update() { if (((Component)this).transform.childCount > 0) { ((Component)this).transform.GetChild(0).Rotate(0f, 1080f * Time.deltaTime, 0f, (Space)1); } } } public static GameObject[] standModels = (GameObject[])(object)new GameObject[3]; public static GameObject discProjectilePrefab; public static GameObject hallucinationEffect; public static NetworkSoundEventDef[] standPunchHitSoundEvents; public static NetworkSoundEventDef pucciPunchHitSoundEvent; public static NetworkSoundEventDef discHitSoundEvent; public static ModdedDamageType discDamageType; public static BuffDef stageBuff; public static BuffDef soulsBuff; public static BuffDef accelerationBuff; public static BuffDef resetUsedBuff; public static GameObject rockProjectilePrefab; private static AssetBundle _assetBundle; public static void Init(AssetBundle assetBundle) { //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: 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_017e: 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_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: 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_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) _assetBundle = assetBundle; standPunchHitSoundEvents = (NetworkSoundEventDef[])(object)new NetworkSoundEventDef[PucciSounds.standPunchHits.Length]; for (int i = 0; i < standPunchHitSoundEvents.Length; i++) { standPunchHitSoundEvents[i] = Content.CreateAndAddNetworkSoundEventDef(PucciSounds.standPunchHits[i]); } pucciPunchHitSoundEvent = Content.CreateAndAddNetworkSoundEventDef("Play_bandit2_m2_impact"); discHitSoundEvent = Content.CreateAndAddNetworkSoundEventDef("Play_JJBA_KnifeHit"); string[] array = new string[3] { "mdlWhiteSnake", "mdlCMoon", "mdlMadeInHeaven" }; for (int j = 0; j < array.Length; j++) { standModels[j] = _assetBundle.LoadAsset<GameObject>(array[j]); if (!Object.op_Implicit((Object)(object)standModels[j])) { continue; } Asset.ConvertAllRenderersToHopooShader(standModels[j]); if (j != 2) { continue; } foreach (Transform item in standModels[j].transform) { item.localScale *= 1.35f; item.localPosition *= 1.35f; } } discDamageType = DamageAPI.ReserveDamageType(); stageBuff = Content.CreateAndAddBuff("bdPucciStage", Icon("texPucciCMoon"), new Color(0.6f, 0.95f, 0.6f), true, false); soulsBuff = Content.CreateAndAddBuff("bdPucciSouls", Icon("texPucciPassive"), new Color(0.85f, 0.85f, 1f), true, false); accelerationBuff = Content.CreateAndAddBuff("bdPucciAcceleration", Icon("texPucciMadeInHeaven"), new Color(0.9f, 0.95f, 1f), true, false); resetUsedBuff = Content.CreateAndAddBuff("bdPucciResetUsed", Icon("texPucciMadeInHeaven"), Color.gray, false, false); resetUsedBuff.isHidden = true; PucciCutscene.track = StandCinematic.LoadTrack(_assetBundle.LoadAsset<TextAsset>("PucciUltimateCamera")); CreateDisc(); CreateHallucinationEffect(); if (Object.op_Implicit((Object)(object)discProjectilePrefab)) { Content.AddProjectilePrefab(discProjectilePrefab); } CreateRock(); } private static void CreateHallucinationEffect() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Expected O, but got Unknown //IL_00f3: Unknown result type (might be due to invalid IL or missing references) GameObject val = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/ExplosionGreaterWisp"); if (!Object.op_Implicit((Object)(object)val)) { return; } hallucinationEffect = PrefabAPI.InstantiateClone(val, "PucciHallucinationEffect", false); ParticleSystem[] componentsInChildren = hallucinationEffect.GetComponentsInChildren<ParticleSystem>(true); foreach (ParticleSystem obj in componentsInChildren) { MainModule main = obj.main; ((MainModule)(ref main)).startColor = new MinMaxGradient(Color.white); ColorOverLifetimeModule colorOverLifetime = obj.colorOverLifetime; ((ColorOverLifetimeModule)(ref colorOverLifetime)).enabled = false; } Renderer[] componentsInChildren2 = hallucinationEffect.GetComponentsInChildren<Renderer>(true); foreach (Renderer val2 in componentsInChildren2) { Material[] sharedMaterials = val2.sharedMaterials; for (int j = 0; j < sharedMaterials.Length; j++) { if (!Object.op_Implicit((Object)(object)sharedMaterials[j])) { continue; } sharedMaterials[j] = new Material(sharedMaterials[j]); string[] array = new string[3] { "_TintColor", "_Color", "_EmColor" }; foreach (string text in array) { if (sharedMaterials[j].HasProperty(text)) { sharedMaterials[j].SetColor(text, Color.white); } } if (sharedMaterials[j].HasProperty("_RemapTex")) { sharedMaterials[j].SetTexture("_RemapTex", (Texture)null); } } val2.sharedMaterials = sharedMaterials; } Light[] componentsInChildren3 = hallucinationEffect.GetComponentsInChildren<Light>(true); for (int i = 0; i < componentsInChildren3.Length; i++) { componentsInChildren3[i].color = Color.white; } Content.CreateAndAddEffectDef(hallucinationEffect); } private static Sprite Icon(string name) { Sprite val = _assetBundle.LoadAsset<Sprite>(name); if (!Object.op_Implicit((Object)(object)val)) { return _assetBundle.LoadAsset<Sprite>("texPassiveIcon"); } return val; } private static void CreateDisc() { //IL_00ff: 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) discProjectilePrefab = Asset.CloneProjectilePrefab("CommandoGrenadeProjectile", "PucciDiscProjectile"); Object.DestroyImmediate((Object)(object)discProjectilePrefab.GetComponent<ProjectileImpactExplosion>()); ApplyTorqueOnStart component = discProjectilePrefab.GetComponent<ApplyTorqueOnStart>(); if (Object.op_Implicit((Object)(object)component)) { Object.DestroyImmediate((Object)(object)component); } ProjectileSingleTargetImpact obj = discProjectilePrefab.AddComponent<ProjectileSingleTargetImpact>(); obj.destroyOnWorld = true; obj.destroyWhenNotAlive = true; obj.impactEffect = SharedEffects.punchHitImpactEffect; obj.enemyHitSound = discHitSoundEvent; Rigidbody component2 = discProjectilePrefab.GetComponent<Rigidbody>(); if (Object.op_Implicit((Object)(object)component2)) { component2.useGravity = false; component2.freezeRotation = true; component2.collisionDetectionMode = (CollisionDetectionMode)2; } SphereCollider component3 = discProjectilePrefab.GetComponent<SphereCollider>(); if (Object.op_Implicit((Object)(object)component3)) { component3.radius = 0.25f; } ProjectileSimple val = discProjectilePrefab.GetComponent<ProjectileSimple>(); if (!Object.op_Implicit((Object)(object)val)) { val = discProjectilePrefab.AddComponent<ProjectileSimple>(); } val.desiredForwardSpeed = 90f; val.updateAfterFiring = true; val.lifetime = 1.5f; discProjectilePrefab.AddComponent<KnifeCollisionGuard>(); discProjectilePrefab.AddComponent<ModdedDamageTypeHolderComponent>().Add(discDamageType); ProjectileController component4 = discProjectilePrefab.GetComponent<ProjectileController>(); component4.startSound = ""; component4.procCoefficient = 1f; if ((Object)(object)_assetBundle.LoadAsset<GameObject>("PucciDiscGhost") != (Object)null) { GameObject val2 = Asset.CreateProjectileGhostPrefab(_assetBundle, "PucciDiscGhost"); val2.transform.localScale = Vector3.one * 2f; val2.AddComponent<Spin>(); component4.ghostPrefab = val2; } } private static void CreateRock() { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0131: 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_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)discProjectilePrefab)) { return; } rockProjectilePrefab = PrefabAPI.InstantiateClone(discProjectilePrefab, "PucciRockProjectile", true); Object.DestroyImmediate((Object)(object)rockProjectilePrefab.GetComponent<ProjectileSingleTargetImpact>()); ProjectileImpactExplosion obj = rockProjectilePrefab.AddComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)obj).blastRadius = 6f; ((ProjectileExplosion)obj).blastDamageCoefficient = 1f; ((ProjectileExplosion)obj).blastProcCoefficient = 1f; obj.destroyOnEnemy = true; obj.destroyOnWorld = true; obj.lifetime = 5f; obj.timerAfterImpact = false; ((ProjectileExplosion)obj).falloffModel = (FalloffModel)0; obj.impactEffect = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/BeetleGuardGroundSlam") ?? LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OmniEffect/OmniExplosionVFX"); SphereCollider component = rockProjectilePrefab.GetComponent<SphereCollider>(); if (Object.op_Implicit((Object)(object)component)) { component.radius = 0.8f; } ProjectileSimple component2 = rockProjectilePrefab.GetComponent<ProjectileSimple>(); if (Object.op_Implicit((Object)(object)component2)) { component2.desiredForwardSpeed = 70f; } ProjectileController component3 = rockProjectilePrefab.GetComponent<ProjectileController>(); GameObject val = LegacyResourcesAPI.Load<GameObject>("Prefabs/ProjectileGhosts/GrandparentMiniBoulderGhost"); if (!Object.op_Implicit((Object)(object)val)) { try { val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Grandparent/GrandparentMiniBoulderGhost.prefab").WaitForCompletion(); } catch (Exception) { } } if (Object.op_Implicit((Object)(object)val)) { GameObject val2 = PrefabAPI.InstantiateClone(val, "PucciRockGhost", false); Transform transform = val2.transform; transform.localScale *= 1.6f; component3.ghostPrefab = val2; } Content.AddProjectilePrefab(rockProjectilePrefab); } } public static class PucciSounds { 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[] pucciSwings = new string[3] { "Play_Kira_Swing1", "Play_Kira_Swing2", "Play_Kira_Swing3" }; public const string pucciPunchHit = "Play_bandit2_m2_impact"; private static readonly string[] punchShouts = new string[3] { "Play_Pucci_Shout1", "Play_Pucci_Shout2", "Play_Pucci_Shout3" }; public const string discThrow = "Play_Pucci_Disc"; public const string discHit = "Play_JJBA_KnifeHit"; public const string dash = "Play_Pucci_Dash"; public const string rushStart = "Play_Pucci_Rush"; public const string rushFinish = "Play_Pucci_RushFinish"; public const string universeReset = "Play_Pucci_UniverseReset"; public const string madeInHeavenDash = "Play_Pucci_MiHDash"; public const string acceleration = "Play_Pucci_Accelerate"; public const string evolve = "Play_Pucci_Evolve"; public static readonly string[] standSpecial = new string[3] { "Play_Pucci_Disc", "Play_Pucci_CMoon", "Play_Pucci_Accelerate" }; public static readonly string[] ultimate = new string[3] { "Play_Pucci_WhiteSnake", "Play_Pucci_CMoon", "Play_Pucci_MadeInHeaven" }; public static string PunchShout(int step) { return punchShouts[step % punchShouts.Length]; } } public static class PucciStates { public static void Init() { Content.AddEntityState(typeof(PucciPunch)); Content.AddEntityState(typeof(DiscThrow)); Content.AddEntityState(typeof(PucciDash)); Content.AddEntityState(typeof(PucciRush)); Content.AddEntityState(typeof(PucciUltimate)); Content.AddEntityState(typeof(PucciCutscene)); Content.AddEntityState(typeof(PucciStandSpecial)); } } public static class PucciStaticValues { public const float punchDamageCoefficient = 2.5f; public const float pucciPunchDamageCoefficient = 1.2f; public const float punchLockOnRange = 15f; public const float punchStandCost = 4f; public const float discDamageCoefficient = 3f; public const float discSpeed = 90f; public const float discStealDuration = 4f; public const int madeInHeavenDiscs = 3; public const float cMoonLaunchForce = 2500f; public const float dashDamageCoefficient = 3.5f; public const float dashStandCost = 18f; public const int rushHits = 12; public const float rushHitDamageCoefficient = 0.7f; public const float rushFinisherDamageCoefficient = 5f; public const float rushStandCost = 30f; public const int stagesPerEvolution = 3; public const float damagePerStage = 0.2f; public const float madeInHeavenMoveSpeed = 0.3f; public const float madeInHeavenAttackSpeed = 0.2f; public const float ultimateStandCost = 40f; public const float ultimateCooldown = 30f; public const float hallucinationRadius = 30f; public const float hallucinationDuration = 6f; public const float gravityRadius = 25f; public const float gravityDuration = 8f; public const float gravityDamageCoefficientPerSecond = 2.5f; public const float gravityPull = 45f; public const float rockDamageCoefficient = 5f; public const float rockBlastRadius = 6f; public const float rockSpeed = 70f; public const float resetDuration = 8f; public const float resetTimeScale = 3f; public const float resetDayCycles = 12f; public const float resetClockSpeed = 60f; public const int accelerationMaxLevel = 3; public const float accelerationRadius = 80f; public const float accelerationMoveSpeedPerLevel = 0.4f; public const float accelerationAttackSpeedPerLevel = 0.3f; public const float accelerationCooldownPerLevel = 0.15f; public const float accelerationDrainPerLevel = 4f; public const float accelerationRestorePerHit = 2.5f; public const float standSpecialCost = 25f; public const float standSpecialCooldown = 10f; public const float commandDiscDuration = 12f; public const float commandDiscBossDamageCoefficient = 10f; public const float inversionTouchDamageCoefficient = 5f; public const float inversionHealthShare = 0.25f; public const float inversionBossHealthShare = 0.06f; public const int inversionBleedStacks = 5; public const float slashDistance = 24f; public const float slashRadius = 3.5f; public const int slashHits = 4; public const float slashDamageCoefficient = 2.2f; } public static class PucciTokens { public static void Init() { string text = "KAVAHN_PUCCI_"; string text2 = "Enrico Pucci and White Snake, the stand that evolves on his way to heaven.<color=#CCD3E0>\n\n" + $"< ! > Every {3} stages, White Snake evolves: first C-Moon, then Made in Heaven, each with its own cutscene from All-Star Battle R." + "\n\n" + $"< ! > Each new stand changes several of your skills and gives +{20f}% damage." + "\n\n< ! > Your stand stays evolved for the rest of the run.</color>"; Language.Add(text + "NAME", "Enrico Pucci"); Language.Add(text + "DESCRIPTION", text2); Language.Add(text + "SUBTITLE", "The Path to Heaven"); Language.Add(text + "LORE", "\"Spiral staircase. Rhinoceros beetle. Desolation row. Fig tart...\""); Language.Add(text + "OUTRO_FLAVOR", "...and so he left, one step closer to heaven."); Language.Add(text + "OUTRO_FAILURE", "...and so he vanished, his heaven never reached."); Language.Add(text + "STAND_NAME", "WHITE SNAKE"); Language.Add(text + "DEFAULT_SKIN_NAME", "Default"); Language.Add(text + "PASSIVE_NAME", "Stand: White Snake"); Language.Add(text + "PASSIVE_DESCRIPTION", $"Your stand uses the <style=cIsUtility>stand meter</style>. Every <style=cIsUtility>{3} stages</style> it evolves: White Snake becomes <style=cIsUtility>C-Moon</style>, then <style=cIsUtility>Made in Heaven</style>. Each stand adds <style=cIsDamage>+{20f}% damage</style>."); Language.Add(text + "PRIMARY_PUNCH_NAME", "Stand Strike"); Language.Add(text + "PRIMARY_PUNCH_DESCRIPTION", "<style=cIsUtility>Agile.</style>" + $"<style=cIsUtility>Lock on</style> to an enemy within {15f}m. Your stand flies to it and strikes for <style=cIsDamage>{250f}% damage</style>."); Language.Add(text + "SECONDARY_DISC_NAME", "Stand Disc"); Language.Add(text + "SECONDARY_DISC_DESCRIPTION", $"Throw a disc for <style=cIsDamage>{300f}% damage</style> that <style=cIsUtility>steals</style> the enemy's power, <style=cIsDamage>crippling</style> it for {4f}s. <style=cIsUtility>C-Moon:</style> hurls a boulder instead, bursting for <style=cIsDamage>{500f}% damage</style> around where it lands. <style=cIsUtility>Made in Heaven:</style> throw {3}."); Language.Add(text + "UTILITY_DASH_NAME", "Stand Charge"); Language.Add(text + "UTILITY_DASH_DESCRIPTION", $"<style=cIsUtility>Dash</style> forward behind your stand, which strikes everything in your path for <style=cIsDamage>{350f}% damage</style>. <style=cIsUtility>Made in Heaven:</style> the dash is <style=cIsUtility>instant</style>, up to {24f}m, cutting everything along it <style=cIsDamage>{4} times for {220f}% damage</style>."); Language.Add(text + "SPECIAL_RUSH_NAME", "Stand Barrage"); Language.Add(text + "SPECIAL_RUSH_DESCRIPTION", $"Your stand hits the locked-on enemy <style=cIsDamage>{12} times for {70f}% damage</style> each, then once more for <style=cIsDamage>{500f}% damage</style>."); Language.Add(text + "ULTIMATE_WHITESNAKE_NAME", "Melting Hallucination"); Language.Add(text + "ULTIMATE_WHITESNAKE_DESCRIPTION", $"<style=cIsUtility>Ultimate.</style> Every enemy within {30f}m is <style=cIsUtility>slowed</style> and <style=cIsDamage>crippled</style> for {6f}s, and you turn <style=cIsUtility>invisible</style>. Changes as your stand evolves."); Language.Add(text + "ULTIMATE_CMOON_NAME", "Gravity"); Language.Add(text + "ULTIMATE_CMOON_DESCRIPTION", $"<style=cIsUtility>Ultimate.</style> C-Moon bends gravity around you for {8f}s: everything within {25f}m is <style=cIsUtility>forced to the ground</style>, slowed, and takes <style=cIsDamage>{250f}% damage</style> every second."); Language.Add(text + "ULTIMATE_MIH_NAME", "Universe Reset"); Language.Add(text + "ULTIMATE_MIH_DESCRIPTION", "<style=cIsUtility>Ultimate. Once per run.</style> Made in Heaven speeds time up to its end. For a few seconds the game runs faster, the sun spins through day and night, the run clock jumps ahead (difficulty rises with it) and the sky turns to stars. Then the run <style=cIsUtility>loops back to a first stage</style>."); Language.Add(text + "UNIVERSE_RESET", "<color=#E6F0FF>Time has accelerated to its end. The universe begins again.</color>"); Language.Add(text + "TITLE_WHITESNAKE", "MELTING HALLUCINATION"); Language.Add(text + "TITLE_CMOON", "C-MOON"); Language.Add(text + "TITLE_MIH", "MADE IN HEAVEN"); Language.Add(text + "STANDSPECIAL_WHITESNAKE_NAME", "Command Disc"); Language.Add(text + "STANDSPECIAL_WHITESNAKE_DESCRIPTION", $"<style=cIsUtility>Stand special.</style> White Snake pushes a command disc into the locked-on enemy: it <style=cIsUtility>fights for you</style> for {12f}s. Bosses resist, taking <style=cIsDamage>{1000f}% damage</style> and a <style=cIsDamage>stun</style> instead."); Language.Add(text + "STANDSPECIAL_CMOON_NAME", "Surface Inversion"); Language.Add(text + "STANDSPECIAL_CMOON_DESCRIPTION", $"<style=cIsUtility>Stand special.</style> C-Moon's touch turns the enemy <style=cIsDamage>inside out</style>: <style=cIsDamage>{500f}% damage</style> plus <style=cIsDamage>{25f}% of its max health</style> ({6f}% for bosses), and heavy <style=cIsDamage>bleeding</style>."); Language.Add(text + "STANDSPECIAL_MIH_NAME", "Time Acceleration"); Language.Add(text + "STANDSPECIAL_MIH_DESCRIPTION", $"<style=cIsUtility>Stand special.</style> Each press speeds time up one level, up to {3}. One more press turns it off. Each level: <style=cIsUtility>+{40f}% move speed</style>, <style=cIsDamage>+{30.000002f}% attack speed</style>, faster cooldowns, and enemies within {80f}m are slowed more. Drains <style=cIsUtility>{4f} meter per second per level</style>; every hit you land refunds {2.5f}."); Language.Add(text + "SOULS_NAME", "Stages toward evolution"); Language.Add(text + "EVOLVE_CMOON", "<color=#9EF29E>White Snake has become C-MOON.</color>"); Language.Add(text + "EVOLVE_MIH", "<color=#E6F0FF>C-Moon has become MADE IN HEAVEN.</color>"); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.kavahn.JJBAPucci", "JJBAPucci", "1.0.1")] public class PucciPlugin : BaseUnityPlugin { private void Awake() { string? directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location); Asset.AddBundleFolder(directoryName); SoundBanks.Add(directoryName, "JJBAPucci.bnk"); JJBAPlugin.Safely((Action)delegate { ((CharacterBase<PucciSurvivor>)(object)new PucciSurvivor()).Initialize(); }); } } public class PucciSurvivor : SurvivorBase<PucciSurvivor> { public class UniverseResetSkillDef : StandSkillDef { protected override bool StandAvailable(GenericSkill skillSlot) { PucciEvolution pucciEvolution = (Object.op_Implicit((Object)(object)skillSlot.characterBody) ? ((Component)skillSlot.characterBody).GetComponent<PucciEvolution>() : null); if (((StandSkillDef)this).StandAvailable(skillSlot)) { if (Object.op_Implicit((Object)(object)pucciEvolution)) { return !pucciEvolution.ResetUsed; } return true; } return false; } } public const string PUCCI_PREFIX = "KAVAHN_PUCCI_"; public const float modelScale = 1.34f; public static readonly SkillDef[] standSpecialDefs = (SkillDef[])(object)new SkillDef[3]; public static readonly SkillDef[] ultimateDefs = (SkillDef[])(object)new SkillDef[3]; public override string assetBundleName => "jjbapucci"; public override string bodyName => "KavahnPucciBody"; public override string masterName => "KavahnPucciMonsterMaster"; public override string modelPrefabName => "mdlPucci"; public override string displayPrefabName => "PucciDisplay"; public override string survivorTokenPrefix => "KAVAHN_PUCCI_"; public bool Available { get { if (Object.op_Implicit((Object)(object)((CharacterBase<PucciSurvivor>)(object)this).assetBundle)) { return ((CharacterBase<PucciSurvivor>)(object)this).assetBundle.Contains(((CharacterBase<PucciSurvivor>)(object)this).modelPrefabName); } return false; } } public override BodyInfo bodyInfo => new BodyInfo { bodyName = ((CharacterBase<PucciSurvivor>)(object)this).bodyName, bodyNameToken = "KAVAHN_PUCCI_NAME", subtitleNameToken = "KAVAHN_PUCCI_SUBTITLE", characterPortrait = Icon<Texture>("texPucciIcon", "texHenryIcon"), bodyColor = new Color(0.55f, 0.85f, 0.55f), sortPosition = 102f, crosshair = Asset.LoadCrosshair("Standard"), podPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/NetworkedObjects/SurvivorPod"), maxHealth = 120f, 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<PucciSurvivor>)(object)this).characterModelObject) ? ((CharacterBase<PucciSurvivor>)(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<PucciSurvivor>)(object)this).assetBundle.LoadAsset<T>(name); if (!Object.op_Implicit((Object)(object)val)) { return ((CharacterBase<PucciSurvivor>)(object)this).assetBundle.LoadAsset<T>(fallback); } return val; } public override void Initialize() { ((CharacterBase<PucciSurvivor>)(object)this).assetBundle = Asset.LoadAssetBundle(((CharacterBase<PucciSurvivor>)(object)this).assetBundleName); if (!Available) { Log.Warning((object)"the asset bundle has no pucci in it yet, skipping him (rebuild it with Tools/build_bundle.sh)"); } else { ((CharacterBase<PucciSurvivor>)(object)this).Initialize(); } } public override void InitializeCharacter() { base.InitializeCharacter(); PucciStates.Init(); PucciTokens.Init(); PucciAssets.Init(((CharacterBase<PucciSurvivor>)(object)this).assetBundle); PucciEvolution.Init(); ((CharacterBase<PucciSurvivor>)(object)this).InitializeEntityStateMachines(); ((CharacterBase<PucciSurvivor>)(object)this).InitializeSkills(); ((CharacterBase<PucciSurvivor>)(object)this).InitializeSkins(); ((CharacterBase<PucciSurvivor>)(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_0067: 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_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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_011b: 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_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Expected O, but got Unknown Transform transform = ((CharacterBase<PucciSurvivor>)(object)this).characterModelObject.transform; transform.localScale *= 1.34f; if (Object.op_Implicit((Object)(object)((SurvivorBase<PucciSurvivor>)this).displayPrefab)) { Transform transform2 = ((SurvivorBase<PucciSurvivor>)this).displayPrefab.transform; transform2.localScale *= 1.34f; ((SurvivorBase<PucciSurvivor>)this).displayPrefab.transform.localRotation = Quaternion.Euler(0f, 70f, 0f) * ((SurvivorBase<PucciSurvivor>)this).displayPrefab.transform.localRotation; } Prefabs.SetupHitBoxGroup(((CharacterBase<PucciSurvivor>)(object)this).characterModelObject, "SwordGroup", new string[1] { "SwordHitbox" }); if (!Object.op_Implicit((Object)(object)((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab.GetComponent<AkGameObj>())) { ((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab.AddComponent<AkGameObj>(); } Stands.AddStandUser(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, ((CharacterBase<PucciSurvivor>)(object)this).bodyName, new StandDefinition { standNameToken = "KAVAHN_PUCCI_STAND_NAME", color = new Color(0.65f, 0.95f, 0.65f), standModelPrefab = PucciAssets.standModels[0], 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<PucciSurvivor>)(object)this).bodyPrefab.AddComponent<PucciEvolution>(); ((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab.AddComponent<PucciAcceleration>(); ((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab.AddComponent<StandTracker>().maxTrackingDistance = 15f; GameObject[] array = (GameObject[])(object)new GameObject[2] { ((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, ((SurvivorBase<PucciSurvivor>)this).displayPrefab }; foreach (GameObject val in array) { if (Object.op_Implicit((Object)(object)val)) { val.AddComponent<SoundbankLoader>().soundbankStrings = SharedEffects.vanillaSoundbanks; } } } public override void InitializeEntityStateMachines() { Prefabs.ClearEntityStateMachines(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab); Prefabs.AddMainEntityStateMachine(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, "Body", typeof(GenericCharacterMain), typeof(SpawnTeleporterState)); Prefabs.AddEntityStateMachine(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, "Weapon", (Type)null, (Type)null, true, true); Prefabs.AddEntityStateMachine(((CharacterBase<PucciSurvivor>)(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_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0110: 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_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: 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_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015f: 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_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Expected O, but got Unknown //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Expected O, but got Unknown //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Expected O, but got Unknown //IL_02ff: Unknown result type (might be due to invalid IL or missing references) //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Expected O, but got Unknown //IL_0432: Unknown result type (might be due to invalid IL or missing references) //IL_0437: Unknown result type (might be due to invalid IL or missing references) //IL_044b: Unknown result type (might be due to invalid IL or missing references) //IL_05ce: Unknown result type (might be due to invalid IL or missing references) //IL_05d5: Expected O, but got Unknown //IL_04d8: Unknown result type (might be due to invalid IL or missing references) //IL_04df: Expected O, but got Unknown //IL_0672: Unknown result type (might be due to invalid IL or missing references) //IL_0677: Unknown result type (might be due to invalid IL or missing references) //IL_068b: Unknown result type (might be due to invalid IL or missing references) //IL_0570: Unknown result type (might be due to invalid IL or missing references) //IL_0575: Unknown result type (might be due to invalid IL or missing references) //IL_0589: Unknown result type (might be due to invalid IL or missing references) Skills.ClearGenericSkills(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab); ((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab.GetComponent<SkillLocator>().passiveSkill = new PassiveSkill { enabled = true, skillNameToken = "KAVAHN_PUCCI_PASSIVE_NAME", skillDescriptionToken = "KAVAHN_PUCCI_PASSIVE_DESCRIPTION", keywordToken = "KEYWORD_JJBA_STAND", icon = Icon<Sprite>("texPucciPassive", "texPassiveIcon") }; Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, (SkillSlot)0, false); SteppedSkillDef val = Skills.CreateSkillDef<SteppedSkillDef>(new SkillDefInfo("PucciStandStrike", "KAVAHN_PUCCI_PRIMARY_PUNCH_NAME", "KAVAHN_PUCCI_PRIMARY_PUNCH_DESCRIPTION", Icon<Sprite>("texPucciPrimary", "texPrimaryIcon"), new SerializableEntityStateType(typeof(PucciPunch)), "Weapon", true)); val.stepCount = 3; val.stepGraceDuration = 0.5f; Skills.AddPrimarySkills(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, (SkillDef[])(object)new SkillDef[1] { (SkillDef)val }); Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, (SkillSlot)1, false); SkillDef val2 = Skills.CreateSkillDef(new SkillDefInfo { skillName = "PucciDiscThrow", skillNameToken = "KAVAHN_PUCCI_SECONDARY_DISC_NAME", skillDescriptionToken = "KAVAHN_PUCCI_SECONDARY_DISC_DESCRIPTION", skillIcon = Icon<Sprite>("texPucciSecondary", "texSecondaryIcon"), activationState = new SerializableEntityStateType(typeof(DiscThrow)), activationStateMachineName = "Weapon2", interruptPriority = (InterruptPriority)1, baseRechargeInterval = 3.5f, baseMaxStock = 2, rechargeStock = 1, requiredStock = 1, stockToConsume = 1, fullRestockOnAssign = true, mustKeyPress = false, isCombatSkill = true, cancelSprintingOnActivation = true }); Skills.AddSecondarySkills(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, (SkillDef[])(object)new SkillDef[1] { val2 }); Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, (SkillSlot)2, false); SkillDefInfo val3 = new SkillDefInfo(); val3.skillName = "PucciStandCharge"; val3.skillNameToken = "KAVAHN_PUCCI_UTILITY_DASH_NAME"; val3.skillDescriptionToken = "KAVAHN_PUCCI_UTILITY_DASH_DESCRIPTION"; val3.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val3.skillIcon = Icon<Sprite>("texPucciUtility", "texUtilityIcon"); val3.activationState = new SerializableEntityStateType(typeof(PucciDash)); val3.activationStateMachineName = "Body"; val3.interruptPriority = (InterruptPriority)2; val3.baseRechargeInterval = 6f; val3.baseMaxStock = 1; val3.fullRestockOnAssign = true; val3.isCombatSkill = true; val3.forceSprintDuringState = true; StandSkillDef val4 = Skills.CreateSkillDef<StandSkillDef>(val3); val4.standCost = 18f; Skills.AddUtilitySkills(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, (SkillDef[])(object)new SkillDef[1] { (SkillDef)val4 }); Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, (SkillSlot)3, false); val3 = new SkillDefInfo(); val3.skillName = "PucciStandBarrage"; val3.skillNameToken = "KAVAHN_PUCCI_SPECIAL_RUSH_NAME"; val3.skillDescriptionToken = "KAVAHN_PUCCI_SPECIAL_RUSH_DESCRIPTION"; val3.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val3.skillIcon = Icon<Sprite>("texPucciSpecial", "texSpecialIcon"); val3.activationState = new SerializableEntityStateType(typeof(PucciRush)); val3.activationStateMachineName = "Weapon2"; val3.interruptPriority = (InterruptPriority)1; val3.baseRechargeInterval = 9f; val3.baseMaxStock = 1; val3.fullRestockOnAssign = true; val3.isCombatSkill = true; val3.cancelSprintingOnActivation = true; StandSkillDef val5 = Skills.CreateSkillDef<StandSkillDef>(val3); val5.standCost = 30f; Skills.AddSpecialSkills(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, (SkillDef[])(object)new SkillDef[1] { (SkillDef)val5 }); string[] array = new string[3] { "WHITESNAKE", "CMOON", "MIH" }; for (int i = 0; i < array.Length; i++) { val3 = new SkillDefInfo(); val3.skillName = "PucciStandSpecial" + i; val3.skillNameToken = "KAVAHN_PUCCI_STANDSPECIAL_" + array[i] + "_NAME"; val3.skillDescriptionToken = "KAVAHN_PUCCI_STANDSPECIAL_" + array[i] + "_DESCRIPTION"; val3.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val3.skillIcon = Icon<Sprite>("texPucciStandSpecial" + i, "texPucciSecondary"); val3.activationState = new SerializableEntityStateType(typeof(PucciStandSpecial)); val3.activationStateMachineName = "Weapon2"; val3.interruptPriority = (InterruptPriority)1; val3.baseRechargeInterval = 10f; val3.baseMaxStock = 1; val3.fullRestockOnAssign = true; val3.mustKeyPress = true; val3.isCombatSkill = true; val3.cancelSprintingOnActivation = true; StandSkillDef val6 = Skills.CreateSkillDef<StandSkillDef>(val3); val6.standCost = 25f; if (i == 2) { val6.standCost = 1f; ((SkillDef)val6).baseRechargeInterval = 0.3f; ((SkillDef)val6).cancelSprintingOnActivation = false; ((SkillDef)val6).isCombatSkill = false; } standSpecialDefs[i] = (SkillDef)(object)val6; object obj; if (i != 2) { val3 = new SkillDefInfo(); val3.skillName = "PucciUltimate" + i; val3.skillNameToken = "KAVAHN_PUCCI_ULTIMATE_" + array[i] + "_NAME"; val3.skillDescriptionToken = "KAVAHN_PUCCI_ULTIMATE_" + array[i] + "_DESCRIPTION"; val3.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val3.skillIcon = Icon<Sprite>((i == 0) ? "texPucciUltimate" : "texPucciCMoon", "texSpecialIcon"); val3.activationState = new SerializableEntityStateType(typeof(PucciUltimate)); val3.activationStateMachineName = "Weapon2"; val3.interruptPriority = (InterruptPriority)1; val3.baseRechargeInterval = 30f; val3.baseMaxStock = 1; val3.fullRestockOnAssign = true; val3.mustKeyPress = true; val3.isCombatSkill = true; val3.cancelSprintingOnActivation = true; obj = Skills.CreateSkillDef<StandSkillDef>(val3); } else { val3 = new SkillDefInfo(); val3.skillName = "PucciUltimate" + i; val3.skillNameToken = "KAVAHN_PUCCI_ULTIMATE_" + array[i] + "_NAME"; val3.skillDescriptionToken = "KAVAHN_PUCCI_ULTIMATE_" + array[i] + "_DESCRIPTION"; val3.keywordTokens = new string[1] { "KEYWORD_JJBA_STAND" }; val3.skillIcon = Icon<Sprite>(i switch { 1 => "texPucciCMoon", 0 => "texPucciUltimate", _ => "texPucciMadeInHeaven", }, "texSpecialIcon"); val3.activationState = new SerializableEntityStateType(typeof(PucciUltimate)); val3.activationStateMachineName = "Weapon2"; val3.interruptPriority = (InterruptPriority)1; val3.baseRechargeInterval = 30f; val3.baseMaxStock = 1; val3.fullRestockOnAssign = true; val3.mustKeyPress = true; val3.isCombatSkill = true; val3.cancelSprintingOnActivation = true; obj = Skills.CreateSkillDef<UniverseResetSkillDef>(val3); } StandSkillDef val7 = (StandSkillDef)obj; val7.standCost = 40f; ultimateDefs[i] = (SkillDef)(object)val7; } ExtraSkills.AddStandSpecial(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, standSpecialDefs[0]); GenericSkill val8 = Skills.CreateGenericSkillWithSkillFamily(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, "HeavensPlan", "Ultimate", false); Skills.AddSkillToFamily(val8.skillFamily, ultimateDefs[0], (UnlockableDef)null); ExtraSkills.Slots(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab).skill = val8; } public override void InitializeSkins() { ModelSkinController obj = ((Component)((CharacterBase<PucciSurvivor>)(object)this).prefabCharacterModel).gameObject.AddComponent<ModelSkinController>(); SkinDef val = Skins.CreateSkinDef("DEFAULT_SKIN", Icon<Sprite>("texPucciSkin", "texMainSkin"), ((CharacterBase<PucciSurvivor>)(object)this).prefabCharacterModel.baseRendererInfos, ((Component)((CharacterBase<PucciSurvivor>)(object)this).prefabCharacterModel).gameObject, (UnlockableDef)null); obj.skins = (SkinDef[])(object)new SkinDef[1] { val }; } public override void InitializeCharacterMaster() { PucciAI.Init(((CharacterBase<PucciSurvivor>)(object)this).bodyPrefab, ((SurvivorBase<PucciSurvivor>)this).masterName); } } } namespace JJBAMod.Survivors.Pucci.SkillStates { public class DiscThrow : BaseSkillState { public static float baseDuration = 0.5f; public static float throwPercentTime = 0.4f; private float duration; private bool thrown; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; ((BaseState)this).StartAimMode(duration + 1f, false); ((EntityState)this).PlayAnimation("Gesture, Override", "DiscThrow", "ThrowBomb.playbackRate", duration, 0f); StandUser component = ((EntityState)this).GetComponent<StandUser>(); if (component != null) { component.PlayStandAnimation("Throw", 0.05f); } Util.PlaySound("Play_Pucci_Disc", ((EntityState)this).gameObject); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!thrown && ((EntityState)this).fixedAge >= duration * throwPercentTime) { Throw(); } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Throw() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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_0036: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_00d8: 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_00db: 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_00e2: 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_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0141: 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_0148: 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_0197: 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_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) thrown = true; if (!((EntityState)this).isAuthority || !Object.op_Implicit((Object)(object)PucciAssets.discProjectilePrefab)) { return; } Ray aimRay = ((BaseState)this).GetAimRay(); Vector3 point = ((Ray)(ref aimRay)).GetPoint(100f); RaycastHit val = default(RaycastHit); if (Util.CharacterRaycast(((EntityState)this).gameObject, aimRay, ref val, 100f, LayerMask.op_Implicit(LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask) | LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)), (QueryTriggerInteraction)1)) { point = ((RaycastHit)(ref val)).point; } Vector3 val2 = ((Ray)(ref aimRay)).direction; val2.y = 0f; val2 = ((((Vector3)(ref val2)).sqrMagnitude > 0.001f) ? ((Vector3)(ref val2)).normalized : ((EntityState)this).characterDirection.forward); Vector3 val3 = ((EntityState)this).transform.position + Vector3.up * 0.55f + val2 * 0.8f; Vector3 val4 = point - val3; Vector3 normalized = ((Vector3)(ref val4)).normalized; PucciEvolution component = ((EntityState)this).GetComponent<PucciEvolution>(); if (Object.op_Implicit((Object)(object)component) && component.Stage == 1 && Object.op_Implicit((Object)(object)PucciAssets.rockProjectilePrefab)) { ProjectileManager.instance.FireProjectile(new FireProjectileInfo { projectilePrefab = PucciAssets.rockProjectilePrefab, position = val3, rotation = Util.QuaternionSafeLookRotation(normalized), owner = ((EntityState)this).gameObject, damage = 5f * ((BaseState)this).damageStat, force = 1500f, crit = ((BaseState)this).RollCrit(), damageTypeOverride = DamageTypeCombo.GenericSecondary }); return; } int num = ((!Object.op_Implicit((Object)(object)component) || component.Stage < 2) ? 1 : 3); for (int i = 0; i < num; i++) { float num2 = ((num > 1) ? Mathf.Lerp(-8f, 8f, (float)i / ((float)num - 1f)) : 0f); ProjectileManager.instance.FireProjectile(new FireProjectileInfo { projectilePrefab = PucciAssets.discProjectilePrefab, position = val3, rotation = Util.QuaternionSafeLookRotation(Quaternion.AngleAxis(num2, Vector3.up) * normalized), owner = ((EntityState)this).gameObject, damage = 3f * ((BaseState)this).damageStat, force = 200f, crit = ((BaseState)this).RollCrit(), damageTypeOverride = DamageTypeCombo.GenericSecondary }); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)1; } } public class PucciDash : BaseSkillState { public static float duration = 0.45f; public static float initialSpeedCoefficient = 6.5f; public static float finalSpeedCoefficient = 2.5f; private Vector3 forwardDirection; private bool instant; private Vector3 dashStart; private Vector3 dashEnd; private StandUser standUser; private OverlapAttack attack; public override void OnEnter() { //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_005f: 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_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: 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_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0238: 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_0255: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_025b: 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_0268: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Expected O, but got Unknown ((BaseState)this).OnEnter(); standUser = ((EntityState)this).GetComponent<StandUser>(); if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { Vector3 val = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector); forwardDirection = ((Vector3)(ref val)).normalized; } PucciEvolution component = ((EntityState)this).GetComponent<PucciEvolution>(); instant = Object.op_Implicit((Object)(object)component) && component.Stage >= 2; if (instant) { InstantDash(); return; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity.y = 0f; ((EntityState)this).characterMotor.velocity = forwardDirection * DashSpeed(); } ((EntityState)this).PlayAnimation("FullBody, Override", "Roll", "Roll.playbackRate", duration, 0f); Util.PlaySound("Play_Pucci_Dash", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)standUser)) { standUser.UseStand(18f); standUser.BeginAction(forwardDirection, 2.2f, duration); standUser.PlayStandAnimation("Dash", 0.05f); } if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.HiddenInvincibility, 0.6f * duration); } if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)standUser) && Object.op_Implicit((Object)(object)standUser.hitBoxGroup)) { attack = new OverlapAttack { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = ((BaseState)this).GetTeam(), damage = 3.5f * ((BaseState)this).damageStat, procCoefficient = 1f, hitEffectPrefab = SharedEffects.punchHitImpactEffect, forceVector = forwardDirection * 1200f + Vector3.up * 300f, pushAwayForce = 0f, hitBoxGroup = standUser.hitBoxGroup, isCrit = ((BaseState)this).RollCrit(), damageType = DamageTypeCombo.GenericUtility, impactSound = PucciAssets.standPunchHitSoundEvents[2].index }; } } private void InstantDash() { //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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0158: 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_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)this).isAuthority) { if (forwardDirection == Vector3.zero) { forwardDirection = ((EntityState)this).characterDirection.forward; } forwardDirection.y = 0f; ((Vector3)(ref forwardDirection)).Normalize(); dashStart = ((EntityState)this).characterBody.footPosition; float num = 24f; RaycastHit val = default(RaycastHit); if (Physics.SphereCast(((EntityState)this).characterBody.corePosition, 0.5f, forwardDirection, ref val, num, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)1)) { num = Mathf.Max(0f, ((RaycastHit)(ref val)).distance - 1f); } dashEnd = dashStart + forwardDirection * num; TeleportHelper.TeleportBody(((EntityState)this).characterBody, dashEnd + Vector3.up * 0.1f, false); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.forward = forwardDirection; } PucciWhiteFlash.Show(0.45f, 0.85f); } if (Object.op_Implicit((Object)(object)standUser)) { standUser.UseStand(18f); } Util.PlaySound("Play_Pucci_MiHDash", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)PucciAssets.hallucinationEffect)) { EffectManager.SimpleEffect(PucciAssets.hallucinationEffect, dashStart + Vector3.up, Quaternion.identity, false); EffectManager.SimpleEffect(PucciAssets.hallucinationEffect, dashEnd + Vector3.up, Quaternion.identity, false); } if (NetworkServer.active) { ((EntityState)this).characterBody.AddTimedBuff(Buffs.HiddenInvincibility, 0.3f); Slash(); } } private void Slash() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000e: 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_0018: 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_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_0037: 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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: 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_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_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_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Expected O, but got Unknown //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) HashSet<HealthComponent> hashSet = new HashSet<HealthComponent>(); TeamIndex team = ((BaseState)this).GetTeam(); Collider[] array = Physics.OverlapCapsule(dashStart + Vector3.up, dashEnd + Vector3.up, 3.5f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask), (QueryTriggerInteraction)2); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); HealthComponent val = (Object.op_Implicit((Object)(object)component) ? component.healthComponent : null); if (Object.op_Implicit((Object)(object)val) && val.alive && hashSet.Add(val) && Object.op_Implicit((Object)(object)val.body) && FriendlyFireManager.ShouldDirectHitProceed(val, team)) { for (int j = 0; j < 4; j++) { DamageInfo val2 = new DamageInfo { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, damage = 2.2f * ((BaseState)this).damageStat, crit = ((BaseState)this).RollCrit(), position = val.body.corePosition, procCoefficient = 1f, damageType = DamageTypeCombo.GenericUtility, damageColorIndex = (DamageColorIndex)0 }; val.TakeDamage(val2); GlobalEventManager.instance.OnHitEnemy(val2, ((Component)val).gameObject); GlobalEventManager.instance.OnHitAll(val2, ((Component)val).gameObject); } EffectManager.SimpleImpactEffect(SharedEffects.punchHitImpactEffect, val.body.corePosition, -forwardDirection, true); } } } private float DashSpeed() { return ((BaseState)this).moveSpeedStat * Mathf.Lerp(initialSpeedCoefficient, finalSpeedCoefficient, ((EntityState)this).fixedAge / duration); } public override void FixedUpdate() { //IL_0043: 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_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (instant) { if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= 0.1f) { ((EntityState)this).outer.SetNextStateToMain(); } return; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.forward = forwardDirection; } if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { Vector3 velocity = forwardDirection * DashSpeed(); velocity.y = ((EntityState)this).characterMotor.velocity.y; ((EntityState)this).characterMotor.velocity = velocity; } if (((EntityState)this).isAuthority && attack != null) { attack.Fire((List<HurtBox>)null); } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (Object.op_Implicit((Object)(object)standUser)) { standUser.EndAction(); } ((EntityState)this).OnExit(); } public override void OnSerialize(NetworkWriter writer) { //IL_0009: 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_0021: Unknown result type (might be due to invalid IL or missing references) ((BaseSkillState)this).OnSerialize(writer); writer.Write(forwardDirection); writer.Write(dashStart); writer.Write(dashEnd); } 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) //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_0026: Unknown result type (might be due to invalid IL or missing references) ((BaseSkillState)this).OnDeserialize(reader); forwardDirection = reader.ReadVector3(); dashStart = reader.ReadVector3(); dashEnd = reader.ReadVector3(); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class PucciPunch : BaseMeleeAttack { private bool useStand; private Vector3 punchDirection; private HurtBoxReference lockedTarget; private StandUser standUser; public override void OnEnter() { //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: 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) //IL_0032: 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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Unknown result type (might be due to invalid IL or missing references) standUser = ((EntityState)this).GetComponent<StandUser>(); float num = 4f / Mathf.Max(((EntityState)this).characterBody.attackSpeed, 0.1f); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); punchDirection = ((Ray)(ref aimRay)).direction; StandTracker val = ((Object.op_Implicit((Object)(object)standUser) && standUser.CanUseStand(num)) ? StandTracker.Of(((EntityState)this).gameObject) : null); HurtBox val2 = (Object.op_Implicit((Object)(object)val) ? val.GetTrackingTarget() : null); useStand = Object.op_Implicit((Object)(object)val2); lockedTarget = HurtBoxReference.FromHurtBox(val2); } base.hitboxGroupName = "SwordGroup"; base.damageType = DamageTypeCombo.GenericPrimary; base.procCoefficient = 1f; base.bonusForce = Vector3.zero; base.attackStartPercentTime = 0.2f; base.attackEndPercentTime = 0.4f; base.earlyExitPercentTime = 0.55f; base.attackRecoil = 0.5f; base.hitSoundString = ""; base.muzzleString = ((base.swingIndex % 2 == 0) ? "SwingLeft" : "SwingRight"); base.playbackRateParam = "Slash.playbackRate"; base.swingEffectPrefab = SharedEffects.punchSwingEffect; base.hitEffectPrefab = SharedEffects.punchHitImpactEffect; if (useStand) { base.damageCoefficient = 2.5f; base.hitStopDuration = 0f; base.aimUser = false; base.pushForce = 300f; base.baseDuration = 0.75f; base.hitHopVelocity = 0f; base.swingSoundString = PucciSounds.standPunchSwings[base.swingIndex % PucciSounds.standPunchSwings.Length]; base.swingSoundSource = standUser.StandObject; base.impactSound = PucciAssets.standPunchHitSoundEvents[base.swingIndex % PucciAssets.standPunchHitSoundEvents.Length].index; standUser.UseStand(num); } else { base.damageCoefficient = 1.2f; base.hitStopDuration = 0.012f; base.pushForce = 150f; base.baseDuration = 0.9f; base.hitHopVelocity = 4f; base.swingSoundString = PucciSounds.pucciSwings[base.swingIndex % PucciSounds.pucciSwings.Length]; base.impactSound = PucciAssets.pucciPunchHitSoundEvent.index; } ((BaseMeleeAttack)this).OnEnter(); Util.PlaySound(PucciSounds.PunchShout(base.swingIndex), ((EntityState)this).gameObject); if (useStand) { HurtBox val3 = ((HurtBoxReference)(ref lockedTarget)).ResolveHurtBox(); if (Object.op_Implicit((Object)(object)val3)) { standUser.BeginTargetedAction(val3, base.duration, base.attackStartPercentTime * base.duration); } else { standUser.BeginAction(punchDirection, 1.6f, base.duration); } standUser.PlayStandAnimation("Punch" + (1 + base.swingIndex), 0.05f); } } protected override void ModifyOverlapAttack(OverlapAttack attack) { ((BaseMeleeAttack)this).ModifyOverlapAttack(attack); if (useStand && Object.op_Implicit((Object)(object)standUser) && Object.op_Implicit((Object)(object)standUser.hitBoxGroup)) { attack.hitBoxGroup = standUser.hitBoxGroup; } } protected override void PlaySwingEffect() { if (!useStand) { ((BaseMeleeAttack)this).PlaySwingEffect(); } } protected override void PlayAttackAnimation() { if (useStand) { ((EntityState)this).PlayCrossfade("Gesture, Override", "StandPunch" + (1 + base.swingIndex), base.playbackRateParam, base.duration, 0.1f * base.duration); } else { ((EntityState)this).PlayCrossfade("Gesture, Override", "Slash" + (1 + base.swingIndex), base.playbackRateParam, base.duration, 0.1f * base.duration); } } public override void OnSerialize(NetworkWriter writer) { //IL_0015: 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) ((BaseMeleeAttack)this).OnSerialize(writer); writer.Write(useStand); writer.Write(punchDirection); NetworkExtensions.Write(writer, lockedTarget); } public override void OnDeserialize(NetworkReader reader) { //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_0026: Unknown result type (might be due to invalid IL or missing references) ((BaseMeleeAttack)this).OnDeserialize(reader); useStand = reader.ReadBoolean(); punchDirection = reader.ReadVector3(); lockedTarget = NetworkExtensions.ReadHurtBoxReference(reader); } } public class PucciRush : BaseSkillState { public static float baseRushDuration = 1.4f; public static float baseFinishDuration = 0.5f; private float rushDuration; private float finishDuration; private int hitsDone; private bool finished; private Vector3 rushDirection; private HurtBoxReference lockedTarget; private StandUser standUser; private float TotalDuration => rushDuration + finishDuration; public override void OnEnter() { //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_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_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); rushDuration = baseRushDuration / ((BaseState)this).attackSpeedStat; finishDuration = baseFinishDuration / ((BaseState)this).attackSpeedStat; standUser = ((EntityState)this).GetComponent<StandUser>(); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); rushDirection = ((Ray)(ref aimRay)).direction; StandTracker val = StandTracker.Of(((EntityState)this).gameObject); lockedTarget = HurtBoxReference.FromHurtBox(Object.op_Implicit((Object)(object)val) ? val.GetTrackingTarget() : null); } ((EntityState)this).PlayAnimation("Gesture, Override", "StandRush", "ThrowBomb.playbackRate", TotalDuration, 0f); Util.PlaySound("Play_Pucci_Rush", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)standUser)) { standUser.UseStand(30f); HurtBox val2 = ((HurtBoxReference)(ref lockedTarget)).ResolveHurtBox(); if (Object.op_Implicit((Object)(object)val2)) { standUser.BeginTargetedAction(val2, TotalDuration, 0.15f); } else { standUser.BeginAction(rushDirection, 2.4f, TotalDuration); } standUser.PlayStandAnimation("Rush", 0.05f); standUser.ShowAfterimages("Rush", rushDuration, 4, (string)null, (string)null); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); int num = Mathf.Min(12, Mathf.FloorToInt(((EntityState)this).fixedAge / rushDuration * 12f)); while (hitsDone < num) { hitsDone++; Util.PlaySound(PucciSounds.standPunchSwings[hitsDone % PucciSounds.standPunchSwings.Length], Object.op_Implicit((Object)(object)standUser) ? standUser.StandObject : ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { Hit(0.7f, 200f, 0); } } if (!finished && ((EntityState)this).fixedAge >= rushDuration) { finished = true; Util.PlaySound("Play_Pucci_RushFinish", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)standUser)) { standUser.PlayStandAnimation("Punch3", 0.05f); } if (((EntityState)this).isAuthority) { Hit(5f, 3000f, 2); } } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= TotalDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Hit(float coefficient, float force, int soundIndex) { //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_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)standUser) && Object.op_Implicit((Object)(object)standUser.hitBoxGroup)) { Vector3 val = rushDirection; val.y = 0f; new OverlapAttack { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = ((BaseState)this).GetTeam(), damage = coefficient * ((BaseState)this).damageStat, procCoefficient = ((coefficient < 1f) ? 0.5f : 1f), hitEffectPrefab = SharedEffects.punchHitImpactEffect, forceVector = ((Vector3)(ref val)).normalized * force, pushAwayForce = 0f, hitBoxGroup = standUser.hitBoxGroup, isCrit = ((BaseState)this).RollCrit(), damageType = DamageTypeCombo.GenericSpecial, impactSound = PucciAssets.standPunchHitSoundEvents[soundIndex].index }.Fire((List<HurtBox>)null); } } public override void OnExit() { if (!finished && Object.op_Implicit((Object)(object)standUser)) { standUser.PlayStandAnimation("Idle", 0.05f); } if (Object.op_Implicit((Object)(object)standUser)) { standUser.ClearAfterimages(); } ((EntityState)this).OnExit(); } public override void OnSerialize(NetworkWriter writer) { //IL_0009: 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) ((BaseSkillState)this).OnSerialize(writer); writer.Write(rushDirection); NetworkExtensions.Write(writer, lockedTarget); } 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) //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) ((BaseSkillState)this).OnDeserialize(reader); rushDirection = reader.ReadVector3(); lockedTarget = NetworkExtensions.ReadHurtBoxReference(reader); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class PucciStandSpecial : BaseSkillState { private int stage; private float duration; private bool fired; private StandUser standUser; private HurtBox target; public override void OnEnter() { //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); PucciEvolution component = ((EntityState)this).GetComponent<PucciEvolution>(); stage = (Object.op_Implicit((Object)(object)component) ? component.Stage : 0); standUser = ((EntityState)this).GetComponent<StandUser>(); StandTracker val = StandTracker.Of(((EntityState)this).gameObject); target = (Object.op_Implicit((Object)(object)val) ? val.GetTrackingTarget() : null); if (Object.op_Implicit((Object)(object)standUser) && stage < 2) { standUser.UseStand(25f); } Util.PlaySound(PucciSounds.standSpecial[stage], ((EntityState)this).gameObject); int num = stage; if ((uint)num <= 1u) { duration = 0.7f / ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("Gesture, Override", "StandSpecial", "ThrowBomb.playbackRate", duration, 0f); if (Object.op_Implicit((Object)(object)standUser)) { if (Object.op_Implicit((Object)(object)target)) { standUser.BeginTargetedAction(target, duration, 0.25f); } else { StandUser obj = standUser; Ray aimRay = ((BaseState)this).GetAimRay(); obj.BeginAction(((Ray)(ref aimRay)).direction, 2f, duration); } standUser.PlayStandAnimation((stage == 0) ? "Throw" : "Special", 0.05f); } } else { duration = 0.15f; if (NetworkServer.active) { int num2 = ((EntityState)this).characterBody.GetBuffCount(PucciAssets.accelerationBuff) + 1; PucciAcceleration.ServerSetLevel(((EntityState)this).characterBody, (num2 <= 3) ? num2 : 0); } if (((EntityState)this).characterBody.hasEffectiveAuthority) { PucciWhiteFlash.Show(0.25f, 0.5f); } } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (stage < 2 && !fired && ((EntityState)this).fixedAge >= duration * 0.45f) { fired = true; if (NetworkServer.active) { if (stage == 0) { CommandDisc(); } else { SurfaceInversion(); } } } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } private CharacterBody TargetBody() { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005f: 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_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) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)target) && Object.op_Implicit((Object)(object)target.healthComponent) && target.healthComponent.alive) { return target.healthComponent.body; } BullseyeSearch val = new BullseyeSearch { teamMaskFilter = TeamMask.GetEnemyTeams(((BaseState)this).GetTeam()), filterByLoS = true, searchOrigin = ((EntityState)this).characterBody.corePosition }; Ray aimRay = ((BaseState)this).GetAimRay(); val.searchDirection = ((Ray)(ref aimRay)).direction; val.maxDistanceFilter = 8f; val.maxAngleFilter = 60f; val.sortMode = (SortMode)1; val.RefreshCandidates(); foreach (HurtBox result in val.GetResults()) { if (Object.op_Implicit((Object)(object)result.healthComponent) && result.healthComponent.alive) { return result.healthComponent.body; } } return null; } private void CommandDisc() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) CharacterBody val = TargetBody(); if (Object.op_Implicit((Object)(object)val)) { EffectManager.SimpleEffect(PucciAssets.hallucinationEffect, val.corePosition, Quaternion.identity, true); if (val.isChampion || val.isPlayerControlled || !Object.op_Implicit((Object)(object)val.master)) { Damage(val, 10f * ((BaseState)this).damageStat, (DamageType)32); } else { CommandedByDisc.Apply(val, ((BaseState)this).GetTeam(), 12f); } } } private void SurfaceInversion() { //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Expected O, but got Unknown CharacterBody val = TargetBody(); if (Object.op_Implicit((Object)(object)val)) { float num = (val.isChampion ? 0.06f : 0.25f); float damage = 5f * ((BaseState)this).damageStat + val.healthComponent.fullCombinedHealth * num; Damage(val, damage, (DamageType)1024); for (int i = 0; i < 5; i++) { DotController.InflictDot(((Component)val).gameObject, ((EntityState)this).gameObject, val.mainHurtBox, (DotIndex)0, 4f, 1f, (uint?)null); } GameObject val2 = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/ExplosionVoidReaver"); if (Object.op_Implicit((Object)(object)val2)) { EffectManager.SpawnEffect(val2, new EffectData { origin = val.corePosition, scale = 3f }, true); } } } private void Damage(CharacterBody victim, float damage, DamageType type) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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_002a: 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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown victim.healthComponent.TakeDamage(new DamageInfo { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, damage = damage, crit = ((BaseState)this).RollCrit(), position = victim.corePosition, procCoefficient = 1f, damageType = new DamageTypeCombo(DamageTypeCombo.op_Implicit(type), (DamageTypeExtended)0, (DamageSource)8), damageColorIndex = (DamageColorIndex)0 }); } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } public class CommandedByDisc : MonoBehaviour { private CharacterBody body; private TeamIndex originalTeam; private float remaining; public static void Apply(CharacterBody victim, TeamIndex team, float duration) { //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_0034: Unknown result type (might be due to invalid IL or missing references) CommandedByDisc commandedByDisc = ((Component)victim).GetComponent<CommandedByDisc>(); if (!Object.op_Implicit((Object)(object)commandedByDisc)) { commandedByDisc = ((Component)victim