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 BepInEx.Logging;
using EntityStates;
using EntityStates.Commando.CommandoWeapon;
using EntityStates.Mage.Weapon;
using MandoGaming;
using MandoGamingRewrite.EntityStates;
using MandoGamingRewrite.Keywords;
using MandoGamingRewrite.Projectiles;
using MandoGamingRewrite.Unlocks;
using On.RoR2;
using R2API;
using RoR2;
using RoR2.Achievements;
using RoR2.Orbs;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.AddressableAssets;
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.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("MandoGamingRewrite")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("MandoGamingRewrite")]
[assembly: AssemblyTitle("MandoGamingRewrite")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace MandoGaming
{
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("HIFU.MandoGaming", "MandoGaming", "1.4.5")]
public class Main : BaseUnityPlugin
{
public const string PluginGUID = "HIFU.MandoGaming";
public const string PluginAuthor = "HIFU";
public const string PluginName = "MandoGaming";
public const string PluginVersion = "1.4.5";
public static ConfigFile MandoGamingConfig;
public static ManualLogSource MandoGamingLogger;
public static AssetBundle mandogaming;
public void Awake()
{
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_010b: Unknown result type (might be due to invalid IL or missing references)
MandoGamingLogger = ((BaseUnityPlugin)this).Logger;
MandoGamingConfig = ((BaseUnityPlugin)this).Config;
mandogaming = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("MandoGamingRewrite.dll", "mandogaming"));
Unlocks.Create();
Keywords.Create();
HeavyTapTracer.Create();
PlasmaTapTracer.Create();
IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes()
where !type.IsAbstract && type.IsSubclassOf(typeof(SkillDefBase))
select type;
MandoGamingLogger.LogInfo((object)"==+----------------==SKILLS==----------------+==");
foreach (Type item in enumerable)
{
SkillDefBase skillDefBase = (SkillDefBase)Activator.CreateInstance(item);
if (ValidateSkillDef(skillDefBase))
{
skillDefBase.Init();
}
}
bool flag = default(bool);
ContentAddition.AddEntityState(typeof(HeavyTapState), ref flag);
ContentAddition.AddEntityState(typeof(PlasmaTapState), ref flag);
ContentAddition.AddEntityState(typeof(PRFRVWildfireStormState), ref flag);
}
public bool ValidateSkillDef(SkillDefBase sdb)
{
if (sdb.isEnabled && ((BaseUnityPlugin)this).Config.Bind<bool>(sdb.NameText, "Enable?", true, "Vanilla is false").Value)
{
return true;
}
return false;
}
}
public abstract class SkillDefBase
{
public SkillDef skillDef;
public SkillLocator commandoSkillLocator = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoBody.prefab").WaitForCompletion().GetComponent<SkillLocator>();
public abstract string NameToken { get; }
public abstract string NameText { get; }
public abstract string DescriptionText { get; }
public abstract SerializableEntityStateType ActivationState { get; }
public abstract string ActivationStateMachineName { get; }
public abstract int BaseMaxStock { get; }
public abstract float BaseRechargeInterval { get; }
public abstract bool BeginSkillCooldownOnSkillEnd { get; }
public abstract bool CanceledFromSprinting { get; }
public abstract bool CancelSprintingOnActivation { get; }
public virtual bool FullRestockOnAssign { get; } = true;
public abstract InterruptPriority SkillInterruptPriority { get; }
public abstract bool IsCombatSkill { get; }
public abstract bool MustKeyPress { get; }
public abstract int RechargeStock { get; }
public abstract Sprite Icon { get; }
public abstract int StockToConsume { get; }
public abstract string[] KeywordTokens { get; }
public abstract bool ResetCooldownTimerOnUse { get; }
public abstract int RequiredStock { get; }
public abstract SkillSlot SkillSlot { get; }
public virtual bool isEnabled { get; } = true;
public abstract UnlockableDef UnlockableDef { get; }
public T ConfigOption<T>(T value, string name, string description)
{
return Main.MandoGamingConfig.Bind<T>(NameText, name, value, description).Value;
}
public string d(float f)
{
return f * 100f + "%";
}
public virtual void Init()
{
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
//IL_020f: Unknown result type (might be due to invalid IL or missing references)
//IL_0219: Expected O, but got Unknown
//IL_021a: Unknown result type (might be due to invalid IL or missing references)
//IL_021b: Unknown result type (might be due to invalid IL or missing references)
string text = "COMMANDO_" + NameToken.ToUpper() + "_NAME";
string text2 = "COMMANDO_" + NameToken.ToUpper() + "_DESCRIPTION";
LanguageAPI.Add(text, NameText);
LanguageAPI.Add(text2, DescriptionText);
skillDef = ScriptableObject.CreateInstance<SkillDef>();
skillDef.skillNameToken = text;
skillDef.skillDescriptionToken = text2;
skillDef.activationState = ActivationState;
skillDef.activationStateMachineName = ActivationStateMachineName;
skillDef.baseMaxStock = BaseMaxStock;
skillDef.baseRechargeInterval = BaseRechargeInterval;
skillDef.beginSkillCooldownOnSkillEnd = BeginSkillCooldownOnSkillEnd;
skillDef.canceledFromSprinting = CanceledFromSprinting;
skillDef.cancelSprintingOnActivation = CancelSprintingOnActivation;
skillDef.fullRestockOnAssign = FullRestockOnAssign;
skillDef.interruptPriority = SkillInterruptPriority;
skillDef.isCombatSkill = IsCombatSkill;
skillDef.mustKeyPress = MustKeyPress;
skillDef.rechargeStock = RechargeStock;
skillDef.icon = Icon;
skillDef.stockToConsume = StockToConsume;
skillDef.keywordTokens = KeywordTokens;
skillDef.resetCooldownTimerOnUse = ResetCooldownTimerOnUse;
skillDef.requiredStock = RequiredStock;
ContentAddition.AddSkillDef(skillDef);
SkillFamily skillFamily = commandoSkillLocator.GetSkill(SkillSlot).skillFamily;
Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1);
Variant[] variants = skillFamily.variants;
int num = skillFamily.variants.Length - 1;
Variant val = new Variant
{
skillDef = skillDef,
unlockableDef = UnlockableDef
};
((Variant)(ref val)).viewableNode = new Node(skillDef.skillNameToken, false, (Node)null);
variants[num] = val;
Main.MandoGamingLogger.LogInfo((object)("Added " + NameText));
}
}
public abstract class SkillDefBase<T> : SkillDefBase where T : SkillDefBase<T>
{
public static T instance { get; set; }
public SkillDefBase()
{
if (instance != null)
{
throw new InvalidOperationException("Singleton class " + typeof(T).Name + " was instantiated twice");
}
instance = this as T;
}
}
}
namespace MandoGaming.Skills
{
public class HeavyTapSD : SkillDefBase
{
public override string NameToken => "HEAVYTAP";
public override string NameText => "Heavy Tap";
public override string DescriptionText => "<style=cIsDamage>Frictionless</style>. Shoot twice for <style=cIsDamage>2x155% damage</style>.";
public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(HeavyTapState));
public override string ActivationStateMachineName => "Weapon";
public override int BaseMaxStock => 1;
public override float BaseRechargeInterval => 1f;
public override bool BeginSkillCooldownOnSkillEnd => true;
public override bool CanceledFromSprinting => false;
public override bool CancelSprintingOnActivation => true;
public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0;
public override bool IsCombatSkill => true;
public override bool MustKeyPress => false;
public override int RechargeStock => 0;
public override Sprite Icon => Main.mandogaming.LoadAsset<Sprite>("HeavyTap.png");
public override int StockToConsume => 0;
public override string[] KeywordTokens => new string[1] { "KEYWORD_FRICTIONLESS" };
public override bool ResetCooldownTimerOnUse => true;
public override int RequiredStock => 1;
public override SkillSlot SkillSlot => (SkillSlot)0;
public override UnlockableDef UnlockableDef => Unlocks.heavyTap;
}
public class PlasmaTapSD : SkillDefBase
{
public override string NameToken => "PLASMATAP";
public override string NameText => "Plasma Tap";
public override string DescriptionText => "<style=cIsDamage>Arcing</style>. Fire a burst of lightning that deals <style=cIsDamage>100% damage</style> in a cone.";
public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(PlasmaTapState));
public override string ActivationStateMachineName => "Weapon";
public override int BaseMaxStock => 1;
public override float BaseRechargeInterval => 1f;
public override bool BeginSkillCooldownOnSkillEnd => false;
public override bool CanceledFromSprinting => false;
public override bool CancelSprintingOnActivation => true;
public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0;
public override bool IsCombatSkill => true;
public override bool MustKeyPress => false;
public override int RechargeStock => 1;
public override Sprite Icon => Main.mandogaming.LoadAsset<Sprite>("PlasmaTap.png");
public override int StockToConsume => 0;
public override string[] KeywordTokens => new string[1] { "KEYWORD_ARC" };
public override bool ResetCooldownTimerOnUse => true;
public override int RequiredStock => 1;
public override SkillSlot SkillSlot => (SkillSlot)0;
public override UnlockableDef UnlockableDef => Unlocks.plasmaTap;
}
public class PRFRVWildfireStormSD : SkillDefBase
{
public override string NameToken => "PRFRVWILDFIRESTORM";
public override string NameText => "PRFR-V Wildfire Storm";
public override string DescriptionText => "Fire a continuous stream of flame that deals <style=cIsDamage>550% damage</style> per second and has a chance to <style=cIsDamage>ignite</style> enemies.";
public override SerializableEntityStateType ActivationState => new SerializableEntityStateType(typeof(PRFRVWildfireStormState));
public override string ActivationStateMachineName => "Weapon";
public override int BaseMaxStock => 1;
public override float BaseRechargeInterval => 4f;
public override bool BeginSkillCooldownOnSkillEnd => false;
public override bool CanceledFromSprinting => false;
public override bool CancelSprintingOnActivation => true;
public override InterruptPriority SkillInterruptPriority => (InterruptPriority)0;
public override bool IsCombatSkill => true;
public override bool MustKeyPress => true;
public override int RechargeStock => 1;
public override Sprite Icon => Main.mandogaming.LoadAsset<Sprite>("PRFRVWildfireStorm.png");
public override int StockToConsume => 1;
public override string[] KeywordTokens => null;
public override bool ResetCooldownTimerOnUse => false;
public override int RequiredStock => 1;
public override SkillSlot SkillSlot => (SkillSlot)1;
public override UnlockableDef UnlockableDef => Unlocks.prfrVWildfireStorm;
}
}
namespace MandoGamingRewrite.Unlocks
{
[RegisterAchievement("CommandoHeavyTap", "Commando.Skills_HeavyTap", null, null)]
public class HeavyTapAchievement : BaseAchievement
{
private int primaryUseCount;
public override BodyIndex LookUpRequiredBodyIndex()
{
//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_000e: Unknown result type (might be due to invalid IL or missing references)
return BodyCatalog.FindBodyIndex("CommandoBody");
}
public override void OnBodyRequirementMet()
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Expected O, but got Unknown
((BaseAchievement)this).OnBodyRequirementMet();
CharacterBody.OnSkillActivated += new hook_OnSkillActivated(CharacterBody_OnSkillActivated);
TeleporterInteraction.onTeleporterChargedGlobal += TeleporterInteraction_onTeleporterChargedGlobal;
Run.onRunStartGlobal += Run_onRunStartGlobal;
Stage.onServerStageBegin += Stage_onServerStageBegin;
}
public override void OnBodyRequirementBroken()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
CharacterBody.OnSkillActivated -= new hook_OnSkillActivated(CharacterBody_OnSkillActivated);
TeleporterInteraction.onTeleporterChargedGlobal -= TeleporterInteraction_onTeleporterChargedGlobal;
Run.onRunStartGlobal -= Run_onRunStartGlobal;
Stage.onServerStageBegin -= Stage_onServerStageBegin;
((BaseAchievement)this).OnBodyRequirementBroken();
}
private void Run_onRunStartGlobal(Run obj)
{
primaryUseCount = 0;
}
private void Stage_onServerStageBegin(Stage obj)
{
primaryUseCount = 0;
}
private void TeleporterInteraction_onTeleporterChargedGlobal(TeleporterInteraction _)
{
if (primaryUseCount == 0)
{
((BaseAchievement)this).Grant();
}
}
private void CharacterBody_OnSkillActivated(orig_OnSkillActivated orig, CharacterBody self, GenericSkill skill)
{
LocalUser localUser = ((BaseAchievement)this).localUser;
if ((Object)(object)((localUser != null) ? localUser.cachedBody : null) != (Object)null && (Object)(object)self == (Object)(object)((BaseAchievement)this).localUser.cachedBody && (Object)(object)skill == (Object)(object)((BaseAchievement)this).localUser.cachedBody.skillLocator.primary)
{
primaryUseCount++;
}
orig.Invoke(self, skill);
}
}
[RegisterAchievement("CommandoPlasmaTap", "Commando.Skills_PlasmaTap", null, null)]
public class PlasmaTapAchievement : BaseAchievement
{
private float zapCount;
public override BodyIndex LookUpRequiredBodyIndex()
{
//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_000e: Unknown result type (might be due to invalid IL or missing references)
return BodyCatalog.FindBodyIndex("CommandoBody");
}
public override void OnBodyRequirementMet()
{
((BaseAchievement)this).OnBodyRequirementMet();
GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt;
Run.onRunStartGlobal += Run_onRunStartGlobal;
}
public override void OnBodyRequirementBroken()
{
GlobalEventManager.onServerDamageDealt -= GlobalEventManager_onServerDamageDealt;
Run.onRunStartGlobal -= Run_onRunStartGlobal;
((BaseAchievement)this).OnBodyRequirementBroken();
}
private void Run_onRunStartGlobal(Run obj)
{
zapCount = 0f;
}
private void GlobalEventManager_onServerDamageDealt(DamageReport damageReport)
{
LocalUser localUser = ((BaseAchievement)this).localUser;
if ((Object)(object)((localUser != null) ? localUser.cachedBody : null) != (Object)null && (Object)(object)((BaseAchievement)this).localUser.cachedBody == (Object)(object)damageReport.attackerBody)
{
if (((ProcChainMask)(ref damageReport.damageInfo.procChainMask)).HasProc((ProcType)3))
{
zapCount += 1f;
}
if (zapCount >= 70f)
{
((BaseAchievement)this).Grant();
}
}
}
}
[RegisterAchievement("CommandoPRFRVWildfireStorm", "Commando.Skills_PRFRVWildfireStorm", null, null)]
public class PRFRVWildfireStormAchievement : BaseAchievement
{
private float igniteCount;
public override BodyIndex LookUpRequiredBodyIndex()
{
//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_000e: Unknown result type (might be due to invalid IL or missing references)
return BodyCatalog.FindBodyIndex("CommandoBody");
}
public override void OnBodyRequirementMet()
{
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Expected O, but got Unknown
((BaseAchievement)this).OnBodyRequirementMet();
GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt;
GlobalEventManager.ProcIgniteOnKill += new hook_ProcIgniteOnKill(GlobalEventManager_ProcIgniteOnKill);
Run.onRunStartGlobal += Run_onRunStartGlobal;
Stage.onServerStageBegin += Stage_onServerStageBegin;
}
public override void OnBodyRequirementBroken()
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
GlobalEventManager.onServerDamageDealt -= GlobalEventManager_onServerDamageDealt;
GlobalEventManager.ProcIgniteOnKill -= new hook_ProcIgniteOnKill(GlobalEventManager_ProcIgniteOnKill);
Run.onRunStartGlobal -= Run_onRunStartGlobal;
Stage.onServerStageBegin -= Stage_onServerStageBegin;
((BaseAchievement)this).OnBodyRequirementBroken();
}
private void Run_onRunStartGlobal(Run obj)
{
igniteCount = 0f;
}
private void Stage_onServerStageBegin(Stage obj)
{
igniteCount = 0f;
}
private void GlobalEventManager_ProcIgniteOnKill(orig_ProcIgniteOnKill orig, DamageReport damageReport, int igniteOnKillCount, CharacterBody victimBody, TeamIndex attackerTeamIndex)
{
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
LocalUser localUser = ((BaseAchievement)this).localUser;
if ((Object)(object)((localUser != null) ? localUser.cachedBody : null) != (Object)null && (Object)(object)((BaseAchievement)this).localUser.cachedBody == (Object)(object)damageReport.attackerBody)
{
if (igniteOnKillCount > 0)
{
igniteCount += 1f;
}
if (igniteCount >= 30f)
{
((BaseAchievement)this).Grant();
}
}
orig.Invoke(damageReport, igniteOnKillCount, victimBody, attackerTeamIndex);
}
private void GlobalEventManager_onServerDamageDealt(DamageReport damageReport)
{
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Invalid comparison between Unknown and I4
LocalUser localUser = ((BaseAchievement)this).localUser;
if ((Object)(object)((localUser != null) ? localUser.cachedBody : null) != (Object)null && (Object)(object)((BaseAchievement)this).localUser.cachedBody == (Object)(object)damageReport.attackerBody)
{
if ((damageReport.damageInfo.damageType & 0x80) > 0)
{
igniteCount += 1f;
}
if (igniteCount >= 30f)
{
((BaseAchievement)this).Grant();
}
}
}
}
public static class Unlocks
{
public static UnlockableDef heavyTap;
public static UnlockableDef plasmaTap;
public static UnlockableDef prfrVWildfireStorm;
public static void Create()
{
heavyTap = ScriptableObject.CreateInstance<UnlockableDef>();
heavyTap.achievementIcon = Main.mandogaming.LoadAsset<Sprite>("HeavyTap.png");
heavyTap.cachedName = "Commando.Skills_HeavyTap";
heavyTap.nameToken = "ACHIEVEMENT_COMMANDOHEAVYTAP_NAME";
LanguageAPI.Add("ACHIEVEMENT_COMMANDOHEAVYTAP_NAME", "Commando: Have a Blast");
LanguageAPI.Add("ACHIEVEMENT_COMMANDOHEAVYTAP_DESCRIPTION", "As Commando, complete a stage without using your Primary skill.");
plasmaTap = ScriptableObject.CreateInstance<UnlockableDef>();
plasmaTap.achievementIcon = Main.mandogaming.LoadAsset<Sprite>("PlasmaTap.png");
plasmaTap.cachedName = "Commando.Skills_PlasmaTap";
plasmaTap.nameToken = "ACHIEVEMENT_COMMANDOPLASMATAP_NAME";
LanguageAPI.Add("ACHIEVEMENT_COMMANDOPLASMATAP_NAME", "Commando: Arch Essence");
LanguageAPI.Add("ACHIEVEMENT_COMMANDOPLASMATAP_DESCRIPTION", "As Commando, chain lightning 70 times in a single run.");
prfrVWildfireStorm = ScriptableObject.CreateInstance<UnlockableDef>();
prfrVWildfireStorm.achievementIcon = Main.mandogaming.LoadAsset<Sprite>("PRFRVWildfireStorm.png");
prfrVWildfireStorm.cachedName = "Commando.Skills_PRFRVWildfireStorm";
prfrVWildfireStorm.nameToken = "ACHIEVEMENT_COMMANDOPRFRVWILDFIRESTORM_NAME";
prfrVWildfireStorm.sortScore = plasmaTap.sortScore + 1;
LanguageAPI.Add("ACHIEVEMENT_COMMANDOPRFRVWILDFIRESTORM_NAME", "Commando: Catch Fire");
LanguageAPI.Add("ACHIEVEMENT_COMMANDOPRFRVWILDFIRESTORM_DESCRIPTION", "As Commando, burn enemies 30 times on a single stage.");
ContentAddition.AddUnlockableDef(heavyTap);
ContentAddition.AddUnlockableDef(plasmaTap);
ContentAddition.AddUnlockableDef(prfrVWildfireStorm);
}
}
}
namespace MandoGamingRewrite.Projectiles
{
public static class HeavyTapTracer
{
public static GameObject prefab;
public static void Create()
{
//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_00c9: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: 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)
prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Junk/Bandit/TracerBanditShotgun.prefab").WaitForCompletion(), "HeavyTapTracer", false);
Tracer component = prefab.GetComponent<Tracer>();
component.length *= 1.8f;
component.beamDensity *= 1.5f;
LineRenderer[] componentsInChildren = ((Component)component).GetComponentsInChildren<LineRenderer>();
foreach (LineRenderer val in componentsInChildren)
{
if (Object.op_Implicit((Object)(object)val))
{
val.endColor = new Color(0.025f, 0.02f, 0.3f);
val.startColor = new Color(0.2f, 0.175f, 0.7f);
}
}
((Component)component).gameObject.AddComponent<VFXAttributes>();
((Component)component).GetComponent<VFXAttributes>().vfxPriority = (VFXPriority)1;
((Component)component).GetComponent<VFXAttributes>().vfxIntensity = (VFXIntensity)1;
ContentAddition.AddEffect(((Component)component).gameObject);
}
}
public static class PlasmaTapTracer
{
public static GameObject prefab;
public static void Create()
{
//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_0057: 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_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/TracerHuntressSnipe.prefab").WaitForCompletion(), "PlasmaTapTracer", false);
Tracer component = prefab.GetComponent<Tracer>();
component.length = 40f;
component.beamDensity = 5f;
((Component)component).gameObject.AddComponent<VFXAttributes>();
((Component)component).GetComponent<VFXAttributes>().vfxPriority = (VFXPriority)2;
((Component)component).GetComponent<VFXAttributes>().vfxIntensity = (VFXIntensity)2;
LineRenderer component2 = ((Component)((Component)component).transform.Find("TracerHead")).GetComponent<LineRenderer>();
component2.startColor = new Color(0.1f, 0.2f, 0.7f);
Material val = Object.Instantiate<Material>(((Renderer)component2).material);
val.SetColor("_TintColor", new Color(0.1f, 0.2f, 0.7f));
((Renderer)component2).material = val;
component2.startWidth *= 0.4f;
component2.endWidth *= 0.4f;
ContentAddition.AddEffect(((Component)component).gameObject);
}
}
}
namespace MandoGamingRewrite.Keywords
{
public static class Keywords
{
public static void Create()
{
LanguageAPI.Add("KEYWORD_ARC", "<style=cKeywordName>Arcing</style><style=cSub>Arc lighting up to 4 enemies for 30% damage per hit.</style>");
LanguageAPI.Add("KEYWORD_FRICTIONLESS", "<style=cKeywordName>Frictionless</style><style=cSub>Suffers no damage falloff.</style>");
}
}
}
namespace MandoGamingRewrite.EntityStates
{
internal class HeavyTapState : BaseSkillState
{
public float duration;
public static float baseDuration = 0.15f;
public static float secondDuration = 0.35f;
public int remainingShots = 2;
public bool finalShot = false;
public static string fireHeavyPistolSoundString = "play_bandit_M2_shot";
public GameObject tracerEffectPrefab = HeavyTapTracer.prefab;
public GameObject hitEffectPrefab = Resources.Load<GameObject>("prefabs/effects/impacteffects/Hitspark1");
public static float recoilAmplitude = 1f;
private Ray aimRay;
public static float maxRange = 250f;
public static float damageCoefficient = 1.55f;
public static float force = 40f;
public override void OnEnter()
{
//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_0046: Unknown result type (might be due to invalid IL or missing references)
((BaseState)this).OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
if (finalShot)
{
duration = secondDuration / ((BaseState)this).attackSpeedStat;
}
aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 3f, false);
if (remainingShots % 2 == 0)
{
((EntityState)this).PlayAnimation("Gesture Additive, Left", "FirePistol, Left");
FireBullet("MuzzleLeft");
}
else
{
((EntityState)this).PlayAnimation("Gesture Additive, Right", "FirePistol, Right");
FireBullet("MuzzleRight");
}
}
public void FireBullet(string targetMuzzle)
{
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: 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_00cc: Unknown result type (might be due to invalid IL or missing references)
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: 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_0138: Unknown result type (might be due to invalid IL or missing references)
//IL_013d: Unknown result type (might be due to invalid IL or missing references)
//IL_0149: Unknown result type (might be due to invalid IL or missing references)
Util.PlaySound(fireHeavyPistolSoundString, ((EntityState)this).gameObject);
if (Object.op_Implicit((Object)(object)FirePistol2.muzzleEffectPrefab))
{
EffectManager.SimpleMuzzleFlash(FirePistol2.muzzleEffectPrefab, ((EntityState)this).gameObject, targetMuzzle, false);
}
((BaseState)this).AddRecoil(-0.45f * recoilAmplitude, 0.9f * recoilAmplitude, -0.34f * recoilAmplitude, 0.34f * recoilAmplitude);
if (((EntityState)this).isAuthority)
{
new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = 0f,
maxSpread = 0f,
damage = damageCoefficient * ((BaseState)this).damageStat,
force = force,
tracerEffectPrefab = tracerEffectPrefab,
muzzleName = targetMuzzle,
hitEffectPrefab = hitEffectPrefab,
isCrit = Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master),
radius = 0.4f,
smartCollision = true,
falloffModel = (FalloffModel)0,
maxDistance = maxRange,
procCoefficient = 0.9f
}.Fire();
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
((EntityState)this).FixedUpdate();
if (((EntityState)this).fixedAge < duration || !((EntityState)this).isAuthority)
{
return;
}
remainingShots--;
if (remainingShots == 0)
{
duration = baseDuration;
finalShot = false;
((EntityState)this).outer.SetNextStateToMain();
return;
}
HeavyTapState heavyTapState = new HeavyTapState();
if (remainingShots == 1)
{
heavyTapState.finalShot = true;
}
heavyTapState.remainingShots = remainingShots;
((EntityState)this).outer.SetNextState((EntityState)(object)heavyTapState);
}
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 PlasmaTapState : BaseSkillState, IStepSetter
{
public float duration;
public static float baseDuration = 0.25f;
public static float maxRange = 100f;
public int pistol = 2;
private Ray aimRay;
public static float damageCoefficient = 1f;
public static float damageArcing = 0.3f;
public GameObject hitEffectPrefab = Resources.Load<GameObject>("prefabs/effects/impacteffects/LightningFlash");
public static string attackSoundString = "Play_item_proc_chain_lightning";
public static float recoilAmplitude = 1f;
private HurtBox initialOrbTarget;
private readonly BullseyeSearch search = new BullseyeSearch();
private ChildLocator childLocator;
private Transform modelTransform;
void IStepSetter.SetStep(int i)
{
pistol = i;
}
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_0028: 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)
((BaseState)this).OnEnter();
duration = baseDuration / ((BaseState)this).attackSpeedStat;
aimRay = ((BaseState)this).GetAimRay();
((BaseState)this).StartAimMode(aimRay, 3f, false);
modelTransform = ((EntityState)this).GetModelTransform();
if (Object.op_Implicit((Object)(object)modelTransform))
{
childLocator = ((Component)modelTransform).GetComponent<ChildLocator>();
}
if (pistol % 2 == 0)
{
((EntityState)this).PlayAnimation("Gesture Additive, Left", "FirePistol, Left");
FireBullet("MuzzleLeft");
}
else
{
((EntityState)this).PlayAnimation("Gesture Additive, Right", "FirePistol, Right");
FireBullet("MuzzleRight");
}
SearchForTarget(aimRay);
FireOrb();
}
private void SearchForTarget(Ray aimRay)
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: 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_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)
search.teamMaskFilter = TeamMask.GetUnprotectedTeams(((EntityState)this).teamComponent.teamIndex);
search.filterByLoS = true;
search.searchOrigin = ((Ray)(ref aimRay)).origin;
search.searchDirection = ((Ray)(ref aimRay)).direction;
search.sortMode = (SortMode)1;
search.maxDistanceFilter = 100f;
search.maxAngleFilter = 360f;
search.RefreshCandidates();
search.FilterOutGameObject(((EntityState)this).gameObject);
initialOrbTarget = search.GetResults().FirstOrDefault();
}
private void FireOrb()
{
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: 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_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: 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_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Expected O, but got Unknown
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
if (NetworkServer.active)
{
LightningOrb val = new LightningOrb
{
lightningType = (LightningType)0,
damageValue = damageArcing * ((BaseState)this).damageStat,
isCrit = Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master),
teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject),
attacker = ((EntityState)this).gameObject,
procCoefficient = 0.15f,
bouncesRemaining = 1,
speed = 120f,
bouncedObjects = new List<HealthComponent>(),
range = 30f,
targetsToFindPerBounce = 3
};
HurtBox val2 = initialOrbTarget;
if (Object.op_Implicit((Object)(object)val2))
{
Transform val3 = childLocator.FindChild("HandR");
Transform val4 = childLocator.FindChild("HandL");
((Orb)val).origin = ((pistol % 2 == 0) ? val4.position : val3.position);
((Orb)val).target = val2;
OrbManager.instance.AddOrb((Orb)(object)val);
}
}
}
public void FireBullet(string targetMuzzle)
{
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: 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_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_012b: Unknown result type (might be due to invalid IL or missing references)
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
Util.PlaySound(attackSoundString, ((EntityState)this).gameObject);
Util.PlaySound("Play_mage_m1_cast_lightning", ((EntityState)this).gameObject);
if (Object.op_Implicit((Object)(object)FirePistol2.muzzleEffectPrefab))
{
EffectManager.SimpleMuzzleFlash(FirePistol2.muzzleEffectPrefab, ((EntityState)this).gameObject, targetMuzzle, false);
}
((BaseState)this).AddRecoil(-0.4f * recoilAmplitude, 0.8f * recoilAmplitude, -0.3f * recoilAmplitude, 0.3f * recoilAmplitude);
if (((EntityState)this).isAuthority)
{
new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = 0f,
maxSpread = 0f,
damage = damageCoefficient * ((BaseState)this).damageStat,
tracerEffectPrefab = PlasmaTapTracer.prefab,
muzzleName = targetMuzzle,
hitEffectPrefab = hitEffectPrefab,
isCrit = ((BaseState)this).RollCrit(),
radius = 1f,
smartCollision = true,
falloffModel = (FalloffModel)2,
maxDistance = maxRange
}.Fire();
}
}
public override void OnExit()
{
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Expected O, but got Unknown
((EntityState)this).FixedUpdate();
if (!(((EntityState)this).fixedAge < duration) && ((EntityState)this).isAuthority)
{
if (((BaseSkillState)this).activatorSkillSlot.stock <= 0)
{
((EntityState)this).outer.SetNextState((EntityState)new ReloadPistols());
}
else
{
((EntityState)this).outer.SetNextStateToMain();
}
}
}
public override InterruptPriority GetMinimumInterruptPriority()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
return (InterruptPriority)1;
}
public override void OnSerialize(NetworkWriter writer)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
NetworkExtensions.Write(writer, HurtBoxReference.FromHurtBox(initialOrbTarget));
}
public override void OnDeserialize(NetworkReader reader)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
HurtBoxReference val = NetworkExtensions.ReadHurtBoxReference(reader);
initialOrbTarget = ((HurtBoxReference)(ref val)).ResolveHurtBox();
}
}
internal class PRFRVWildfireStormState : BaseState
{
public static float baseFlameTimer = 1f;
public static float baseTickFrequency = 11f;
public static float tickDamage = 0.5f;
public static float tickProc = 1f;
public float force = 50f;
private float stopwatch;
public static float baseEntryTimer = 0.2f;
private float entryTimer;
private bool flameInitiated;
private float flameStopwatch;
private float tickFrequency;
private float flameTimer;
private static string startFlameAttackString = "Play_item_proc_fireRingTornado_start";
private static string endFlameAttackString = "Play_item_proc_fireRingTornado_end";
private ChildLocator childLocator;
private Transform leftFlame;
private Transform rightFlame;
private Transform leftMuzzle;
private Transform rightMuzzle;
private Transform transformer;
private Transform transformer2;
private bool isCrit;
private const float flameDistance = 20f;
public static float recoilForce = 290f;
public override void OnEnter()
{
((BaseState)this).OnEnter();
stopwatch = 0f;
flameInitiated = false;
entryTimer = baseEntryTimer / base.attackSpeedStat;
flameTimer = baseFlameTimer;
tickFrequency = 3.2f * (base.attackSpeedStat - 1f) + baseTickFrequency;
Transform modelTransform = ((EntityState)this).GetModelTransform();
if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
((EntityState)this).characterBody.SetAimTimer(entryTimer + flameTimer + 1f);
}
if (Object.op_Implicit((Object)(object)modelTransform))
{
childLocator = ((Component)modelTransform).GetComponent<ChildLocator>();
leftMuzzle = childLocator.FindChild("MuzzleLeft");
rightMuzzle = childLocator.FindChild("MuzzleRight");
}
if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterBody))
{
isCrit = Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master);
}
}
public override void OnExit()
{
Util.PlaySound(endFlameAttackString, ((EntityState)this).gameObject);
((EntityState)this).PlayAnimation("Gesture, Additive", "FireFMJ", "FireFMJ.playbackRate", 0.6f);
((EntityState)this).PlayAnimation("Gesture, Override", "FireFMJ", "FireFMJ.playbackRate", 0.6f);
if (Object.op_Implicit((Object)(object)leftFlame))
{
EntityState.Destroy((Object)(object)((Component)leftFlame).gameObject);
}
if (Object.op_Implicit((Object)(object)rightFlame))
{
EntityState.Destroy((Object)(object)((Component)rightFlame).gameObject);
}
((EntityState)this).OnExit();
}
public override void FixedUpdate()
{
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Expected O, but got Unknown
((EntityState)this).FixedUpdate();
((EntityState)this).characterBody.isSprinting = false;
Flamethrower val = new Flamethrower();
stopwatch += Time.fixedDeltaTime;
if (stopwatch >= entryTimer && !flameInitiated)
{
flameInitiated = true;
Util.PlaySound(startFlameAttackString, ((EntityState)this).gameObject);
if (Object.op_Implicit((Object)(object)childLocator))
{
transformer = childLocator.FindChild("MuzzleLeft");
transformer2 = childLocator.FindChild("MuzzleRight");
}
if (Object.op_Implicit((Object)(object)transformer))
{
leftFlame = Object.Instantiate<GameObject>(val.flamethrowerEffectPrefab, transformer).transform;
}
if (Object.op_Implicit((Object)(object)transformer2))
{
rightFlame = Object.Instantiate<GameObject>(val.flamethrowerEffectPrefab, transformer2).transform;
}
if (Object.op_Implicit((Object)(object)leftFlame))
{
((Component)leftFlame).GetComponent<ScaleParticleSystemDuration>().newDuration = flameTimer;
}
if (Object.op_Implicit((Object)(object)rightFlame))
{
((Component)rightFlame).GetComponent<ScaleParticleSystemDuration>().newDuration = flameTimer;
}
Flame("MuzzleCenter");
}
if (flameInitiated)
{
flameStopwatch += Time.deltaTime;
if (flameStopwatch > 1f / tickFrequency)
{
flameStopwatch -= 1f / tickFrequency;
Flame("MuzzleCenter");
}
UpdateFlame();
}
if (stopwatch >= flameTimer + entryTimer && ((EntityState)this).isAuthority)
{
((EntityState)this).outer.SetNextStateToMain();
}
}
private void UpdateFlame()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: 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)
Ray aimRay = ((BaseState)this).GetAimRay();
Vector3 direction = ((Ray)(ref aimRay)).direction;
Vector3 direction2 = ((Ray)(ref aimRay)).direction;
if (Object.op_Implicit((Object)(object)leftFlame))
{
leftFlame.forward = direction;
}
if (Object.op_Implicit((Object)(object)rightFlame))
{
rightFlame.forward = direction2;
}
}
private void Flame(string muzzleString)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: 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_004e: 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_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: 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_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: 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_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_0118: Unknown result type (might be due to invalid IL or missing references)
//IL_0123: Unknown result type (might be due to invalid IL or missing references)
Ray aimRay = ((BaseState)this).GetAimRay();
if (((EntityState)this).isAuthority)
{
new BulletAttack
{
owner = ((EntityState)this).gameObject,
weapon = ((EntityState)this).gameObject,
origin = ((Ray)(ref aimRay)).origin,
aimVector = ((Ray)(ref aimRay)).direction,
minSpread = 0f,
damage = tickDamage * base.damageStat,
force = force,
muzzleName = muzzleString,
hitEffectPrefab = Flamethrower.impactEffectPrefab,
isCrit = isCrit,
radius = Flamethrower.radius,
falloffModel = (FalloffModel)0,
stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask,
procCoefficient = tickProc,
maxDistance = 20f,
smartCollision = true,
damageType = (DamageType)(Util.CheckRoll(30f, ((EntityState)this).characterBody.master) ? 128 : 0)
}.Fire();
if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor))
{
((EntityState)this).characterMotor.ApplyForce(((Ray)(ref aimRay)).direction * (0f - recoilForce), false, false);
}
}
}
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;
}
}
}