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.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.Commando;
using EntityStates.Commando.CommandoWeapon;
using EntityStates.Croco;
using EntityStates.Drone.DroneWeapon;
using EntityStates.Engi.EngiMissilePainter;
using EntityStates.Engi.EngiWeapon;
using EntityStates.Loader;
using EntityStates.Merc;
using HG;
using HG.BlendableTypes;
using HarmonyLib;
using JetBrains.Annotations;
using KinematicCharacterController;
using On.RoR2;
using Pathfinder;
using Pathfinder.Components;
using Pathfinder.Modules;
using Pathfinder.Modules.Characters;
using Pathfinder.Modules.CustomSkillDefs;
using Pathfinder.Modules.NPC;
using Pathfinder.Modules.Survivors;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Achievements;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2.HudOverlay;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2.Skills;
using RoR2.UI;
using Skillstates.Pathfinder;
using Skillstates.Pathfinder.Command;
using Skillstates.Squall;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.UI;
[assembly: AssemblyTitle("Pathfinder")]
[assembly: AssemblyProduct("Pathfinder")]
[assembly: AssemblyInformationalVersion("1.0.0+c3fa3f4ac8ac1d1c3ecf08bf4bc46abc2dd94ef7")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyCompany("Pathfinder")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: CompilationRelaxations(8)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: UnverifiableCode]
namespace Skillstates.Pathfinder
{
internal class AimBolas : AimThrowableBase
{
public static float loopDuration = 0.4f;
public static float throwForce = 60f;
private GameObject bolas;
private string javReady = "";
private OverrideController controller;
private ChildLocator childLocator;
public override void OnEnter()
{
controller = ((EntityState)this).GetComponent<OverrideController>();
if (controller.javelinReady)
{
javReady = "Jav";
}
bolas = ((Component)((BaseState)this).FindModelChild("Bolas")).gameObject;
bolas.SetActive(true);
((EntityState)this).PlayAnimation("Gesture, Override", javReady + "BolasLoop", "Hand.playbackRate", loopDuration, 0f);
base.projectilePrefab = Projectiles.shockBolas;
base.arcVisualizerPrefab = PathfinderAssets.lineVisualizer;
base.endpointVisualizerPrefab = PathfinderAssets.explosionVisualizer;
base.endpointVisualizerRadiusScale = 18f;
base.detonationRadius = 18f;
base.damageCoefficient = 0f;
base.setFuse = false;
base.projectileBaseSpeed = 200f;
base.maxDistance = float.PositiveInfinity;
((AimThrowableBase)this).OnEnter();
base.minimumDuration = 0.1f;
}
public override void FixedUpdate()
{
((BaseState)this).StartAimMode(0.1f, false);
((AimThrowableBase)this).FixedUpdate();
}
public override void OnExit()
{
((EntityState)this).PlayAnimation("Gesture, Override", javReady + "BolasThrow", "Hand.playbackRate", loopDuration, 0f);
bolas.SetActive(false);
((AimThrowableBase)this).OnExit();
}
}
internal class Evade : BaseState
{
public static float baseDuration = 0.2f;
public static float speedCoefficient = 12f;
public static float flatBonus = 65f;
private float bonusFromMovespeed;
private float totalDashBonus;
public static SkillDef javelinSkill;
private OverrideController controller;
private GameObject dustPrefab;
private Vector3 dashVector;
public override void OnEnter()
{
//IL_001b: 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_003f: 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_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00b6: 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_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Expected O, but got Unknown
((BaseState)this).OnEnter();
controller = ((EntityState)this).GetComponent<OverrideController>();
Vector3 val = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector);
dashVector = ((Vector3)(ref val)).normalized;
((EntityState)this).characterDirection.forward = dashVector;
CharacterMotor characterMotor = ((EntityState)this).characterMotor;
characterMotor.velocity *= 0.1f;
Util.PlaySound(SlideState.soundString, ((EntityState)this).gameObject);
dustPrefab = Object.Instantiate<GameObject>(SlideState.slideEffectPrefab, ((BaseState)this).FindModelChild("Pathfinder"));
EffectData val2 = new EffectData
{
origin = ((EntityState)this).characterBody.corePosition,
rotation = Util.QuaternionSafeLookRotation(dashVector)
};
EffectManager.SpawnEffect(PathfinderAssets.dashEffect, val2, false);
if (!controller.javelinReady)
{
((EntityState)this).PlayAnimation("FullBody, Override", "GroundDashF", "Dash.playbackRate", baseDuration, 0f);
controller.ReadyJavelin();
}
else
{
((EntityState)this).PlayAnimation("FullBody, Override", "JavGroundDash", "Dash.playbackRate", baseDuration, 0f);
}
if (base.moveSpeedStat <= 0f)
{
totalDashBonus = 0f;
return;
}
if (base.moveSpeedStat <= ((EntityState)this).characterBody.baseMoveSpeed)
{
totalDashBonus = flatBonus * (base.moveSpeedStat / ((EntityState)this).characterBody.baseMoveSpeed);
return;
}
float num = base.moveSpeedStat - ((EntityState)this).characterBody.baseMoveSpeed;
bonusFromMovespeed = num * ((EntityState)this).characterBody.baseMoveSpeed / base.moveSpeedStat;
totalDashBonus = speedCoefficient * bonusFromMovespeed + flatBonus;
}
public override void FixedUpdate()
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).FixedUpdate();
if (((EntityState)this).isAuthority)
{
((EntityState)this).characterDirection.forward = dashVector;
CharacterMotor characterMotor = ((EntityState)this).characterMotor;
characterMotor.rootMotion += dashVector * totalDashBonus * Time.fixedDeltaTime;
((EntityState)this).characterMotor.velocity.y = 0f;
}
if (((EntityState)this).fixedAge >= baseDuration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public override void OnExit()
{
if (Object.op_Implicit((Object)(object)dustPrefab))
{
Object.Destroy((Object)(object)dustPrefab);
}
((EntityState)this).PlayCrossfade("FullBody, Override", "BufferEmpty", 0.2f);
((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)3;
}
}
internal class JavelinToss : BaseState
{
private Animator animator;
private ChildLocator childLocator;
private GameObject shaft;
private GameObject spearhead;
private GameObject shaftBone;
private Ray aimRay;
private OverrideController controller;
private float fireTime;
private float throwForce = 150f;
private bool hasFired = false;
public static float baseDuration = 0.8f;
public float duration;
public override void OnEnter()
{
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
fireTime = duration * 0.15f;
((BaseState)this).StartAimMode(baseDuration + 0.1f, true);
controller = ((EntityState)this).GetComponent<OverrideController>();
animator = ((EntityState)this).GetModelAnimator();
aimRay = ((BaseState)this).GetAimRay();
childLocator = ((EntityState)this).GetModelChildLocator();
shaft = ((Component)childLocator.FindChild("Shaft")).gameObject;
shaftBone = ((Component)childLocator.FindChild("ShaftBone")).gameObject;
spearhead = ((Component)childLocator.FindChild("Spearhead")).gameObject;
if (Object.op_Implicit((Object)(object)animator))
{
if (!animator.GetBool("isMoving") && animator.GetBool("isGrounded"))
{
((EntityState)this).PlayAnimation("FullBody, Override", "JavelinToss", "Hand.playbackRate", duration, 0f);
}
else
{
((EntityState)this).PlayAnimation("Gesture, Override", "JavelinToss", "Hand.playbackRate", duration, 0f);
}
}
controller.UnreadyJavelin();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= fireTime && !hasFired)
{
shaft.SetActive(false);
shaftBone.SetActive(false);
spearhead.SetActive(false);
if (((EntityState)this).isAuthority)
{
FireJavelin();
}
}
if (((EntityState)this).fixedAge >= duration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void FireJavelin()
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
hasFired = true;
Util.PlaySound(FireMines.throwMineSoundString, ((EntityState)this).gameObject);
FireProjectileInfo val = default(FireProjectileInfo);
val.crit = ((BaseState)this).RollCrit();
val.damage = Config.JavelinDamage.Value * base.damageStat;
val.force = throwForce;
val.owner = ((EntityState)this).gameObject;
val.position = ((Ray)(ref aimRay)).origin;
val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction);
val.projectilePrefab = Projectiles.explodingJavelin;
ProjectileManager.instance.FireProjectile(val);
}
public override void OnExit()
{
shaft.SetActive(true);
shaftBone.SetActive(true);
spearhead.SetActive(true);
((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)1;
}
}
internal class RendingTalons : BaseState
{
private Animator animator;
private Vector3 flipVector;
private OverrideController controller;
private GameObject spearTrail;
private OverlapAttack airSpinAttack;
private OverlapAttack groundSpinAttack;
public static float flipBaseDuration = 0.3f;
public static float spinBaseDuration = 0.7f;
public static float forwardVelocity = 1.2f;
public static float upwardVelocity = 25f;
private float previousAirControl;
private bool isCrit;
private bool airFlipFinished;
private float flipStopwatch;
private float flipDuration;
private float spinStopwatch;
private float spinDuration;
private float spinFinishTime;
private string javString = "";
public override void OnEnter()
{
//IL_0104: 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_010b: Unknown result type (might be due to invalid IL or missing references)
//IL_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_012d: 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_0190: Unknown result type (might be due to invalid IL or missing references)
//IL_019b: Unknown result type (might be due to invalid IL or missing references)
//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
//IL_01af: Unknown result type (might be due to invalid IL or missing references)
//IL_0201: Unknown result type (might be due to invalid IL or missing references)
//IL_020b: Expected O, but got Unknown
//IL_0234: 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_0255: Unknown result type (might be due to invalid IL or missing references)
//IL_025a: Unknown result type (might be due to invalid IL or missing references)
//IL_0276: Unknown result type (might be due to invalid IL or missing references)
//IL_027b: Unknown result type (might be due to invalid IL or missing references)
//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
//IL_02ce: Expected O, but got Unknown
//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
//IL_02fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0319: Unknown result type (might be due to invalid IL or missing references)
//IL_031e: Unknown result type (might be due to invalid IL or missing references)
//IL_033a: Unknown result type (might be due to invalid IL or missing references)
//IL_033f: Unknown result type (might be due to invalid IL or missing references)
//IL_0349: Unknown result type (might be due to invalid IL or missing references)
//IL_034e: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
animator = ((EntityState)this).GetModelAnimator();
flipDuration = flipBaseDuration / base.attackSpeedStat;
controller = ((EntityState)this).GetComponent<OverrideController>();
spinDuration = spinBaseDuration / base.attackSpeedStat;
spinFinishTime = spinDuration * 0.325f;
previousAirControl = ((EntityState)this).characterMotor.airControl;
((EntityState)this).characterMotor.airControl = 1f;
spearTrail = ((Component)((BaseState)this).FindModelChild("SpearTrail")).gameObject;
spearTrail.SetActive(true);
animator.SetLayerWeight(animator.GetLayerIndex("AimYaw"), 0f);
animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 0f);
((EntityState)this).PlayAnimation("FullBody, Override", "AirFlip2", "Flip.playbackRate", flipDuration, 0f);
CharacterBody characterBody = ((EntityState)this).characterBody;
characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags | 1);
((EntityState)this).characterBody.AddBuff(Buffs.rendingTalonMS);
flipVector = ((EntityState)this).inputBank.moveVector;
((BaseState)this).StartAimMode(0.1f, true);
((EntityState)this).characterMotor.velocity.y = 0f;
((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f);
((EntityState)this).characterMotor.velocity.y += upwardVelocity;
CharacterMotor characterMotor = ((EntityState)this).characterMotor;
characterMotor.velocity += flipVector * base.moveSpeedStat * forwardVelocity;
Transform modelTransform = ((EntityState)this).GetModelTransform();
HitBoxGroup hitBoxGroup = null;
if (Object.op_Implicit((Object)(object)modelTransform))
{
hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == "Spear");
}
isCrit = ((BaseState)this).RollCrit();
airSpinAttack = new OverlapAttack();
airSpinAttack.attacker = ((EntityState)this).gameObject;
airSpinAttack.inflictor = ((EntityState)this).gameObject;
airSpinAttack.damageType = DamageTypeCombo.op_Implicit((DamageType)0);
airSpinAttack.procCoefficient = 1f;
airSpinAttack.teamIndex = ((BaseState)this).GetTeam();
airSpinAttack.isCrit = isCrit;
airSpinAttack.forceVector = Vector3.zero;
airSpinAttack.pushAwayForce = 1f;
airSpinAttack.damage = 3.5f * base.damageStat;
airSpinAttack.hitBoxGroup = hitBoxGroup;
airSpinAttack.hitEffectPrefab = GroundLight.comboHitEffectPrefab;
groundSpinAttack = new OverlapAttack();
groundSpinAttack.attacker = ((EntityState)this).gameObject;
groundSpinAttack.inflictor = ((EntityState)this).gameObject;
groundSpinAttack.damageType = DamageTypeCombo.op_Implicit((DamageType)32);
groundSpinAttack.procCoefficient = 1f;
groundSpinAttack.teamIndex = ((BaseState)this).GetTeam();
groundSpinAttack.isCrit = isCrit;
groundSpinAttack.forceVector = -Vector3.up * 6000f;
groundSpinAttack.pushAwayForce = 500f;
groundSpinAttack.damage = 8f * base.damageStat;
groundSpinAttack.hitBoxGroup = hitBoxGroup;
groundSpinAttack.hitEffectPrefab = GroundLight.finisherHitEffectPrefab;
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((BaseState)this).StartAimMode(0.1f, false);
if (airFlipFinished)
{
spinStopwatch += Time.fixedDeltaTime;
}
if (spinStopwatch >= spinDuration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
if (!((EntityState)this).characterMotor.isGrounded && !airFlipFinished && ((EntityState)this).isAuthority)
{
flipStopwatch += Time.fixedDeltaTime;
if (flipStopwatch >= flipDuration)
{
flipStopwatch = 0f;
airSpinAttack.ResetIgnoredHealthComponents();
}
airSpinAttack.Fire((List<HurtBox>)null);
}
if (((EntityState)this).characterMotor.isGrounded && !airFlipFinished && ((EntityState)this).fixedAge >= BaseLeap.minimumDuration)
{
StartGroundSpin();
}
if (airFlipFinished && spinStopwatch <= spinFinishTime && ((EntityState)this).isAuthority)
{
groundSpinAttack.Fire((List<HurtBox>)null);
}
else if (spinStopwatch > spinFinishTime)
{
spearTrail.SetActive(false);
}
}
public void StartGroundSpin()
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
airFlipFinished = true;
((EntityState)this).characterMotor.velocity = Vector3.zero;
if (controller.javelinReady)
{
javString = "Jav";
}
((EntityState)this).PlayAnimation("FullBody, Override", javString + "SpinSweep", "Flip.playbackRate", spinDuration, 0f);
Util.PlayAttackSpeedSound(GroundLight.finisherAttackSoundString, ((EntityState)this).gameObject, GroundLight.slashPitch);
}
public override void OnExit()
{
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
animator.SetLayerWeight(animator.GetLayerIndex("AimYaw"), 1f);
animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 1f);
spearTrail.SetActive(false);
((EntityState)this).characterBody.RemoveBuff(Buffs.rendingTalonMS);
((EntityState)this).characterMotor.airControl = previousAirControl;
((EntityState)this).PlayCrossfade("FullBody, Override", "BufferEmpty", 0.1f);
CharacterBody characterBody = ((EntityState)this).characterBody;
characterBody.bodyFlags = (BodyFlags)(characterBody.bodyFlags & -2);
((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 StrongThrust : BaseState
{
private Animator animator;
private OverlapAttack attack;
private OverrideController overrideController;
public static float baseDuration = 0.8f;
public static float smallHopVelocity = 5.5f;
private float duration;
private float earlyExitTime;
private float fireTime;
public bool isCancelling;
private bool hasHopped;
private bool hasFired;
public override void OnEnter()
{
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Expected O, but got Unknown
//IL_0106: 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_0127: Unknown result type (might be due to invalid IL or missing references)
//IL_012c: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
fireTime = duration * 0.3f;
animator = ((EntityState)this).GetModelAnimator();
animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "Thrust", "Thrust.playbackRate", duration, 0f);
overrideController = ((EntityState)this).GetComponent<OverrideController>();
overrideController.UnreadyHeartseeker();
Transform modelTransform = ((EntityState)this).GetModelTransform();
HitBoxGroup hitBoxGroup = null;
if (Object.op_Implicit((Object)(object)modelTransform))
{
hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == "Spear");
}
attack = new OverlapAttack();
attack.attacker = ((EntityState)this).gameObject;
attack.inflictor = ((EntityState)this).gameObject;
attack.damageType = DamageTypeCombo.op_Implicit((DamageType)0);
attack.procCoefficient = 1f;
attack.teamIndex = ((BaseState)this).GetTeam();
attack.isCrit = ((BaseState)this).RollCrit();
attack.forceVector = Vector3.zero;
attack.pushAwayForce = 1f;
attack.damage = 8f * base.damageStat;
attack.hitBoxGroup = hitBoxGroup;
attack.hitEffectPrefab = LoaderMeleeAttack.overchargeImpactEffectPrefab;
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((BaseState)this).StartAimMode(0.1f, true);
if (((EntityState)this).fixedAge >= fireTime && !hasFired && ((EntityState)this).isAuthority)
{
EffectManager.SimpleMuzzleFlash(PathfinderAssets.thrustEffect, ((EntityState)this).gameObject, "SpearTip", true);
Util.PlaySound("PF_Thrust", ((EntityState)this).gameObject);
if (attack.Fire((List<HurtBox>)null) && !((EntityState)this).characterMotor.isGrounded && !hasHopped)
{
((BaseState)this).SmallHop(((EntityState)this).characterMotor, smallHopVelocity);
hasHopped = true;
}
hasFired = true;
}
if (((EntityState)this).fixedAge >= earlyExitTime)
{
animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 1f);
}
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
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 Thrust : BaseState
{
private Animator animator;
private OverlapAttack attack;
public static float baseDuration = 0.7f;
public static float smallHopVelocity = 5.5f;
private float duration;
private float earlyExitTime;
private float fireTime;
public bool isCancelling;
private bool hasHopped;
private bool hasFired;
private bool isCrit;
public override void OnEnter()
{
//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0109: Expected O, but got Unknown
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_0153: Unknown result type (might be due to invalid IL or missing references)
//IL_0158: Unknown result type (might be due to invalid IL or missing references)
//IL_0174: Unknown result type (might be due to invalid IL or missing references)
//IL_0179: Unknown result type (might be due to invalid IL or missing references)
//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
earlyExitTime = duration * 0.67f;
fireTime = duration * 0.3f;
animator = ((EntityState)this).GetModelAnimator();
animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 0f);
((EntityState)this).PlayAnimation("Gesture, Override", "Thrust", "Thrust.playbackRate", duration, 0f);
PrimarySkillShurikenBehavior component = ((EntityState)this).GetComponent<PrimarySkillShurikenBehavior>();
if (isCancelling && Object.op_Implicit((Object)(object)component))
{
component.OnSkillActivated(((EntityState)this).skillLocator.primary);
}
Transform modelTransform = ((EntityState)this).GetModelTransform();
HitBoxGroup hitBoxGroup = null;
if (Object.op_Implicit((Object)(object)modelTransform))
{
hitBoxGroup = Array.Find(((Component)modelTransform).GetComponents<HitBoxGroup>(), (HitBoxGroup element) => element.groupName == "Spear");
}
attack = new OverlapAttack();
attack.attacker = ((EntityState)this).gameObject;
attack.inflictor = ((EntityState)this).gameObject;
attack.damageType = DamageTypeCombo.op_Implicit((DamageType)0);
attack.procCoefficient = 1f;
attack.teamIndex = ((BaseState)this).GetTeam();
attack.isCrit = ((BaseState)this).RollCrit();
attack.forceVector = Vector3.zero;
attack.pushAwayForce = 1f;
attack.damage = Config.ThrustDamage.Value * base.damageStat;
attack.hitBoxGroup = hitBoxGroup;
attack.hitEffectPrefab = null;
DamageAPI.AddModdedDamageType(attack, PathfinderPlugin.piercing);
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
((BaseState)this).StartAimMode(0.1f, true);
if (((EntityState)this).fixedAge >= fireTime && !hasFired && ((EntityState)this).isAuthority)
{
EffectManager.SimpleMuzzleFlash(PathfinderAssets.thrustEffect, ((EntityState)this).gameObject, "SpearTip", true);
Util.PlaySound("PF_Thrust", ((EntityState)this).gameObject);
if (attack.Fire((List<HurtBox>)null) && !((EntityState)this).characterMotor.isGrounded && !hasHopped)
{
((BaseState)this).SmallHop(((EntityState)this).characterMotor, smallHopVelocity);
hasHopped = true;
}
hasFired = true;
}
if (((EntityState)this).fixedAge >= earlyExitTime)
{
animator.SetLayerWeight(animator.GetLayerIndex("AimPitch"), 1f);
}
if (((EntityState)this).fixedAge >= earlyExitTime && ((EntityState)this).inputBank.skill1.down && ((EntityState)this).isAuthority && hasFired)
{
((EntityState)this).characterBody.isSprinting = false;
((EntityState)this).outer.SetNextState((EntityState)(object)new Thrust
{
isCancelling = true
});
}
else if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
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)1;
}
}
}
namespace Skillstates.Pathfinder.Command
{
internal class AttackCommand : BaseIssueCommand
{
private HurtBox target;
private string javString = "";
public override void OnEnter()
{
base.OnEnter();
target = commandTracker.GetTrackingTarget();
if (overrideController.javelinReady)
{
javString = "Jav";
}
((EntityState)this).PlayCrossfade("Gesture, Override", javString + "Point", "Hand.playbackRate", duration, 0.1f);
falconerComponent.AttackOrder(target);
}
}
internal class BaseIssueCommand : BaseState
{
protected FalconerComponent falconerComponent;
protected OverrideController overrideController;
public static float baseDuration = 0.7f;
protected float duration;
protected CommandTracker commandTracker;
public override void OnEnter()
{
((BaseState)this).OnEnter();
falconerComponent = ((EntityState)this).GetComponent<FalconerComponent>();
overrideController = ((EntityState)this).GetComponent<OverrideController>();
commandTracker = ((EntityState)this).GetComponent<CommandTracker>();
duration = baseDuration / base.attackSpeedStat;
((BaseState)this).StartAimMode(duration + 0.1f, false);
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
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)1;
}
}
internal class CommandMode : BaseState
{
private CommandTracker tracker;
private OverrideController overrideController;
private FalconerComponent falconerComponent;
private OverlayController overlayController;
public override void OnEnter()
{
//IL_005e: 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)
((BaseState)this).OnEnter();
tracker = ((EntityState)this).GetComponent<CommandTracker>();
overrideController = ((EntityState)this).GetComponent<OverrideController>();
falconerComponent = ((EntityState)this).GetComponent<FalconerComponent>();
tracker.ActivateIndicator();
overrideController.inCommandMode = true;
Util.PlaySound(Paint.enterSoundString, ((EntityState)this).gameObject);
overlayController = HudOverlayManager.AddOverlay(((EntityState)this).gameObject, new OverlayCreationParams
{
prefab = PathfinderAssets.commandCrosshair,
childLocatorEntry = "ScopeContainer"
});
overrideController.SetCommandSkills();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
}
public override void OnExit()
{
tracker.DeactivateIndicator();
RemoveOverlay();
Util.PlaySound(Paint.exitSoundString, ((EntityState)this).gameObject);
overrideController.UnsetCommandSkills();
overrideController.inCommandMode = false;
((EntityState)this).OnExit();
}
private void RemoveOverlay()
{
if (overlayController != null)
{
HudOverlayManager.RemoveOverlay(overlayController);
overlayController = null;
}
}
}
internal class FollowCommand : BaseIssueCommand
{
private string javString = "";
public override void OnEnter()
{
base.OnEnter();
if (overrideController.javelinReady)
{
javString = "Jav";
}
((EntityState)this).PlayCrossfade("Gesture, Override", javString + "Wave", "Hand.playbackRate", duration, 0.1f);
falconerComponent.FollowOrder();
}
}
internal class SpecialCommand : BaseIssueCommand
{
public HurtBox target;
private string javString = "";
public override void OnEnter()
{
base.OnEnter();
target = commandTracker.GetTrackingTarget();
if (overrideController.javelinReady)
{
javString = "Jav";
}
((EntityState)this).PlayCrossfade("Gesture, Override", javString + "Point", "Hand.playbackRate", duration, 0.1f);
falconerComponent.SpecialOrder(target);
}
}
}
namespace Skillstates.Squall
{
internal class SquallMainState : BaseState
{
private Animator modelAnimator;
private bool skill1InputReceived;
private bool skill2InputReceived;
private bool skill3InputReceived;
private bool skill4InputReceived;
private bool sprintInputReceived;
public override void OnEnter()
{
((BaseState)this).OnEnter();
modelAnimator = ((EntityState)this).GetModelAnimator();
((EntityState)this).PlayAnimation("Body", "Hover");
modelAnimator.SetFloat("Fly.rate", 1f);
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
PerformInputs();
}
public override void Update()
{
((EntityState)this).Update();
if (!(Time.deltaTime <= 0f))
{
UpdateAnimParams();
}
}
private void PerformInputs()
{
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_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)
if (!((EntityState)this).isAuthority)
{
return;
}
if (Object.op_Implicit((Object)(object)((EntityState)this).inputBank))
{
if (Object.op_Implicit((Object)(object)((EntityState)this).rigidbodyMotor))
{
((EntityState)this).rigidbodyMotor.moveVector = ((EntityState)this).inputBank.moveVector * ((EntityState)this).characterBody.moveSpeed;
}
if (Object.op_Implicit((Object)(object)((EntityState)this).rigidbodyDirection))
{
if (((EntityState)this).inputBank.moveVector != Vector3.zero)
{
((EntityState)this).rigidbodyDirection.aimDirection = ((EntityState)this).inputBank.moveVector;
}
else
{
((EntityState)this).rigidbodyDirection.aimDirection.y = 0f;
}
}
skill1InputReceived = ((EntityState)this).inputBank.skill1.down;
skill2InputReceived = ((EntityState)this).inputBank.skill2.down;
skill3InputReceived = ((EntityState)this).inputBank.skill3.down;
skill4InputReceived = ((EntityState)this).inputBank.skill4.down;
sprintInputReceived |= ((EntityState)this).inputBank.sprint.down;
if (((Vector3)(ref ((EntityState)this).inputBank.moveVector)).magnitude <= 0.5f)
{
sprintInputReceived = false;
}
((EntityState)this).characterBody.isSprinting = sprintInputReceived;
if (sprintInputReceived)
{
modelAnimator.SetFloat("Fly.rate", 1.5f);
}
sprintInputReceived = false;
}
if (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator))
{
if (skill1InputReceived && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.primary))
{
((EntityState)this).skillLocator.primary.ExecuteIfReady();
}
if (skill2InputReceived && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.secondary))
{
((EntityState)this).skillLocator.secondary.ExecuteIfReady();
}
if (skill3InputReceived && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.utility))
{
((EntityState)this).skillLocator.utility.ExecuteIfReady();
}
if (skill4InputReceived && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.special))
{
((EntityState)this).skillLocator.special.ExecuteIfReady();
}
}
}
private void UpdateAnimParams()
{
//IL_001b: 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_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)modelAnimator))
{
Vector3 moveVector = ((EntityState)this).inputBank.moveVector;
bool flag = moveVector != Vector3.zero && ((EntityState)this).characterBody.moveSpeed > Mathf.Epsilon;
modelAnimator.SetBool("isMoving", flag);
}
}
}
internal class DiveToPoint : BaseState
{
public static float giveUpDuration = 3f;
public static float speedCoefficient = 6f;
public Vector3 divePosition;
public float minDistanceFromPoint;
public override void OnEnter()
{
((BaseState)this).OnEnter();
((EntityState)this).characterBody.isSprinting = true;
if (minDistanceFromPoint <= 0f)
{
minDistanceFromPoint = 1f;
}
}
public override void FixedUpdate()
{
//IL_0010: 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_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_0089: 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_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_00af: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00b9: 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_00de: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).FixedUpdate();
PerformInputs();
bool flag = Vector3.Distance(divePosition, ((EntityState)this).transform.position) <= minDistanceFromPoint;
bool flag2 = ((EntityState)this).fixedAge >= giveUpDuration;
if ((flag || flag2) && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
if (((EntityState)this).isAuthority)
{
RigidbodyDirection rigidbodyDirection = ((EntityState)this).rigidbodyDirection;
Vector3 val = divePosition - ((EntityState)this).transform.position;
rigidbodyDirection.aimDirection = ((Vector3)(ref val)).normalized;
RigidbodyMotor rigidbodyMotor = ((EntityState)this).rigidbodyMotor;
Vector3 rootMotion = rigidbodyMotor.rootMotion;
val = divePosition - ((EntityState)this).transform.position;
rigidbodyMotor.rootMotion = rootMotion + ((Vector3)(ref val)).normalized * (speedCoefficient * base.moveSpeedStat * Time.fixedDeltaTime);
}
}
private void PerformInputs()
{
if (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator))
{
if (((EntityState)this).inputBank.skill1.down && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.primary))
{
((EntityState)this).skillLocator.primary.ExecuteIfReady();
}
if (((EntityState)this).inputBank.skill2.down && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.secondary))
{
((EntityState)this).skillLocator.secondary.ExecuteIfReady();
}
if (((EntityState)this).inputBank.skill3.down && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.utility))
{
((EntityState)this).skillLocator.utility.ExecuteIfReady();
}
if (((EntityState)this).inputBank.skill4.down && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.special))
{
((EntityState)this).skillLocator.special.ExecuteIfReady();
}
}
}
public override void OnExit()
{
((EntityState)this).characterBody.isSprinting = false;
((EntityState)this).PlayCrossfade("FullBody, Override", "BufferEmpty", 0.2f);
((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 MissileLauncher : BaseState
{
public HurtBox target;
public bool isCrit;
private SquallController squallController;
public static float baseDuration = 0.5f;
private float duration;
public override void OnEnter()
{
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
isCrit = ((BaseState)this).RollCrit();
squallController = ((EntityState)this).GetComponent<SquallController>();
if (!((EntityState)this).characterBody.isPlayerControlled)
{
target = squallController.currentBestHurtbox;
}
else
{
target = null;
}
FireMissile();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void FireMissile()
{
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Expected O, but got Unknown
//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_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_009f: 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_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Unknown result type (might be due to invalid IL or missing references)
if (NetworkServer.active && Object.op_Implicit((Object)(object)target) && target.healthComponent.alive)
{
MicroMissileOrb val = new MicroMissileOrb();
((Orb)val).target = target;
((Orb)val).origin = ((EntityState)this).characterBody.corePosition;
((GenericDamageOrb)val).damageValue = Config.SquallMissileDamage.Value * base.damageStat;
((GenericDamageOrb)val).attacker = ((EntityState)this).gameObject;
((GenericDamageOrb)val).teamIndex = ((EntityState)this).teamComponent.teamIndex;
((GenericDamageOrb)val).isCrit = isCrit;
((GenericDamageOrb)val).procChainMask = default(ProcChainMask);
((GenericDamageOrb)val).procCoefficient = 1f;
((GenericDamageOrb)val).damageColorIndex = (DamageColorIndex)0;
((GenericDamageOrb)val).damageType = DamageTypeCombo.op_Implicit((DamageType)0);
OrbManager.instance.AddOrb((Orb)(object)val);
}
EffectManager.SimpleMuzzleFlash(FireMissileBarrage.effectPrefab, ((EntityState)this).gameObject, "MissileLauncher", true);
}
public override void OnExit()
{
FireMissile();
((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)1;
}
}
internal class MountedGuns : BaseState
{
public static float baseDuration = 0.2f;
internal HealthComponent target;
private BulletAttack leftAttack;
private BulletAttack rightAttack;
private Ray aimRay;
private float duration;
public override void OnEnter()
{
//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_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_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_005e: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00b8: 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_00c9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_00f1: 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_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: 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_0130: Expected O, but got Unknown
//IL_0131: Unknown result type (might be due to invalid IL or missing references)
//IL_0136: Unknown result type (might be due to invalid IL or missing references)
//IL_0142: 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_0155: Unknown result type (might be due to invalid IL or missing references)
//IL_015a: Unknown result type (might be due to invalid IL or missing references)
//IL_015f: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_0175: Unknown result type (might be due to invalid IL or missing references)
//IL_0180: Unknown result type (might be due to invalid IL or missing references)
//IL_0187: Unknown result type (might be due to invalid IL or missing references)
//IL_019e: Unknown result type (might be due to invalid IL or missing references)
//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
//IL_01bf: 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_01db: Unknown result type (might be due to invalid IL or missing references)
//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
//IL_01e8: 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_01f4: Unknown result type (might be due to invalid IL or missing references)
//IL_01f9: 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_0215: Unknown result type (might be due to invalid IL or missing references)
//IL_021c: Unknown result type (might be due to invalid IL or missing references)
//IL_022c: Expected O, but got Unknown
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
aimRay = ((BaseState)this).GetAimRay();
if (((EntityState)this).isAuthority)
{
leftAttack = new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
muzzleName = "GunL",
minSpread = 0f,
maxSpread = 0f,
bulletCount = 1u,
damage = Config.SquallGunDamage.Value * base.damageStat,
tracerEffectPrefab = FireBarrage.tracerEffectPrefab,
force = 1f,
hitEffectPrefab = FirePistol2.hitEffectPrefab,
stopperMask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask,
isCrit = ((BaseState)this).RollCrit(),
radius = 1f,
damageType = DamageTypeCombo.op_Implicit((DamageType)0),
falloffModel = (FalloffModel)1,
procCoefficient = Config.SquallGunProc.Value,
maxDistance = 200f,
aimVector = ((Ray)(ref aimRay)).direction
};
rightAttack = new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
muzzleName = "GunR",
minSpread = 0f,
maxSpread = 0f,
bulletCount = 1u,
damage = Config.SquallGunDamage.Value * base.damageStat,
tracerEffectPrefab = FireBarrage.tracerEffectPrefab,
force = 1f,
hitEffectPrefab = FirePistol2.hitEffectPrefab,
stopperMask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask,
isCrit = ((BaseState)this).RollCrit(),
radius = 1f,
damageType = DamageTypeCombo.op_Implicit((DamageType)0),
falloffModel = (FalloffModel)1,
procCoefficient = Config.SquallGunProc.Value,
maxDistance = 200f,
aimVector = ((Ray)(ref aimRay)).direction
};
FireBullet(leftAttack);
FireBullet(rightAttack);
}
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
public void FireBullet(BulletAttack attack)
{
Util.PlaySound(FireBarrage.fireBarrageSoundString, ((EntityState)this).gameObject);
EffectManager.SimpleMuzzleFlash(FireBarrage.effectPrefab, ((EntityState)this).gameObject, attack.muzzleName, false);
if (((EntityState)this).isAuthority)
{
attack.Fire();
}
}
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)1;
}
}
internal class ProjectileMissiles : BaseState
{
public GameObject target;
public bool isCrit;
private GameObject missilePrefab;
private SquallController squallController;
public static float baseDuration = 0.5f;
private float duration;
public override void OnEnter()
{
((BaseState)this).OnEnter();
duration = baseDuration / base.attackSpeedStat;
isCrit = ((BaseState)this).RollCrit();
missilePrefab = CommonAssets.missilePrefab;
squallController = ((EntityState)this).GetComponent<SquallController>();
if (!((EntityState)this).characterBody.isPlayerControlled)
{
target = squallController.currentTarget;
}
else
{
target = null;
}
FireMissile();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void FireMissile()
{
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: 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)
if (((EntityState)this).isAuthority)
{
MissileUtils.FireMissile(((EntityState)this).characterBody.corePosition, ((EntityState)this).characterBody, default(ProcChainMask), target, Config.SquallMissileDamage.Value * base.damageStat, isCrit, missilePrefab, (DamageColorIndex)0, Vector3.up, 200f, false);
}
}
public override void OnExit()
{
FireMissile();
((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)1;
}
}
public class SquallEvis : BaseState
{
public static float diveDuration = 0.2f;
public static float attackDuration = 1.3f;
public static float baseAttackInterval = 0.129f;
public static float damageCoefficient = Config.specialDamageCoefficient.Value;
public static float chargePerHit = Config.specialRechargeAmount.Value;
internal HurtBox target;
internal HurtBoxGroup targetHurtBoxes;
private Transform modelTransform;
private CharacterModel characterModel;
private BatteryComponent batteryComponent;
private SquallVFXComponents squallVFXComponent;
private float attackInterval;
private float stopwatch;
private float maxHits;
private float hitCount;
private Vector3 startPosition;
private Vector3 enemyPosition;
private bool isCrit;
private bool attackFinished;
public override void OnEnter()
{
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
attackInterval = baseAttackInterval / base.attackSpeedStat;
maxHits = Mathf.Floor(attackDuration / attackInterval);
isCrit = ((BaseState)this).RollCrit();
modelTransform = ((EntityState)this).GetModelTransform();
characterModel = ((Component)modelTransform).GetComponent<CharacterModel>();
batteryComponent = ((EntityState)this).GetComponent<BatteryComponent>();
squallVFXComponent = ((EntityState)this).GetComponent<SquallVFXComponents>();
batteryComponent.pauseDrain = true;
squallVFXComponent.ToggleVFX(onOff: false);
CharacterModel obj = characterModel;
obj.invisibilityCount++;
if (Object.op_Implicit((Object)(object)target))
{
targetHurtBoxes = target.hurtBoxGroup;
startPosition = ((EntityState)this).transform.position;
enemyPosition = ((Component)target).transform.position;
squallVFXComponent.PlayDashEffect(startPosition, enemyPosition);
Util.PlaySound(EvisDash.endSoundString, ((EntityState)this).gameObject);
}
}
public override void FixedUpdate()
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
((EntityState)this).FixedUpdate();
stopwatch += Time.fixedDeltaTime;
if (((EntityState)this).isAuthority)
{
((EntityState)this).rigidbodyMotor.moveVector = Vector3.zero;
}
if (Object.op_Implicit((Object)(object)targetHurtBoxes))
{
target = targetHurtBoxes.hurtBoxes[Random.Range(0, targetHurtBoxes.hurtBoxes.Length - 1)];
}
if (Object.op_Implicit((Object)(object)target) && Object.op_Implicit((Object)(object)target.healthComponent) && stopwatch >= attackInterval && target.healthComponent.alive && ((EntityState)this).fixedAge >= diveDuration && !attackFinished && hitCount < maxHits)
{
stopwatch = 0f;
DoAttack();
}
if ((hitCount >= maxHits || ((EntityState)this).fixedAge >= diveDuration + attackDuration || !target.healthComponent.alive) && ((EntityState)this).isAuthority && !attackFinished)
{
FinishAttack();
}
if (attackFinished && stopwatch >= diveDuration)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void DoAttack()
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Expected O, but got Unknown
//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_011b: 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_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_0139: Unknown result type (might be due to invalid IL or missing references)
if (NetworkServer.active)
{
enemyPosition = ((Component)target).transform.position;
DamageInfo val = new DamageInfo();
val.attacker = ((EntityState)this).gameObject;
val.procCoefficient = 1f;
val.crit = isCrit;
val.position = enemyPosition;
val.damage = base.damageStat * damageCoefficient;
target.healthComponent.TakeDamage(val);
if (target.healthComponent.alive)
{
target.healthComponent.body.AddTimedBuff(Buffs.armorShred, 7f);
}
GlobalEventManager.instance.OnHitEnemy(val, ((Component)target.healthComponent).gameObject);
GlobalEventManager.instance.OnHitAll(val, ((Component)target.healthComponent).gameObject);
}
float amount = (isCrit ? (2f * chargePerHit) : chargePerHit);
batteryComponent.Recharge(amount, canOvercharge: true);
EffectManager.SimpleImpactEffect(PathfinderAssets.squallEvisEffect, enemyPosition, enemyPosition, true);
EffectManager.SimpleImpactEffect(Assaulter.hitEffectPrefab, enemyPosition, enemyPosition, true);
hitCount += 1f;
}
private void FinishAttack()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
squallVFXComponent.PlayDashEffect(enemyPosition, startPosition);
Util.PlaySound(EvisDash.endSoundString, ((EntityState)this).gameObject);
attackFinished = true;
stopwatch = 0f;
}
public override void OnExit()
{
CharacterModel obj = characterModel;
obj.invisibilityCount--;
batteryComponent.pauseDrain = false;
squallVFXComponent.ToggleVFX(onOff: true);
((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;
}
}
}
namespace Pathfinder
{
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);
}
}
[BepInPlugin("com.Bog.Pathfinder", "Pathfinder", "0.5.3")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class PathfinderPlugin : BaseUnityPlugin
{
public const string MODUID = "com.Bog.Pathfinder";
public const string MODNAME = "Pathfinder";
public const string MODVERSION = "0.5.3";
public const string DEVELOPER_PREFIX = "BOG";
public static PathfinderPlugin instance;
public static PluginInfo PInfo;
public static GameObject pathfinderBodyPrefab;
public static GameObject squallBodyPrefab;
public static GameObject commandCrosshair;
public static BodyIndex squallBodyIndex;
public static BodyIndex teslaTrooperBodyIndex;
public static SkillDef javelinSkill;
internal static ModdedDamageType piercing;
private void Awake()
{
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004e: Unknown result type (might be due to invalid IL or missing references)
instance = this;
PInfo = ((BaseUnityPlugin)this).Info;
Log.Init(((BaseUnityPlugin)this).Logger);
PathfinderAssets.Initialize();
Config.ReadConfig(this);
States.RegisterStates();
Buffs.RegisterBuffs();
Projectiles.RegisterProjectiles();
Tokens.AddTokens();
ItemDisplays.PopulateDisplays();
piercing = DamageAPI.ReserveDamageType();
new Squall().Initialize();
new Pathfinder.Modules.Survivors.Pathfinder().Initialize();
new ContentPacks().Initialize();
Subscriptions();
Hook();
}
private void Subscriptions()
{
GlobalEventManager.onClientDamageNotified += GlobalEventManager_onClientDamageNotified;
}
private void Hook()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Expected O, but got Unknown
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Expected O, but got Unknown
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
BodyCatalog.SetBodyPrefabs += new hook_SetBodyPrefabs(BodyCatalog_SetBodyPrefabs);
CharacterBody.RecalculateStats += new hook_RecalculateStats(CharacterBody_RecalculateStats);
HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage);
PrimarySkillShurikenBehavior.OnSkillActivated += new hook_OnSkillActivated(PrimarySkillShurikenBehavior_OnSkillActivated);
SkillLocator.ApplyAmmoPack += new hook_ApplyAmmoPack(SkillLocator_ApplyAmmoPack);
CharacterBody.AddBuff_BuffIndex += new hook_AddBuff_BuffIndex(CharacterBody_AddBuff_BuffIndex);
}
private void BodyCatalog_SetBodyPrefabs(orig_SetBodyPrefabs orig, GameObject[] newBodyPrefabs)
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(newBodyPrefabs);
squallBodyIndex = BodyCatalog.FindBodyIndex(squallBodyPrefab);
teslaTrooperBodyIndex = BodyCatalog.FindBodyIndex("TeslaTrooperBody");
Log.Warning("Squall's body index is: " + ((object)(BodyIndex)(ref squallBodyIndex)).ToString());
}
private void CharacterBody_AddBuff_BuffIndex(orig_AddBuff_BuffIndex orig, CharacterBody self, BuffIndex buffType)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self, buffType);
if (buffType == BuffCatalog.FindBuffIndex("Charged") && self.bodyIndex == squallBodyIndex)
{
BatteryComponent component = ((Component)self).GetComponent<BatteryComponent>();
if (Object.op_Implicit((Object)(object)component))
{
component.Recharge(3f, canOvercharge: true);
}
}
}
private void SkillLocator_ApplyAmmoPack(orig_ApplyAmmoPack orig, SkillLocator self)
{
orig.Invoke(self);
FalconerComponent component = ((Component)self).GetComponent<FalconerComponent>();
if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.squallController) || !NetworkServer.active)
{
return;
}
GenericSkill[] allSkills = component.squallController.skillLocator.allSkills;
foreach (GenericSkill val in allSkills)
{
if (val.CanApplyAmmoPack())
{
val.ApplyAmmoPack();
}
}
}
private void PrimarySkillShurikenBehavior_OnSkillActivated(orig_OnSkillActivated orig, PrimarySkillShurikenBehavior self, GenericSkill skill)
{
OverrideController component = ((Component)self).GetComponent<OverrideController>();
if (!Object.op_Implicit((Object)(object)component) || (!component.javelinReady && !component.inCommandMode))
{
orig.Invoke(self, skill);
}
}
private void GlobalEventManager_onClientDamageNotified(DamageDealtMessage msg)
{
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
if (!Object.op_Implicit((Object)(object)msg.attacker))
{
return;
}
SquallController component = msg.attacker.GetComponent<SquallController>();
if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.owner) || !Object.op_Implicit((Object)(object)msg.victim) || msg.isSilent)
{
return;
}
HealthComponent component2 = msg.victim.GetComponent<HealthComponent>();
if (!Object.op_Implicit((Object)(object)component2) || component2.dontShowHealthbar)
{
return;
}
TeamIndex objectTeam = TeamComponent.GetObjectTeam(((Component)component2).gameObject);
foreach (CombatHealthBarViewer instances in CombatHealthBarViewer.instancesList)
{
if ((Object)(object)component.owner == (Object)(object)instances.viewerBodyObject && Object.op_Implicit((Object)(object)instances.viewerBodyObject))
{
instances.HandleDamage(component2, objectTeam);
}
}
}
private void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0126: 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_0155: Unknown result type (might be due to invalid IL or missing references)
//IL_015a: Unknown result type (might be due to invalid IL or missing references)
//IL_0145: Unknown result type (might be due to invalid IL or missing references)
//IL_014a: Unknown result type (might be due to invalid IL or missing references)
if (self.body.bodyIndex == squallBodyIndex && Object.op_Implicit((Object)(object)damageInfo.attacker))
{
CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
if (Object.op_Implicit((Object)(object)component) && component.bodyIndex == teslaTrooperBodyIndex && component.teamComponent.teamIndex == self.body.teamComponent.teamIndex && NetworkServer.active)
{
self.body.AddBuff(BuffCatalog.FindBuffIndex("Charged"));
}
}
if (DamageAPI.HasModdedDamageType(damageInfo, piercing) && !damageInfo.rejected && Object.op_Implicit((Object)(object)damageInfo.attacker))
{
CharacterBody component2 = damageInfo.attacker.GetComponent<CharacterBody>();
if (Object.op_Implicit((Object)(object)component2))
{
float num = Vector3.Distance(component2.corePosition, damageInfo.position);
if (num >= 11f)
{
damageInfo.damage *= 1.3f;
damageInfo.damageColorIndex = (DamageColorIndex)5;
if (self.body.armor > 0f)
{
damageInfo.damageType = DamageTypeCombo.op_Implicit((DamageType)2);
}
EffectManager.SimpleImpactEffect(PathfinderAssets.thrustTipImpact, damageInfo.position, Vector3.zero, true);
}
else
{
EffectManager.SimpleImpactEffect(GroundLight.comboHitEffectPrefab, damageInfo.position, Vector3.zero, true);
}
}
}
orig.Invoke(self, damageInfo);
}
private void CharacterBody_RecalculateStats(orig_RecalculateStats orig, CharacterBody self)
{
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
if (!Object.op_Implicit((Object)(object)self))
{
return;
}
if (self.HasBuff(Buffs.electrocute))
{
self.moveSpeed *= Config.electrocuteSlowAmount.Value;
}
if (self.HasBuff(Buffs.armorShred))
{
self.armor -= Config.specialArmorShred.Value * (float)self.GetBuffCount(Buffs.armorShred);
}
if (self.HasBuff(Buffs.rendingTalonMS))
{
self.moveSpeed *= 1.2f;
}
if (self.bodyIndex == squallBodyIndex)
{
BatteryComponent component = ((Component)self).GetComponent<BatteryComponent>();
if (Object.op_Implicit((Object)(object)component))
{
component.rechargeRate = Config.batteryRechargeRate.Value * self.attackSpeed;
}
}
}
}
}
namespace Pathfinder.Modules
{
public static class Buffs
{
internal static BuffDef electrocute;
internal static BuffDef armorShred;
internal static BuffDef rendingTalonMS;
internal static DotIndex electrocuteDoT;
internal static void RegisterBuffs()
{
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_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_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
BuffDef val = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/ShockNearby/bdTeslaField.asset").WaitForCompletion();
BuffDef val2 = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/ArmorReductionOnHit/bdPulverized.asset").WaitForCompletion();
BuffDef val3 = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/SprintOutOfCombat/bdWhipBoost.asset").WaitForCompletion();
electrocute = AddNewBuff("Electrocuted", val.iconSprite, Color.cyan, canStack: false, isDebuff: true);
armorShred = AddNewBuff("ArmorShred", val2.iconSprite, Color.cyan, canStack: true, isDebuff: true);
rendingTalonMS = AddNewBuff("RendingTalonsMS", val3.iconSprite, Color.white, canStack: false, isDebuff: false);
RegisterDoTs();
}
private static void RegisterDoTs()
{
//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)
electrocuteDoT = DotAPI.RegisterDotDef(0.2f, Config.electrocuteDPS.Value * 0.2f, (DamageColorIndex)0, electrocute, (CustomDotBehaviour)null, (CustomDotVisual)null);
}
internal static BuffDef AddNewBuff(string buffName, Sprite buffIcon, Color buffColor, bool canStack, bool isDebuff)
{
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
BuffDef val = ScriptableObject.CreateInstance<BuffDef>();
((Object)val).name = buffName;
val.buffColor = buffColor;
val.canStack = canStack;
val.isDebuff = isDebuff;
val.eliteDef = null;
val.iconSprite = buffIcon;
Content.AddBuffDef(val);
return val;
}
}
public static class Config
{
private static ConfigEntry<string> modVersion;
private static string pathfinderPrefix = "Pathfinder - ";
private static string squallPrefix = "Squall - ";
private static string versionSuffix = " - 0.5.3";
public static ConfigEntry<float> sortPosition;
private static string primarySectionTitle = pathfinderPrefix + "Primary";
public static ConfigEntry<float> ThrustDamage;
private static string secondarySectionTitle = pathfinderPrefix + "Secondary";
public static ConfigEntry<float> dashCD;
public static ConfigEntry<float> JavelinDamage;
private static string utilitySectionTitle = pathfinderPrefix + "Utility";
public static ConfigEntry<float> rendingTalonsCD;
public static ConfigEntry<float> AirSpinDamage;
public static ConfigEntry<float> GroundSpinDamage;
public static ConfigEntry<float> bolasCD;
public static ConfigEntry<float> electrocuteDPS;
public static ConfigEntry<float> electrocuteSlowAmount;
private static string squallBatteryTitle = squallPrefix + "Battery";
public static ConfigEntry<float> batteryDrainRate;
public static ConfigEntry<float> batteryRechargeRate;
public static ConfigEntry<bool> laserLineEnabled;
private static string squallAttackTitle = squallPrefix + "Attack Mode";
public static ConfigEntry<float> SquallGunDamage;
public static ConfigEntry<float> SquallGunProc;
public static ConfigEntry<float> SquallMissileDamage;
public static ConfigEntry<float> SquallMissileProc;
public static string squallSpecialTitle = squallPrefix + "Special";
public static ConfigEntry<float> goForThroatCD;
public static ConfigEntry<float> specialDamageCoefficient;
public static ConfigEntry<float> specialRechargeAmount;
public static ConfigEntry<float> specialArmorShred;
public static void ReadConfig(PathfinderPlugin plugin)
{
((BaseUnityPlugin)plugin).Config.Clear();
modVersion = ((BaseUnityPlugin)plugin).Config.Bind<string>("General", "Mod Version", "0.5.3", "Current version; don't touch this or it will reset your config");
sortPosition = ((BaseUnityPlugin)plugin).Config.Bind<float>("General", "Lobby Sort Position", 9.5f, "Sort position of Pathfinder in the character select lobby");
if (modVersion.Value != ((ConfigEntryBase)modVersion).DefaultValue.ToString())
{
Log.Warning("Pathfinder - version mismatch detected, clearing config");
((Dictionary<ConfigDefinition, string>)AccessTools.PropertyGetter(typeof(ConfigFile), "OrphanedEntries").Invoke(((BaseUnityPlugin)plugin).Config, null)).Clear();
modVersion.Value = ((ConfigEntryBase)modVersion).DefaultValue.ToString();
}
ThrustDamage = ((BaseUnityPlugin)plugin).Config.Bind<float>(primarySectionTitle, "Thrust Damage Coefficient", 2.5f, "Damage coefficient of Thrust");
dashCD = ((BaseUnityPlugin)plugin).Config.Bind<float>(secondarySectionTitle, "Fleetfoot Cooldown", 6f, "Cooldown of Fleetfoot");
JavelinDamage = ((BaseUnityPlugin)plugin).Config.Bind<float>(secondarySectionTitle, "Javelin Damage Coefficient", 8f, "Damage coefficient of javelin toss");
bolasCD = ((BaseUnityPlugin)plugin).Config.Bind<float>(utilitySectionTitle, "Shock Bolas Cooldown", 18f, "Cooldown of Shock Bolas");
electrocuteDPS = ((BaseUnityPlugin)plugin).Config.Bind<float>(utilitySectionTitle, "Electrocute Damage per Second", 1.2f, "Damage % per second of Electrocute DoT");
electrocuteSlowAmount = ((BaseUnityPlugin)plugin).Config.Bind<float>(utilitySectionTitle, "Electrocute Slow Multiplier", 0.5f, "Movespeed multiplier of Electrocute DoT");
rendingTalonsCD = ((BaseUnityPlugin)plugin).Config.Bind<float>(utilitySectionTitle, "Rending Talons Cooldown", 6f, "Cooldown of Rending Talons");
AirSpinDamage = ((BaseUnityPlugin)plugin).Config.Bind<float>(utilitySectionTitle, "Air Spin Damage Coefficient", 3f, "Damage coefficient of Rending Talons aerial spin attack");
GroundSpinDamage = ((BaseUnityPlugin)plugin).Config.Bind<float>(utilitySectionTitle, "Ground Spin Damage Coefficient", 8f, "Damage coefficient of Rending Talons ground spin attack");
batteryDrainRate = ((BaseUnityPlugin)plugin).Config.Bind<float>(squallBatteryTitle, "Battery Drain Rate", 8f, "Amount battery drains per second while Squall is in Attack Mode");
batteryRechargeRate = ((BaseUnityPlugin)plugin).Config.Bind<float>(squallBatteryTitle, "Battery Recharge Rate", 1f, "Base battery recharge rate while Squall is in Follow Mode");
laserLineEnabled = ((BaseUnityPlugin)plugin).Config.Bind<bool>("General", "Enable Squall Laser Pointer", true, "Shows Squall's laser pointer");
SquallGunDamage = ((BaseUnityPlugin)plugin).Config.Bind<float>(squallAttackTitle, "Machine Guns Damage Coefficient", 0.3f, "Damage coefficient of Squall's machine guns. Each attack fires two bullets.");
SquallGunProc = ((BaseUnityPlugin)plugin).Config.Bind<float>(squallAttackTitle, "Machine Guns Proc Coefficient", 0.3f, "Proc coefficient of Squall's machine guns. Each attack fires two bullets.");
SquallMissileDamage = ((BaseUnityPlugin)plugin).Config.Bind<float>(squallAttackTitle, "Missile Launcher Damage Coefficient", 1.5f, "Damage coefficient of Squall's missile launcher.");
goForThroatCD = ((BaseUnityPlugin)plugin).Config.Bind<float>(squallSpecialTitle, "Go for the Throat Cooldown", 12f, "Cooldown of Go for the Throat.");
specialDamageCoefficient = ((BaseUnityPlugin)plugin).Config.Bind<float>(squallSpecialTitle, "Go for the Throat Damage Coefficient", 0.7f, "Damage coefficient per strike of Go for the Throat.");
specialRechargeAmount = ((BaseUnityPlugin)plugin).Config.Bind<float>(squallSpecialTitle, "Go for the Throat Recharge Amount", 1f, "Percentage of battery recharged per strike of Go for the Throat.");
specialArmorShred = ((BaseUnityPlugin)plugin).Config.Bind<float>(squallSpecialTitle, "Go for the Throat Armor Shred Amount", 2f, "Flat amount of armor deducted per strike of Go for the Throat.");
}
public static ConfigEntry<bool> CharacterEnableConfig(string characterName, string description = "Set to false to disable this character", bool enabledDefault = true)
{
return ((BaseUnityPlugin)PathfinderPlugin.instance).Config.Bind<bool>("General", "Enable " + characterName, enabledDefault, description);
}
}
internal class ContentPacks : IContentPackProvider
{
internal ContentPack contentPack = new ContentPack();
public static List<GameObject> bodyPrefabs = new List<GameObject>();
public static List<GameObject> masterPrefabs = new List<GameObject>();
public static List<GameObject> projectilePrefabs = new List<GameObject>();
public static List<SurvivorDef> survivorDefs = new List<SurvivorDef>();
public static List<UnlockableDef> unlockableDefs = new List<UnlockableDef>();
public static List<SkillFamily> skillFamilies = new List<SkillFamily>();
public static List<SkillDef> skillDefs = new List<SkillDef>();
public static List<Type> entityStates = new List<Type>();
public static List<BuffDef> buffDefs = new List<BuffDef>();
public static List<EffectDef> effectDefs = new List<EffectDef>();
public static List<NetworkSoundEventDef> networkSoundEventDefs = new List<NetworkSoundEventDef>();
public string identifier => "com.Bog.Pathfinder";
public void Initialize()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders);
}
private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider)
{
addContentPackProvider.Invoke((IContentPackProvider)(object)this);
}
public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args)
{
contentPack.identifier = identifier;
contentPack.bodyPrefabs.Add(bodyPrefabs.ToArray());
contentPack.masterPrefabs.Add(masterPrefabs.ToArray());
contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray());
contentPack.survivorDefs.Add(survivorDefs.ToArray());
contentPack.unlockableDefs.Add(unlockableDefs.ToArray());
contentPack.skillDefs.Add(skillDefs.ToArray());
contentPack.skillFamilies.Add(skillFamilies.ToArray());
contentPack.entityStateTypes.Add(entityStates.ToArray());
contentPack.buffDefs.Add(buffDefs.ToArray());
contentPack.effectDefs.Add(effectDefs.ToArray());
contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray());
args.ReportProgress(1f);
yield break;
}
public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args)
{
ContentPack.Copy(contentPack, args.output);
args.ReportProgress(1f);
yield break;
}
public IEnumerator FinalizeAsync(FinalizeAsyncArgs args)
{
args.ReportProgress(1f);
yield break;
}
}
internal class Content
{
public static void AddCharacterBodyPrefab(GameObject bprefab)
{
ContentPacks.bodyPrefabs.Add(bprefab);
}
public static void AddMasterPrefab(GameObject prefab)
{
ContentPacks.masterPrefabs.Add(prefab);
}
public static void AddProjectilePrefab(GameObject prefab)
{
ContentPacks.projectilePrefabs.Add(prefab);
}
public static void AddSurvivorDef(SurvivorDef survivorDef)
{
ContentPacks.survivorDefs.Add(survivorDef);
}
public static void AddUnlockableDef(UnlockableDef unlockableDef)
{
ContentPacks.unlockableDefs.Add(unlockableDef);
}
public static void AddSkillDef(SkillDef skillDef)
{
ContentPacks.skillDefs.Add(skillDef);
}
public static void AddSkillFamily(SkillFamily skillFamily)
{
ContentPacks.skillFamilies.Add(skillFamily);
}
public static void AddEntityState(Type entityState)
{
ContentPacks.entityStates.Add(entityState);
}
public static void AddBuffDef(BuffDef buffDef)
{
ContentPacks.buffDefs.Add(buffDef);
}
public static void AddEffectDef(EffectDef effectDef)
{
ContentPacks.effectDefs.Add(effectDef);
}
public static void AddNetworkSoundEventDef(NetworkSoundEventDef networkSoundEventDef)
{
ContentPacks.networkSoundEventDefs.Add(networkSoundEventDef);
}
}
internal static class Helpers
{
internal const string agilePrefix = "<style=cIsUtility>Agile.</style> ";
internal static string ScepterDescription(string desc)
{
return "\n<color=#d299ff>SCEPTER: " + desc + "</color>";
}
public static T[] Append<T>(ref T[] array, List<T> list)
{
int num = array.Length;
int count = list.Count;
Array.Resize(ref array, num + count);
list.CopyTo(array, num);
return array;
}
public static Func<T[], T[]> AppendDel<T>(List<T> list)
{
return (T[] r) => Append(ref r, list);
}
}
internal static class ItemDisplays
{
private static Dictionary<string, GameObject> itemDisplayPrefabs = new Dictionary<string, GameObject>();
internal static void PopulateDisplays()
{
PopulateFromBody("MageBody");
PopulateFromBody("LunarExploderBody");
PopulateCustomLightningArm();
}
private static void PopulateFromBody(string bodyName)
{
ItemDisplayRuleSet itemDisplayRuleSet = ((Component)LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterBodies/" + bodyName).GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>().itemDisplayRuleSet;
KeyAssetRuleGroup[] keyAssetRuleGroups = itemDisplayRuleSet.keyAssetRuleGroups;
for (int i = 0; i < keyAssetRuleGroups.Length; i++)
{
ItemDisplayRule[] rules = keyAssetRuleGroups[i].displayRuleGroup.rules;
for (int j = 0; j < rules.Length; j++)
{
GameObject followerPrefab = rules[j].followerPrefab;
if (Object.op_Implicit((Object)(object)followerPrefab))
{
string key = ((Object)followerPrefab).name?.ToLowerInvariant();
if (!itemDisplayPrefabs.ContainsKey(key))
{
itemDisplayPrefabs[key] = followerPrefab;
}
}
}
}
}
private static void PopulateCustomLightningArm()
{
GameObject val = PrefabAPI.InstantiateClone(itemDisplayPrefabs["displaylightningarmright"], "DisplayLightningCustom", false);
LimbMatcher component = val.GetComponent<LimbMatcher>();
component.limbPairs[0].targetChildLimb = "LightningArm1";
component.limbPairs[1].targetChildLimb = "LightningArm2";
component.limbPairs[2].targetChildLimb = "LightningArmEnd";
itemDisplayPrefabs["displaylightningarmcustom"] = val;
}
public static GameObject LoadDisplay(string name)
{
if (itemDisplayPrefabs.ContainsKey(name.ToLowerInvariant()) && Object.op_Implicit((Object)(object)itemDisplayPrefabs[name.ToLowerInvariant()]))
{
return itemDisplayPrefabs[name.ToLowerInvariant()];
}
Log.Error("item display " + name + " returned null");
return null;
}
}
internal static class Materials
{
private static List<Material> cachedMaterials = new List<Material>();
public static Material CreateHopooMaterial(string materialName)
{
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_007a: Expected O, but got Unknown
Material val = cachedMaterials.Find(delegate(Material mat)
{
materialName.Replace(" (Instance)", "");
return ((Object)mat).name.Contains(materialName);
});
if (Object.op_Implicit((Object)(object)val))
{
return val;
}
val = PathfinderAssets.mainAssetBundle.LoadAsset<Material>(materialName);
if (!Object.op_Implicit((Object)(object)val))
{
Log.Error("Failed to load material: " + materialName + " - Check to see that the material in your Unity project matches this name");
return new Material(PathfinderAssets.hotpoo);
}
return val.SetHopooMaterial();
}
public static Material SetHopooMaterial(this Material tempMat)
{
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_0135: Unknown result type (might be due to invalid IL or missing references)
if (cachedMaterials.Contains(tempMat))
{
return tempMat;
}
float? num = null;
float? num2 = null;
Color? val = null;
if (tempMat.IsKeywordEnabled("_NORMALMAP"))
{
num = tempMat.GetFloat("_BumpScale");
}
if (tempMat.IsKeywordEnabled("_EMISSION"))
{
val = tempMat.GetColor("_EmissionColor");
}
if (tempMat.IsKeywordEnabled("CUTOUT"))
{
num2 = tempMat.GetFloat("_Cutoff");
}
tempMat.shader = PathfinderAssets.hotpoo;
tempMat.SetColor("_Color", tempMat.GetColor("_Color"));
tempMat.SetTexture("_MainTex", tempMat.GetTexture("_MainTex"));
tempMat.SetTexture("_EmTex", tempMat.GetTexture("_EmissionMap"));
tempMat.EnableKeyword("DITHER");
if (num.HasValue)
{
tempMat.SetFloat("_NormalStrength", num.Value);
}
if (val.HasValue)
{
tempMat.SetColor("_EmColor", val.Value);
tempMat.SetFloat("_EmPower", 1f);
}
if (num2.HasValue)
{
tempMat.EnableKeyword("CUTOUT");
tempMat.SetFloat("_Cutoff", num2.Value);
}
if (tempMat.IsKeywordEnabled("NOCULL"))
{
tempMat.SetInt("_Cull", 0);
}
if (tempMat.IsKeywordEnabled("LIMBREMOVAL"))
{
tempMat.SetInt("_LimbRemovalOn", 1);
}
cachedMaterials.Add(tempMat);
return tempMat;
}
public static Material MakeUnique(this Material material)
{
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Expected O, but got Unknown
if (cachedMaterials.Contains(material))
{
return new Material(material);
}
return material;
}
public static Material SetColor(this Material material, Color color)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
material.SetColor("_Color", color);
return material;
}
public static Material SetNormal(this Material material, float normalStrength = 1f)
{
material.SetFloat("_NormalStrength", normalStrength);
return material;
}
public static Material SetEmission(this Material material)
{
return material.SetEmission(1f);
}
public static Material SetEmission(this Material material, float emission)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
return material.SetEmission(emission, Color.white);
}
public static Material SetEmission(this Material material, float emission, Color emissionColor)
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
material.SetFloat("_EmPower", emission);
material.SetColor("_EmColor", emissionColor);
return material;
}
public static Material SetCull(this Material material, bool cull = false)
{
material.SetInt("_Cull", cull ? 1 : 0);
return material;
}
}
internal static class PathfinderAssets
{
internal static AssetBundle mainAssetBundle;
internal static GameObject BatteryMeter;
internal static GameObject commandCrosshair;
internal static GameObject thrustEffect;
internal static GameObject thrustTipImpact;
internal static GameObject dashEffect;
internal static GameObject javEffect;
internal static GameObject vaultEffect;
internal static GameObject lightningRingEffect;
internal static GameObject lineVisualizer;
internal static GameObject explosionVisualizer;
internal static GameObject squallEvisEffect;
internal static GameObject squallDashEffect;
internal static GameObject squallFollowFlash;
internal static GameObject squallAttackFlash;
internal static NetworkSoundEventDef swordHitSoundEvent;
internal static Shader hotpoo = LegacyResourcesAPI.Load<Shader>("Shaders/Deferred/HGStandard");
internal static Material commandoMat;
private static string[] assetNames = new string[0];
private const string assetFolder = "PF_Assets";
private const string assetbundleName = "pathfinderassets";
private const string soundbankFolder = "PF_Soundbanks";
private const string soundbankName = "PathfinderBank.bnk";
private const string csProjName = "Pathfinder";
public static string AssetBundlePath => Path.Combine(Path.GetDirectoryName(PathfinderPlugin.PInfo.Location), "PF_Assets", "pathfinderassets");
internal static void Initialize()
{
bool flag = false;
LoadAssetBundle();
PopulateAssets();
}
internal static void LoadAssetBundle()
{
try
{
if ((Object)(object)mainAssetBundle == (Object)null)
{
mainAssetBundle = AssetBundle.LoadFromFile(AssetBundlePath);
}
if (Object.op_Implicit((Object)(object)mainAssetBundle))
{
Log.Warning("Morris asset bundle loaded successfully");
}
}
catch (Exception ex)
{
Log.Error("Failed to load assetbundle. Make sure your assetbundle name is setup correctly\n" + ex);
return;
}
assetNames = mainAssetBundle.GetAllAssetNames();
}
internal static void PopulateAssets()
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0052: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_010f: 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_0176: Unknown result type (might be due to invalid IL or missing references)
//IL_021c: Unknown result type (might be due to invalid IL or missing references)
//IL_024e: Unknown result type (might be due to invalid IL or missing references)
//IL_0253: Unknown result type (might be due to invalid IL or missing references)
//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
//IL_02bb: 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)
if (!Object.op_Implicit((Object)(object)mainAssetBundle))
{
Log.Error("There is no AssetBundle to load assets from.");
return;
}
thrustEffect = LoadEffect("SpearThrust", parentToTransform: false);
thrustTipImpact = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/ImpactMercFocusedAssault.prefab").WaitForCompletion();
dashEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/SprintOutOfCombat/SprintActivate.prefab").WaitForCompletion();
javEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Vagrant/VagrantTrackingBombExplosion.prefab").WaitForCompletion(), "JavelinExplosionPrefab");
if (!Object.op_Implicit((Object)(object)javEffect.GetComponent<NetworkIdentity>()))
{
javEffect.AddComponent<NetworkIdentity>();
}
AddNewEffectDef(javEffect, "Play_mage_m2_impact");
vaultEffect = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Feather/FeatherEffect.prefab").WaitForCompletion();
lightningRingEffect = mainAssetBundle.LoadAsset<GameObject>("LightningRing");
Texture2D val = mainAssetBundle.LoadAsset<Texture2D>("Blots");
Texture2D val2 = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/texCloudLightning1.png").WaitForCompletion();
Material material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/TPHealingNova/matGlowFlowerAreaIndicator.mat").WaitForCompletion();
lightningRingEffect.AddComponent<NetworkIdentity>();
ParticleSystemRenderer component = ((Component)lightningRingEffect.transform.GetChild(0)).GetComponent<ParticleSystemRenderer>();
((Renderer)component).material = material;
((Renderer)component).material.SetTexture("_Cloud1Tex", (Texture)(object)val2);
((Renderer)component).material.SetTexture("_Cloud2Tex", (Texture)(object)val2);
((Renderer)component).material.SetColor("_TintColor", Color.blue);
((Renderer)component).material.SetFloat("_RimPower", 6f);
((Renderer)component).material.SetFloat("_RimStrength", 1f);
ParticleSystemRenderer component2 = ((Component)lightningRingEffect.transform.GetChild(0).GetChild(0)).GetComponent<ParticleSystemRenderer>();
((Renderer)component2).material = material;
((Renderer)component2).material.SetTexture("_Cloud1Tex", (Texture)(object)val2);
((Renderer)component2).material.SetTexture("_Cloud2Tex", (Texture)(object)val2);
((Renderer)component2).material.SetFloat("_RimPower", 7f);
((Renderer)component2).material.SetColor("_TintColor", Color.green);
BatteryMeter = mainAssetBundle.LoadAsset<GameObject>("BatteryMeter");
TextMeshProUGUI componentInChildren = BatteryMeter.GetComponentInChildren<TextMeshProUGUI>();
((TMP_Text)componentInChildren).font = Addressables.LoadAssetAsync<TMP_FontAsset>((object)"RoR2/Base/Common/Fonts/Bombardier/tmpBombDropshadow.asset").WaitForCompletion();
squallFollowFlash = LoadEffect("FlashFollow");
squallAttackFlash = LoadEffect("FlashAttack");
squallEvisEffect = LoadEffect("SquallEvisEffect");
squallDashEffect = LoadEffect("SquallDash");
lineVisualizer = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/BasicThrowableVisualizer.prefab").WaitForCompletion();
explosionVisualizer = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressArrowRainIndicator.prefab").WaitForCompletion();
}
private static GameObject CreateTracer(string originalTracerName, string newTracerName)
{
if ((Object)(object)LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/Tracers/" + originalTracerName) == (Object)null)
{
return null;
}
GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/Tracers/" + originalTracerName), newTracerName, true);
if (!Object.op_Implicit((Object)(object)val.GetComponent<EffectComponent>()))
{
val.AddComponent<EffectComponent>();
}
if (!Object.op_Implicit((Object)(object)val.GetComponent<VFXAttributes>()))
{
val.AddComponent<VFXAttributes>();
}
if (!Object.op_Implicit((Object)(object)val.GetComponent<NetworkIdentity>()))
{
val.AddComponent<NetworkIdentity>();
}
val.GetComponent<Tracer>().speed = 250f;
val.GetComponent<Tracer>().length = 50f;
AddNewEffectDef(val);
return val;
}
internal static NetworkSoundEventDef CreateNetworkSoundEventDef(string eventName)
{
NetworkSoundEventDef val = ScriptableObject.CreateInstance<NetworkSoundEventDef>();
val.akId = AkSoundEngine