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.GrandParentBoss;
using EntityStates.ImpBossMonster;
using EntityStates.LemurianBruiserMonster;
using EntityStates.ParentMonster;
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 RegigigasMod.Modules;
using RegigigasMod.Modules.Achievements;
using RegigigasMod.Modules.Components;
using RegigigasMod.Modules.Enemies;
using RegigigasMod.Modules.Misc;
using RegigigasMod.SkillStates.BaseStates;
using RegigigasMod.SkillStates.Regigigas;
using RegigigasMod.SkillStates.Regigigas.GigaImpact;
using RegigigasMod.SkillStates.Regigigas.Lunar;
using Rewired.ComponentControls.Effects;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using Risky_Artifacts.Artifacts;
using RoR2;
using RoR2.Achievements;
using RoR2.Audio;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.Navigation;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using RoR2.UI.MainMenu;
using ThreeEyedGames;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.SceneManagement;
[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("RegigigasMod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+17ad7316c62036232c47d67248367e2c95d60a3a")]
[assembly: AssemblyProduct("RegigigasMod")]
[assembly: AssemblyTitle("RegigigasMod")]
[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 enum RegigigasCameraParams
{
DEFAULT,
AIM,
CHARGE,
EMOTE
}
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 RegigigasMod
{
[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.RegigigasMod", "RegigigasMod", "1.6.0")]
[R2APISubmoduleDependency(new string[] { "PrefabAPI", "LanguageAPI", "SoundAPI", "DirectorAPI", "LoadoutAPI", "UnlockableAPI", "NetworkingAPI", "RecalculateStatsAPI" })]
public class RegigigasPlugin : BaseUnityPlugin
{
public const string MODUID = "com.rob.RegigigasMod";
public const string MODNAME = "RegigigasMod";
public const string MODVERSION = "1.6.0";
public const string developerPrefix = "ROB";
public static RegigigasPlugin instance;
public static bool riskyArtifactsInstalled => Chainloader.PluginInfos.ContainsKey("com.Moffein.RiskyArtifacts");
public static bool rooInstalled => Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions");
private void Awake()
{
instance = this;
Config.myConfig = ((BaseUnityPlugin)this).Config;
Log.Init(((BaseUnityPlugin)this).Logger);
RegiAssets.PopulateAssets();
Config.ReadConfig();
CameraParams.InitializeParams();
States.RegisterStates();
Buffs.RegisterBuffs();
Projectiles.RegisterProjectiles();
Tokens.AddTokens();
ItemDisplays.PopulateDisplays();
NetMessages.RegisterNetworkMessages();
new Regigigas().CreateCharacter();
Hook();
new ContentPacks().Initialize();
ContentManager.onContentPacksAssigned += LateSetup;
}
private void LateSetup(ReadOnlyArray<ReadOnlyContentPack> obj)
{
Regigigas.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;
}
}
}
}
namespace RegigigasMod.SkillStates.Regigigas
{
public class BaseRegiSkillState : BaseSkillState
{
protected RegigigasController regigigasController;
protected RegigigasFlashController flashController;
protected Animator anim;
public override void OnEnter()
{
regigigasController = ((EntityState)this).GetComponent<RegigigasController>();
flashController = ((EntityState)this).GetComponent<RegigigasFlashController>();
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 Bounce : BaseSkillState
{
public static float minDamageCoefficient = 8f;
public static float maxDamageCoefficient = 36f;
public static float leapDuration = 0.6f;
private float duration;
private bool hasLanded;
private float stopwatch;
private float previousAirControl;
private GameObject chargeEffectInstanceL;
private GameObject chargeEffectInstanceR;
private bool isFalling;
private bool setCamOverride;
private float maxYSpeed;
private CameraParamsOverrideHandle camParamsOverrideHandle;
public override void OnEnter()
{
//IL_0065: 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_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_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_0090: 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_00bd: 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;
((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) * (3f + 0.5f * ((BaseState)this).moveSpeedStat);
Vector3 val2 = Vector3.up * 5f * 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_regigigas_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)
//IL_0074: 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)
((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;
if (setCamOverride)
{
((EntityState)this).cameraTargetParams.RemoveParamsOverride(camParamsOverrideHandle, 1.5f);
}
}
public override void FixedUpdate()
{
//IL_008c: 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)
((EntityState)this).FixedUpdate();
((BaseState)this).StartAimMode(0.5f, false);
((EntityState)this).characterBody.isSprinting = true;
stopwatch += Time.fixedDeltaTime;
if (!isFalling && ((EntityState)this).characterMotor.velocity.y <= 0f && ((EntityState)this).fixedAge >= 0.1f)
{
isFalling = true;
setCamOverride = true;
camParamsOverrideHandle = CameraParams.OverrideCameraParams(((EntityState)this).cameraTargetParams, RegigigasCameraParams.CHARGE, 2f);
}
if (((EntityState)this).characterMotor.velocity.y <= maxYSpeed)
{
maxYSpeed = ((EntityState)this).characterMotor.velocity.y;
}
if (isFalling)
{
((EntityState)this).characterMotor.velocity.y += -24f * Time.fixedDeltaTime;
}
if (stopwatch >= duration && ((EntityState)this).characterMotor.isGrounded)
{
GroundImpact();
if (((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
}
private void GroundImpact()
{
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_003d: 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_009c: 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_00b2: 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_00be: 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_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: 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_00eb: 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_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_0112: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: 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_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_012a: Unknown result type (might be due to invalid IL or missing references)
//IL_0130: Unknown result type (might be due to invalid IL or missing references)
//IL_0136: Unknown result type (might be due to invalid IL or missing references)
//IL_0141: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: 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)
if (!hasLanded)
{
hasLanded = true;
Util.PlaySound("sfx_regigigas_slam", ((EntityState)this).gameObject);
float num = 24f;
EffectData val = new EffectData();
val.origin = ((EntityState)this).characterBody.footPosition;
val.scale = num;
EffectManager.SpawnEffect(RegiAssets.slamImpactEffect, val, false);
if (((EntityState)this).isAuthority)
{
float num2 = Util.Remap(maxYSpeed, 0f, -500f, minDamageCoefficient, maxDamageCoefficient);
new BlastAttack
{
attacker = ((EntityState)this).gameObject,
attackerFiltering = (AttackerFiltering)2,
baseDamage = num2 * ((BaseState)this).damageStat,
baseForce = 800f,
bonusForce = Vector3.up * 2000f,
crit = ((BaseState)this).RollCrit(),
damageColorIndex = (DamageColorIndex)0,
damageType = (DamageTypeCombo.op_Implicit((DamageType)131104) | DamageTypeCombo.GenericUtility),
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)3;
}
}
public class BounceStart : BaseState
{
private float duration;
private Animator animator;
public override void OnEnter()
{
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
((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;
if (!((EntityState)this).characterBody.HasBuff(Buffs.slowStartBuff))
{
nextAnimatorStateInfo = animator.GetNextAnimatorStateInfo(layerIndex);
duration = ((AnimatorStateInfo)(ref nextAnimatorStateInfo)).length * 0.25f;
}
else
{
nextAnimatorStateInfo = animator.GetNextAnimatorStateInfo(layerIndex);
duration = ((AnimatorStateInfo)(ref nextAnimatorStateInfo)).length;
}
}
if (!((EntityState)this).characterBody.HasBuff(Buffs.slowStartBuff))
{
animator.speed = 4f;
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
if (!((EntityState)this).characterBody.HasBuff(Buffs.slowStartBuff))
{
animator.speed = 1f;
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (Object.op_Implicit((Object)(object)animator))
{
animator.SetBool("isGrounded", false);
}
((EntityState)this).characterMotor.velocity.y = 0f;
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());
}
else if (((EntityState)this).isAuthority && !((BaseState)this).isGrounded)
{
((EntityState)this).outer.SetNextState((EntityState)(object)new Bounce());
}
}
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)3;
}
}
public class ChargeAncientPower : BaseRegiSkillState
{
public static float baseStartDuration = 0.5f;
public static float baseRockTimer = 0.3f;
public static float healthCostFraction = 0.1f;
private int rockCount;
private float rockTimer;
private float rockStopwatch;
private float startDuration;
private uint playID;
private CameraParamsOverrideHandle camParamsOverrideHandle;
public override void OnEnter()
{
//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)
base.OnEnter();
startDuration = baseStartDuration;
rockTimer = baseRockTimer;
rockCount = 0;
rockStopwatch = startDuration + rockTimer;
camParamsOverrideHandle = CameraParams.OverrideCameraParams(((EntityState)this).cameraTargetParams, RegigigasCameraParams.AIM);
((EntityState)this).PlayAnimation("Gesture, Override", "ChargeAncientPower", "AncientPower.playbackRate", startDuration, 0f);
((EntityState)this).characterBody.hideCrosshair = false;
playID = Util.PlaySound("sfx_regigigas_rocks_loop", ((EntityState)this).gameObject);
}
public override void OnExit()
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).OnExit();
AkSoundEngine.StopPlayingID(playID);
((EntityState)this).cameraTargetParams.RemoveParamsOverride(camParamsOverrideHandle, 0.5f);
}
public override void FixedUpdate()
{
base.FixedUpdate();
((BaseState)this).StartAimMode(0.5f, false);
rockStopwatch -= Time.fixedDeltaTime;
regigigasController.rockCount = rockCount;
if (rockStopwatch <= 0f)
{
ChargeRock();
}
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).PlayAnimation("Gesture, Override", "BufferEmpty");
((EntityState)this).outer.SetNextStateToMain();
}
}
}
private bool SpendStockOrHealth()
{
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Expected O, but got Unknown
//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_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)
//IL_00c1: 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_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
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)
{
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;
}
private void ChargeRock()
{
if (SpendStockOrHealth())
{
rockCount++;
flashController.Flash(playSound: false);
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()
{
Animator modelAnimator = ((EntityState)this).GetModelAnimator();
modelAnimator.SetLayerWeight(modelAnimator.GetLayerIndex("Body, Smooth"), 0f);
((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty");
((GenericCharacterDeath)this).OnEnter();
}
}
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.75f * (duration * attackStartTime);
}
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 = RegiAssets.punchImpactEffect;
HurtBox[] array = hitResults.ToArray();
for (int i = 0; i < hitResults.Count; i++)
{
handleLifeSteal(((EntityState)this).healthComponent, damageCoefficientOverride * ((BaseState)this).damageStat * 0.25f);
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 FireAncientPower : BaseRegiSkillState
{
public int rockCount;
public static float baseDuration = 0.6f;
public static float baseTimeBetweenRocks = 0.15f;
public static float damageCoefficient = 3f;
public static float throwForce = 140f;
public static float projectileForce = 5f;
private float throwStopwatch;
private float timeBetweenRocks;
private float duration;
private GameObject projectilePrefab;
private CameraParamsOverrideHandle camParamsOverrideHandle;
public override void OnEnter()
{
//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_0069: Unknown result type (might be due to invalid IL or missing references)
base.OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
timeBetweenRocks = baseTimeBetweenRocks / ((BaseState)this).attackSpeedStat;
throwStopwatch = timeBetweenRocks;
camParamsOverrideHandle = CameraParams.OverrideCameraParams(((EntityState)this).cameraTargetParams, RegigigasCameraParams.AIM);
((EntityState)this).characterBody.aimOriginTransform.localPosition = new Vector3(0f, 12f, 0f);
projectilePrefab = Projectiles.rockProjectile;
((EntityState)this).PlayAnimation("Gesture, Override", "FireAncientPower", "AncientPower.playbackRate", baseDuration, 0f);
Util.PlaySound("sfx_regigigas_rocks_release", ((EntityState)this).gameObject);
}
public override void FixedUpdate()
{
base.FixedUpdate();
((BaseState)this).StartAimMode(0.5f, false);
throwStopwatch -= Time.fixedDeltaTime;
regigigasController.rockCount = rockCount;
if (throwStopwatch <= 0f)
{
ThrowRock();
}
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration && rockCount <= 0)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override void OnExit()
{
//IL_0022: 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_003e: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).OnExit();
((EntityState)this).characterBody.aimOriginTransform.localPosition = new Vector3(0f, 0.5f, 0f);
((EntityState)this).cameraTargetParams.RemoveParamsOverride(camParamsOverrideHandle, 0.2f);
((EntityState)this).characterBody.hideCrosshair = true;
regigigasController.rockCount = 0;
}
private void ThrowRock()
{
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
if (rockCount > 0)
{
rockCount--;
throwStopwatch = timeBetweenRocks;
if (((EntityState)this).isAuthority)
{
Ray aimRay = ((BaseState)this).GetAimRay();
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);
}
}
}
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 GigaImpactOld : BaseRegiSkillState
{
public static float baseDuration = 6f;
public static float impactAttackRadius = 12f;
public static float impactAttackForce = 500f;
public static float impactAttackBonusForce = -1000f;
public static float impactAttackDamageCoefficient = 14f;
public static float blastAttackRadius = 32f;
public static float blastAttackForce = 2000f;
public static float blastAttackBonusForce = 1000f;
public static float blastAttackDamageCoefficient = 12f;
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_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Expected O, but got Unknown
//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_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_00db: Unknown result type (might be due to invalid IL or missing references)
//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: 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)
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);
}
flashController.Flash();
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 : BaseRegiSkillState
{
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 RegigigasGrabController 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);
flashController.Flash();
}
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<RegigigasGrabController>();
grabController.pivotTransform = grabTransform;
grabController.grabberHealthComponent = ((EntityState)this).healthComponent;
grabTarget = val2;
Util.PlaySound("sfx_regigigas_grab", ((EntityState)this).gameObject);
}
}
}
private bool BodyMeetsGrabConditions(CharacterBody targetBody)
{
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Invalid comparison between Unknown and I4
bool result = true;
if (targetBody.HasBuff(Buffs.Intangible))
{
result = false;
}
if (targetBody.HasBuff(Buffs.HiddenInvincibility))
{
result = false;
}
if (targetBody.HasBuff(Buffs.Cloak))
{
result = false;
}
if (targetBody.HasBuff(Buffs.CloakSpeed))
{
result = false;
}
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 : BaseRegiSkillState
{
public HurtBox target;
public RegigigasGrabController 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 = RegiAssets.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_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
//IL_0052: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: 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_0093: 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_00a9: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: 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_00d7: Expected O, but got Unknown
//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_0100: 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_011c: Expected O, but got Unknown
if (!hasSqueezed)
{
hasSqueezed = true;
flashController.Flash(playSound: false);
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) | DamageTypeCombo.GenericSecondary),
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))
{
RegigigasGrabController regigigasGrabController = grabController;
Ray aimRay = ((BaseState)this).GetAimRay();
regigigasGrabController.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<RegigigasGrabController>();
}
}
public class IcePunch : PunchCombo
{
internal new static float damageCoefficientOverride = 1.4f;
private GameObject chargeEffectInstance;
public override void OnEnter()
{
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: 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)
base.OnEnter();
attack.damage = damageCoefficientOverride * ((BaseState)this).damageStat;
attack.damageType = DamageTypeCombo.GenericPrimary | DamageTypeCombo.op_Implicit((DamageType)256);
string text = "HandL";
if (swingIndex == 1)
{
text = "HandR";
}
chargeEffectInstance = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/ChargeMageIceBomb.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;
}
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 IcePunch
{
swingIndex = num
});
}
protected override void PlaySwingEffect()
{
if (Object.op_Implicit((Object)(object)chargeEffectInstance))
{
EntityState.Destroy((Object)(object)chargeEffectInstance);
}
}
protected override void OnHitEnemyAuthority()
{
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Expected O, but got Unknown
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
base.OnHitEnemyAuthority();
GameObject punchImpactEffect = RegiAssets.punchImpactEffect;
HurtBox[] array = hitResults.ToArray();
for (int i = 0; i < hitResults.Count; i++)
{
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);
}
}
}
}
public class JumpState : BaseState
{
private float duration;
private bool hasInputJump;
private Animator animator;
public override void OnEnter()
{
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
((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;
if (!((EntityState)this).characterBody.HasBuff(Buffs.slowStartBuff))
{
nextAnimatorStateInfo = animator.GetNextAnimatorStateInfo(layerIndex);
duration = ((AnimatorStateInfo)(ref nextAnimatorStateInfo)).length * 0.25f;
}
else
{
nextAnimatorStateInfo = animator.GetNextAnimatorStateInfo(layerIndex);
duration = ((AnimatorStateInfo)(ref nextAnimatorStateInfo)).length;
}
}
if (!((EntityState)this).characterBody.HasBuff(Buffs.slowStartBuff))
{
animator.speed = 4f;
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
if (!((EntityState)this).characterBody.HasBuff(Buffs.slowStartBuff))
{
animator.speed = 1f;
}
}
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_regigigas_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 MachPunch : PunchCombo
{
internal new static float damageCoefficientOverride = 0.4f;
private GameObject chargeEffectInstance;
public override void OnEnter()
{
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
baseDuration = 0.6f;
base.OnEnter();
earlyExitTime = 0.3f / ((BaseState)this).attackSpeedStat;
attack.damage = damageCoefficientOverride * ((BaseState)this).damageStat;
attack.damageType = DamageTypeCombo.GenericPrimary;
attack.pushAwayForce = -100f;
}
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 MachPunch
{
swingIndex = num
});
}
protected override void PlaySwingEffect()
{
if (Object.op_Implicit((Object)(object)chargeEffectInstance))
{
EntityState.Destroy((Object)(object)chargeEffectInstance);
}
}
protected override void OnHitEnemyAuthority()
{
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Expected O, but got Unknown
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
base.OnHitEnemyAuthority();
GameObject punchImpactEffect = RegiAssets.punchImpactEffect;
HurtBox[] array = hitResults.ToArray();
for (int i = 0; i < hitResults.Count; i++)
{
EffectData val = new EffectData();
val.scale = 3f;
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);
}
}
}
}
public class MainState : GenericCharacterMain
{
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_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: 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_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
hitboxName = "Punch";
damageType = DamageTypeCombo.op_Implicit(DamageTypeCombo.GenericPrimary | DamageTypeCombo.op_Implicit((DamageType)32));
damageCoefficient = damageCoefficientOverride;
procCoefficient = 1f;
pushForce = 3500f;
bonusForce = Vector3.zero;
attackStartTime = 0.37f;
attackEndTime = 0.5f;
baseEarlyExitTime = 0.58f;
hitStopDuration = 0.18f;
attackRecoil = 1.5f;
hitHopVelocity = 8f;
swingSoundString = "RegigigasPunchSwing";
hitSoundString = "";
muzzleString = ((swingIndex % 2 == 0) ? "SwingLeft" : "SwingRight");
hitEffectPrefab = Resources.Load<GameObject>("Prefabs/Effects/ImpactEffects/PodGroundImpact");
impactSound = RegiAssets.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 : BaseRegiSkillState
{
public static float baseDuration = 8f;
private float lastHealth;
private float storedDamage;
private float duration;
private Animator modelAnimator;
private GameObject chargeEffectInstance;
private Transform areaIndicator;
private CameraParamsOverrideHandle camParamsOverrideHandle;
public override void OnEnter()
{
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0125: Unknown result type (might be due to invalid IL or missing references)
//IL_0155: Unknown result type (might be due to invalid IL or missing references)
base.OnEnter();
duration = baseDuration;
lastHealth = ((EntityState)this).healthComponent.combinedHealth;
modelAnimator = ((EntityState)this).GetModelAnimator();
camParamsOverrideHandle = CameraParams.OverrideCameraParams(((EntityState)this).cameraTargetParams, RegigigasCameraParams.CHARGE);
((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");
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()
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).OnExit();
((EntityState)this).cameraTargetParams.RemoveParamsOverride(camParamsOverrideHandle, 0.5f);
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 : BaseRegiSkillState
{
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;
private CameraParamsOverrideHandle camParamsOverrideHandle;
public override void OnEnter()
{
//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_010a: 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_013c: 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();
camParamsOverrideHandle = CameraParams.OverrideCameraParams(((EntityState)this).cameraTargetParams, RegigigasCameraParams.CHARGE);
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;
}
}
flashController.Flash();
}
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()
{
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
((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.RemoveParamsOverride(camParamsOverrideHandle, 0.2f);
}
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 : BaseState
{
public static float minimumSleepDuration = 0.5f;
private Animator modelAnimator;
public override void OnEnter()
{
((BaseState)this).OnEnter();
modelAnimator = ((EntityState)this).GetModelAnimator();
if (Object.op_Implicit((Object)(object)modelAnimator))
{
modelAnimator.SetFloat(AnimationParameters.aimWeight, 0f);
}
((EntityState)this).PlayAnimation("Body", "Inactive");
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= minimumSleepDuration && (((Vector3)(ref ((EntityState)this).inputBank.moveVector)).sqrMagnitude >= Mathf.Epsilon || ((EntityState)this).inputBank.CheckAnyButtonDown()))
{
((EntityState)this).outer.SetNextState((EntityState)(object)new WakeUp());
}
}
public override void OnExit()
{
if (Object.op_Implicit((Object)(object)modelAnimator))
{
modelAnimator.SetFloat(AnimationParameters.aimWeight, 1f);
}
((EntityState)this).OnExit();
}
}
public class Stomp : BaseRegiSkillState
{
public static float baseDuration = 4f;
public static float damageCoefficient = 4f;
private float stompTime;
private bool hasStomped;
private float duration;
private float flashTime;
private bool hasFlashed;
public override void OnEnter()
{
base.OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
stompTime = 0.55f * duration;
flashTime = 0.4f * duration;
hasStomped = false;
hasFlashed = false;
((EntityState)this).PlayAnimation("FullBody, Override", "Stomp", "Stomp.playbackRate", duration, 0f);
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (((EntityState)this).fixedAge >= flashTime && !hasFlashed)
{
hasFlashed = true;
flashController.Flash();
}
if (((EntityState)this).fixedAge >= stompTime && !hasStomped)
{
PerformStomp();
}
if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void PerformStomp()
{
//IL_007b: 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_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00b8: 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_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: 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_00d5: Unknown result type (might be due to invalid IL or missing references)
hasStomped = true;
Util.PlaySound("RegigigasStomp", ((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);
if (((EntityState)this).isAuthority)
{
float num = 1.5f * (float)UltChannelState.waveProjectileCount;
if (Config.nerfedEarthPower)
{
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 * damageCoefficient, UltChannelState.waveProjectileForce, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, -1f, (DamageTypeCombo?)null);
}
}
}
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;
}
}
internal class WakeUp : BaseRegiSkillState
{
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);
flashController.Flash();
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()
{
//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_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
base.FixedUpdate();
if (((EntityState)this).fixedAge >= cryTime && !hasCried)
{
hasCried = true;
string text = "RegigigasCry";
if (Config.loreFriendly && !((EntityState)this).characterBody.isPlayerControlled)
{
text = "sfx_regigigas_altcry";
}
if (((EntityState)this).characterBody.skinIndex > 1)
{
text = "sfx_regigigas_altcry";
}
Util.PlaySound(text, ((EntityState)this).gameObject);
if (!((EntityState)this).characterBody.isPlayerControlled)
{
Scene activeScene = SceneManager.GetActiveScene();
if (!(((Scene)(ref activeScene)).name == "moon"))
{
activeScene = SceneManager.GetActiveScene();
if (!(((Scene)(ref activeScene)).name == "moon2"))
{
goto IL_0107;
}
}
SlowStartController component = ((EntityState)this).GetComponent<SlowStartController>();
if (Object.op_Implicit((Object)(object)component))
{
if (NetworkServer.active)
{
((EntityState)this).characterBody.RemoveBuff(Buffs.slowStartBuff);
}
component.ForceActivate();
}
}
}
goto IL_0107;
IL_0107:
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 RegigigasMod.SkillStates.Regigigas.Lunar
{
public class Bounce : BaseSkillState
{
public static float minDamageCoefficient = 1f;
public static float maxDamageCoefficient = 2f;
public static float waveDamageCoefficient = 6f;
public static float leapDuration = 0.6f;
private float duration;
private bool hasLanded;
private float stopwatch;
private float previousAirControl;
private GameObject chargeEffectInstanceL;
private GameObject chargeEffectInstanceR;
private bool isFalling;
private bool setCamOverride;
private float maxYSpeed;
private CameraParamsOverrideHandle camParamsOverrideHandle;
public override void OnEnter()
{
//IL_0130: Unknown result type (might be due to invalid IL or missing references)
//IL_0135: Unknown result type (might be due to invalid IL or missing references)
//IL_0138: Unknown result type (might be due to invalid IL or missing references)
//IL_013d: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: 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_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_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)
//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_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: 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_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: 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_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_022c: Unknown result type (might be due to invalid IL or missing references)
//IL_022d: Unknown result type (might be due to invalid IL or missing references)
//IL_0239: Unknown result type (might be due to invalid IL or missing references)
//IL_023f: Unknown result type (might be due to invalid IL or missing references)
//IL_0240: Unknown result type (might be due to invalid IL or missing references)
//IL_025c: Unknown result type (might be due to invalid IL or missing references)
//IL_0261: Unknown result type (might be due to invalid IL or missing references)
//IL_02aa: Unknown result type (might be due to invalid IL or missing references)
//IL_02c0: Unknown result type (might be due to invalid IL or missing references)
//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
//IL_0335: Unknown result type (might be due to invalid IL or missing references)
//IL_034b: Unknown result type (might be due to invalid IL or missing references)
//IL_0361: Unknown result type (might be due to invalid IL or missing references)
//IL_036c: Unknown result type (might be due to invalid IL or missing references)
//IL_0372: Expected O, but got Unknown
//IL_0379: Unknown result type (might be due to invalid IL or missing references)
//IL_0394: Unknown result type (might be due to invalid IL or missing references)
//IL_0399: Unknown result type (might be due to invalid IL or missing references)
//IL_015d: 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_018a: Unknown result type (might be due to invalid IL or missing references)
//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
//IL_01d9: 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_01ed: Unknown result type (might be due to invalid IL or missing references)
//IL_01f2: Unknown result type (might be due to invalid IL or missing references)
//IL_0210: Unknown result type (might be due to invalid IL or missing references)
//IL_0212: Unknown result type (might be due to invalid IL or missing references)
//IL_0214: Unknown result type (might be due to invalid IL or missing references)
//IL_0219: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: Unknown result type (might be due to invalid IL or missing references)
//IL_0220: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
if (((EntityState)this).isAuthority)
{
new BlastAttack
{
attacker = ((EntityState)this).gameObject,
attackerFiltering = (AttackerFiltering)2,
baseDamage = 0f,
baseForce = 2000f,
bonusForce = Vector3.up * 200f,
crit = false,
damageColorIndex = (DamageColorIndex)0,
damageType = DamageTypeCombo.op_Implicit((DamageType)0),
falloffModel = (FalloffModel)1,
inflictor = ((EntityState)this).gameObject,
losType = (LoSType)0,
position = ((EntityState)this).characterBody.footPosition,
procChainMask = default(ProcChainMask),
procCoefficient = 1f,
radius = 10f,
teamIndex = ((BaseState)this).GetTeam()
}.Fire();
}
duration = leap