using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.Merc;
using EntityStates.Merc.Weapon;
using Microsoft.CodeAnalysis;
using On.EntityStates.Merc;
using On.EntityStates.Merc.Weapon;
using RoR2;
using UnityEngine;
using UnityEngine.Networking;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("MercenaryTweaks")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+df95ca2c79860f1559526a3e7920cc92c4bd1d44")]
[assembly: AssemblyProduct("MercenaryTweaks")]
[assembly: AssemblyTitle("MercenaryTweaks")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace MercenaryTweaks
{
[BepInPlugin("codedly.MercenaryTweaks", "MercenaryTweaks", "1.3.1")]
public class MercenaryTweaks : BaseUnityPlugin
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static hook_FixedUpdate <>9__44_0;
public static hook_OnEnter <>9__44_4;
public static hook_PlayAnim <>9__44_5;
public static hook_PlayAnim <>9__44_6;
public static hook_PlayAnim <>9__44_7;
public static hook_OnEnter <>9__44_8;
internal void <Awake>b__44_0(orig_FixedUpdate orig, EvisDash self)
{
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
//IL_01dd: 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_0224: Unknown result type (might be due to invalid IL or missing references)
//IL_0266: Unknown result type (might be due to invalid IL or missing references)
//IL_0271: Unknown result type (might be due to invalid IL or missing references)
//IL_0285: Unknown result type (might be due to invalid IL or missing references)
//IL_028c: Expected O, but got Unknown
self.stopwatch += Time.fixedDeltaTime;
if (self.stopwatch > EvisDash.dashPrepDuration && !self.isDashing)
{
self.isDashing = true;
self.dashVector = ((EntityState)self).inputBank.aimDirection;
self.CreateBlinkEffect(Util.GetCorePosition(((EntityState)self).gameObject));
((EntityState)self).PlayCrossfade("FullBody, Override", "EvisLoop", 0.1f);
if (Object.op_Implicit((Object)(object)self.modelTransform))
{
TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((Component)self.modelTransform).gameObject);
val.duration = 0.6f;
val.animateShaderAlpha = true;
val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
val.destroyComponentOnEnd = true;
val.originalMaterial = Resources.Load<Material>("Materials/matHuntressFlashBright");
val.AddToCharacterModel(((Component)self.modelTransform).GetComponent<CharacterModel>());
TemporaryOverlayInstance val2 = TemporaryOverlayManager.AddOverlay(((Component)self.modelTransform).gameObject);
val2.duration = 0.7f;
val2.animateShaderAlpha = true;
val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
val2.destroyComponentOnEnd = true;
val2.originalMaterial = Resources.Load<Material>("Materials/matHuntressFlashExpanded");
val2.AddToCharacterModel(((Component)self.modelTransform).GetComponent<CharacterModel>());
}
}
bool flag = self.stopwatch >= EvisDash.dashDuration + EvisDash.dashPrepDuration;
if (self.isDashing)
{
if (Object.op_Implicit((Object)(object)((EntityState)self).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)self).characterDirection))
{
CharacterMotor characterMotor = ((EntityState)self).characterMotor;
characterMotor.rootMotion += self.dashVector * (((BaseState)self).moveSpeedStat * EvisDash.speedCoefficient * Time.fixedDeltaTime);
}
if (((EntityState)self).isAuthority)
{
Collider[] array = Physics.OverlapSphere(((EntityState)self).transform.position, ((EntityState)self).characterBody.radius + EvisDash.overlapSphereRadius * (flag ? EvisDash.lollypopFactor : 1f), LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask));
for (int i = 0; i < array.Length; i++)
{
HurtBox component = ((Component)array[i]).GetComponent<HurtBox>();
if (Object.op_Implicit((Object)(object)component) && (Object)(object)component.healthComponent != (Object)(object)((EntityState)self).healthComponent && component.teamIndex != ((EntityState)self).teamComponent.teamIndex)
{
Evis nextState = new Evis();
((EntityState)self).outer.SetNextState((EntityState)(object)nextState);
return;
}
}
}
}
if (flag && ((EntityState)self).isAuthority)
{
((EntityState)self).outer.SetNextStateToMain();
}
}
internal void <Awake>b__44_4(orig_OnEnter orig, GroundLight2 self)
{
if (self.step == 2)
{
((BasicMeleeAttack)self).ignoreAttackSpeed = true;
}
orig.Invoke(self);
if (((BasicMeleeAttack)self).ignoreAttackSpeed && self.isComboFinisher)
{
self.durationBeforeInterruptable = GroundLight2.comboFinisherBaseDurationBeforeInterruptable;
}
}
internal void <Awake>b__44_5(orig_PlayAnim orig, Uppercut self)
{
self.duration = Uppercut.baseDuration;
orig.Invoke(self);
}
internal void <Awake>b__44_6(orig_PlayAnim orig, WhirlwindAir self)
{
((WhirlwindBase)self).duration = ((WhirlwindBase)self).baseDuration;
orig.Invoke(self);
}
internal void <Awake>b__44_7(orig_PlayAnim orig, WhirlwindGround self)
{
((WhirlwindBase)self).duration = ((WhirlwindBase)self).baseDuration;
orig.Invoke(self);
}
internal void <Awake>b__44_8(orig_OnEnter orig, Evis self)
{
Evis.damageCoefficient = EvisDamage.Value;
orig.Invoke(self);
}
}
public const string PluginGUID = "codedly.MercenaryTweaks";
public const string PluginAuthor = "codedly";
public const string PluginName = "MercenaryTweaks";
public const string PluginVersion = "1.3.1";
public HurtBox target;
public static ConfigEntry<bool> M1AttackSpeedFix { get; set; }
public static ConfigEntry<bool> M2AttackSpeedIgnore { get; set; }
public static ConfigEntry<bool> FullJumpReset { get; set; }
public static ConfigEntry<bool> ExtraJumpOnKill { get; set; }
public static ConfigEntry<int> JumpAmount { get; set; }
public static ConfigEntry<bool> SingleTargetEvis { get; set; }
public static ConfigEntry<bool> EvisMassacre { get; set; }
public static ConfigEntry<float> EvisDamage { get; set; }
public static ConfigEntry<bool> EvisSlayer { get; set; }
public void FullJumpResetMethod(DamageReport report)
{
//IL_0014: 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)
if (Object.op_Implicit((Object)(object)report.attackerBody) && report.attackerBody.bodyIndex == BodyCatalog.FindBodyIndex("MercBody"))
{
report.attackerBody.characterMotor.jumpCount = 0;
}
}
public void ExtraJumpOnKillMethod(DamageReport report)
{
//IL_0014: 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)
if (Object.op_Implicit((Object)(object)report.attackerBody) && report.attackerBody.bodyIndex == BodyCatalog.FindBodyIndex("MercBody") && report.attackerBody.characterMotor.jumpCount > 0)
{
CharacterMotor characterMotor = report.attackerBody.characterMotor;
characterMotor.jumpCount -= JumpAmount.Value;
}
}
public void MassacreCode(DamageReport rep)
{
//IL_005e: 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_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Expected O, but got Unknown
CharacterBody attackerBody = rep.attackerBody;
EntityState val;
if ((Object)(object)attackerBody == (Object)null)
{
val = null;
}
else
{
EntityStateMachine component = ((Component)attackerBody).GetComponent<EntityStateMachine>();
val = (((Object)(object)component != (Object)null) ? component.state : null);
}
EntityState val2 = val;
Evis val3 = (Evis)(object)((val2 is Evis) ? val2 : null);
if (val3 != null && Object.op_Implicit((Object)(object)rep.attackerBody) && Vector3.Distance(rep.attackerBody.transform.position, ((Component)rep.victim).transform.position) < Evis.maxRadius)
{
Evis nextState = new Evis();
((Component)attackerBody).GetComponent<EntityStateMachine>().SetNextState((EntityState)(object)nextState);
}
}
public void Awake()
{
//IL_0142: Unknown result type (might be due to invalid IL or missing references)
//IL_0147: Unknown result type (might be due to invalid IL or missing references)
//IL_014d: Expected O, but got Unknown
//IL_0191: Unknown result type (might be due to invalid IL or missing references)
//IL_019b: Expected O, but got Unknown
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Expected O, but got Unknown
//IL_017b: Unknown result type (might be due to invalid IL or missing references)
//IL_0185: Expected O, but got Unknown
//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
//IL_01cb: Expected O, but got Unknown
//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0200: Expected O, but got Unknown
//IL_021a: Unknown result type (might be due to invalid IL or missing references)
//IL_021f: Unknown result type (might be due to invalid IL or missing references)
//IL_0225: Expected O, but got Unknown
//IL_023f: Unknown result type (might be due to invalid IL or missing references)
//IL_0244: Unknown result type (might be due to invalid IL or missing references)
//IL_024a: Expected O, but got Unknown
//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
//IL_02d4: Unknown result type (might be due to invalid IL or missing references)
//IL_02da: Expected O, but got Unknown
M1AttackSpeedFix = ((BaseUnityPlugin)this).Config.Bind<bool>("Merc tweaks", "M1 attack speed fix", true, "When enabled, gives Merc's 3rd m1 a fixed duration, allowing for consistent m1 extends, breaks at 18.0 attack speed, not sure why");
M2AttackSpeedIgnore = ((BaseUnityPlugin)this).Config.Bind<bool>("Merc tweaks", "M2 Attack Speed Ignore", true, "When enabled, Whirlwind and Rising Thunder will ignore attack speed, making their utility consistent throughout the run");
ExtraJumpOnKill = ((BaseUnityPlugin)this).Config.Bind<bool>("Merc tweaks", "Extra Jump On Kill", true, "When enabled, killing an enemy will give the amount of jumps specified in Jump Amount");
JumpAmount = ((BaseUnityPlugin)this).Config.Bind<int>("Merc tweaks", "Jump Amount", 1, "Amount of jumps given by Extra Jump On Kill, note: numbers higher than 1 can give you more jumps than you started with");
FullJumpReset = ((BaseUnityPlugin)this).Config.Bind<bool>("Merc tweaks", "Reset ALL jumps on kill", false, "When enabled, killing an enemy resets all of your jumps, including ground jump, very cursed, pretty funny");
SingleTargetEvis = ((BaseUnityPlugin)this).Config.Bind<bool>("Merc tweaks", "Single target Eviscerate", true, "When enabled, eviscerate will only attack one enemy at a time, instead of spreading its hits across all nearby targets, targets the lowest health enemy first");
EvisMassacre = ((BaseUnityPlugin)this).Config.Bind<bool>("Merc tweaks", "Eviscerate Masacre upgrade", true, "When enabled, Eviscerate will work like its upgrade in ror1, resetting its duration and switching targets upon killing an enemy");
EvisDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Merc tweaks", "Eviscerate Damage Coefficient", 1.1f, "This number represents how much of your base damage each hit deals, i.e, 1.1 = 110%, 2.0 = 200%, etc");
EvisSlayer = ((BaseUnityPlugin)this).Config.Bind<bool>("Merc tweaks", "Eviscerate Slayer Upgrade", true, "When enabled, Eviscerate will gain slayer, making it deal more damage to low health targets");
object obj = <>c.<>9__44_0;
if (obj == null)
{
hook_FixedUpdate val = delegate(orig_FixedUpdate orig, EvisDash self)
{
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
//IL_01dd: 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_0224: Unknown result type (might be due to invalid IL or missing references)
//IL_0266: Unknown result type (might be due to invalid IL or missing references)
//IL_0271: Unknown result type (might be due to invalid IL or missing references)
//IL_0285: Unknown result type (might be due to invalid IL or missing references)
//IL_028c: Expected O, but got Unknown
self.stopwatch += Time.fixedDeltaTime;
if (self.stopwatch > EvisDash.dashPrepDuration && !self.isDashing)
{
self.isDashing = true;
self.dashVector = ((EntityState)self).inputBank.aimDirection;
self.CreateBlinkEffect(Util.GetCorePosition(((EntityState)self).gameObject));
((EntityState)self).PlayCrossfade("FullBody, Override", "EvisLoop", 0.1f);
if (Object.op_Implicit((Object)(object)self.modelTransform))
{
TemporaryOverlayInstance val16 = TemporaryOverlayManager.AddOverlay(((Component)self.modelTransform).gameObject);
val16.duration = 0.6f;
val16.animateShaderAlpha = true;
val16.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
val16.destroyComponentOnEnd = true;
val16.originalMaterial = Resources.Load<Material>("Materials/matHuntressFlashBright");
val16.AddToCharacterModel(((Component)self.modelTransform).GetComponent<CharacterModel>());
TemporaryOverlayInstance val17 = TemporaryOverlayManager.AddOverlay(((Component)self.modelTransform).gameObject);
val17.duration = 0.7f;
val17.animateShaderAlpha = true;
val17.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f);
val17.destroyComponentOnEnd = true;
val17.originalMaterial = Resources.Load<Material>("Materials/matHuntressFlashExpanded");
val17.AddToCharacterModel(((Component)self.modelTransform).GetComponent<CharacterModel>());
}
}
bool flag = self.stopwatch >= EvisDash.dashDuration + EvisDash.dashPrepDuration;
if (self.isDashing)
{
if (Object.op_Implicit((Object)(object)((EntityState)self).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)self).characterDirection))
{
CharacterMotor characterMotor = ((EntityState)self).characterMotor;
characterMotor.rootMotion += self.dashVector * (((BaseState)self).moveSpeedStat * EvisDash.speedCoefficient * Time.fixedDeltaTime);
}
if (((EntityState)self).isAuthority)
{
Collider[] array = Physics.OverlapSphere(((EntityState)self).transform.position, ((EntityState)self).characterBody.radius + EvisDash.overlapSphereRadius * (flag ? EvisDash.lollypopFactor : 1f), LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask));
for (int j = 0; j < array.Length; j++)
{
HurtBox component = ((Component)array[j]).GetComponent<HurtBox>();
if (Object.op_Implicit((Object)(object)component) && (Object)(object)component.healthComponent != (Object)(object)((EntityState)self).healthComponent && component.teamIndex != ((EntityState)self).teamComponent.teamIndex)
{
Evis nextState = new Evis();
((EntityState)self).outer.SetNextState((EntityState)(object)nextState);
return;
}
}
}
}
if (flag && ((EntityState)self).isAuthority)
{
((EntityState)self).outer.SetNextStateToMain();
}
};
<>c.<>9__44_0 = val;
obj = (object)val;
}
EvisDash.FixedUpdate += (hook_FixedUpdate)obj;
if (SingleTargetEvis.Value)
{
Evis.OnEnter += (hook_OnEnter)delegate(orig_OnEnter orig, Evis self)
{
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Expected O, but got Unknown
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
//IL_0047: 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)
orig.Invoke(self);
BullseyeSearch val15 = new BullseyeSearch();
val15.searchOrigin = ((EntityState)self).transform.position;
val15.searchDirection = Random.onUnitSphere;
val15.maxDistanceFilter = Evis.maxRadius;
val15.teamMaskFilter = TeamMask.GetUnprotectedTeams(TeamComponent.GetObjectTeam(((EntityState)self).gameObject));
val15.sortMode = (SortMode)1;
val15.RefreshCandidates();
val15.FilterOutGameObject(((EntityState)self).gameObject);
IEnumerable<HurtBox> results = val15.GetResults();
target = results.FirstOrDefault();
for (int i = 0; i < results.Count(); i++)
{
float health = results.ElementAt(i).healthComponent.health;
if (health < target.healthComponent.health)
{
target = results.ElementAt(i);
}
}
};
Evis.FixedUpdate += (hook_FixedUpdate)delegate(orig_FixedUpdate orig, Evis self)
{
//IL_0240: Unknown result type (might be due to invalid IL or missing references)
//IL_0245: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
//IL_00f7: 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_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: Unknown result type (might be due to invalid IL or missing references)
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0146: Expected O, but got Unknown
//IL_017b: 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_01af: Unknown result type (might be due to invalid IL or missing references)
self.stopwatch += Time.fixedDeltaTime;
self.attackStopwatch += Time.fixedDeltaTime;
float num2 = 1f / Evis.damageFrequency / ((BaseState)self).attackSpeedStat;
if (self.attackStopwatch >= num2)
{
self.attackStopwatch -= num2;
HurtBox val11 = target;
if (Object.op_Implicit((Object)(object)val11))
{
Util.PlayAttackSpeedSound(Evis.slashSoundString, ((Component)this).gameObject, Evis.slashPitch);
Util.PlaySound(Evis.dashSoundString, ((Component)this).gameObject);
Util.PlaySound(Evis.impactSoundString, ((Component)this).gameObject);
HurtBoxGroup hurtBoxGroup2 = val11.hurtBoxGroup;
HurtBox val12 = hurtBoxGroup2.hurtBoxes[Random.Range(0, hurtBoxGroup2.hurtBoxes.Length - 1)];
if (Object.op_Implicit((Object)(object)val12))
{
Vector3 position2 = ((Component)val12).transform.position;
Vector2 insideUnitCircle2 = Random.insideUnitCircle;
Vector2 normalized2 = ((Vector2)(ref insideUnitCircle2)).normalized;
Vector3 val13 = default(Vector3);
((Vector3)(ref val13))..ctor(normalized2.x, 0f, normalized2.y);
EffectManager.SimpleImpactEffect(Evis.hitEffectPrefab, position2, val13, false);
Transform transform2 = ((Component)val11.hurtBoxGroup).transform;
if (NetworkServer.active)
{
DamageInfo val14 = new DamageInfo();
val14.damage = Evis.damageCoefficient * ((BaseState)self).damageStat;
val14.attacker = ((EntityState)self).gameObject;
val14.procCoefficient = Evis.procCoefficient;
val14.position = ((Component)val12).transform.position;
val14.crit = self.crit;
if (EvisSlayer.Value)
{
val14.damageType.damageType = (DamageType)524288;
}
val12.healthComponent.TakeDamage(val14);
GlobalEventManager.instance.OnHitEnemy(val14, ((Component)val12.healthComponent).gameObject);
GlobalEventManager.instance.OnHitAll(val14, ((Component)val12.healthComponent).gameObject);
}
}
}
else if (((EntityState)self).isAuthority && self.stopwatch > Evis.minimumDuration)
{
((EntityState)self).outer.SetNextStateToMain();
}
}
if (Object.op_Implicit((Object)(object)((EntityState)self).characterMotor))
{
((EntityState)self).characterMotor.velocity = Vector3.zero;
}
if (self.stopwatch >= Evis.duration && ((EntityState)self).isAuthority)
{
((EntityState)self).outer.SetNextStateToMain();
}
};
}
else
{
Evis.FixedUpdate += (hook_FixedUpdate)delegate(orig_FixedUpdate orig, Evis self)
{
//IL_0240: Unknown result type (might be due to invalid IL or missing references)
//IL_0245: Unknown result type (might be due to invalid IL or missing references)
//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
//IL_00f7: 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_0107: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: Unknown result type (might be due to invalid IL or missing references)
//IL_011a: Unknown result type (might be due to invalid IL or missing references)
//IL_013f: Unknown result type (might be due to invalid IL or missing references)
//IL_0146: Expected O, but got Unknown
//IL_017b: 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_01af: Unknown result type (might be due to invalid IL or missing references)
self.stopwatch += Time.fixedDeltaTime;
self.attackStopwatch += Time.fixedDeltaTime;
float num = 1f / Evis.damageFrequency / ((BaseState)self).attackSpeedStat;
if (self.attackStopwatch >= num)
{
self.attackStopwatch -= num;
HurtBox val7 = self.SearchForTarget();
if (Object.op_Implicit((Object)(object)val7))
{
Util.PlayAttackSpeedSound(Evis.slashSoundString, ((Component)this).gameObject, Evis.slashPitch);
Util.PlaySound(Evis.dashSoundString, ((Component)this).gameObject);
Util.PlaySound(Evis.impactSoundString, ((Component)this).gameObject);
HurtBoxGroup hurtBoxGroup = val7.hurtBoxGroup;
HurtBox val8 = hurtBoxGroup.hurtBoxes[Random.Range(0, hurtBoxGroup.hurtBoxes.Length - 1)];
if (Object.op_Implicit((Object)(object)val8))
{
Vector3 position = ((Component)val8).transform.position;
Vector2 insideUnitCircle = Random.insideUnitCircle;
Vector2 normalized = ((Vector2)(ref insideUnitCircle)).normalized;
Vector3 val9 = default(Vector3);
((Vector3)(ref val9))..ctor(normalized.x, 0f, normalized.y);
EffectManager.SimpleImpactEffect(Evis.hitEffectPrefab, position, val9, false);
Transform transform = ((Component)val7.hurtBoxGroup).transform;
if (NetworkServer.active)
{
DamageInfo val10 = new DamageInfo();
val10.damage = Evis.damageCoefficient * ((BaseState)self).damageStat;
val10.attacker = ((Component)this).gameObject;
val10.procCoefficient = Evis.procCoefficient;
val10.position = ((Component)val8).transform.position;
val10.crit = self.crit;
if (EvisSlayer.Value)
{
val10.damageType.damageType = (DamageType)524288;
}
val8.healthComponent.TakeDamage(val10);
GlobalEventManager.instance.OnHitEnemy(val10, ((Component)val8.healthComponent).gameObject);
GlobalEventManager.instance.OnHitAll(val10, ((Component)val8.healthComponent).gameObject);
}
}
}
else if (((EntityState)self).isAuthority && self.stopwatch > Evis.minimumDuration)
{
((EntityState)self).outer.SetNextStateToMain();
}
}
if (Object.op_Implicit((Object)(object)((EntityState)self).characterMotor))
{
((EntityState)self).characterMotor.velocity = Vector3.zero;
}
if (self.stopwatch >= Evis.duration && ((EntityState)self).isAuthority)
{
((EntityState)self).outer.SetNextStateToMain();
}
};
}
if (M1AttackSpeedFix.Value)
{
object obj2 = <>c.<>9__44_4;
if (obj2 == null)
{
hook_OnEnter val2 = delegate(orig_OnEnter orig, GroundLight2 self)
{
if (self.step == 2)
{
((BasicMeleeAttack)self).ignoreAttackSpeed = true;
}
orig.Invoke(self);
if (((BasicMeleeAttack)self).ignoreAttackSpeed && self.isComboFinisher)
{
self.durationBeforeInterruptable = GroundLight2.comboFinisherBaseDurationBeforeInterruptable;
}
};
<>c.<>9__44_4 = val2;
obj2 = (object)val2;
}
GroundLight2.OnEnter += (hook_OnEnter)obj2;
}
if (M2AttackSpeedIgnore.Value)
{
object obj3 = <>c.<>9__44_5;
if (obj3 == null)
{
hook_PlayAnim val3 = delegate(orig_PlayAnim orig, Uppercut self)
{
self.duration = Uppercut.baseDuration;
orig.Invoke(self);
};
<>c.<>9__44_5 = val3;
obj3 = (object)val3;
}
Uppercut.PlayAnim += (hook_PlayAnim)obj3;
object obj4 = <>c.<>9__44_6;
if (obj4 == null)
{
hook_PlayAnim val4 = delegate(orig_PlayAnim orig, WhirlwindAir self)
{
((WhirlwindBase)self).duration = ((WhirlwindBase)self).baseDuration;
orig.Invoke(self);
};
<>c.<>9__44_6 = val4;
obj4 = (object)val4;
}
WhirlwindAir.PlayAnim += (hook_PlayAnim)obj4;
object obj5 = <>c.<>9__44_7;
if (obj5 == null)
{
hook_PlayAnim val5 = delegate(orig_PlayAnim orig, WhirlwindGround self)
{
((WhirlwindBase)self).duration = ((WhirlwindBase)self).baseDuration;
orig.Invoke(self);
};
<>c.<>9__44_7 = val5;
obj5 = (object)val5;
}
WhirlwindGround.PlayAnim += (hook_PlayAnim)obj5;
}
if (FullJumpReset.Value)
{
GlobalEventManager.onCharacterDeathGlobal += FullJumpResetMethod;
}
if (ExtraJumpOnKill.Value)
{
GlobalEventManager.onCharacterDeathGlobal += ExtraJumpOnKillMethod;
}
if (EvisMassacre.Value)
{
GlobalEventManager.onCharacterDeathGlobal += MassacreCode;
}
object obj6 = <>c.<>9__44_8;
if (obj6 == null)
{
hook_OnEnter val6 = delegate(orig_OnEnter orig, Evis self)
{
Evis.damageCoefficient = EvisDamage.Value;
orig.Invoke(self);
};
<>c.<>9__44_8 = val6;
obj6 = (object)val6;
}
Evis.OnEnter += (hook_OnEnter)obj6;
}
}
}