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.Engi.EngiMissilePainter;
using EntityStates.Engi.EngiWeapon;
using ExamplePlugin.libs;
using HG;
using HarmonyLib;
using IL.EntityStates.Engi.EngiWeapon;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates;
using On.EntityStates.Engi.EngiMissilePainter;
using On.EntityStates.Engi.EngiWeapon;
using On.RoR2;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.Skills;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("DiyEngi")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+c8450fbdd123f61753e8561b5b10a0529d807d21")]
[assembly: AssemblyProduct("DiyEngi")]
[assembly: AssemblyTitle("DiyEngi")]
[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 ExamplePlugin.libs
{
public enum TurretEnum
{
工程师普通机枪塔_EngiTurretMaster,
工程师移动机枪塔_EngiWalkerTurretMaster,
工程师机枪塔2_EngiBeamTurretMaster,
孔雀石刺塔_UrchinTurretMaster,
克西结构体_MegaConstructMaster,
固定克西结构体_MajorConstructMaster,
装备无人机_EquipmentDroneMaster,
无人轰炸机_BombardmentDroneMaster,
清理无人机_CleanupDroneMaster,
冰冻无人机_CopycatDroneMaster,
超载蠕虫_ElectricWormMaster,
岩浆蠕虫_MagmaWormMaster,
纽特_ShopkeeperMaster,
操作员_DroneTechMonsterMaster,
漂泊者_DrifterMonsterMaster,
指挥官_CommandoMonsterMaster,
船长_CaptainMonsterMaster,
大厨_ChefMonsterMaster,
磁轨炮手_RailgunnerMonsterMaster,
盗贼_Bandit2MonsterMaster,
呛鼻毒师_CrocoMonsterMaster,
工匠_MageMonsterMaster,
工程师_EngiMonsterMaster,
女猎人_HuntressMonsterMaster,
雇佣兵_MercMonsterMaster,
装卸工_LoaderMonsterMaster,
多功能枪兵_ToolbotMonsterMaster,
雷克斯_TreebotMonsterMaster,
探寻者_SeekerMonsterMaster,
虚空恶鬼_VoidSurvivorMonsterMaster,
异教徒_HereticMonsterMaster,
虚假子嗣_FalseSonMonsterMaster,
阿尔法结构体_MinorConstructAttachableMaster,
阿尔法结构体黄金_MinorConstructOnKillMaster,
代号280原型机_MegaDroneMaster,
十字准星_DTGunnerDroneMaster,
啁啾_DTHaulerDroneMaster,
医疗兵_DTHeallingDroneMaster,
屏障无人机_RechargeDroneMaster,
狱警无人机_JailerDroneMaster,
垃圾无人机_JunkDroneMaster,
无人机小子中尉_DroneBomberMaster,
枪手机枪塔_Turret1Master,
枪手无人机_Drone1Master,
导弹无人机_DroneMissileMaster,
焚烧无人机_FlameDroneMaster,
治疗无人机_Drone2Master,
应急无人机_EmergencyDroneMaster,
攻击无人机_DroneBackupMaster,
内存模组_ExhaustPortWeakpointMaster,
最好的伙伴_FriendUnitMaster,
独一之翼_SolusWingMaster,
独一灼热者_TankerMaster,
独一失效者_DefectiveUnitMaster,
独一萃取者_ExtractorUnitMaster,
独一传送者_IronHaulerMaster,
独一经销商_MinePodMaster,
独一地雷_SolusMineMaster,
独一融合者_SolusAmalgamatorMaster,
独一之心_SolusHeartMaster,
独一之心_SolusHeartMaster_Offering,
被斩断的灼热者_SolusAmalgamatorFlamethrowerCannonMaster,
被斩断的破坏者_SolusAmalgamatorMissilePodMaster,
被斩断的探测器_SolusAmalgamatorThrusterMaster,
SPEX_SolusVendorMaster,
多功能枪兵_ToolbotMonsterMasterVariant,
合金猎人_VultureHunterMaster,
独一勘探者_WorkerUnitMaster,
乌贼机枪塔_SquidTurretMaster,
先祖孵化舱_ParentPodMaster,
祖人_ParentMaster,
元祖_GrandparentMaster,
不知道_BrotherHauntMaster,
米斯历克斯一阶段_BrotherMaster,
米斯历克斯复制体_BrotherGlassMaster,
米斯历克斯三阶段_BrotherHurtMaster,
米斯历克斯_ITBrotherMaster,
刺客_Assassin2Master,
合金崇拜单体_SuperRoboBallBossMaster,
单独控制单元_RoboBallBossMaster,
独一探针_RoboBallMiniMaster,
安静的探测器_RoboBallRedBuddyMaster,
兴奋的探测器_RoboBallGreenBuddyMaster,
德鲁曼上校_DroneCommanderMaster,
合金秃鹫_VultureMaster,
黄铜装置_BellMaster,
盲虫_FlyingVerminMaster,
月球喀迈拉小球_LunarExploderMaster,
月球喀迈拉坦克_LunarGolemMaster,
月球喀迈拉大幽魂_LunarWispMaster,
加普_GupMaster,
基普_GeepMaster,
格普_GipMaster,
寄居蟹_HermitCrabMaster,
甲壳虫_BeetleMaster,
甲壳虫守卫_BeetleGuardAllyMaster,
甲壳虫守卫_BeetleGuardMaster,
甲壳虫守卫_BeetleGuardMasterCrystal,
巨角野牛_BisonMaster,
巨型幽魂_GreaterWispMaster,
利莫里亚_LemurianMaster,
利莫里亚长者_LemurianBruiserMaster,
灵魂小型幽魂_WispSoulMaster,
漫游者_VagrantMaster,
盲眼害虫_VerminMaster,
迷你菇_MiniMushroomMaster,
黏土沙丘行者_ClayBossMaster,
黏土圣堂武士_ClayBruiserMaster,
黏土药剂师_ClayGrenadierMaster,
森林守护者_GravekeeperMaster,
奥利雷奥尼特_TitanGoldAllyMaster,
奥利雷奥尼特_TitanGoldMaster,
石巨人_TitanMaster,
石傀儡_GolemMaster,
水母_JellyfishMaster,
小恶魔_ImpMaster,
小恶魔霸主_ImpBossMaster,
小型幽魂_WispMaster,
清道夫_ScavMaster,
温柔的基基普_ScavLunar1Master,
狂野的威威普_ScavLunar2Master,
信徒推推普_ScavLunar3Master,
幸运儿摇摇晃_ScavLunar4Master,
虚空感染者_VoidInfestorMaster,
虚空毁灭者_VoidMegaCrabMaster,
虚空掠夺者_NullifierAllyMaster,
虚空掠夺者_NullifierMaster,
虚空藤壶_VoidBarnacleMaster,
虚空藤壶_VoidBarnacleNoCastMaster,
虚空狱卒_VoidJailerAllyMaster,
虚空狱卒_VoidJailerMaster,
幼体_AcidLarvaMaster,
治疗核心_AffixEarthHealerMaster,
神器圣匣_ArtifactShellMaster,
AncientWispMaster_AncientWispMaster,
ArchWispMaster_ArchWispMaster,
BeetleCrystalMaster_BeetleCrystalMaster,
甲壳虫女王_BeetleQueenMaster,
魔童_ChildMaster,
黏土人_ClaymanMaster,
月霖_CorruptionSpikeMaster,
利莫里亚_DevotedLemurianMaster,
虚假子嗣_FalseSonBossLunarShardBrokenMaster,
虚假子嗣_FalseSonBossLunarShardMaster,
虚假子嗣_FalseSonBossMaster,
哈雷肯尼特_HalcyoniteMaster,
利莫里亚长者_LemurianBruiserMasterFire,
利莫里亚长者_LemurianBruiserMasterHaunted,
利莫里亚长者_LemurianBruiserMasterIce,
利莫里亚长者_LemurianBruiserMasterPoison,
虚灵_MiniVoidRaidCrabMasterBase,
虚灵_MiniVoidRaidCrabMasterPhase1,
虚灵_MiniVoidRaidCrabMasterPhase2,
虚灵_MiniVoidRaidCrabMasterPhase3,
阿尔法结构体_MinorConstructMaster,
烧灼地龙_ScorchlingMaster,
虚空藤壶_VoidBarnacleAllyMaster,
虚空毁灭者_VoidMegaCrabAllyMaster,
虚灵_VoidRaidCrabJointMaster,
虚灵_VoidRaidCrabMaster
}
}
namespace DiyEngi
{
public enum AutoFirEngiMissileTypeEnum
{
single_单发,
all_并发
}
[BepInPlugin("top.sshh.DiyEngi", "DiyEngi", "2.1.0")]
public class DiyEngi : BaseUnityPlugin
{
[Serializable]
[CompilerGenerated]
private sealed class <>c
{
public static readonly <>c <>9 = new <>c();
public static hook_HandleBulletDamage <>9__39_0;
public static Func<Instruction, bool> <>9__41_0;
public static Func<Instruction, bool> <>9__42_0;
public static Func<Instruction, bool> <>9__42_1;
public static Func<Instruction, bool> <>9__42_2;
public static Func<Instruction, bool> <>9__42_3;
public static Func<Instruction, bool> <>9__42_4;
public static Func<Instruction, bool> <>9__42_5;
public static Func<Instruction, bool> <>9__42_6;
public static Func<Instruction, bool> <>9__42_8;
public static Func<Instruction, bool> <>9__42_9;
public static Func<Instruction, bool> <>9__42_10;
internal void <Awake>b__39_0(orig_HandleBulletDamage orig, NetworkMessage netMsg)
{
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Invalid comparison between Unknown and I4
//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Expected O, but got Unknown
NetworkReader reader = netMsg.reader;
GameObject val = reader.ReadGameObject();
DamageInfo val2 = NetworkExtensions.ReadDamageInfo(reader);
if (reader.ReadBoolean() && Object.op_Implicit((Object)(object)val))
{
HealthComponent component = val.GetComponent<HealthComponent>();
if (Object.op_Implicit((Object)(object)component))
{
if (val2 != null)
{
CharacterBody component2 = val2.attacker.GetComponent<CharacterBody>();
if (Object.op_Implicit((Object)(object)component2) && component2.isPlayerControlled && component2.damage * 401f < val2.damage && val2.procChainMask.mask == 0 && (int)val2.damageColorIndex != 3 && component2.inventory.GetItemCount(Items.BleedOnHitAndExplode) > 0)
{
SimpleChatMessage val3 = new SimpleChatMessage();
val3.baseToken = "检测到[" + component2.GetUserName() + "]基础攻击力为(" + component2.damage + ")客户端上报伤害为(" + val2.damage + ")理论上不应该超过基础400倍(大恶魔)";
Chat.SendBroadcastChat((ChatMessageBase)(object)val3);
val2.damage = component2.damage;
}
}
component.TakeDamage(val2);
}
GlobalEventManager.instance.OnHitEnemy(val2, val);
}
GlobalEventManager.instance.OnHitAll(val2, val);
}
internal bool <HookMinePosition>b__41_0(Instruction c)
{
return ILPatternMatchingExt.MatchCall<Ray>(c, "get_origin");
}
internal bool <DiyPlacementInfo>b__42_0(Instruction x)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return ILPatternMatchingExt.Match(x, OpCodes.Ldloca_S);
}
internal bool <DiyPlacementInfo>b__42_1(Instruction x)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return ILPatternMatchingExt.Match<float>(x, OpCodes.Ldc_R4, 0f);
}
internal bool <DiyPlacementInfo>b__42_2(Instruction x)
{
return ILPatternMatchingExt.MatchStfld<Vector3>(x, "y");
}
internal bool <DiyPlacementInfo>b__42_3(Instruction c)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return ILPatternMatchingExt.Match(c, OpCodes.Ldloca_S);
}
internal bool <DiyPlacementInfo>b__42_4(Instruction c)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return ILPatternMatchingExt.Match(c, OpCodes.Ldc_I4_0);
}
internal bool <DiyPlacementInfo>b__42_5(Instruction c)
{
return ILPatternMatchingExt.MatchStfld<PlacementInfo>(c, "ok");
}
internal bool <DiyPlacementInfo>b__42_6(Instruction c)
{
return ILPatternMatchingExt.MatchStfld<PlacementInfo>(c, "position");
}
internal bool <DiyPlacementInfo>b__42_8(Instruction c)
{
return ILPatternMatchingExt.MatchLdloc(c, 2);
}
internal bool <DiyPlacementInfo>b__42_9(Instruction c)
{
return ILPatternMatchingExt.MatchLdfld<PlacementInfo>(c, "ok");
}
internal bool <DiyPlacementInfo>b__42_10(Instruction c)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
return ILPatternMatchingExt.Match(c, OpCodes.Brfalse_S);
}
}
public static Stopwatch stopwatch = Stopwatch.StartNew();
public static long time = stopwatch.ElapsedMilliseconds;
public ChoiceOption turretConfig;
public ConfigEntry<TurretEnum> engiTurretConfig;
public ConfigEntry<bool> autoFireEngiMissileConfig;
public ConfigEntry<bool> autoFireEngiMinesConfig;
public ConfigEntry<bool> fireOnMasterConfig;
public ConfigEntry<AutoFirEngiMissileTypeEnum> autoFirEngiMissileTypeConfig;
public IntSliderOption primarySkillSetting;
public IntSliderOption secondarySkillSetting;
public IntSliderOption utilitySkillSetting;
public IntSliderOption specialSkillSetting;
public ConfigEntry<SkillOverridePriority> skillOverridePrioritySetting;
public StepSliderOption skill2;
public StepSliderOption skill3;
public StepSliderOption skill4;
public StepSliderOption skill5;
public StepSliderOption skill6;
public StepSliderOption skill7;
public IntSliderOption turretPositionFix;
public SkillOverridePriority skillOverridePriority;
public int[] lastSkillIndex = new int[4] { -1, -1, -1, -1 };
public static string[] skillTextList;
private GameObject engiBody = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Engi/EngiBody.prefab").WaitForCompletion();
public static ConfigFile RoRConfig { get; set; }
public static GameObject currentTurret { get; set; }
public static DiyEngi Instance { get; set; }
internal static ManualLogSource Logger { get; set; }
public void Awake()
{
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Expected O, but got Unknown
//IL_010a: 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_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: Expected O, but got Unknown
//IL_011f: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: Expected O, but got Unknown
//IL_0189: Unknown result type (might be due to invalid IL or missing references)
//IL_018e: Unknown result type (might be due to invalid IL or missing references)
//IL_0199: Unknown result type (might be due to invalid IL or missing references)
//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
//IL_01b4: Expected O, but got Unknown
//IL_01af: Unknown result type (might be due to invalid IL or missing references)
//IL_01b9: Expected O, but got Unknown
//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
//IL_01de: Unknown result type (might be due to invalid IL or missing references)
//IL_01e9: 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_0204: Expected O, but got Unknown
//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0209: Expected O, but got Unknown
//IL_0229: Unknown result type (might be due to invalid IL or missing references)
//IL_022e: 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_0244: Unknown result type (might be due to invalid IL or missing references)
//IL_0254: Expected O, but got Unknown
//IL_024f: Unknown result type (might be due to invalid IL or missing references)
//IL_0259: Expected O, but got Unknown
//IL_0279: Unknown result type (might be due to invalid IL or missing references)
//IL_027e: Unknown result type (might be due to invalid IL or missing references)
//IL_0289: Unknown result type (might be due to invalid IL or missing references)
//IL_0294: Unknown result type (might be due to invalid IL or missing references)
//IL_02a4: Expected O, but got Unknown
//IL_029f: Unknown result type (might be due to invalid IL or missing references)
//IL_02a9: Expected O, but got Unknown
//IL_02c9: Unknown result type (might be due to invalid IL or missing references)
//IL_02ce: Unknown result type (might be due to invalid IL or missing references)
//IL_02d9: Unknown result type (might be due to invalid IL or missing references)
//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
//IL_02f4: Expected O, but got Unknown
//IL_02ef: Unknown result type (might be due to invalid IL or missing references)
//IL_02f9: Expected O, but got Unknown
//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_0329: Unknown result type (might be due to invalid IL or missing references)
//IL_0334: Unknown result type (might be due to invalid IL or missing references)
//IL_0344: Expected O, but got Unknown
//IL_033f: Unknown result type (might be due to invalid IL or missing references)
//IL_0349: Expected O, but got Unknown
//IL_0367: Unknown result type (might be due to invalid IL or missing references)
//IL_0371: Expected O, but got Unknown
//IL_0377: Unknown result type (might be due to invalid IL or missing references)
//IL_0381: Expected O, but got Unknown
//IL_0387: Unknown result type (might be due to invalid IL or missing references)
//IL_0391: Expected O, but got Unknown
//IL_0397: Unknown result type (might be due to invalid IL or missing references)
//IL_03a1: Expected O, but got Unknown
//IL_03a7: Unknown result type (might be due to invalid IL or missing references)
//IL_03b1: Expected O, but got Unknown
//IL_0563: Unknown result type (might be due to invalid IL or missing references)
//IL_056d: Expected O, but got Unknown
//IL_0574: Unknown result type (might be due to invalid IL or missing references)
//IL_057e: Expected O, but got Unknown
//IL_0585: Unknown result type (might be due to invalid IL or missing references)
//IL_058f: Expected O, but got Unknown
//IL_0596: Unknown result type (might be due to invalid IL or missing references)
//IL_05a0: Expected O, but got Unknown
//IL_05a7: Unknown result type (might be due to invalid IL or missing references)
//IL_05b1: Expected O, but got Unknown
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Expected O, but got Unknown
object obj = <>c.<>9__39_0;
if (obj == null)
{
hook_HandleBulletDamage val = delegate(orig_HandleBulletDamage orig, NetworkMessage netMsg)
{
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: Invalid comparison between Unknown and I4
//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_00af: Expected O, but got Unknown
NetworkReader reader = netMsg.reader;
GameObject val3 = reader.ReadGameObject();
DamageInfo val4 = NetworkExtensions.ReadDamageInfo(reader);
if (reader.ReadBoolean() && Object.op_Implicit((Object)(object)val3))
{
HealthComponent component3 = val3.GetComponent<HealthComponent>();
if (Object.op_Implicit((Object)(object)component3))
{
if (val4 != null)
{
CharacterBody component4 = val4.attacker.GetComponent<CharacterBody>();
if (Object.op_Implicit((Object)(object)component4) && component4.isPlayerControlled && component4.damage * 401f < val4.damage && val4.procChainMask.mask == 0 && (int)val4.damageColorIndex != 3 && component4.inventory.GetItemCount(Items.BleedOnHitAndExplode) > 0)
{
SimpleChatMessage val5 = new SimpleChatMessage();
val5.baseToken = "检测到[" + component4.GetUserName() + "]基础攻击力为(" + component4.damage + ")客户端上报伤害为(" + val4.damage + ")理论上不应该超过基础400倍(大恶魔)";
Chat.SendBroadcastChat((ChatMessageBase)(object)val5);
val4.damage = component4.damage;
}
}
component3.TakeDamage(val4);
}
GlobalEventManager.instance.OnHitEnemy(val4, val3);
}
GlobalEventManager.instance.OnHitAll(val4, val3);
};
<>c.<>9__39_0 = val;
obj = (object)val;
}
BulletAttack.HandleBulletDamage += (hook_HandleBulletDamage)obj;
RoRConfig = ((BaseUnityPlugin)this).Config;
Logger = ((BaseUnityPlugin)this).Logger;
time = stopwatch.ElapsedMilliseconds;
turretConfig = new ChoiceOption((ConfigEntryBase)(object)RoRConfig.Bind<TurretEnum>("setting", "TurretType", TurretEnum.工程师普通机枪塔_EngiTurretMaster, "怪物名称"));
engiTurretConfig = RoRConfig.Bind<TurretEnum>("setting", "AllyTurretType", TurretEnum.工程师普通机枪塔_EngiTurretMaster, "友军工程师炮塔");
autoFireEngiMissileConfig = RoRConfig.Bind<bool>("setting", "MissileSkillAutoUse", true, "是否自动使用导弹");
autoFireEngiMinesConfig = RoRConfig.Bind<bool>("setting", "MinesAutoUse", true, "是否自动使用地雷");
fireOnMasterConfig = RoRConfig.Bind<bool>("setting", "FireOnMonsterPosition", true, "地雷和鱼叉是否生成在怪物身上");
turretPositionFix = new IntSliderOption(((BaseUnityPlugin)this).Config.Bind<int>("setting", "TurretPositionFix", 0, "炮塔摆放位置视线方向前后调整距离,-20,20"), new IntSliderConfig
{
min = -20,
max = 20
});
autoFireEngiMissileConfig = RoRConfig.Bind<bool>("setting", "MissileSkillAutoUse", true, "是否自动使用导弹");
autoFirEngiMissileTypeConfig = RoRConfig.Bind<AutoFirEngiMissileTypeEnum>("setting", "MissileSkillUseType", AutoFirEngiMissileTypeEnum.single_单发, "自动使用导弹发射类型");
skill2 = new StepSliderOption(((BaseUnityPlugin)this).Config.Bind<float>("skillRechargeInterval", "PressureMines_压力地雷", 8f, "PressureMinesCooldown_压力地雷基础冷却时间_needRestartGame需要重启游戏"), new StepSliderConfig
{
min = 0f,
max = 50f,
increment = 0.1f
});
skill3 = new StepSliderOption(((BaseUnityPlugin)this).Config.Bind<float>("skillRechargeInterval", "SpiderMines_蜘蛛地雷", 8f, "SpiderMinesCooldown_蜘蛛地雷基础冷却时间_needRestartGame需要重启游戏"), new StepSliderConfig
{
min = 0f,
max = 50f,
increment = 0.1f
});
skill4 = new StepSliderOption(((BaseUnityPlugin)this).Config.Bind<float>("skillRechargeInterval", "BubbleShield_泡泡护盾", 25f, "BubbleShieldCooldown_泡泡护盾基础冷却时间_needRestartGame需要重启游戏"), new StepSliderConfig
{
min = 0f,
max = 50f,
increment = 0.1f
});
skill5 = new StepSliderOption(((BaseUnityPlugin)this).Config.Bind<float>("skillRechargeInterval", "ThermalHarpoons_热力鱼叉", 2.5f, "ThermalHarpoonsCooldown_热力鱼叉基础冷却时间_needRestartGame需要重启游戏"), new StepSliderConfig
{
min = 0f,
max = 50f,
increment = 0.1f
});
skill6 = new StepSliderOption(((BaseUnityPlugin)this).Config.Bind<float>("skillRechargeInterval", "TR12GaussAutoTurret_TR12高斯自动炮塔", 30f, "TR12GaussAutoTurretCooldown_TR12高斯自动炮塔基础冷却时间_needRestartGame需要重启游戏"), new StepSliderConfig
{
min = 0f,
max = 50f,
increment = 0.1f
});
skill7 = new StepSliderOption(((BaseUnityPlugin)this).Config.Bind<float>("skillRechargeInterval", "TR58CarbonizerTurret_TR58碳化器炮塔", 30f, "TR58CarbonizerTurretCooldown_TR58碳化器炮塔基础冷却时间_needRestartGame需要重启游戏"), new StepSliderConfig
{
min = 0f,
max = 50f,
increment = 0.1f
});
Harmony.CreateAndPatchAll(((object)this).GetType(), (string)null);
ModSettingsManager.AddOption((BaseOption)(object)turretConfig);
ModSettingsManager.AddOption((BaseOption)new ChoiceOption((ConfigEntryBase)(object)engiTurretConfig));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(autoFireEngiMissileConfig));
ModSettingsManager.AddOption((BaseOption)new ChoiceOption((ConfigEntryBase)(object)autoFirEngiMissileTypeConfig));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(autoFireEngiMinesConfig));
ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(fireOnMasterConfig));
ModSettingsManager.AddOption((BaseOption)(object)turretPositionFix);
ModSettingsManager.AddOption((BaseOption)(object)skill2);
ModSettingsManager.AddOption((BaseOption)(object)skill3);
ModSettingsManager.AddOption((BaseOption)(object)skill4);
ModSettingsManager.AddOption((BaseOption)(object)skill5);
ModSettingsManager.AddOption((BaseOption)(object)skill6);
ModSettingsManager.AddOption((BaseOption)(object)skill7);
engiBody.GetComponent<SkillLocator>().secondary.skillFamily.variants[0].skillDef.baseRechargeInterval = skill2.Value;
engiBody.GetComponent<SkillLocator>().secondary.skillFamily.variants[1].skillDef.baseRechargeInterval = skill3.Value;
engiBody.GetComponent<SkillLocator>().utility.skillFamily.variants[0].skillDef.baseRechargeInterval = skill4.Value;
engiBody.GetComponent<SkillLocator>().utility.skillFamily.variants[1].skillDef.baseRechargeInterval = skill5.Value;
engiBody.GetComponent<SkillLocator>().special.skillFamily.variants[0].skillDef.baseRechargeInterval = skill6.Value;
engiBody.GetComponent<SkillLocator>().special.skillFamily.variants[1].skillDef.baseRechargeInterval = skill7.Value;
RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate
{
//IL_052d: Unknown result type (might be due to invalid IL or missing references)
//IL_0537: Expected O, but got Unknown
//IL_0590: Unknown result type (might be due to invalid IL or missing references)
//IL_0595: Unknown result type (might be due to invalid IL or missing references)
//IL_059c: Unknown result type (might be due to invalid IL or missing references)
//IL_05ae: Expected O, but got Unknown
//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
//IL_05b3: Expected O, but got Unknown
//IL_05cb: Unknown result type (might be due to invalid IL or missing references)
//IL_05d0: Unknown result type (might be due to invalid IL or missing references)
//IL_05d7: Unknown result type (might be due to invalid IL or missing references)
//IL_05e9: Expected O, but got Unknown
//IL_05e4: Unknown result type (might be due to invalid IL or missing references)
//IL_05ee: Expected O, but got Unknown
//IL_0606: Unknown result type (might be due to invalid IL or missing references)
//IL_060b: Unknown result type (might be due to invalid IL or missing references)
//IL_0612: Unknown result type (might be due to invalid IL or missing references)
//IL_0624: Expected O, but got Unknown
//IL_061f: Unknown result type (might be due to invalid IL or missing references)
//IL_0629: Expected O, but got Unknown
//IL_0641: Unknown result type (might be due to invalid IL or missing references)
//IL_0646: Unknown result type (might be due to invalid IL or missing references)
//IL_064d: Unknown result type (might be due to invalid IL or missing references)
//IL_065f: Expected O, but got Unknown
//IL_065a: Unknown result type (might be due to invalid IL or missing references)
//IL_0664: Expected O, but got Unknown
//IL_068a: Unknown result type (might be due to invalid IL or missing references)
//IL_0694: Expected O, but got Unknown
skillTextList = new string[SkillCatalog._allSkillDefs.Length];
foreach (GameObject allBodyPrefab in BodyCatalog.allBodyPrefabs)
{
SkillLocator component = allBodyPrefab.GetComponent<SkillLocator>();
CharacterBody component2 = allBodyPrefab.GetComponent<CharacterBody>();
if (!((Object)(object)component == (Object)null) && !((Object)(object)component2 == (Object)null))
{
if ((Object)(object)component.primary != (Object)null && (Object)(object)component.primary.skillFamily != (Object)null)
{
Variant[] variants = component.primary.skillFamily.variants;
if (variants != null)
{
for (int i = 0; i < variants.Length; i++)
{
SkillDef skillDef = variants[i].skillDef;
if ((Object)(object)skillDef != (Object)null && skillTextList[skillDef.skillIndex] == null)
{
skillTextList[skillDef.skillIndex] = skillDef.skillIndex + "_" + component2.GetDisplayName() + "_primary_" + skillDef.skillName + "_" + Language.GetString(skillDef.skillNameToken) + "\n";
}
}
}
}
if ((Object)(object)component.secondary != (Object)null && (Object)(object)component.secondary.skillFamily != (Object)null)
{
Variant[] variants2 = component.secondary.skillFamily.variants;
if (variants2 != null)
{
for (int j = 0; j < variants2.Length; j++)
{
SkillDef skillDef2 = variants2[j].skillDef;
if ((Object)(object)skillDef2 != (Object)null && skillTextList[skillDef2.skillIndex] == null)
{
skillTextList[skillDef2.skillIndex] = skillDef2.skillIndex + "_" + component2.GetDisplayName() + "_secondary_" + skillDef2.skillName + "_" + Language.GetString(skillDef2.skillNameToken) + "\n";
}
}
}
}
if ((Object)(object)component.utility != (Object)null && (Object)(object)component.utility.skillFamily != (Object)null)
{
Variant[] variants3 = component.utility.skillFamily.variants;
if (variants3 != null)
{
for (int k = 0; k < variants3.Length; k++)
{
SkillDef skillDef3 = variants3[k].skillDef;
if ((Object)(object)skillDef3 != (Object)null && skillTextList[skillDef3.skillIndex] == null)
{
skillTextList[skillDef3.skillIndex] = skillDef3.skillIndex + "_" + component2.GetDisplayName() + "_utility_" + skillDef3.skillName + "_" + Language.GetString(skillDef3.skillNameToken) + "\n";
}
}
}
}
if ((Object)(object)component.special != (Object)null && (Object)(object)component.special.skillFamily != (Object)null)
{
Variant[] variants4 = component.special.skillFamily.variants;
if (variants4 != null)
{
for (int l = 0; l < variants4.Length; l++)
{
SkillDef skillDef4 = variants4[l].skillDef;
if ((Object)(object)skillDef4 != (Object)null && skillTextList[skillDef4.skillIndex] == null)
{
skillTextList[skillDef4.skillIndex] = skillDef4.skillIndex + "_" + component2.GetDisplayName() + "_special_" + skillDef4.skillName + "_" + Language.GetString(skillDef4.skillNameToken) + "\n";
}
}
}
}
}
}
foreach (SkillDef allSkillDef in SkillCatalog.allSkillDefs)
{
if (skillTextList[allSkillDef.skillIndex] == null)
{
skillTextList[allSkillDef.skillIndex] = allSkillDef.skillIndex + "_" + allSkillDef.skillName + "_" + Language.GetString(allSkillDef.skillNameToken) + "\n";
}
}
string text = "";
foreach (CharacterMaster allMaster in MasterCatalog.allMasters)
{
text = text + Util.GetBestMasterName(allMaster) + "_" + ((Object)allMaster).name + ",\n";
}
((BaseOption)turretConfig).SetDescription(text, (BaseOptionConfig)new ChoiceConfig());
Logger.LogDebug((object)text);
string text2 = "-1_defaultSkill_角色默认技能\n";
for (int m = 0; m < skillTextList.Length; m++)
{
text2 += skillTextList[m];
}
Logger.LogDebug((object)text2);
primarySkillSetting = new IntSliderOption(((BaseUnityPlugin)this).Config.Bind<int>("setting", "primary", -1, text2), new IntSliderConfig
{
min = -1,
max = SkillCatalog._allSkillDefs.Length
});
secondarySkillSetting = new IntSliderOption(((BaseUnityPlugin)this).Config.Bind<int>("setting", "secondary", -1, text2), new IntSliderConfig
{
min = -1,
max = SkillCatalog._allSkillDefs.Length
});
utilitySkillSetting = new IntSliderOption(((BaseUnityPlugin)this).Config.Bind<int>("setting", "utility", -1, text2), new IntSliderConfig
{
min = -1,
max = SkillCatalog._allSkillDefs.Length
});
specialSkillSetting = new IntSliderOption(((BaseUnityPlugin)this).Config.Bind<int>("setting", "special", -1, text2), new IntSliderConfig
{
min = -1,
max = SkillCatalog._allSkillDefs.Length
});
skillOverridePrioritySetting = RoRConfig.Bind<SkillOverridePriority>("setting", "skillOverridePriority", (SkillOverridePriority)0, "技能覆盖优先级");
ModSettingsManager.AddOption((BaseOption)new ChoiceOption((ConfigEntryBase)(object)skillOverridePrioritySetting));
ModSettingsManager.AddOption((BaseOption)(object)primarySkillSetting);
ModSettingsManager.AddOption((BaseOption)(object)secondarySkillSetting);
ModSettingsManager.AddOption((BaseOption)(object)utilitySkillSetting);
ModSettingsManager.AddOption((BaseOption)(object)specialSkillSetting);
lastSkillIndex[0] = Convert.ToInt32(primarySkillSetting.Value);
lastSkillIndex[1] = Convert.ToInt32(secondarySkillSetting.Value);
lastSkillIndex[2] = Convert.ToInt32(utilitySkillSetting.Value);
lastSkillIndex[3] = Convert.ToInt32(specialSkillSetting.Value);
});
PlaceTurret.OnEnter += new hook_OnEnter(HookPlaceTurret);
FireMines.OnEnter += new Manipulator(HookMinePosition);
EntityState.FixedUpdate += new hook_FixedUpdate(AutoFireEngiMissile);
PlaceTurret.GetPlacementInfo += new Manipulator(DiyPlacementInfo);
Paint.OnEnter += (hook_OnEnter)delegate(orig_OnEnter orig, Paint self)
{
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Expected O, but got Unknown
//IL_004c: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Expected O, but got Unknown
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
//IL_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_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
//IL_0117: 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_0199: Unknown result type (might be due to invalid IL or missing references)
//IL_01a2: 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_0193: Unknown result type (might be due to invalid IL or missing references)
//IL_0198: Unknown result type (might be due to invalid IL or missing references)
//IL_01de: Unknown result type (might be due to invalid IL or missing references)
if (((EntityState)self).isAuthority)
{
if (!((EntityState)self).characterBody.isPlayerControlled)
{
orig.Invoke(self);
}
self.targetsList = new List<HurtBox>();
self.targetIndicators = new Dictionary<HurtBox, IndicatorInfo>();
self.stickyTargetIndicator = new Indicator(((EntityState)self).gameObject, Paint.stickyTargetIndicatorPrefab);
self.search = new BullseyeSearch();
int stock = ((BaseSkillState)self).activatorSkillSlot.stock;
((BaseSkillState)self).activatorSkillSlot.DeductStock(stock);
HurtBox val2 = null;
if (fireOnMasterConfig.Value)
{
Ray aimRay = ((BaseState)self).GetAimRay();
self.search.teamMaskFilter = TeamMask.GetUnprotectedTeams(((EntityState)self).teamComponent.teamIndex);
self.search.filterByLoS = false;
self.search.viewer = null;
self.search.searchOrigin = ((Ray)(ref aimRay)).origin;
self.search.searchDirection = ((Ray)(ref aimRay)).direction;
self.search.searchDirection = ((Ray)(ref aimRay)).direction;
self.search.minDistanceFilter = 0f;
self.search.maxDistanceFilter = 2000f;
self.search.sortMode = (SortMode)1;
self.search.minAngleFilter = 0f;
self.search.maxAngleFilter = 180f;
self.search.RefreshCandidates();
self.search.FilterOutGameObject(((EntityState)self).gameObject);
val2 = self.search.GetResults().FirstOrDefault();
}
while (stock-- > 0)
{
Vector3 aimOrigin = ((EntityState)self).inputBank.aimOrigin;
if ((Object)(object)val2 != (Object)null)
{
aimOrigin = val2.healthComponent.body.inputBank.aimOrigin;
}
MissileUtils.FireMissile(aimOrigin, ((EntityState)self).characterBody, default(ProcChainMask), ((Object)(object)val2 != (Object)null) ? ((Component)val2).gameObject : null, ((EntityState)self).characterBody.damage * Fire.damageCoefficient, ((EntityState)self).characterBody.RollCrit(), Fire.projectilePrefab, (DamageColorIndex)0, Vector3.up, 0f, false);
}
((EntityState)self).outer.SetNextStateToMain();
}
else
{
orig.Invoke(self);
}
};
}
private void AutoFireEngiMissile(orig_FixedUpdate orig, EntityState self)
{
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_011d: Unknown result type (might be due to invalid IL or missing references)
//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
//IL_020e: Unknown result type (might be due to invalid IL or missing references)
//IL_0214: Unknown result type (might be due to invalid IL or missing references)
//IL_029a: Unknown result type (might be due to invalid IL or missing references)
//IL_0305: Unknown result type (might be due to invalid IL or missing references)
//IL_030b: Unknown result type (might be due to invalid IL or missing references)
//IL_0391: Unknown result type (might be due to invalid IL or missing references)
//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0402: Unknown result type (might be due to invalid IL or missing references)
//IL_04fa: Unknown result type (might be due to invalid IL or missing references)
//IL_04ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0489: Unknown result type (might be due to invalid IL or missing references)
//IL_0545: Unknown result type (might be due to invalid IL or missing references)
//IL_054a: Unknown result type (might be due to invalid IL or missing references)
//IL_054b: Unknown result type (might be due to invalid IL or missing references)
//IL_0550: Unknown result type (might be due to invalid IL or missing references)
//IL_0555: Unknown result type (might be due to invalid IL or missing references)
//IL_0561: Unknown result type (might be due to invalid IL or missing references)
//IL_0568: Unknown result type (might be due to invalid IL or missing references)
//IL_056f: Unknown result type (might be due to invalid IL or missing references)
//IL_0576: Unknown result type (might be due to invalid IL or missing references)
//IL_057b: Unknown result type (might be due to invalid IL or missing references)
//IL_0580: Unknown result type (might be due to invalid IL or missing references)
//IL_0587: Unknown result type (might be due to invalid IL or missing references)
//IL_058c: Unknown result type (might be due to invalid IL or missing references)
//IL_0591: Unknown result type (might be due to invalid IL or missing references)
//IL_059c: Unknown result type (might be due to invalid IL or missing references)
//IL_05a7: Unknown result type (might be due to invalid IL or missing references)
//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
//IL_05b9: Unknown result type (might be due to invalid IL or missing references)
//IL_05c4: Unknown result type (might be due to invalid IL or missing references)
//IL_05ca: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
SkillLocator skillLocator = self.skillLocator;
if ((Object)(object)skillLocator == (Object)null)
{
return;
}
GenericSkill skill = skillLocator.GetSkill((SkillSlot)0);
GenericSkill skill2 = skillLocator.GetSkill((SkillSlot)1);
GenericSkill skill3 = skillLocator.GetSkill((SkillSlot)2);
GenericSkill skill4 = skillLocator.GetSkill((SkillSlot)3);
if ((Object)(object)skill3 == (Object)null || (Object)(object)skill2 == (Object)null)
{
return;
}
SkillDef skillDef = skill3.skillDef;
SkillDef skillDef2 = skill2.skillDef;
if ((Object)(object)skillDef == (Object)null || (Object)(object)skillDef2 == (Object)null || (Object)(object)self.characterBody == (Object)null || !self.characterBody.isPlayerControlled || !self.isAuthority)
{
return;
}
long elapsedMilliseconds = stopwatch.ElapsedMilliseconds;
if (time + 100 > elapsedMilliseconds)
{
return;
}
time = elapsedMilliseconds;
if (Convert.ToInt32(primarySkillSetting.Value) == -1 && lastSkillIndex[0] != -1)
{
ArrayUtils.ArrayRemoveAtAndResize<SkillOverride>(ref self.skillLocator.primary.skillOverrides, 0, self.skillLocator.primary.skillOverrides.Length);
self.skillLocator.primary.PickCurrentOverride();
}
else if ((skillOverridePrioritySetting.Value != skillOverridePriority || skill.skillDef.skillIndex != Convert.ToInt32(primarySkillSetting.Value)) && Convert.ToInt32(primarySkillSetting.Value) > -1)
{
ArrayUtils.ArrayRemoveAtAndResize<SkillOverride>(ref self.skillLocator.primary.skillOverrides, 0, self.skillLocator.primary.skillOverrides.Length);
self.skillLocator.primary.SetSkillOverride((object)self, SkillCatalog.GetSkillDef(Convert.ToInt32(primarySkillSetting.Value)), skillOverridePrioritySetting.Value);
}
if (Convert.ToInt32(secondarySkillSetting.Value) == -1 && lastSkillIndex[1] != -1)
{
ArrayUtils.ArrayRemoveAtAndResize<SkillOverride>(ref self.skillLocator.secondary.skillOverrides, 0, self.skillLocator.secondary.skillOverrides.Length);
self.skillLocator.secondary.PickCurrentOverride();
}
else if ((skillOverridePrioritySetting.Value != skillOverridePriority || skill2.skillDef.skillIndex != Convert.ToInt32(secondarySkillSetting.Value)) && Convert.ToInt32(secondarySkillSetting.Value) > -1)
{
ArrayUtils.ArrayRemoveAtAndResize<SkillOverride>(ref self.skillLocator.secondary.skillOverrides, 0, self.skillLocator.secondary.skillOverrides.Length);
self.skillLocator.secondary.SetSkillOverride((object)self, SkillCatalog.GetSkillDef(Convert.ToInt32(secondarySkillSetting.Value)), skillOverridePrioritySetting.Value);
}
if (Convert.ToInt32(utilitySkillSetting.Value) == -1 && lastSkillIndex[2] != -1)
{
ArrayUtils.ArrayRemoveAtAndResize<SkillOverride>(ref self.skillLocator.utility.skillOverrides, 0, self.skillLocator.utility.skillOverrides.Length);
self.skillLocator.utility.PickCurrentOverride();
}
else if ((skillOverridePrioritySetting.Value != skillOverridePriority || skill3.skillDef.skillIndex != Convert.ToInt32(utilitySkillSetting.Value)) && Convert.ToInt32(utilitySkillSetting.Value) > -1)
{
ArrayUtils.ArrayRemoveAtAndResize<SkillOverride>(ref self.skillLocator.utility.skillOverrides, 0, self.skillLocator.utility.skillOverrides.Length);
self.skillLocator.utility.SetSkillOverride((object)self, SkillCatalog.GetSkillDef(Convert.ToInt32(utilitySkillSetting.Value)), skillOverridePrioritySetting.Value);
}
if (Convert.ToInt32(specialSkillSetting.Value) == -1 && lastSkillIndex[3] != -1)
{
ArrayUtils.ArrayRemoveAtAndResize<SkillOverride>(ref self.skillLocator.special.skillOverrides, 0, self.skillLocator.special.skillOverrides.Length);
self.skillLocator.special.PickCurrentOverride();
}
else if ((skillOverridePrioritySetting.Value != skillOverridePriority || skill4.skillDef.skillIndex != Convert.ToInt32(specialSkillSetting.Value)) && Convert.ToInt32(specialSkillSetting.Value) > -1)
{
ArrayUtils.ArrayRemoveAtAndResize<SkillOverride>(ref self.skillLocator.special.skillOverrides, 0, self.skillLocator.special.skillOverrides.Length);
self.skillLocator.special.SetSkillOverride((object)self, SkillCatalog.GetSkillDef(Convert.ToInt32(specialSkillSetting.Value)), skillOverridePrioritySetting.Value);
}
lastSkillIndex[0] = Convert.ToInt32(primarySkillSetting.Value);
lastSkillIndex[1] = Convert.ToInt32(secondarySkillSetting.Value);
lastSkillIndex[2] = Convert.ToInt32(utilitySkillSetting.Value);
lastSkillIndex[3] = Convert.ToInt32(specialSkillSetting.Value);
skillOverridePriority = skillOverridePrioritySetting.Value;
HurtBox val = null;
if ((Object)(object)skillDef != (Object)null && "EngiHarpoons".Equals(skillDef.skillName))
{
try
{
if (self.isAuthority)
{
if (fireOnMasterConfig.Value)
{
BullseyeSearch val2 = new BullseyeSearch
{
teamMaskFilter = TeamMask.allButNeutral
};
((TeamMask)(ref val2.teamMaskFilter)).RemoveTeam((TeamIndex)1);
val2.filterByLoS = false;
val2.viewer = null;
val2.searchOrigin = self.inputBank.aimOrigin;
val2.searchDirection = self.inputBank.aimDirection;
val2.minDistanceFilter = 0f;
val2.maxDistanceFilter = 2000f;
val2.sortMode = (SortMode)1;
val2.minAngleFilter = 0f;
val2.maxAngleFilter = 180f;
val2.RefreshCandidates();
val2.FilterOutGameObject(self.gameObject);
val = val2.GetResults().FirstOrDefault();
if ((Object)(object)val == (Object)null)
{
return;
}
}
if (autoFireEngiMissileConfig.Value && (!fireOnMasterConfig.Value || ((Object)(object)val != (Object)null && val.healthComponent.alive)))
{
switch (autoFirEngiMissileTypeConfig.Value)
{
case AutoFirEngiMissileTypeEnum.single_单发:
if (skill3.stock >= 0)
{
skill3.skillDef.cancelSprintingOnActivation = false;
skill3.ExecuteIfReady();
}
break;
case AutoFirEngiMissileTypeEnum.all_并发:
if (skill3.stock >= skill3.maxStock)
{
skill3.skillDef.cancelSprintingOnActivation = false;
skill3.ExecuteIfReady();
}
break;
}
}
}
}
catch (Exception ex)
{
Debug.LogError((object)ex);
throw;
}
}
if (!((Object)(object)skillDef2 != (Object)null) || (!"PlaceSpiderMine".Equals(skillDef2.skillName) && !"PlaceMine".Equals(skillDef2.skillName)) || !self.isAuthority || !autoFireEngiMinesConfig.Value || (fireOnMasterConfig.Value && !((Object)(object)val != (Object)null)))
{
return;
}
try
{
if (skill2.stock >= skill2.maxStock)
{
skill2.skillDef.cancelSprintingOnActivation = false;
skill2.ExecuteIfReady();
}
}
catch (Exception value)
{
Console.WriteLine(value);
throw;
}
}
private void HookMinePosition(ILContext il)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//IL_0038: 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_0050: Unknown result type (might be due to invalid IL or missing references)
ILCursor val = new ILCursor(il);
val.GotoNext((MoveType)2, new Func<Instruction, bool>[1]
{
(Instruction c) => ILPatternMatchingExt.MatchCall<Ray>(c, "get_origin")
});
val.Emit(OpCodes.Pop);
val.Emit(OpCodes.Ldarg_0);
val.Emit(OpCodes.Ldloc_0);
val.EmitDelegate<Func<FireMines, Ray, Vector3>>((Func<FireMines, Ray, Vector3>)delegate(FireMines mines, Ray aimRay)
{
//IL_000f: 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_0026: 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_003c: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0144: Unknown result type (might be due to invalid IL or missing references)
//IL_014b: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0161: Unknown result type (might be due to invalid IL or missing references)
//IL_0166: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
//IL_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_00be: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e3: 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_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: 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_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_0194: 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_017d: 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_018c: Unknown result type (might be due to invalid IL or missing references)
//IL_013c: Unknown result type (might be due to invalid IL or missing references)
//IL_0134: Unknown result type (might be due to invalid IL or missing references)
if (!((EntityState)mines).characterBody.isPlayerControlled)
{
return ((Ray)(ref aimRay)).origin;
}
if (mines is FireBubbleShield)
{
RaycastHit val2 = default(RaycastHit);
if (Physics.Raycast(new Ray(((Ray)(ref aimRay)).origin + ((Ray)(ref aimRay)).direction * 2f, ((Ray)(ref aimRay)).direction), ref val2))
{
return ((RaycastHit)(ref val2)).point - ((Ray)(ref aimRay)).direction * 2f;
}
return ((Ray)(ref aimRay)).origin;
}
if (fireOnMasterConfig.Value)
{
HurtBox val3 = null;
BullseyeSearch val4 = new BullseyeSearch
{
teamMaskFilter = TeamMask.allButNeutral
};
((TeamMask)(ref val4.teamMaskFilter)).RemoveTeam((TeamIndex)1);
val4.filterByLoS = false;
val4.viewer = null;
val4.searchOrigin = ((Ray)(ref aimRay)).origin;
val4.searchDirection = ((Ray)(ref aimRay)).direction;
val4.minDistanceFilter = 0f;
val4.maxDistanceFilter = 2000f;
val4.sortMode = (SortMode)1;
val4.minAngleFilter = 0f;
val4.maxAngleFilter = 180f;
val4.RefreshCandidates();
val4.FilterOutGameObject(((EntityState)mines).gameObject);
val3 = val4.GetResults().FirstOrDefault();
if ((Object)(object)val3 != (Object)null)
{
return val3.healthComponent.body.inputBank.aimOrigin;
}
return ((Ray)(ref aimRay)).origin;
}
RaycastHit val5 = default(RaycastHit);
return Physics.Raycast(new Ray(((Ray)(ref aimRay)).origin + ((Ray)(ref aimRay)).direction * 5f, ((Ray)(ref aimRay)).direction), ref val5) ? (((RaycastHit)(ref val5)).point - ((Ray)(ref aimRay)).direction * 2f) : ((Ray)(ref aimRay)).origin;
});
}
private void DiyPlacementInfo(ILContext il)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
//IL_0149: Unknown result type (might be due to invalid IL or missing references)
//IL_0155: Unknown result type (might be due to invalid IL or missing references)
//IL_01f5: 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)
ILCursor val = new ILCursor(il);
val.GotoNext((MoveType)0, new Func<Instruction, bool>[3]
{
(Instruction x) => ILPatternMatchingExt.Match(x, OpCodes.Ldloca_S),
(Instruction x) => ILPatternMatchingExt.Match<float>(x, OpCodes.Ldc_R4, 0f),
(Instruction x) => ILPatternMatchingExt.MatchStfld<Vector3>(x, "y")
});
val.RemoveRange(3);
val.GotoNext((MoveType)0, new Func<Instruction, bool>[3]
{
(Instruction c) => ILPatternMatchingExt.Match(c, OpCodes.Ldloca_S),
(Instruction c) => ILPatternMatchingExt.Match(c, OpCodes.Ldc_I4_0),
(Instruction c) => ILPatternMatchingExt.MatchStfld<PlacementInfo>(c, "ok")
});
val.Index += 1;
val.Remove();
val.Emit(OpCodes.Ldc_I4_1);
val.GotoNext((MoveType)0, new Func<Instruction, bool>[1]
{
(Instruction c) => ILPatternMatchingExt.MatchStfld<PlacementInfo>(c, "position")
});
val.Emit(OpCodes.Pop);
val.Emit(OpCodes.Ldloc_0);
val.EmitDelegate<Func<Ray, Vector3>>((Func<Ray, Vector3>)delegate(Ray aimRay)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: 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_0018: 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_0033: 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_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
RaycastHit val2 = default(RaycastHit);
Physics.Raycast(new Ray(((Ray)(ref aimRay)).origin + ((Ray)(ref aimRay)).direction * 5f, ((Ray)(ref aimRay)).direction), ref val2);
return ((RaycastHit)(ref val2)).point + ((Ray)(ref aimRay)).direction * (float)turretPositionFix.Value;
});
val.GotoNext(new Func<Instruction, bool>[3]
{
(Instruction c) => ILPatternMatchingExt.MatchLdloc(c, 2),
(Instruction c) => ILPatternMatchingExt.MatchLdfld<PlacementInfo>(c, "ok"),
(Instruction c) => ILPatternMatchingExt.Match(c, OpCodes.Brfalse_S)
});
val.Index += 2;
val.Emit(OpCodes.Pop);
val.Emit(OpCodes.Ldc_I4_0);
}
private void HookPlaceTurret(orig_OnEnter orig, PlaceTurret self)
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Invalid comparison between Unknown and I4
try
{
string[] array = turretConfig.Value.ToString().Split('_');
_ = array[0];
string text = array[1];
currentTurret = MasterCatalog.FindMasterPrefab(text);
if ((int)((EntityState)self).characterBody.teamComponent._teamIndex == 1)
{
if (((EntityState)self).characterBody.isPlayerControlled)
{
self.turretMasterPrefab = currentTurret;
}
else
{
string[] array2 = engiTurretConfig.Value.ToString().Split('_');
_ = array2[0];
text = array2[1];
if (!text.Equals("EngiMonsterMaster"))
{
currentTurret = MasterCatalog.FindMasterPrefab(text);
self.turretMasterPrefab = currentTurret;
}
}
}
orig.Invoke(self);
}
catch (Exception value)
{
Console.WriteLine(value);
}
}
}
}