using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.BeetleGuardMonster;
using EntityStates.BrotherMonster;
using EntityStates.Croco;
using EntityStates.GolemMonster;
using EntityStates.GrandParentBoss;
using EntityStates.ImpBossMonster;
using EntityStates.LemurianBruiserMonster;
using EntityStates.ParentMonster;
using EntityStates.TitanMonster;
using EntityStates.VagrantMonster;
using HG;
using HG.BlendableTypes;
using KinematicCharacterController;
using On.RoR2;
using On.RoR2.UI.MainMenu;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using R2API.Utils;
using Rewired.ComponentControls.Effects;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using Risky_Artifacts.Artifacts;
using RoR2;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.Navigation;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using RoR2.UI.MainMenu;
using ThreeEyedGames;
using Tyranitar.Modules;
using Tyranitar.Modules.Components;
using Tyranitar.Modules.Enemies;
using Tyranitar.SkillStates.BaseStates;
using Tyranitar.SkillStates.Tyranitar;
using Tyranitar.SkillStates.Tyranitar.HyperBeam;
using Tyranitar.SkillStates.Tyranitar.Sandstorm;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.Rendering.PostProcessing;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("Tyranitar")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Tyranitar")]
[assembly: AssemblyTitle("Tyranitar")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: UnverifiableCode]
internal static class Log
{
internal static ManualLogSource _logSource;
internal static void Init(ManualLogSource logSource)
{
_logSource = logSource;
}
internal static void Debug(object data)
{
_logSource.LogDebug(data);
}
internal static void Error(object data)
{
_logSource.LogError(data);
}
internal static void Fatal(object data)
{
_logSource.LogFatal(data);
}
internal static void Info(object data)
{
_logSource.LogInfo(data);
}
internal static void Message(object data)
{
_logSource.LogMessage(data);
}
internal static void Warning(object data)
{
_logSource.LogWarning(data);
}
}
internal class BodyInfo
{
internal string bodyName = "";
internal string bodyNameToken = "";
internal string subtitleNameToken = "";
internal Color bodyColor = Color.white;
internal Texture characterPortrait = null;
internal GameObject crosshair = null;
internal GameObject podPrefab = null;
internal float maxHealth = 100f;
internal float healthGrowth = 2f;
internal float healthRegen = 0f;
internal float shield = 0f;
internal float shieldGrowth = 0f;
internal float moveSpeed = 7f;
internal float moveSpeedGrowth = 0f;
internal float acceleration = 80f;
internal float jumpPower = 15f;
internal float jumpPowerGrowth = 0f;
internal float damage = 12f;
internal float attackSpeed = 1f;
internal float attackSpeedGrowth = 0f;
internal float armor = 0f;
internal float armorGrowth = 0f;
internal float crit = 1f;
internal float critGrowth = 0f;
internal int jumpCount = 1;
}
internal class CustomRendererInfo
{
internal string childName;
internal Material material;
internal bool ignoreOverlays;
}
internal class SkillDefInfo
{
public string skillName;
public string skillNameToken;
public string skillDescriptionToken;
public string[] keywordTokens = new string[0];
public Sprite skillIcon;
public SerializableEntityStateType activationState;
public InterruptPriority interruptPriority;
public string activationStateMachineName;
public float baseRechargeInterval;
public int baseMaxStock = 1;
public int rechargeStock = 1;
public int requiredStock = 1;
public int stockToConsume = 1;
public bool isCombatSkill = true;
public bool canceledFromSprinting;
public bool forceSprintDuringState;
public bool cancelSprintingOnActivation = true;
public bool beginSkillCooldownOnSkillEnd;
public bool fullRestockOnAssign = true;
public bool resetCooldownTimerOnUse;
public bool mustKeyPress;
public SkillDefInfo()
{
}
public SkillDefInfo(string skillName, string skillNameToken, string skillDescriptionToken, Sprite skillIcon, SerializableEntityStateType activationState, string activationStateMachineName, InterruptPriority interruptPriority, bool isCombatSkill, float baseRechargeInterval)
{
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: 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_0075: Unknown result type (might be due to invalid IL or missing references)
this.skillName = skillName;
this.skillNameToken = skillNameToken;
this.skillDescriptionToken = skillDescriptionToken;
this.skillIcon = skillIcon;
this.activationState = activationState;
this.activationStateMachineName = activationStateMachineName;
this.interruptPriority = interruptPriority;
this.isCombatSkill = isCombatSkill;
this.baseRechargeInterval = baseRechargeInterval;
}
public SkillDefInfo(string skillName, string skillNameToken, string skillDescriptionToken, Sprite skillIcon, SerializableEntityStateType activationState, string activationStateMachineName = "Weapon", bool agile = false)
{
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: 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)
this.skillName = skillName;
this.skillNameToken = skillNameToken;
this.skillDescriptionToken = skillDescriptionToken;
this.skillIcon = skillIcon;
this.activationState = activationState;
this.activationStateMachineName = activationStateMachineName;
interruptPriority = (InterruptPriority)0;
isCombatSkill = true;
baseRechargeInterval = 0f;
requiredStock = 0;
stockToConsume = 0;
cancelSprintingOnActivation = !agile;
if (agile)
{
keywordTokens = new string[1] { "KEYWORD_AGILE" };
}
}
}
namespace Tyranitar
{
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.rob.Tyranitar", "Tyranitar", "1.5.0")]
[R2APISubmoduleDependency(new string[] { "PrefabAPI", "LanguageAPI", "SoundAPI", "DirectorAPI", "LoadoutAPI", "UnlockableAPI", "NetworkingAPI", "RecalculateStatsAPI" })]
public class TyranitarPlugin : BaseUnityPlugin
{
public const string MODUID = "com.rob.Tyranitar";
public const string MODNAME = "Tyranitar";
public const string MODVERSION = "1.5.0";
public const string developerPrefix = "ROB";
public static TyranitarPlugin instance;
public static bool FUCKFUCKFUCKFUCKFUCK;
public static bool riskyArtifactsInstalled => Chainloader.PluginInfos.ContainsKey("com.Moffein.RiskyArtifacts");
public static bool rooInstalled => Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions");
private void Awake()
{
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Expected O, but got Unknown
instance = this;
Config.myConfig = ((BaseUnityPlugin)this).Config;
Log.Init(((BaseUnityPlugin)this).Logger);
TtarAssets.PopulateAssets();
Config.ReadConfig();
CameraParams.InitializeParams();
States.RegisterStates();
Buffs.RegisterBuffs();
Projectiles.RegisterProjectiles();
Tokens.AddTokens();
ItemDisplays.PopulateDisplays();
NetMessages.RegisterNetworkMessages();
new Tyranitar.Modules.Enemies.Tyranitar().CreateCharacter();
Hook();
new ContentPacks().Initialize();
ContentManager.onContentPacksAssigned += LateSetup;
MainMenuController.Awake += new hook_Awake(MainMenuController_Awake);
}
private void MainMenuController_Awake(orig_Awake orig, MainMenuController self)
{
if (!FUCKFUCKFUCKFUCKFUCK)
{
FUCKFUCKFUCKFUCKFUCK = true;
Tyranitar.Modules.Enemies.Tyranitar.CreateCrownDisplays();
}
orig.Invoke(self);
}
private void LateSetup(ReadOnlyArray<ReadOnlyContentPack> obj)
{
Tyranitar.Modules.Enemies.Tyranitar.SetItemDisplays();
Buffs.armorBuff.iconSprite = Buffs.ArmorBoost.iconSprite;
}
private void Hook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
}
private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
{
if (sender.HasBuff(Buffs.armorBuff))
{
args.armorAdd += 500f;
}
if (sender.HasBuff(Buffs.slowStartBuff))
{
args.armorAdd += 20f;
args.moveSpeedReductionMultAdd += 1f;
args.attackSpeedMultAdd -= 0.5f;
args.damageMultAdd -= 0.5f;
}
}
private void CharacterBody_RecalculateStats(orig_RecalculateStats orig, CharacterBody self)
{
orig.Invoke(self);
}
}
}
namespace Tyranitar.SkillStates.Tyranitar
{
public class AncientPowerEnemy : ChargeAncientPower
{
public int maxRockCount = 8;
public override void OnEnter()
{
base.OnEnter();
healthCostFraction = 0f;
}
protected override void ChargeRock()
{
if (((EntityState)this).isAuthority && rockCount >= maxRockCount)
{
FireAncientPower nextState = new FireAncientPower
{
rockCount = rockCount
};
((EntityState)this).outer.SetNextState((EntityState)(object)nextState);
}
else
{
base.ChargeRock();
}
}
protected override void HandleStop()
{
}
}
public class BaseStompState : BaseTtarSkillState
{
public static float baseDuration = 2.2f;
public static float damageCoefficient = 6f;
private float stompTime;
private bool hasStomped;
protected float duration;
private float flashTime;
private bool hasFlashed;
public override void OnEnter()
{
base.OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
stompTime = 0.275f * duration;
flashTime = 0.2f * duration;
hasStomped = false;
hasFlashed = false;
((EntityState)this).PlayAnimation("FullBody, Override", "Stomp", "Action.playbackRate", duration, 0f);
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (((EntityState)this).fixedAge >= flashTime && !hasFlashed)
{
hasFlashed = true;
Flash();
}
if (((EntityState)this).fixedAge >= stompTime && !hasStomped)
{
PerformStomp();
}
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
protected virtual void Flash()
{
}
private void PerformStomp()
{
hasStomped = true;
Util.PlaySound("sfx_ttar_stomp", ((EntityState)this).gameObject);
Util.PlaySound("Play_parent_attack1_slam", ((EntityState)this).gameObject);
EffectManager.SimpleMuzzleFlash(Resources.Load<GameObject>("Prefabs/Effects/ImpactEffects/PodGroundImpact"), ((EntityState)this).gameObject, "FootR", false);
PerformAttack();
}
protected virtual void PerformAttack()
{
}
public override void OnExit()
{
((EntityState)this).OnExit();
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class BaseTtarSkillState : BaseSkillState
{
protected TyranitarController tyranitarController;
protected Animator anim;
public override void OnEnter()
{
tyranitarController = ((EntityState)this).GetComponent<TyranitarController>();
anim = ((EntityState)this).GetModelAnimator();
if (Object.op_Implicit((Object)(object)anim))
{
anim.SetBool("isSprinting", false);
}
((BaseState)this).OnEnter();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (Object.op_Implicit((Object)(object)anim))
{
anim.SetBool("isGrounded", ((BaseState)this).isGrounded);
}
}
}
public class Beam : BaseSkillState
{
public GameObject muzzleflashEffectPrefab;
public GameObject hitEffectPrefab;
public GameObject beamVfxPrefab;
public string enterSoundString = "";
public string exitSoundString = "";
public float tickRate = 10f;
public static float damageCoefficientPerSecond = 8f;
public float procCoefficientPerSecond = 1f;
public float forcePerSecond = 700f;
public float maxDistance = 250f;
public float minDistance = 240f;
public float bulletRadius = 1f;
public float baseMinimumDuration = 1f;
public float recoilAmplitude = 1f;
public float spreadBloomValue = 0.3f;
public float maxSpread = 0f;
public string muzzle = "MouthMuzzle";
public string animationLayerName = "Mouth, Override";
public string animationEnterStateName = "StartBeam";
public string animationExitStateName = "StopBeam";
private GameObject blinkVfxInstance;
private float minimumDuration;
private float fireCountdown;
private uint playID;
public override void OnEnter()
{
//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_0091: 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_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
beamVfxPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorBeamCorrupt.prefab").WaitForCompletion();
((BaseState)this).OnEnter();
minimumDuration = baseMinimumDuration / ((BaseState)this).attackSpeedStat;
((EntityState)this).PlayAnimation(animationLayerName, animationEnterStateName);
Util.PlaySound(enterSoundString, ((EntityState)this).gameObject);
blinkVfxInstance = Object.Instantiate<GameObject>(beamVfxPrefab);
blinkVfxInstance.transform.SetParent(((EntityState)this).characterBody.aimOriginTransform, false);
blinkVfxInstance.transform.localPosition = Vector3.zero;
Transform transform = blinkVfxInstance.transform;
transform.localScale *= 3.5f;
((EntityState)this).characterBody.aimOriginTransform.localPosition = new Vector3(0f, 9f, 2f);
playID = Util.PlaySound("sfx_ttar_breath_loop", ((EntityState)this).gameObject);
if (NetworkServer.active)
{
((EntityState)this).characterBody.AddBuff(Buffs.Slow50);
}
}
public override void FixedUpdate()
{
//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_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: 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_00b9: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).FixedUpdate();
((EntityState)this).characterBody.SetAimTimer(0.5f);
fireCountdown -= Time.fixedDeltaTime;
if (fireCountdown <= 0f)
{
fireCountdown = 1f / tickRate / ((BaseState)this).attackSpeedStat;
FireBullet();
}
if (Object.op_Implicit((Object)(object)blinkVfxInstance))
{
Ray aimRay = ((BaseState)this).GetAimRay();
Vector3 point = ((Ray)(ref aimRay)).GetPoint(maxDistance);
RaycastHit val = default(RaycastHit);
if (Util.CharacterRaycast(((EntityState)this).gameObject, ((BaseState)this).GetAimRay(), ref val, maxDistance, ((LayerIndex)(ref LayerIndex.world)).mask, (QueryTriggerInteraction)0))
{
point = ((RaycastHit)(ref val)).point;
}
blinkVfxInstance.transform.forward = point - blinkVfxInstance.transform.position;
}
if (((((EntityState)this).fixedAge >= minimumDuration && !((BaseSkillState)this).IsKeyDownAuthority()) || ((EntityState)this).characterBody.isSprinting) && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override void OnExit()
{
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)blinkVfxInstance))
{
VfxKillBehavior.KillVfxObject(blinkVfxInstance);
}
if (NetworkServer.active)
{
((EntityState)this).characterBody.RemoveBuff(Buffs.Slow50);
}
AkSoundEngine.StopPlayingID(playID);
((EntityState)this).PlayAnimation(animationLayerName, animationExitStateName);
Util.PlaySound(exitSoundString, ((EntityState)this).gameObject);
((EntityState)this).characterBody.aimOriginTransform.localPosition = new Vector3(0f, 0.5f, 0f);
((EntityState)this).OnExit();
}
private void FireBullet()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: 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_0086: 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_0095: 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_009f: 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_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: 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_00fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_011e: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
//IL_013c: 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_0162: Unknown result type (might be due to invalid IL or missing references)
//IL_016e: Unknown result type (might be due to invalid IL or missing references)
Ray aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).AddRecoil(-1f * recoilAmplitude, -2f * recoilAmplitude, -0.5f * recoilAmplitude, 0.5f * recoilAmplitude);
if (Object.op_Implicit((Object)(object)muzzleflashEffectPrefab))
{
EffectManager.SimpleMuzzleFlash(muzzleflashEffectPrefab, ((EntityState)this).gameObject, muzzle, false);
}
if (((EntityState)this).isAuthority)
{
new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
muzzleName = muzzle,
maxDistance = Mathf.Lerp(minDistance, maxDistance, Random.value),
minSpread = 0f,
maxSpread = maxSpread,
radius = bulletRadius,
falloffModel = (FalloffModel)0,
smartCollision = true,
stopperMask = default(LayerMask),
hitMask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask,
damage = damageCoefficientPerSecond * ((BaseState)this).damageStat / tickRate,
procCoefficient = procCoefficientPerSecond / tickRate,
force = forcePerSecond / tickRate,
isCrit = ((BaseState)this).RollCrit(),
hitEffectPrefab = hitEffectPrefab
}.Fire();
}
((EntityState)this).characterBody.AddSpreadBloom(spreadBloomValue);
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)1;
}
}
public class Bounce : BaseSkillState
{
public static float damageCoefficient = 20f;
public static float leapDuration = 0.6f;
public static float dropVelocity = 24f;
private float duration;
private bool hasLanded;
private float stopwatch;
private Animator animator;
private float previousAirControl;
private GameObject chargeEffectInstanceL;
private GameObject chargeEffectInstanceR;
public override void OnEnter()
{
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: 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_015f: Unknown result type (might be due to invalid IL or missing references)
//IL_0160: Unknown result type (might be due to invalid IL or missing references)
//IL_016c: Unknown result type (might be due to invalid IL or missing references)
//IL_0172: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
//IL_018f: Unknown result type (might be due to invalid IL or missing references)
//IL_0194: Unknown result type (might be due to invalid IL or missing references)
//IL_01dd: Unknown result type (might be due to invalid IL or missing references)
//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
//IL_0209: 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_021f: 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_027e: Unknown result type (might be due to invalid IL or missing references)
//IL_0294: Unknown result type (might be due to invalid IL or missing references)
//IL_029f: Unknown result type (might be due to invalid IL or missing references)
//IL_02a5: Expected O, but got Unknown
//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
//IL_02cc: 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_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_00db: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: 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_00f4: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: 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_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_010c: 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_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_0125: 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_0145: Unknown result type (might be due to invalid IL or missing references)
//IL_0147: Unknown result type (might be due to invalid IL or missing references)
//IL_014c: Unknown result type (might be due to invalid IL or missing references)
//IL_014e: Unknown result type (might be due to invalid IL or missing references)
//IL_0153: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = leapDuration / (0.75f + 0.25f * ((BaseState)this).attackSpeedStat);
hasLanded = false;
animator = ((EntityState)this).GetModelAnimator();
((EntityState)this).characterMotor.jumpCount = ((EntityState)this).characterBody.maxJumpCount;
previousAirControl = ((EntityState)this).characterMotor.airControl;
((EntityState)this).characterMotor.airControl = BaseLeap.airControl;
Ray aimRay = ((BaseState)this).GetAimRay();
Vector3 direction = ((Ray)(ref aimRay)).direction;
if (((EntityState)this).isAuthority)
{
((EntityState)this).characterBody.isSprinting = true;
direction.y = Mathf.Max(direction.y, 1.25f * BaseLeap.minimumY);
Vector3 val = ((Vector3)(ref direction)).normalized * (1.15f * BaseLeap.aimVelocity) * ((BaseState)this).moveSpeedStat;
Vector3 val2 = Vector3.up * 6f * BaseLeap.upwardVelocity;
Vector3 val3 = new Vector3(direction.x, 0f, direction.z);
Vector3 val4 = ((Vector3)(ref val3)).normalized * (0.75f * BaseLeap.forwardVelocity);
((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f);
((EntityState)this).characterMotor.velocity = val + val2 + val4;
}
((EntityState)this).characterDirection.moveVector = direction;
CharacterBody characterBody = ((EntityState)this).characterBody;
characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1);
Util.PlaySound("sfx_ttar_leap", ((EntityState)this).gameObject);
chargeEffectInstanceL = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Grandparent/ChargeGrandParentSunHands.prefab").WaitForCompletion());
chargeEffectInstanceL.transform.parent = ((BaseState)this).FindModelChild("FootL");
chargeEffectInstanceL.transform.localPosition = new Vector3(0f, 0f, 0f);
chargeEffectInstanceL.transform.localRotation = Quaternion.identity;
chargeEffectInstanceL.transform.localScale = Vector3.one;
chargeEffectInstanceR = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Grandparent/ChargeGrandParentSunHands.prefab").WaitForCompletion());
chargeEffectInstanceR.transform.parent = ((BaseState)this).FindModelChild("FootR");
chargeEffectInstanceR.transform.localPosition = new Vector3(0f, 0f, 0f);
chargeEffectInstanceR.transform.localRotation = Quaternion.identity;
chargeEffectInstanceR.transform.localScale = Vector3.one;
EffectData val5 = new EffectData();
val5.origin = ((EntityState)this).characterBody.footPosition;
val5.scale = 5f;
EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Parent/ParentSlamEffect.prefab").WaitForCompletion(), val5, true);
}
public override void OnExit()
{
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).OnExit();
if (Object.op_Implicit((Object)(object)chargeEffectInstanceL))
{
EntityState.Destroy((Object)(object)chargeEffectInstanceL);
}
if (Object.op_Implicit((Object)(object)chargeEffectInstanceR))
{
EntityState.Destroy((Object)(object)chargeEffectInstanceR);
}
CharacterBody characterBody = ((EntityState)this).characterBody;
characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2);
((EntityState)this).characterMotor.airControl = previousAirControl;
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((BaseState)this).StartAimMode(0.5f, false);
stopwatch += Time.fixedDeltaTime;
if (stopwatch >= duration && ((EntityState)this).isAuthority && ((EntityState)this).characterMotor.isGrounded)
{
GroundImpact();
((EntityState)this).outer.SetNextStateToMain();
}
}
private void GroundImpact()
{
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Expected O, but got Unknown
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: 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_0080: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: 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_00a3: 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_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: 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_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_00da: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: 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_00f4: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_010b: 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_011c: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
//IL_0125: Unknown result type (might be due to invalid IL or missing references)
//IL_012a: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: Unknown result type (might be due to invalid IL or missing references)
if (!hasLanded)
{
hasLanded = true;
Util.PlaySound("sfx_ttar_slam", ((EntityState)this).gameObject);
Util.PlaySound("Play_parent_attack1_slam", ((EntityState)this).gameObject);
float num = 32f;
EffectData val = new EffectData();
val.origin = ((EntityState)this).characterBody.footPosition;
val.scale = num;
EffectManager.SpawnEffect(TtarAssets.slamImpactEffect, val, true);
new BlastAttack
{
attacker = ((EntityState)this).gameObject,
attackerFiltering = (AttackerFiltering)2,
baseDamage = damageCoefficient * ((BaseState)this).damageStat,
baseForce = 800f,
bonusForce = Vector3.up * 2000f,
crit = ((BaseState)this).RollCrit(),
damageColorIndex = (DamageColorIndex)5,
damageType = DamageTypeCombo.op_Implicit((DamageType)131072),
falloffModel = (FalloffModel)0,
inflictor = ((EntityState)this).gameObject,
losType = (LoSType)0,
position = ((EntityState)this).characterBody.footPosition,
procChainMask = default(ProcChainMask),
procCoefficient = 1f,
radius = num,
teamIndex = ((BaseState)this).GetTeam()
}.Fire();
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class BounceStart : BaseState
{
private float duration;
private Animator animator;
public override void OnEnter()
{
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
animator = ((EntityState)this).GetModelAnimator();
if (Object.op_Implicit((Object)(object)animator))
{
int layerIndex = animator.GetLayerIndex("Body");
animator.CrossFadeInFixedTime("AnimatedJump", 0.1f);
animator.Update(0f);
AnimatorStateInfo nextAnimatorStateInfo = animator.GetNextAnimatorStateInfo(layerIndex);
duration = ((AnimatorStateInfo)(ref nextAnimatorStateInfo)).length;
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetBool("isGrounded", false);
}
if (((EntityState)this).fixedAge >= duration / 2f && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new Bounce());
}
else if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new Bounce());
}
}
}
public class ChargeAncientPower : BaseTtarSkillState
{
public float baseStartDuration = 0.5f;
public float baseRockTimer = 0.15f;
public float healthCostFraction = 0.1f;
protected int rockCount;
private float rockTimer;
private float rockStopwatch;
private float startDuration;
private uint playID;
public override void OnEnter()
{
base.OnEnter();
startDuration = baseStartDuration / ((BaseState)this).attackSpeedStat;
rockTimer = baseRockTimer / ((BaseState)this).attackSpeedStat;
rockCount = 0;
rockStopwatch = startDuration + rockTimer;
playID = Util.PlaySound("sfx_ttar_rocks_loop", ((EntityState)this).gameObject);
}
public override void OnExit()
{
((EntityState)this).OnExit();
AkSoundEngine.StopPlayingID(playID);
}
public override void FixedUpdate()
{
base.FixedUpdate();
rockStopwatch -= Time.fixedDeltaTime;
tyranitarController.rockCount = rockCount;
if (rockStopwatch <= 0f)
{
ChargeRock();
}
HandleStop();
}
protected virtual void HandleStop()
{
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= startDuration && !((EntityState)this).inputBank.skill2.down)
{
if (rockCount > 0)
{
FireAncientPower nextState = new FireAncientPower
{
rockCount = rockCount
};
((EntityState)this).outer.SetNextState((EntityState)(object)nextState);
}
else
{
((EntityState)this).outer.SetNextStateToMain();
}
}
}
private bool SpendStockOrHealth()
{
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Expected O, but got Unknown
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: 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)
bool result = false;
if (((EntityState)this).skillLocator.secondary.stock > 0)
{
((EntityState)this).skillLocator.secondary.DeductStock(1);
result = true;
}
else if (Object.op_Implicit((Object)(object)((EntityState)this).healthComponent) && ((EntityState)this).healthComponent.combinedHealth >= healthCostFraction * ((EntityState)this).healthComponent.fullCombinedHealth)
{
if (NetworkServer.active && healthCostFraction > 0f)
{
DamageInfo val = new DamageInfo();
val.damage = ((EntityState)this).healthComponent.fullCombinedHealth * healthCostFraction;
val.position = ((EntityState)this).characterBody.corePosition;
val.force = Vector3.zero;
val.damageColorIndex = (DamageColorIndex)0;
val.crit = false;
val.attacker = null;
val.inflictor = null;
val.damageType = DamageTypeCombo.op_Implicit((DamageType)3);
val.procCoefficient = 0f;
val.procChainMask = default(ProcChainMask);
((EntityState)this).healthComponent.TakeDamage(val);
}
result = true;
}
return result;
}
protected virtual void ChargeRock()
{
if (SpendStockOrHealth())
{
rockCount++;
Util.PlaySound("sfx_regigigas_rock_spawn", ((EntityState)this).gameObject);
}
rockStopwatch = rockTimer;
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class DeathState : GenericCharacterDeath
{
public override void OnEnter()
{
((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty");
((GenericCharacterDeath)this).OnEnter();
Util.PlaySound("sfx_ttar_death", ((EntityState)this).gameObject);
}
}
public class DrainPunch : PunchCombo
{
internal new static float damageCoefficientOverride = 2.8f;
private GameObject chargeEffectInstance;
public override void OnEnter()
{
//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_0087: 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_00b3: Unknown result type (might be due to invalid IL or missing references)
base.OnEnter();
attack.damage = damageCoefficientOverride * ((BaseState)this).damageStat;
string text = "HandL";
if (swingIndex == 1)
{
text = "HandR";
}
chargeEffectInstance = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Grandparent/ChargeGrandParentSunHands.prefab").WaitForCompletion());
chargeEffectInstance.transform.parent = ((BaseState)this).FindModelChild(text);
chargeEffectInstance.transform.localPosition = new Vector3(0f, 0f, 0f);
chargeEffectInstance.transform.localRotation = Quaternion.identity;
chargeEffectInstance.transform.localScale = Vector3.one;
chargeEffectInstance.GetComponentInChildren<ObjectScaleCurve>().timeMax = 0.35f;
}
public override void OnExit()
{
base.OnExit();
if (Object.op_Implicit((Object)(object)chargeEffectInstance))
{
EntityState.Destroy((Object)(object)chargeEffectInstance);
}
}
protected override void SetNextState()
{
int num = swingIndex + 1;
if (num == 3)
{
num = 1;
}
((EntityState)this).outer.SetNextState((EntityState)(object)new DrainPunch
{
swingIndex = num
});
}
protected override void PlaySwingEffect()
{
if (Object.op_Implicit((Object)(object)chargeEffectInstance))
{
EntityState.Destroy((Object)(object)chargeEffectInstance);
}
}
protected override void OnHitEnemyAuthority()
{
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Expected O, but got Unknown
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
base.OnHitEnemyAuthority();
GameObject punchImpactEffect = TtarAssets.punchImpactEffect;
HurtBox[] array = hitResults.ToArray();
for (int i = 0; i < hitResults.Count; i++)
{
handleLifeSteal(((EntityState)this).healthComponent, damageCoefficientOverride * ((BaseState)this).damageStat * 0.5f);
EffectData val = new EffectData();
val.scale = 4f;
if (Object.op_Implicit((Object)(object)array[i]) && Object.op_Implicit((Object)(object)array[i].healthComponent))
{
val.origin = ((Component)array[i]).transform.position;
val.rotation = ((Component)array[i]).transform.rotation;
EffectManager.SpawnEffect(punchImpactEffect, val, true);
}
}
}
private void handleLifeSteal(HealthComponent healthComponent, float healAmount)
{
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: 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)
if (NetworkServer.active)
{
healthComponent.Heal(healAmount, default(ProcChainMask), true);
}
else
{
NetMessageExtensions.Send((INetMessage)(object)new NetMessages.SyncLifeSteal(((EntityState)this).characterBody.networkIdentity.netId, healAmount), (NetworkDestination)1);
}
}
}
public class EarthPower : BaseStompState
{
protected override void PerformAttack()
{
//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_003c: 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_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: 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_006f: 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_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_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
base.PerformAttack();
if (((EntityState)this).isAuthority)
{
float num = 1.5f * (float)UltChannelState.waveProjectileCount;
num = 5f;
float num2 = 360f / num;
Vector3 val = Vector3.ProjectOnPlane(Random.onUnitSphere, Vector3.up);
Vector3 normalized = ((Vector3)(ref val)).normalized;
Vector3 position = ((BaseState)this).FindModelChild("FootR").position;
GameObject earthPowerWave = Projectiles.earthPowerWave;
for (int i = 0; (float)i < num; i++)
{
Vector3 val2 = Quaternion.AngleAxis(num2 * (float)i, Vector3.up) * normalized;
ProjectileManager.instance.FireProjectile(earthPowerWave, position, Util.QuaternionSafeLookRotation(val2), ((EntityState)this).gameObject, ((EntityState)this).characterBody.damage * BaseStompState.damageCoefficient, UltChannelState.waveProjectileForce, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null);
}
}
}
}
public class FastSandstorm : BaseStompState
{
public new float damageCoefficient = 0.75f;
public float procCoefficient = 0.1f;
protected override void PerformAttack()
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
base.PerformAttack();
ProjectileManager.instance.FireProjectile(Projectiles.pillarProjectile, ((EntityState)this).transform.position, Quaternion.identity, ((EntityState)this).gameObject, ((EntityState)this).characterBody.damage * damageCoefficient, 0f, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null);
}
}
public class FireAncientPower : BaseTtarSkillState
{
public int rockCount;
public static float baseDuration = 0.6f;
public static float baseTimeBetweenRocks = 0.3f;
public static float damageCoefficient = 2f;
public static float throwForce = 240f;
public static float projectileForce = 1500f;
private float throwStopwatch;
private float timeBetweenRocks;
private float duration;
private GameObject projectilePrefab;
public override void OnEnter()
{
base.OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
timeBetweenRocks = baseTimeBetweenRocks / ((BaseState)this).attackSpeedStat;
throwStopwatch = timeBetweenRocks;
projectilePrefab = Projectiles.rockProjectile;
Util.PlaySound("sfx_ttar_rocks_release", ((EntityState)this).gameObject);
}
public override void FixedUpdate()
{
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
base.FixedUpdate();
throwStopwatch -= Time.fixedDeltaTime;
tyranitarController.rockCount = rockCount;
((EntityState)this).characterBody.aimOriginTransform.localPosition = new Vector3(0f, 12f, 0f);
if (throwStopwatch <= 0f)
{
ThrowRock();
}
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration && rockCount <= 0)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override void OnExit()
{
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).OnExit();
if (((EntityState)this).characterBody.isPlayerControlled)
{
((EntityState)this).characterBody.aimOriginTransform.localPosition = new Vector3(0f, 0f, 0f);
}
tyranitarController.rockCount = 0;
}
private void ThrowRock()
{
//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_009b: 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_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
//IL_00b6: 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_00c0: 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_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_010b: Expected O, but got Unknown
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
if (rockCount > 0)
{
rockCount--;
throwStopwatch = timeBetweenRocks;
Ray aimRay = ((BaseState)this).GetAimRay();
if (((EntityState)this).isAuthority)
{
ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), ((EntityState)this).gameObject, ((BaseState)this).damageStat * damageCoefficient, projectileForce, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, throwForce, (DamageTypeCombo?)null);
}
Vector3 origin = ((Ray)(ref aimRay)).origin + ((Ray)(ref aimRay)).direction * 75f;
RaycastHit val = default(RaycastHit);
if (Physics.Raycast(((Ray)(ref aimRay)).origin, ((Ray)(ref aimRay)).direction, ref val, 75f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)))
{
origin = ((RaycastHit)(ref val)).point;
}
EffectData val2 = new EffectData
{
origin = origin,
start = ((Ray)(ref aimRay)).origin
};
EffectManager.SpawnEffect(TtarAssets.ancientPowerFireIndicator, val2, true);
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class GigaImpact : BaseTtarSkillState
{
public static float baseDuration = 6f;
public static float impactAttackRadius = 12f;
public static float impactAttackForce = 500f;
public static float impactAttackBonusForce = -1000f;
public static float impactAttackDamageCoefficient = 32f;
public static float blastAttackRadius = 64f;
public static float blastAttackForce = 8000f;
public static float blastAttackBonusForce = 1000f;
public static float blastAttackDamageCoefficient = 4f;
private float impactTime;
private float duration;
private bool hasFired;
private bool hasFiredShockwave;
public override void OnEnter()
{
base.OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
impactTime = duration * 0.55f;
hasFired = false;
((EntityState)this).PlayAnimation("FullBody, Override", "GigaImpact", "GigaImpact.playbackRate", duration, 0f);
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (((EntityState)this).fixedAge >= impactTime)
{
Fire();
}
if (((EntityState)this).fixedAge >= 0.75f * duration)
{
FireShockwave();
}
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
}
private void Fire()
{
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Expected O, but got Unknown
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_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_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: 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_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
if (!hasFired)
{
hasFired = true;
Util.PlaySound(GroundSlam.attackSoundString, ((EntityState)this).gameObject);
if (Object.op_Implicit((Object)(object)GroundSlam.slamEffectPrefab))
{
EffectManager.SimpleMuzzleFlash(GroundSlam.slamEffectPrefab, ((EntityState)this).gameObject, "HandR", false);
}
if (((EntityState)this).isAuthority)
{
BlastAttack val = new BlastAttack();
val.attacker = ((EntityState)this).gameObject;
val.inflictor = ((EntityState)this).gameObject;
val.teamIndex = TeamComponent.GetObjectTeam(val.attacker);
val.position = ((BaseState)this).FindModelChild("HandR").position;
val.procCoefficient = 0f;
val.radius = impactAttackRadius;
val.baseForce = impactAttackForce;
val.bonusForce = Vector3.up * impactAttackBonusForce;
val.baseDamage = impactAttackDamageCoefficient * ((BaseState)this).damageStat;
val.falloffModel = (FalloffModel)2;
val.damageColorIndex = (DamageColorIndex)3;
val.attackerFiltering = (AttackerFiltering)2;
val.Fire();
}
}
}
private void FireShockwave()
{
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Expected O, but got Unknown
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: 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_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
if (!hasFiredShockwave)
{
hasFiredShockwave = true;
if (Object.op_Implicit((Object)(object)SpawnState.spawnEffect))
{
EffectManager.SimpleMuzzleFlash(Resources.Load<GameObject>("prefabs/effects/impacteffects/GrandparentDeathEffect"), ((EntityState)this).gameObject, "HandR", false);
}
if (((EntityState)this).isAuthority)
{
BlastAttack val = new BlastAttack();
val.attacker = ((EntityState)this).gameObject;
val.inflictor = ((EntityState)this).gameObject;
val.teamIndex = TeamComponent.GetObjectTeam(val.attacker);
val.position = ((EntityState)this).characterBody.corePosition;
val.procCoefficient = 0f;
val.radius = blastAttackRadius;
val.baseForce = blastAttackForce;
val.bonusForce = Vector3.up * blastAttackBonusForce;
val.baseDamage = blastAttackDamageCoefficient * ((BaseState)this).damageStat;
val.falloffModel = (FalloffModel)1;
val.damageColorIndex = (DamageColorIndex)3;
val.attackerFiltering = (AttackerFiltering)2;
val.Fire();
}
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)7;
}
}
public class GrabAttempt : BaseTtarSkillState
{
public static float baseDuration = 2f;
public static string grabTransformString = "HandR";
public static float grabRadius = 10f;
private float grabStartTime;
private Transform grabTransform;
private HurtBox grabTarget;
private float duration;
private TyranitarGrabController grabController;
public override void OnEnter()
{
base.OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
grabStartTime = 0.7f * duration;
grabTransform = ((BaseState)this).FindModelChild(grabTransformString);
((EntityState)this).PlayAnimation("FullBody, Override", "GrabAttempt", "Grab.playbackRate", duration, 0f);
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (((EntityState)this).fixedAge >= grabStartTime)
{
AttemptGrab(grabRadius);
}
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration)
{
if (Object.op_Implicit((Object)(object)grabController))
{
((EntityState)this).outer.SetNextState((EntityState)(object)new GrabSuccess
{
target = grabTarget,
grabController = grabController
});
}
else
{
((EntityState)this).outer.SetNextState((EntityState)(object)new GrabFail());
}
}
}
private void AttemptGrab(float grabRadius)
{
//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_001c: 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_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_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_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_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_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Expected O, but got Unknown
if (!Object.op_Implicit((Object)(object)grabController))
{
Ray aimRay = ((BaseState)this).GetAimRay();
BullseyeSearch val = new BullseyeSearch
{
teamMaskFilter = TeamMask.GetEnemyTeams(((BaseState)this).GetTeam()),
filterByLoS = false,
searchOrigin = grabTransform.position,
searchDirection = Random.onUnitSphere,
sortMode = (SortMode)1,
maxDistanceFilter = grabRadius,
maxAngleFilter = 360f
};
val.RefreshCandidates();
val.FilterOutGameObject(((EntityState)this).gameObject);
HurtBox val2 = val.GetResults().FirstOrDefault();
if (Object.op_Implicit((Object)(object)val2) && Object.op_Implicit((Object)(object)val2.healthComponent) && Object.op_Implicit((Object)(object)val2.healthComponent.body) && BodyMeetsGrabConditions(val2.healthComponent.body))
{
grabController = ((Component)val2.healthComponent.body).gameObject.AddComponent<TyranitarGrabController>();
grabController.pivotTransform = grabTransform;
grabController.grabberHealthComponent = ((EntityState)this).healthComponent;
grabTarget = val2;
Util.PlaySound("sfx_regigigas_grab", ((EntityState)this).gameObject);
}
}
}
private bool BodyMeetsGrabConditions(CharacterBody targetBody)
{
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Invalid comparison between Unknown and I4
bool result = true;
if ((int)targetBody.hullClassification == 2)
{
result = false;
}
return result;
}
public override void OnExit()
{
((EntityState)this).OnExit();
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class GrabFail : BaseSkillState
{
public static float baseDuration = 1.5f;
private float duration;
public override void OnEnter()
{
((BaseState)this).OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
((EntityState)this).PlayAnimation("FullBody, Override", "GrabFail", "Grab.playbackRate", duration, 0f);
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)2;
}
}
public class GrabSuccess : BaseTtarSkillState
{
public HurtBox target;
public TyranitarGrabController grabController;
public static float baseDuration = 6f;
public static string grabTransformString = "HandR";
public static float throwForce = 120f;
public static float damagePercentage = 0.55f;
private bool hasSqueezed;
private float grabSqueezeTime;
private float grabThrowTime;
private Transform grabTransform;
private float duration;
private GameObject crushEffectPrefab;
public override void OnEnter()
{
base.OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
grabThrowTime = 0.7f * duration;
grabSqueezeTime = 0.3f * duration;
hasSqueezed = false;
grabTransform = ((BaseState)this).FindModelChild(grabTransformString);
crushEffectPrefab = TtarAssets.punchImpactEffect;
((EntityState)this).PlayAnimation("FullBody, Override", "GrabSuccess", "Grab.playbackRate", duration, 0f);
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (((EntityState)this).fixedAge >= grabSqueezeTime)
{
SqueezeTarget();
((BaseState)this).StartAimMode(0.5f, false);
}
if (((EntityState)this).fixedAge >= grabThrowTime)
{
Throw();
}
if (((EntityState)this).fixedAge >= duration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void SqueezeTarget()
{
//IL_0034: 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_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: 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_006f: 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_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: 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_00ae: 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_00c0: Expected O, but got Unknown
//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_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Expected O, but got Unknown
if (!hasSqueezed)
{
hasSqueezed = true;
if (NetworkServer.active && Object.op_Implicit((Object)(object)target))
{
DamageInfo val = new DamageInfo
{
attacker = ((EntityState)this).gameObject,
crit = false,
damage = damagePercentage * target.healthComponent.fullCombinedHealth,
damageColorIndex = (DamageColorIndex)5,
damageType = DamageTypeCombo.op_Implicit((DamageType)2),
force = Vector3.zero,
inflictor = ((EntityState)this).gameObject,
position = ((Component)target).transform.position,
procChainMask = default(ProcChainMask),
procCoefficient = 1f
};
target.healthComponent.TakeDamage(val);
EffectManager.SpawnEffect(crushEffectPrefab, new EffectData
{
origin = ((Component)target).transform.position,
scale = 2f
}, true);
}
if (Object.op_Implicit((Object)(object)target))
{
Util.PlaySound("sfx_regigigas_crush", ((EntityState)this).gameObject);
}
}
}
private void Throw()
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: 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)
if (Object.op_Implicit((Object)(object)grabController))
{
TyranitarGrabController tyranitarGrabController = grabController;
Ray aimRay = ((BaseState)this).GetAimRay();
tyranitarGrabController.Throw(((Ray)(ref aimRay)).direction * throwForce);
EntityState.Destroy((Object)(object)grabController);
grabController = null;
target = null;
Util.PlaySound("sfx_regigigas_throw", ((EntityState)this).gameObject);
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
if (Object.op_Implicit((Object)(object)grabController))
{
grabController.Release();
EntityState.Destroy((Object)(object)grabController);
grabController = null;
target = null;
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)7;
}
public override void OnSerialize(NetworkWriter writer)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
NetworkExtensions.Write(writer, HurtBoxReference.FromHurtBox(target));
writer.Write(((Component)grabController).gameObject);
}
public override void OnDeserialize(NetworkReader reader)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
HurtBoxReference val = NetworkExtensions.ReadHurtBoxReference(reader);
target = ((HurtBoxReference)(ref val)).ResolveHurtBox();
grabController = reader.ReadGameObject().GetComponent<TyranitarGrabController>();
}
}
public class JumpState : BaseState
{
private float duration;
private bool hasInputJump;
private Animator animator;
public override void OnEnter()
{
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
animator = ((EntityState)this).GetModelAnimator();
if (Object.op_Implicit((Object)(object)animator))
{
int layerIndex = animator.GetLayerIndex("Body");
animator.CrossFadeInFixedTime("AnimatedJump", 0.25f);
animator.Update(0f);
AnimatorStateInfo nextAnimatorStateInfo = animator.GetNextAnimatorStateInfo(layerIndex);
duration = ((AnimatorStateInfo)(ref nextAnimatorStateInfo)).length;
}
}
public override void FixedUpdate()
{
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0144: Unknown result type (might be due to invalid IL or missing references)
//IL_014b: Unknown result type (might be due to invalid IL or missing references)
//IL_0156: Unknown result type (might be due to invalid IL or missing references)
//IL_016d: Expected O, but got Unknown
//IL_0197: Unknown result type (might be due to invalid IL or missing references)
//IL_019c: Unknown result type (might be due to invalid IL or missing references)
//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
//IL_01ca: Expected O, but got Unknown
((EntityState)this).FixedUpdate();
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetBool("isGrounded", false);
}
if (((EntityState)this).fixedAge >= duration / 2f && ((EntityState)this).isAuthority && !hasInputJump)
{
hasInputJump = true;
((EntityState)this).characterMotor.moveDirection = ((EntityState)this).inputBank.moveVector;
int itemCount = ((EntityState)this).characterBody.inventory.GetItemCount(Items.JumpBoost);
float num = 1f;
float num2 = 1f;
bool flag = false;
if (itemCount > 0 && ((EntityState)this).characterBody.isSprinting)
{
float num3 = ((EntityState)this).characterBody.acceleration * ((EntityState)this).characterMotor.airControl;
if (((EntityState)this).characterBody.moveSpeed > 0f && num3 > 0f)
{
flag = true;
float num4 = Mathf.Sqrt(10f * (float)itemCount / num3);
float num5 = ((EntityState)this).characterBody.moveSpeed / num3;
num = (num4 + num5) / num5;
}
}
Util.PlaySound("sfx_ttar_leap", ((EntityState)this).gameObject);
EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/CharacterLandImpact"), new EffectData
{
origin = ((EntityState)this).characterBody.footPosition,
scale = ((EntityState)this).characterBody.radius
}, true);
GenericCharacterMain.ApplyJumpVelocity(((EntityState)this).characterMotor, ((EntityState)this).characterBody, num, num2, false);
if (flag)
{
EffectManager.SpawnEffect(Resources.Load<GameObject>("Prefabs/Effects/BoostJumpEffect"), new EffectData
{
origin = ((EntityState)this).characterBody.footPosition,
rotation = Util.QuaternionSafeLookRotation(((EntityState)this).characterMotor.velocity)
}, true);
}
if (!((EntityState)this).characterBody.HasBuff(Buffs.slowStartBuff))
{
animator.speed = 1f;
}
}
else if (!hasInputJump)
{
((EntityState)this).characterMotor.velocity.y = 0f;
}
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
}
public class MainState : GenericCharacterMain
{
protected TyranitarController tyranitarController;
protected Animator animator;
private float fuck;
public override void OnEnter()
{
((GenericCharacterMain)this).OnEnter();
tyranitarController = ((EntityState)this).GetComponent<TyranitarController>();
animator = ((EntityState)this).GetModelAnimator();
}
public override void FixedUpdate()
{
((GenericCharacterMain)this).FixedUpdate();
}
public override void ProcessJump()
{
if (base.jumpInputReceived && ((EntityState)this).characterMotor.jumpCount < ((EntityState)this).characterBody.maxJumpCount)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new JumpState());
CharacterMotor characterMotor = ((EntityState)this).characterMotor;
characterMotor.jumpCount++;
}
}
}
public class PunchCombo : BaseMeleeAttack
{
internal static float damageCoefficientOverride = 4.2f;
private bool sprintBuffered;
public override void OnEnter()
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: Unknown result type (might be due to invalid IL or missing references)
hitboxName = "Punch";
damageType = (DamageType)32;
damageCoefficient = damageCoefficientOverride;
procCoefficient = 1f;
pushForce = 3500f;
bonusForce = Vector3.zero;
baseDuration = 1.8f;
attackStartTime = 0.37f;
attackEndTime = 0.5f;
baseEarlyExitTime = 0.58f;
hitStopDuration = 0.035f;
attackRecoil = 1.5f;
hitHopVelocity = 8f;
swingSoundString = "RegigigasPunchSwing";
hitSoundString = "";
muzzleString = ((swingIndex % 2 == 0) ? "SwingLeft" : "SwingRight");
hitEffectPrefab = Resources.Load<GameObject>("Prefabs/Effects/ImpactEffects/PodGroundImpact");
impactSound = TtarAssets.punchSoundDef.index;
base.OnEnter();
PrimarySkillShurikenBehavior component = ((EntityState)this).GetComponent<PrimarySkillShurikenBehavior>();
if (Object.op_Implicit((Object)(object)component))
{
component.OnSkillActivated(((EntityState)this).skillLocator.primary);
}
}
protected override void PlayAttackAnimation()
{
((EntityState)this).PlayAnimation("Gesture, Override", "Punch" + (1 + swingIndex), "Punch.playbackRate", duration, 0f);
}
protected override void PlaySwingEffect()
{
}
protected override void SetNextState()
{
int num = swingIndex + 1;
if (num == 3)
{
num = 1;
}
((EntityState)this).outer.SetNextState((EntityState)(object)new PunchCombo
{
swingIndex = num
});
}
public override void FixedUpdate()
{
base.FixedUpdate();
((EntityState)this).characterBody.isSprinting = false;
if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && ((EntityState)this).inputBank.sprint.down)
{
sprintBuffered = true;
}
}
public override void OnExit()
{
base.OnExit();
if ((Object.op_Implicit((Object)(object)((EntityState)this).inputBank) && ((EntityState)this).inputBank.sprint.down) || sprintBuffered)
{
((EntityState)this).characterBody.isSprinting = true;
}
}
}
public class Revenge : BaseTtarSkillState
{
public static float baseDuration = 8f;
private float lastHealth;
private float storedDamage;
private float duration;
private Animator modelAnimator;
private GameObject chargeEffectInstance;
private Transform areaIndicator;
public override void OnEnter()
{
//IL_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
base.OnEnter();
duration = baseDuration;
lastHealth = ((EntityState)this).healthComponent.combinedHealth;
modelAnimator = ((EntityState)this).GetModelAnimator();
((EntityState)this).PlayAnimation("FullBody, Override", "RevengeEntry", "Revenge.playbackRate", duration * 0.1f, 0f);
if (NetworkServer.active)
{
((EntityState)this).characterBody.AddBuff(Buffs.armorBuff);
}
Transform modelTransform = ((EntityState)this).GetModelTransform();
if (Object.op_Implicit((Object)(object)modelTransform))
{
TemporaryOverlay val = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
val.duration = duration;
val.animateShaderAlpha = true;
val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
val.destroyComponentOnEnd = true;
val.originalMaterial = Resources.Load<Material>("Materials/matDoppelganger");
val.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
}
if (Object.op_Implicit((Object)(object)modelAnimator))
{
modelAnimator.SetFloat(AnimationParameters.aimWeight, 0f);
}
chargeEffectInstance = Object.Instantiate<GameObject>(new BlinkState().blinkDestinationPrefab, ((EntityState)this).gameObject.transform);
chargeEffectInstance.transform.position = ((EntityState)this).characterBody.corePosition;
chargeEffectInstance.GetComponent<ScaleParticleSystemDuration>().newDuration = duration;
areaIndicator = chargeEffectInstance.transform.Find("Particles").Find("AreaIndicator");
((EntityState)this).cameraTargetParams.cameraParams = CameraParams.chargeCameraParams;
chargeEffectInstance.GetComponentInChildren<PostProcessDuration>().maxDuration = duration;
}
private void UpdateRadius()
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
float num = storedDamage / ((EntityState)this).healthComponent.fullCombinedHealth;
float num2 = Util.Remap(num, 0f, 1f, RevengeEnd.minRadius, RevengeEnd.maxRadius);
areaIndicator.localScale = Vector3.one * num2;
}
public override void FixedUpdate()
{
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Invalid comparison between Unknown and I4
base.FixedUpdate();
float num = lastHealth - ((EntityState)this).healthComponent.combinedHealth;
if (num > 0f)
{
storedDamage += num;
}
lastHealth = ((EntityState)this).healthComponent.combinedHealth;
if (Object.op_Implicit((Object)(object)areaIndicator))
{
UpdateRadius();
}
if (((EntityState)this).isAuthority)
{
if (((EntityState)this).fixedAge >= duration)
{
NextState();
}
if ((int)((BaseState)this).GetTeam() == 1 && ((BaseSkillState)this).IsKeyDownAuthority() && ((EntityState)this).fixedAge >= 0.5f)
{
NextState();
}
}
}
private void NextState()
{
((EntityState)this).outer.SetNextState((EntityState)(object)new RevengeEnd
{
storedDamage = 3f * storedDamage
});
}
public override void OnExit()
{
((EntityState)this).OnExit();
if (Object.op_Implicit((Object)(object)chargeEffectInstance))
{
EntityState.Destroy((Object)(object)chargeEffectInstance);
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)7;
}
}
public class RevengeEnd : BaseTtarSkillState
{
public static float baseDuration = 5f;
public float storedDamage;
public static float maxDamagePercentage = 0.3f;
public static float minDamagePercentage = 0f;
public static float maxRadius = 120f;
public static float minRadius = 32f;
private float shockwaveRadius;
private float shockwaveTime;
private bool hasFired;
private float duration;
private GameObject chargeEffectInstance;
private uint soundID;
private Animator modelAnimator;
public override void OnEnter()
{
//IL_00f3: 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_0125: Unknown result type (might be due to invalid IL or missing references)
base.OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
shockwaveTime = 0.3f * duration;
hasFired = false;
modelAnimator = ((EntityState)this).GetModelAnimator();
float num = storedDamage / ((EntityState)this).healthComponent.fullCombinedHealth;
shockwaveRadius = Util.Remap(num, 0f, 1f, minRadius, maxRadius);
((EntityState)this).PlayAnimation("FullBody, Override", "RevengeEnd", "Revenge.playbackRate", duration, 0f);
soundID = Util.PlayAttackSpeedSound("sfx_regigigas_burst_pre", ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat);
ChildLocator modelChildLocator = ((EntityState)this).GetModelChildLocator();
if (Object.op_Implicit((Object)(object)modelChildLocator))
{
Transform val = modelChildLocator.FindChild("Chest");
if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)ChargeMegaNova.chargingEffectPrefab))
{
chargeEffectInstance = Object.Instantiate<GameObject>(ChargeMegaNova.chargingEffectPrefab, val.position, val.rotation);
chargeEffectInstance.transform.localScale = new Vector3(shockwaveRadius, shockwaveRadius, shockwaveRadius);
chargeEffectInstance.transform.parent = val;
chargeEffectInstance.GetComponent<ScaleParticleSystemDuration>().newDuration = 0.3f * duration;
}
}
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (((EntityState)this).fixedAge >= shockwaveTime)
{
FireShockwave();
}
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void FireShockwave()
{
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Unknown result type (might be due to invalid IL or missing references)
//IL_0126: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_013e: Unknown result type (might be due to invalid IL or missing references)
//IL_0149: Unknown result type (might be due to invalid IL or missing references)
//IL_014a: 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_0154: Unknown result type (might be due to invalid IL or missing references)
//IL_0156: Unknown result type (might be due to invalid IL or missing references)
//IL_015b: Unknown result type (might be due to invalid IL or missing references)
//IL_0167: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_016e: 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_0175: Unknown result type (might be due to invalid IL or missing references)
//IL_017a: Unknown result type (might be due to invalid IL or missing references)
//IL_017c: Unknown result type (might be due to invalid IL or missing references)
//IL_0181: Unknown result type (might be due to invalid IL or missing references)
//IL_018d: Unknown result type (might be due to invalid IL or missing references)
//IL_018e: Unknown result type (might be due to invalid IL or missing references)
//IL_018f: Unknown result type (might be due to invalid IL or missing references)
//IL_0194: Unknown result type (might be due to invalid IL or missing references)
//IL_019a: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01ab: 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_01b9: Unknown result type (might be due to invalid IL or missing references)
//IL_01be: Unknown result type (might be due to invalid IL or missing references)
//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
//IL_01ca: 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_01d5: Unknown result type (might be due to invalid IL or missing references)
//IL_01da: Unknown result type (might be due to invalid IL or missing references)
//IL_01df: Unknown result type (might be due to invalid IL or missing references)
if (!hasFired)
{
hasFired = true;
if (NetworkServer.active)
{
((EntityState)this).characterBody.RemoveBuff(Buffs.armorBuff);
}
AkSoundEngine.StopPlayingID(soundID);
Vector3 position = ((EntityState)this).transform.position;
Util.PlaySound("sfx_regigigas_burst", ((EntityState)this).gameObject);
Util.PlaySound("UNUNUN", ((EntityState)this).gameObject);
if (Object.op_Implicit((Object)(object)FireMegaNova.novaEffectPrefab))
{
EffectManager.SimpleMuzzleFlash(FireMegaNova.novaEffectPrefab, ((EntityState)this).gameObject, "Chest", false);
}
Transform modelTransform = ((EntityState)this).GetModelTransform();
if (Object.op_Implicit((Object)(object)modelTransform))
{
TemporaryOverlay val = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>();
val.duration = 3f;
val.animateShaderAlpha = true;
val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
val.destroyComponentOnEnd = true;
val.originalMaterial = Resources.Load<Material>("Materials/matVagrantEnergized");
val.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>());
}
if (((EntityState)this).isAuthority)
{
new BlastAttack
{
attacker = ((EntityState)this).gameObject,
baseDamage = storedDamage,
baseForce = FireMegaNova.novaForce,
bonusForce = Vector3.zero,
attackerFiltering = (AttackerFiltering)2,
crit = ((BaseState)this).RollCrit(),
damageColorIndex = (DamageColorIndex)0,
damageType = DamageTypeCombo.op_Implicit((DamageType)0),
falloffModel = (FalloffModel)0,
inflictor = ((EntityState)this).gameObject,
position = position,
procChainMask = default(ProcChainMask),
procCoefficient = 1f,
radius = shockwaveRadius,
losType = (LoSType)1,
teamIndex = ((EntityState)this).teamComponent.teamIndex,
impactEffect = EffectCatalog.FindEffectIndexFromPrefab(FireMegaNova.novaImpactEffectPrefab)
}.Fire();
}
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
if (Object.op_Implicit((Object)(object)modelAnimator))
{
modelAnimator.SetFloat(AnimationParameters.aimWeight, 1f);
}
if (Object.op_Implicit((Object)(object)chargeEffectInstance))
{
EntityState.Destroy((Object)(object)chargeEffectInstance);
}
((EntityState)this).cameraTargetParams.cameraParams = CameraParams.defaultCameraParams;
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)7;
}
}
public class SpawnState : GenericCharacterSpawnState
{
public override void OnEnter()
{
//IL_003f: 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_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: 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_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Expected O, but got Unknown
((GenericCharacterSpawnState)this).OnEnter();
((EntityState)this).PlayAnimation("Body", "Spawn", "Spawn.playbackRate", base.duration, 0f);
Util.PlaySound("sfx_ttar_spawn_roar", ((EntityState)this).gameObject);
EffectManager.SpawnEffect(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/LemurianBruiserSpawnEffect.prefab").WaitForCompletion(), new EffectData
{
origin = ((EntityState)this).transform.position,
rotation = Quaternion.identity,
scale = 3f
}, false);
}
}
public class StoneEdge : BaseStompState
{
public new float damageCoefficient = 6f;
public float procCoefficient = 1f;
private GameObject effectInstance;
private bool hasFired;
protected override void PerformAttack()
{
//IL_0029: 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_004a: 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)
base.PerformAttack();
effectInstance = Object.Instantiate<GameObject>(TtarAssets.stoneEdgeIndicator);
effectInstance.transform.position = ((EntityState)this).transform.position;
effectInstance.transform.rotation = Util.QuaternionSafeLookRotation(((EntityState)this).characterDirection.forward);
effectInstance.transform.localScale = ((EntityState)this).GetModelTransform().localScale;
}
public override void OnExit()
{
base.OnExit();
if (Object.op_Implicit((Object)(object)effectInstance))
{
EntityState.Destroy((Object)(object)effectInstance);
}
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (((EntityState)this).fixedAge >= 0.75f * duration && !hasFired)
{
hasFired = true;
FireAttack();
}
}
private void FireAttack()
{
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Expected O, but got Unknown
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: 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_00a8: 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_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00f4: 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)
if (Object.op_Implicit((Object)(object)effectInstance))
{
EntityState.Destroy((Object)(object)effectInstance);
}
EffectManager.SimpleMuzzleFlash(GroundSlam.slamEffectPrefab, ((EntityState)this).gameObject, "SlamZone", false);
if (((EntityState)this).isAuthority)
{
HitBoxGroup hitBoxGroup = ((BaseState)this).FindHitBoxGroup("StoneEdge");
OverlapAttack val = new OverlapAttack();
val.damageType = DamageTypeCombo.op_Implicit((DamageType)0);
val.attacker = ((EntityState)this).gameObject;
val.inflictor = ((EntityState)this).gameObject;
val.teamIndex = ((BaseState)this).GetTeam();
val.damage = damageCoefficient * ((BaseState)this).damageStat;
val.procCoefficient = procCoefficient;
val.hitEffectPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/OmniImpactVFXSlashMerc.prefab").WaitForCompletion();
val.forceVector = 3000f * Vector3.up;
val.pushAwayForce = 0f;
val.hitBoxGroup = hitBoxGroup;
val.isCrit = ((BaseState)this).RollCrit();
val.impactSound = TtarAssets.punchSoundDef.index;
val.Fire((List<HurtBox>)null);
}
}
}
internal class WakeUp : BaseTtarSkillState
{
public static float duration = 8f;
public static float delayBeforeAimAnimatorWeight = 6.5f;
private float cryTime;
private bool hasCried;
private Animator modelAnimator;
public override void OnEnter()
{
base.OnEnter();
modelAnimator = ((EntityState)this).GetModelAnimator();
cryTime = duration * 0.65f;
hasCried = false;
if (Object.op_Implicit((Object)(object)modelAnimator))
{
modelAnimator.SetFloat(AnimationParameters.aimWeight, 0f);
}
((EntityState)this).PlayAnimation("Body", "Spawn");
Util.PlaySound("RegigigasSpawn", ((EntityState)this).gameObject);
if (NetworkServer.active)
{
((EntityState)this).characterBody.AddTimedBuff(Buffs.armorBuff, duration);
}
}
public override void Update()
{
((EntityState)this).Update();
if (Object.op_Implicit((Object)(object)modelAnimator))
{
modelAnimator.SetFloat(AnimationParameters.aimWeight, Mathf.Clamp01((((EntityState)this).age - delayBeforeAimAnimatorWeight) / duration));
}
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (((EntityState)this).fixedAge >= cryTime && !hasCried)
{
hasCried = true;
string text = "RegigigasCry";
if (Config.loreFriendly.Value)
{
text = "sfx_regigigas_altcry";
}
Util.PlaySound(text, ((EntityState)this).gameObject);
}
if (((EntityState)this).fixedAge >= duration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override void OnExit()
{
if (Object.op_Implicit((Object)(object)modelAnimator))
{
modelAnimator.SetFloat(AnimationParameters.aimWeight, 1f);
}
((EntityState)this).OnExit();
}
}
}
namespace Tyranitar.SkillStates.Tyranitar.Sandstorm
{
public class Channel : BaseTtarSkillState
{
public float baseDuration = 1f;
private float duration;
private bool fired;
private float predictionEffectStopwatch;
protected Vector3 predictedTargetPosition;
private Predictor predictor;
public override void OnEnter()
{
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Expected O, but got Unknown
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: 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_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: 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_0056: 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_00d8: Expected O, but got Unknown
base.OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
if (NetworkServer.active)
{
BullseyeSearch val = new BullseyeSearch();
val.teamMaskFilter = TeamMask.allButNeutral;
if (Object.op_Implicit((Object)(object)((EntityState)this).teamComponent))
{
((TeamMask)(ref val.teamMaskFilter)).RemoveTeam(((EntityState)this).teamComponent.teamIndex);
}
val.maxDistanceFilter = FireFist.maxDistance;
val.maxAngleFilter = 90f;
Ray aimRay = ((BaseState)this).GetAimRay();
val.searchOrigin = ((Ray)(ref aimRay)).origin;
val.searchDirection = ((Ray)(ref aimRay)).direction;
val.filterByLoS = false;
val.sortMode = (SortMode)2;
val.RefreshCandidates();
HurtBox val2 = val.GetResults().FirstOrDefault();
if (Object.op_Implicit((Object)(object)val2))
{
predictor = new Predictor(((EntityState)this).transform);
predictor.SetTargetTransform(((Component)val2).transform);
}
}
}
public override void FixedUpdate()
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: 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_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Expected O, but got Unknown
base.FixedUpdate();
((EntityState)this).characterMotor.moveDirection = Vector3.zero;
predictionEffectStopwatch -= Time.fixedDeltaTime;
((EntityState)this).characterBody.aimTimer = -0.25f;
if (predictionEffectStopwatch <= 0f && ((EntityState)this).fixedAge < duration)
{
predictionEffectStopwatch = 0.2f;
if (NetworkServer.active)
{
EffectManager.SpawnEffect(TtarAssets.sandstormIndicator, new EffectData
{
origin = predictedTargetPosition,
rotation = Quaternion.identity,
scale = 1f
}, true);
}
}
if (predictor != null)
{
predictor.Update();
float num = 0.75f;
predictor.GetPredictedTargetPosition(num, ref predictedTargetPosition);
}
if (!fired && ((EntityState)this).fixedAge >= duration)
{
FireSandstorm();
}
if (((EntityState)this).fixedAge >= duration + 1f && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
protected virtual void FireSandstorm()
{
//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)
fired = true;
((EntityState)this).PlayCrossfade("FullBody, Override", "FireSandstorm", "Action.playbackRate", 1.75f, 0.1f);
if (NetworkServer.active)
{
ProjectileManager.instance.FireProjectile(Projectiles.pillarProjectile, predictedTargetPosition, Quaternion.identity, ((EntityState)this).gameObject, ((EntityState)this).characterBody.damage * 4.8f, 0f, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (Ga