Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of PlayableBiden v1.0.0
PlayableBiden.dll
Decompiled a year ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; 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.Logging; using EntityStates; using EntityStates.Commando.CommandoWeapon; using JetBrains.Annotations; using KinematicCharacterController; using Microsoft.CodeAnalysis; using On.RoR2; using PlayableBiden.Assets; using PlayableBiden.Utils; using PlayableBiden.Utils.Paths; using R2API; using R2API.Utils; using RoR2; using RoR2.Audio; using RoR2.EntitlementManagement; using RoR2.ExpansionManagement; using RoR2.Navigation; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Audio; using UnityEngine.Networking; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("PlayableBiden")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("PlayableBiden")] [assembly: AssemblyTitle("PlayableBiden")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: UnverifiableCode] 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 PlayableBiden { [CreateAssetMenu(menuName = "PlayableBiden/EliteRequiredSkillDef")] public class EliteRequiredSkillDef : SkillDef { public class InstanceData : BaseSkillInstanceData { public EliteTracker tracker; } public override BaseSkillInstanceData OnAssigned([NotNull] GenericSkill skillSlot) { return (BaseSkillInstanceData)(object)new InstanceData { tracker = ((Component)skillSlot).GetComponent<EliteTracker>() }; } private static bool HasTarget(GenericSkill slot) { if (slot.skillInstanceData is InstanceData instanceData) { return (Object)(object)instanceData.tracker.target != (Object)null; } return false; } public override bool IsReady([NotNull] GenericSkill skillSlot) { return ((SkillDef)this).IsReady(skillSlot) && HasTarget(skillSlot); } public override bool CanExecute([NotNull] GenericSkill skillSlot) { return ((SkillDef)this).CanExecute(skillSlot) && HasTarget(skillSlot); } } public class EliteTracker : HurtboxTracker { public SkillDef RequiredSkillDef; public GenericSkill TargetSlot; public override void Start() { isActiveCallback = () => (Object)(object)TargetSlot.skillDef == (Object)(object)RequiredSkillDef && TargetSlot.CanExecute(); validTargetCallback = (CharacterBody body) => body.isElite; targetingIndicatorPrefab = PlayableBiden.Assets.GameObject.HuntressTrackingIndicator; base.Start(); } } [CreateAssetMenu(menuName = "PrimarySkillDef")] public class PrimarySkillDef : SkillDef, IPrimarySkillDef { public string WeaponName; public WeaponSlot WeaponSlot; public bool TwoHanded; public bool IsGreatsword; public string _WeaponName => WeaponName; public WeaponSlot _WeaponSlot => WeaponSlot; public bool _TwoHanded => TwoHanded; public bool _IsGreatsword => IsGreatsword; } public interface IPrimarySkillDef { string _WeaponName { get; } WeaponSlot _WeaponSlot { get; } bool _TwoHanded { get; } bool _IsGreatsword { get; } } [CreateAssetMenu(menuName = "SteppedPrimarySkillDef")] public class SteppedPrimarySkillDef : SteppedSkillDef, IPrimarySkillDef { public string WeaponName; public WeaponSlot WeaponSlot; public bool TwoHanded; public bool IsGreatsword; public string _WeaponName => WeaponName; public WeaponSlot _WeaponSlot => WeaponSlot; public bool _TwoHanded => TwoHanded; public bool _IsGreatsword => IsGreatsword; } [CreateAssetMenu(fileName = "Survivor", menuName = "PlayableBiden/Survivor")] public class Survivor : ScriptableObject { public GameObject Body; public SurvivorDef SurvivorDef; public List<UnlockableDef> Unlocks; public List<SkillDef> Skills; public List<SkillFamily> SkillFamilies; public List<GameObject> Projectiles; public List<GameObject> Effects; public List<TokenCollection> Tokens; public void Initialize() { foreach (TokenCollection token in Tokens) { token.Initialize(); } Body.GetComponent<CharacterBody>()._defaultCrosshairPrefab = PlayableBiden.Utils.Paths.GameObject.TreebotCrosshair.Load<GameObject>(); Body.GetComponent<CameraTargetParams>().cameraParams = PlayableBiden.Utils.Paths.CharacterCameraParams.ccpStandard.Load<CharacterCameraParams>(); PrefabAPI.RegisterNetworkPrefab(Body); ContentAddition.AddBody(Body); ContentAddition.AddSurvivorDef(SurvivorDef); foreach (UnlockableDef unlock in Unlocks) { ContentAddition.AddUnlockableDef(unlock); } foreach (SkillDef skill in Skills) { ContentAddition.AddSkillDef(skill); } foreach (SkillFamily skillFamily in SkillFamilies) { ContentAddition.AddSkillFamily(skillFamily); } foreach (GameObject projectile in Projectiles) { ContentAddition.AddProjectile(projectile); } foreach (GameObject effect in Effects) { ContentAddition.AddEffect(effect); } } } public class TakedownProjectile : MonoBehaviour { public Transform Hook; public ProjectileTargetComponent TargetComponent; public float SeekingSpeed = 120f; public float ReelingSpeed = 90f; public GameObject owner; private bool reelingIn = false; private bool hasHooked = false; private CharacterBody body; public void Start() { owner = ((Component)this).GetComponent<ProjectileController>().owner; } public void FixedUpdate() { //IL_0060: 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_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0109: 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_011e: 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) //IL_0126: 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_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: 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_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_028c: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)TargetComponent.target) || (reelingIn && !Object.op_Implicit((Object)(object)body)) || !Object.op_Implicit((Object)(object)owner)) { Object.Destroy((Object)(object)((Component)this).gameObject); return; } ((Component)this).transform.position = owner.transform.position; Vector3 zero = Vector3.zero; Vector3 val; if (!reelingIn && !hasHooked) { val = TargetComponent.target.position - ((Component)Hook).transform.position; zero = ((Vector3)(ref val)).normalized; Hook.forward = zero; Transform transform = ((Component)Hook).transform; transform.position += zero * SeekingSpeed * Time.fixedDeltaTime; } else { val = TargetComponent.target.position - owner.transform.position; zero = -((Vector3)(ref val)).normalized; Hook.forward = -zero; Transform transform2 = ((Component)Hook).transform; transform2.position += zero * ReelingSpeed * Time.fixedDeltaTime; if (!NetworkServer.active) { return; } if (Object.op_Implicit((Object)(object)body.characterMotor)) { body.characterMotor.velocity = zero * ReelingSpeed; } else { body.transform.position = ((Component)Hook).transform.position; } Vector3 val2 = TargetComponent.target.position - owner.transform.position; if (Vector3.Distance(body.transform.position, owner.transform.position) < 5f) { reelingIn = false; body.healthComponent.Suicide((GameObject)null, (GameObject)null, DamageTypeCombo.op_Implicit((DamageType)65536)); } } if (!hasHooked) { Vector3 val3 = TargetComponent.target.position - Hook.position; if (Vector3.Distance(((Component)Hook).transform.position, TargetComponent.target.position) < 3f) { HookTarget(); } else if (Vector3.Dot(zero, val3) < 0f) { HookTarget(); } } } public void HookTarget() { hasHooked = true; reelingIn = true; body = ((Component)TargetComponent.target).GetComponent<HurtBox>().healthComponent.body; if (!NetworkServer.active) { return; } EnumerableExtensions.ForEachTry<EntityStateMachine>((IEnumerable<EntityStateMachine>)((Component)body).GetComponents<EntityStateMachine>(), (Action<EntityStateMachine>)delegate(EntityStateMachine x) { if (x.customName != "Body") { ((Behaviour)x).enabled = false; } }, (IDictionary<EntityStateMachine, Exception>)null); ((Component)body).gameObject.layer = LayerIndex.noCollision.intVal; if (Object.op_Implicit((Object)(object)body.characterMotor)) { ((BaseCharacterController)body.characterMotor).Motor.RebuildCollidableLayers(); } } } [CreateAssetMenu(fileName = "TokenCollection", menuName = "PlayableBiden/TokenCollection")] public class TokenCollection : ScriptableObject { public List<Token> tokens; public void Initialize() { foreach (Token token in tokens) { LanguageAPI.Add(token.Key, token.Value); } } } [Serializable] public class Token { public string Key; public string Value; } public class WeaponModelController : MonoBehaviour { public Transform SidearmHolder; public Transform MeleeHolder; public SkillFamily TargetSkillFamily; public bool IsCSSDisplay = false; private LocalUser localUser = null; internal WeaponSlot activeSlot = WeaponSlot.Sidearm; internal bool UsingGreatswordWeapon = false; public Animator ModelAnimator; internal bool TwoHanded = false; public void Start() { if (IsCSSDisplay) { NetworkUser.onLoadoutChangedGlobal += OnLoadoutChanged; } ForceUpdate(); } public void OnDestroy() { if (IsCSSDisplay) { NetworkUser.onLoadoutChangedGlobal -= OnLoadoutChanged; } } public void Update() { if (UsingGreatswordWeapon) { ModelAnimator.SetFloat("isHoldingTwoHandedWeapon", 0f); } else { ModelAnimator.SetFloat("isHoldingTwoHandedWeapon", TwoHanded ? 1f : (-1f)); } } public void EnableWeapon() { ((Component)SidearmHolder).gameObject.SetActive(activeSlot == WeaponSlot.Sidearm); ((Component)MeleeHolder).gameObject.SetActive(activeSlot == WeaponSlot.Melee); } public void DisableWeapon() { if (!TwoHanded) { ((Component)SidearmHolder).gameObject.SetActive(false); } ((Component)MeleeHolder).gameObject.SetActive(false); } private void OnLoadoutChanged(NetworkUser user) { ForceUpdate(); } public void ForceUpdate() { //IL_0041: Unknown result type (might be due to invalid IL or missing references) if (localUser == null) { localUser = LocalUserManager.GetFirstLocalUser(); } NetworkUser currentNetworkUser = localUser.currentNetworkUser; Loadout val = Loadout.RequestInstance(); currentNetworkUser.networkLoadout.CopyLoadout(val); uint skillVariant = val.bodyLoadoutManager.GetSkillVariant(currentNetworkUser.bodyIndexPreference, 0); Debug.Log((object)"converting to IPrimarySkillDef"); IPrimarySkillDef def = TargetSkillFamily.variants[skillVariant].skillDef as IPrimarySkillDef; Debug.Log((object)"converted to IPrimarySkillDef"); UpdateWeapon(def); } public void UpdateWeapon(IPrimarySkillDef def) { activeSlot = def._WeaponSlot; TwoHanded = def._TwoHanded; UsingGreatswordWeapon = def._IsGreatsword; Debug.Log((object)"updating active weapon"); switch (def._WeaponSlot) { case WeaponSlot.Sidearm: ((Component)MeleeHolder).gameObject.SetActive(false); ((Component)SidearmHolder).gameObject.SetActive(true); UpdateModel(SidearmHolder, def._WeaponName); break; case WeaponSlot.Melee: ((Component)MeleeHolder).gameObject.SetActive(true); ((Component)SidearmHolder).gameObject.SetActive(false); UpdateModel(MeleeHolder, def._WeaponName); break; } static void UpdateModel(Transform root, string name) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown foreach (Transform item in root) { Transform val = item; if (((Object)val).name != name) { ((Component)val).gameObject.SetActive(false); } else { ((Component)val).gameObject.SetActive(true); } } } } } public enum WeaponSlot { Sidearm, Melee } public class CaliforniaCrucible : CoolerBasicMeleeAttack, IStepSetter { private int _step; public override float BaseDuration => 0.8f; public override float DamageCoefficient => 4.3f; public override string HitboxName => "Punch"; public override GameObject HitEffectPrefab => null; public override float ProcCoefficient => 1f; public override float HitPauseDuration => 0.05f; public override GameObject SwingEffectPrefab => Main.bundle.LoadAsset<GameObject>("BidenCrucibleSlash.prefab"); public override string MuzzleString => "MuzzleMelee"; public override string MechanimHitboxParameter => "Hitbox.active"; public override void AuthorityModifyOverlapAttack(OverlapAttack overlapAttack) { ((BasicMeleeAttack)this).AuthorityModifyOverlapAttack(overlapAttack); } public override void PlayAnimation() { ((EntityState)this).PlayAnimation("Fullbody, Override", (_step % 2 == 0) ? "GreatSlashAlt" : "GreatSlash", "Generic.playbackRate", ((BasicMeleeAttack)this).duration, 0f); AkSoundEngine.PostEvent(Events.Play_merc_m1_hard_swing, ((EntityState)this).gameObject); } public override void BeginMeleeAttackEffect() { ((BasicMeleeAttack)this).swingEffectMuzzleString = ((_step % 2 == 0) ? "MuzzleCrucible_L" : "MuzzleCrucible_R"); ((BasicMeleeAttack)this).BeginMeleeAttackEffect(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } public void SetStep(int i) { _step = i; } } public class ColoradoCrush : CoolerBasicMeleeAttack { public override float BaseDuration => 1.4f; public override float DamageCoefficient => 6f; public override string HitboxName => "Punch"; public override GameObject HitEffectPrefab => null; public override float ProcCoefficient => 1f; public override float HitPauseDuration => 0.05f; public override GameObject SwingEffectPrefab => null; public override string MuzzleString => "MuzzleMelee"; public override string MechanimHitboxParameter => "Hitbox.active"; public override void AuthorityModifyOverlapAttack(OverlapAttack overlapAttack) { //IL_000b: 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_001c: Unknown result type (might be due to invalid IL or missing references) ((BasicMeleeAttack)this).AuthorityModifyOverlapAttack(overlapAttack); overlapAttack.damageType |= DamageTypeCombo.op_Implicit((DamageType)32); } public override void PlayAnimation() { ((EntityState)this).PlayAnimation("Gesture, Override", "Overhead", "Generic.playbackRate", ((BasicMeleeAttack)this).duration, 0f); } public override void BeginMeleeAttackEffect() { AkSoundEngine.PostEvent(Events.Play_item_use_meteor_impact, ((EntityState)this).gameObject); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class FloridaFirestarter : BaseSkillState { public float MinExitTime = 0.2f; public float DamagePerSecond = 4f; public float TickRate = 5f; public float Range = 22f; private Animator animator; private float fireDelay; private float stopwatch = 0f; private float damagePerTick; private GameObject instance; private DirectionOverrideRequest req; public GameObject EffectPrefab => Main.bundle.LoadAsset<GameObject>("FirestarterStream.prefab"); public override void OnEnter() { ((BaseState)this).OnEnter(); animator = ((EntityState)this).GetModelAnimator(); animator.SetBool("isShooting", true); TickRate *= ((BaseState)this).attackSpeedStat; damagePerTick = DamagePerSecond / TickRate; fireDelay = 1f / TickRate; instance = Object.Instantiate<GameObject>(EffectPrefab, ((BaseState)this).FindModelChild("MuzzleFlamethrower")); AkSoundEngine.PostEvent(Events.Play_mage_R_start, ((EntityState)this).gameObject); req = ((Component)((EntityState)this).GetModelTransform()).GetComponent<AimAnimator>().RequestDirectionOverride((Func<Vector3>)(() => Quaternion.AngleAxis(-30f, Vector3.up) * ((EntityState)this).inputBank.aimDirection)); } public override void FixedUpdate() { //IL_007b: 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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Expected O, but got Unknown //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0123: 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_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); ((BaseState)this).StartAimMode(0.2f, false); if (!((EntityState)this).inputBank.skill1.down && ((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= MinExitTime) { ((EntityState)this).outer.SetNextStateToMain(); } if (Object.op_Implicit((Object)(object)instance)) { instance.transform.forward = Vector3.RotateTowards(instance.transform.forward, ((EntityState)this).inputBank.aimDirection, 90f * Time.fixedDeltaTime, 360f * Time.fixedDeltaTime); } stopwatch += Time.fixedDeltaTime; if (stopwatch >= fireDelay && ((EntityState)this).isAuthority) { stopwatch = 0f; Ray aimRay = ((BaseState)this).GetAimRay(); BulletAttack val = new BulletAttack(); val.owner = ((EntityState)this).gameObject; val.weapon = ((EntityState)this).gameObject; val.origin = ((Ray)(ref aimRay)).origin; val.aimVector = ((Ray)(ref aimRay)).direction; val.minSpread = 0f; val.damage = damagePerTick * ((BaseState)this).damageStat; val.force = 20f; val.muzzleName = "MuzzleFlamethrower"; val.hitEffectPrefab = PlayableBiden.Assets.GameObject.ImpactWispEmber; val.isCrit = ((BaseState)this).RollCrit(); val.radius = 2f; val.falloffModel = (FalloffModel)0; val.stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask; val.procCoefficient = 1f; val.maxDistance = Range; val.smartCollision = true; val.damageType = DamageTypeCombo.op_Implicit((DamageType)128); val.Fire(); } } public override void OnExit() { ((EntityState)this).OnExit(); AkSoundEngine.PostEvent(Events.Play_mage_R_end, ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)instance)) { EntityState.Destroy((Object)(object)instance); } ((Component)((EntityState)this).GetModelTransform()).GetComponent<AimAnimator>().RemoveRequest(req); animator.SetBool("isShooting", 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; } } public class PolicyPistol : BaseSkillState { public float duration = 0.6f; public float damageCoeff = 3.6f; public override void OnEnter() { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Expected O, but got Unknown //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration /= ((BaseState)this).attackSpeedStat; AkSoundEngine.PostEvent(Events.Play_bandit2_R_fire, ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(PlayableBiden.Utils.Paths.GameObject.MuzzleflashBarrage.Load<GameObject>(), ((EntityState)this).gameObject, "MuzzlePistol", false); ((EntityState)this).PlayAnimation("Gesture, Override", "Shoot", "Generic.playbackRate", duration, 0f); if (((EntityState)this).isAuthority) { BulletAttack val = new BulletAttack(); val.damage = ((BaseState)this).damageStat * damageCoeff; val.falloffModel = (FalloffModel)0; Ray aimRay = ((EntityState)this).inputBank.GetAimRay(); val.aimVector = ((Ray)(ref aimRay)).direction; aimRay = ((EntityState)this).inputBank.GetAimRay(); val.origin = ((Ray)(ref aimRay)).origin; val.maxDistance = 160f; val.owner = ((EntityState)this).gameObject; val.procCoefficient = 1f; val.isCrit = ((BaseState)this).RollCrit(); val.muzzleName = "MuzzlePistol"; val.tracerEffectPrefab = PlayableBiden.Utils.Paths.GameObject.TracerCommandoBoost.Load<GameObject>(); val.hitEffectPrefab = PlayableBiden.Utils.Paths.GameObject.OmniImpactVFX.Load<GameObject>(); val.Fire(); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.SetAimTimer(0.2f); if (((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class ArizonaAirstrike : AimThrowableBase { public override void OnEnter() { base.maxDistance = 40f; base.arcVisualizerPrefab = PlayableBiden.Assets.GameObject.BasicThrowableVisualizer; base.endpointVisualizerPrefab = PlayableBiden.Assets.GameObject.HuntressArrowRainIndicator; base.endpointVisualizerRadiusScale = 5f; base.baseMinimumDuration = 0.15f; base.projectilePrefab = PlayableBiden.Assets.GameObject.ToolbotGrenadeLauncherProjectile; ((AimThrowableBase)this).OnEnter(); ((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f); ((AimThrowableBase)this).FireProjectile(); } public override void FixedUpdate() { ((AimThrowableBase)this).FixedUpdate(); if (((EntityState)this).fixedAge >= 1.4f / ((BaseState)this).attackSpeedStat) { ((EntityState)this).outer.SetNextStateToMain(); } } public override bool KeyIsDown() { return false; } public override void FireProjectile() { //IL_0037: 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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f); if (((EntityState)this).isAuthority) { Vector3 hitPoint = base.currentTrajectoryInfo.hitPoint; RaycastHit val = default(RaycastHit); hitPoint = ((!Physics.Raycast(hitPoint, Vector3.up, ref val, 4000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) ? (hitPoint + Vector3.up * 1000f) : (((RaycastHit)(ref val)).point - Vector3.up * 5f)); ((MonoBehaviour)((EntityState)this).characterBody).StartCoroutine(FireProjectiles(hitPoint)); } } public IEnumerator FireProjectiles(Vector3 origin) { //IL_000e: 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) FireProjectileInfo info = default(FireProjectileInfo); info.rotation = Quaternion.LookRotation(Vector3.down); info.crit = ((BaseState)this).RollCrit(); info.owner = ((EntityState)this).gameObject; ((FireProjectileInfo)(ref info)).speedOverride = 940f; info.useSpeedOverride = true; info.projectilePrefab = base.projectilePrefab; info.damage = ((BaseState)this).damageStat * 1.2f; for (int i = 0; i < 3; i++) { yield return (object)new WaitForSeconds(0.2f); info.position = origin + Random.onUnitSphere * 1f; ProjectileManager.instance.FireProjectile(info); } ((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)5; } } public class MinnesotaMortar : AimThrowableBase { public override void OnEnter() { base.maxDistance = 40f; base.arcVisualizerPrefab = PlayableBiden.Assets.GameObject.BasicThrowableVisualizer; base.endpointVisualizerPrefab = PlayableBiden.Assets.GameObject.HuntressArrowRainIndicator; base.endpointVisualizerRadiusScale = 5f; base.baseMinimumDuration = 0.15f; base.projectilePrefab = PlayableBiden.Assets.GameObject.ToolbotGrenadeLauncherProjectile; ((AimThrowableBase)this).OnEnter(); } public override void FireProjectile() { //IL_0037: 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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f); if (((EntityState)this).isAuthority) { Vector3 hitPoint = base.currentTrajectoryInfo.hitPoint; RaycastHit val = default(RaycastHit); hitPoint = ((!Physics.Raycast(hitPoint, Vector3.up, ref val, 4000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) ? (hitPoint + Vector3.up * 1000f) : (((RaycastHit)(ref val)).point - Vector3.up * 5f)); ((MonoBehaviour)((EntityState)this).characterBody).StartCoroutine(FireProjectiles(hitPoint)); } } public IEnumerator FireProjectiles(Vector3 origin) { //IL_000e: 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) FireProjectileInfo info = default(FireProjectileInfo); info.rotation = Quaternion.LookRotation(Vector3.down); info.crit = ((BaseState)this).RollCrit(); info.owner = ((EntityState)this).gameObject; ((FireProjectileInfo)(ref info)).speedOverride = 940f; info.useSpeedOverride = true; info.projectilePrefab = base.projectilePrefab; info.damage = ((BaseState)this).damageStat * 2.5f; for (int i = 0; i < 3; i++) { yield return (object)new WaitForSeconds(0.2f); info.position = origin + Random.onUnitSphere * 3f; ProjectileManager.instance.FireProjectile(info); } ((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)5; } } public class RhodeRoundhouse : CoolerBasicMeleeAttack { public override float BaseDuration => 0.7f; public override float DamageCoefficient => 9f; public override string HitboxName => "Punch"; public override GameObject HitEffectPrefab => null; public override float ProcCoefficient => 1f; public override float HitPauseDuration => 0.05f; public override GameObject SwingEffectPrefab => Main.bundle.LoadAsset<GameObject>("BidenSlash.prefab"); public override string MuzzleString => "MuzzleMelee"; public override string MechanimHitboxParameter => "Hitbox.active"; public override void AuthorityModifyOverlapAttack(OverlapAttack overlapAttack) { ((BasicMeleeAttack)this).AuthorityModifyOverlapAttack(overlapAttack); } public override void PlayAnimation() { ((EntityState)this).PlayAnimation("Fullbody, Override", "RoundKick", "Generic.playbackRate", ((BasicMeleeAttack)this).duration, 0f); } public override void BeginMeleeAttackEffect() { ((BasicMeleeAttack)this).BeginMeleeAttackEffect(); AkSoundEngine.PostEvent(Events.Play_item_use_meteor_impact, ((EntityState)this).gameObject); } } public class SenatePunch : CoolerBasicMeleeAttack { public override float BaseDuration => 0.7f; public override float DamageCoefficient => 5.6f; public override string HitboxName => "Punch"; public override GameObject HitEffectPrefab => null; public override float ProcCoefficient => 1f; public override float HitPauseDuration => 0.05f; public override GameObject SwingEffectPrefab => Main.bundle.LoadAsset<GameObject>("BidenSlash.prefab"); public override string MuzzleString => "MuzzleMelee"; public override string MechanimHitboxParameter => "Hitbox.active"; public override void AuthorityModifyOverlapAttack(OverlapAttack overlapAttack) { //IL_0010: 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) ((BasicMeleeAttack)this).AuthorityModifyOverlapAttack(overlapAttack); overlapAttack.forceVector = ((EntityState)this).characterDirection.forward * 5000f + Vector3.up * 2400f; } public override void PlayAnimation() { ((EntityState)this).PlayAnimation("Fullbody, Override", "Kick", "Generic.playbackRate", ((BasicMeleeAttack)this).duration, 0f); } public override void BeginMeleeAttackEffect() { AkSoundEngine.PostEvent(Events.Play_item_use_meteor_impact, ((EntityState)this).gameObject); } } public class TexasTakedown : BaseSkillState { public bool hasFired = false; public float duration = 2f; public Animator animator; public EliteTracker tracker; public override void OnEnter() { ((BaseState)this).OnEnter(); ((EntityState)this).PlayAnimation("Body", "Grapple", "Generic.playbackRate", duration, 0f); tracker = ((EntityState)this).GetComponent<EliteTracker>(); animator = ((EntityState)this).GetModelAnimator(); ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (animator.GetFloat("Hitbox.active") >= 0.5f && !hasFired) { Fire(); } if (((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); if (!hasFired) { Fire(); } ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon(); } public void Fire() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005b: 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_00ac: Unknown result type (might be due to invalid IL or missing references) hasFired = true; AkSoundEngine.PostEvent(Events.Play_item_proc_bounceChain, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)tracker.target)) { FireProjectileInfo val = default(FireProjectileInfo); val.position = ((EntityState)this).transform.position; val.rotation = Quaternion.identity; val.projectilePrefab = Main.Survivor.Projectiles[1]; val.owner = ((EntityState)this).gameObject; val.target = ((Component)tracker.target).gameObject; ProjectileManager.instance.FireProjectile(val); } } 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)5; } } public class BidenBlast : BaseSkillState { public float chargeDuration = 3f; public GameObject chargeInstance; private uint id; private Animator anim; private Transform target; public static GameObject chargeEffect => Main.bundle.LoadAsset<GameObject>("BidenBlastCharge.prefab"); private float scaleMult => ((EntityState)this).fixedAge / chargeDuration; public override void OnEnter() { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); chargeDuration /= ((BaseState)this).attackSpeedStat; ((EntityState)this).PlayAnimation("Body", "Blast", "Generic.playbackRate", chargeDuration, 0f); target = ((BaseState)this).FindModelChild("MuzzleMagic"); chargeInstance = Object.Instantiate<GameObject>(chargeEffect, target.position, Quaternion.identity); anim = ((EntityState)this).GetModelAnimator(); id = AkSoundEngine.PostEvent(Events.Play_mage_m2_charge, ((EntityState)this).gameObject); ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon(); } public override void FixedUpdate() { //IL_0034: 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_005b: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); ((EntityState)this).characterBody.SetAimTimer(0.2f); if (Object.op_Implicit((Object)(object)chargeInstance)) { chargeInstance.transform.localScale = Vector3.one * scaleMult; chargeInstance.transform.position = target.position; } if (((EntityState)this).fixedAge >= chargeDuration || anim.GetFloat("Hitbox.active") > 0.5f) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).OnExit(); AkSoundEngine.StopPlayingID(id); ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon(); if (Object.op_Implicit((Object)(object)chargeInstance)) { EntityState.Destroy((Object)(object)chargeInstance); } if (((EntityState)this).isAuthority) { FireProjectileInfo val = default(FireProjectileInfo); Ray aimRay = ((BaseState)this).GetAimRay(); val.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); val.position = ((Component)((BaseState)this).FindModelChild("MuzzleMagic")).transform.position; val.damage = ((BaseState)this).damageStat * 24f; val.force = 1000f; val.owner = ((EntityState)this).gameObject; val.crit = ((BaseState)this).RollCrit(); val.projectilePrefab = Main.Survivor.Projectiles[0]; ProjectileManager.instance.FireProjectile(val); } } } public class DroneStrike : BaseSkillState { private float dodgeSpeed = 10f; private float duration = 1f; private Vector3 vector; public override void OnEnter() { //IL_0048: 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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: 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_0071: 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_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); ((EntityState)this).PlayAnimation("Body", "Roll", "Generic.playbackRate", duration / 2f, 0f); ((MonoBehaviour)((EntityState)this).characterBody).StartCoroutine(Fire()); Vector3 val; if (!(((EntityState)this).characterMotor.moveDirection != Vector3.zero)) { Ray aimRay = ((EntityState)this).inputBank.GetAimRay(); val = ((Ray)(ref aimRay)).direction * -1f; } else { val = ((EntityState)this).characterMotor.moveDirection * -1f; } vector = val; vector = ((Vector3)(ref vector)).normalized; ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon(); } public IEnumerator Fire() { FireProjectileInfo info = default(FireProjectileInfo); info.position = GroundPosition(((EntityState)this).transform.position); info.crit = ((BaseState)this).RollCrit(); info.damage = 4f * ((BaseState)this).damageStat; info.projectilePrefab = PlayableBiden.Assets.GameObject.CaptainAirstrikeProjectile1; info.owner = ((EntityState)this).gameObject; ((FireProjectileInfo)(ref info)).speedOverride = 0f; for (int i = 0; i < 5; i++) { info.rotation = Quaternion.Euler(0f, Random.Range(0f, 360f), 0f); yield return (object)new WaitForSeconds(duration / 5f); ProjectileManager.instance.FireProjectile(info); } } public override void FixedUpdate() { //IL_000f: 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) ((EntityState)this).FixedUpdate(); ((EntityState)this).characterMotor.velocity = vector * dodgeSpeed; if (((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon(); } public Vector3 GroundPosition(Vector3 pos) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) RaycastHit val = default(RaycastHit); if (Physics.Raycast(pos + Vector3.up * 5f, Vector3.down, ref val, 400f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)1)) { return ((RaycastHit)(ref val)).point; } return pos; } 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)5; } } public class NerveGas : GenericProjectileBaseState { public override void OnEnter() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ThrowGrenade val = new ThrowGrenade(); base.effectPrefab = ((GenericProjectileBaseState)val).effectPrefab; base.projectilePrefab = Main.Survivor.Projectiles[2]; base.damageCoefficient = 1f; base.force = ((GenericProjectileBaseState)val).force; base.minSpread = 0f; base.maxSpread = 0f; base.baseDuration = ((GenericProjectileBaseState)val).baseDuration; base.recoilAmplitude = ((GenericProjectileBaseState)val).recoilAmplitude; base.attackSoundString = ((GenericProjectileBaseState)val).attackSoundString; base.projectilePitchBonus = ((GenericProjectileBaseState)val).projectilePitchBonus; base.baseDelayBeforeFiringProjectile = ((GenericProjectileBaseState)val).baseDelayBeforeFiringProjectile; base.targetMuzzle = "MuzzleGun"; base.bloom = ((GenericProjectileBaseState)val).bloom; ((GenericProjectileBaseState)this).OnEnter(); ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon(); } public override void PlayAnimation(float duration) { ((EntityState)this).PlayAnimation("Gesture, Override", "LobProjectile", "Generic.playbackRate", duration, 0f); } public override void OnExit() { ((GenericProjectileBaseState)this).OnExit(); ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class PipeBomb : GenericProjectileBaseState { public override void OnEnter() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ThrowGrenade val = new ThrowGrenade(); base.effectPrefab = ((GenericProjectileBaseState)val).effectPrefab; base.projectilePrefab = Main.PipebombProjectile; base.damageCoefficient = 12f; base.force = ((GenericProjectileBaseState)val).force; base.minSpread = 0f; base.maxSpread = 0f; base.baseDuration = ((GenericProjectileBaseState)val).baseDuration; base.recoilAmplitude = ((GenericProjectileBaseState)val).recoilAmplitude; base.attackSoundString = ((GenericProjectileBaseState)val).attackSoundString; base.projectilePitchBonus = ((GenericProjectileBaseState)val).projectilePitchBonus; base.baseDelayBeforeFiringProjectile = ((GenericProjectileBaseState)val).baseDelayBeforeFiringProjectile; base.targetMuzzle = "MuzzleGun"; base.bloom = ((GenericProjectileBaseState)val).bloom; ((GenericProjectileBaseState)this).OnEnter(); ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().DisableWeapon(); } public override void PlayAnimation(float duration) { ((EntityState)this).PlayAnimation("Gesture, Override", "LobProjectile", "Generic.playbackRate", duration, 0f); } public override void OnExit() { ((GenericProjectileBaseState)this).OnExit(); ((Component)((EntityState)this).GetModelTransform()).GetComponent<WeaponModelController>().EnableWeapon(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class WyomingWarp : AimThrowableBase { public override void OnEnter() { base.maxDistance = 40f; base.arcVisualizerPrefab = PlayableBiden.Utils.Paths.GameObject.BasicThrowableVisualizer.Load<GameObject>(); base.endpointVisualizerPrefab = PlayableBiden.Utils.Paths.GameObject.HuntressArrowRainIndicator.Load<GameObject>(); base.endpointVisualizerRadiusScale = 2f; base.baseMinimumDuration = 0.15f; base.projectilePrefab = PlayableBiden.Utils.Paths.GameObject.Fireball.Load<GameObject>(); AkSoundEngine.PostEvent(Events.Play_bandit2_shift_enter, ((EntityState)this).gameObject); ((AimThrowableBase)this).OnEnter(); ((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f); } 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)5; } public override void FireProjectile() { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).PlayAnimation("Gesture, Override", "Point", "Generic.playbackRate", 1f, 0f); if (((EntityState)this).isAuthority) { EffectManager.SimpleEffect(PlayableBiden.Utils.Paths.GameObject.Bandit2SmokeBomb.Load<GameObject>(), ((EntityState)this).transform.position, Quaternion.identity, true); TeleportHelper.TeleportBody(((EntityState)this).characterBody, base.currentTrajectoryInfo.hitPoint); EffectManager.SimpleEffect(PlayableBiden.Utils.Paths.GameObject.Bandit2SmokeBomb.Load<GameObject>(), ((EntityState)this).transform.position, Quaternion.identity, true); AkSoundEngine.PostEvent(Events.Play_bandit2_shift_exit, ((EntityState)this).gameObject); } } } [BepInPlugin("pseudopulse.PlayableBiden", "PlayableBiden", "1.0.0")] public class Main : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static IsAffordableDelegate <>9__15_0; public static PayCostDelegate <>9__15_1; internal bool <ModifyCatalog>b__15_0(CostTypeDef def, IsAffordableContext context) { //IL_0001: 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) //IL_0030: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)context.activator) && Object.op_Implicit((Object)(object)((Component)context.activator).GetComponent<DebtManager>())) { return true; } return Money_IsAffordable.Invoke(def, context); } internal void <ModifyCatalog>b__15_1(CostTypeDef def, PayCostContext context) { //IL_0001: 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) //IL_009c: 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_0032: 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) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)context.activator) && Object.op_Implicit((Object)(object)((Component)context.activator).GetComponent<DebtManager>())) { DebtManager component = ((Component)context.activator).GetComponent<DebtManager>(); if (Object.op_Implicit((Object)(object)context.activatorMaster) && context.cost > context.activatorMaster.money) { uint num = (uint)(context.cost - context.activatorMaster.money); component.CurrentDebt -= num; context.cost = (int)context.activatorMaster.money; } } Money_PayCost.Invoke(def, context); } } public const string PluginGUID = "pseudopulse.PlayableBiden"; public const string PluginAuthor = "pseudopulse"; public const string PluginName = "PlayableBiden"; public const string PluginVersion = "1.0.0"; public static AssetBundle bundle; public static ManualLogSource ModLogger; public static Survivor Survivor; private static BodyIndex _index = (BodyIndex)(-1); private static IsAffordableDelegate Money_IsAffordable; private static PayCostDelegate Money_PayCost; public static GameObject PipebombProjectile; public static BodyIndex index { get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_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_0026: Unknown result type (might be due to invalid IL or missing references) if ((int)_index == -1) { _index = BodyCatalog.FindBodyIndex("BidenBody"); } return _index; } set { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) _index = value; } } public void Awake() { //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Expected O, but got Unknown //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Expected O, but got Unknown //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) bundle = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("PlayableBiden.dll", "bidenbundle")); ModLogger = ((BaseUnityPlugin)this).Logger; Material[] array = bundle.LoadAllAssets<Material>(); foreach (Material val in array) { Material val2 = val; string name = ((Object)val.shader).name; if (1 == 0) { } Shader shader = (Shader)(name switch { "StubbedShader/fx/hgcloudremap" => PlayableBiden.Utils.Paths.Shader.HGCloudRemap.Load<Shader>(), "StubbedShader/deferred/hgstandard" => PlayableBiden.Utils.Paths.Shader.HGStandard.Load<Shader>(), "Hopoo Games/FX/Cloud Remap" => PlayableBiden.Assets.Shader.HGCloudRemap, _ => val.shader, }); if (1 == 0) { } val2.shader = shader; } Survivor = bundle.LoadAsset<Survivor>("Biden.asset"); Survivor.Body.GetComponent<CharacterBody>()._defaultCrosshairPrefab = PlayableBiden.Assets.GameObject.CommandoBody.GetComponent<CharacterBody>()._defaultCrosshairPrefab; Survivor.Initialize(); CharacterMaster.GiveMoney += new hook_GiveMoney(GiveMoney); CostTypeCatalog.Init += new hook_Init(ModifyCatalog); PipebombProjectile = PrefabAPI.InstantiateClone(PlayableBiden.Assets.GameObject.CommandoGrenadeProjectile, "PipeBombProjectile"); ProjectileImpactExplosion component = PipebombProjectile.GetComponent<ProjectileImpactExplosion>(); ((ProjectileExplosion)component).explosionEffect = PlayableBiden.Assets.GameObject.ExplosionDroneDeath; ((ProjectileExplosion)component).blastRadius = 20f; ((ProjectileExplosion)component).falloffModel = (FalloffModel)0; component.impactEffect = PlayableBiden.Assets.GameObject.ExplosionDroneDeath; ProjectileController component2 = PipebombProjectile.GetComponent<ProjectileController>(); component2.ghostPrefab = PlayableBiden.Assets.GameObject.CryoCanisterGhost; Collider component3 = PipebombProjectile.GetComponent<Collider>(); component3.material = PlayableBiden.Assets.PhysicMaterial.physmatBouncyButFriction; ProjectileDamage component4 = PipebombProjectile.GetComponent<ProjectileDamage>(); component4.damageType |= DamageTypeCombo.op_Implicit((DamageType)32); ContentAddition.AddProjectile(PipebombProjectile); } private void ModifyCatalog(orig_Init orig) { //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_0045: Expected O, but got Unknown //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown orig.Invoke(); CostTypeDef costTypeDef = CostTypeCatalog.GetCostTypeDef((CostTypeIndex)1); Money_IsAffordable = costTypeDef.isAffordable; Money_PayCost = costTypeDef.payCost; object obj = <>c.<>9__15_0; if (obj == null) { IsAffordableDelegate val = (CostTypeDef def, IsAffordableContext context) => (Object.op_Implicit((Object)(object)context.activator) && Object.op_Implicit((Object)(object)((Component)context.activator).GetComponent<DebtManager>())) || Money_IsAffordable.Invoke(def, context); <>c.<>9__15_0 = val; obj = (object)val; } costTypeDef.isAffordable = (IsAffordableDelegate)obj; object obj2 = <>c.<>9__15_1; if (obj2 == null) { PayCostDelegate val2 = delegate(CostTypeDef def, PayCostContext context) { //IL_0001: 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) //IL_009c: 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_0032: 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) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)context.activator) && Object.op_Implicit((Object)(object)((Component)context.activator).GetComponent<DebtManager>())) { DebtManager component = ((Component)context.activator).GetComponent<DebtManager>(); if (Object.op_Implicit((Object)(object)context.activatorMaster) && context.cost > context.activatorMaster.money) { uint num = (uint)(context.cost - context.activatorMaster.money); component.CurrentDebt -= num; context.cost = (int)context.activatorMaster.money; } } Money_PayCost.Invoke(def, context); }; <>c.<>9__15_1 = val2; obj2 = (object)val2; } costTypeDef.payCost = (PayCostDelegate)obj2; } private void GiveMoney(orig_GiveMoney orig, CharacterMaster self, uint amount) { if (Object.op_Implicit((Object)(object)self.bodyInstanceObject)) { DebtManager component = self.bodyInstanceObject.GetComponent<DebtManager>(); if (Object.op_Implicit((Object)(object)component) && component.CurrentDebt < 0f) { float num = (float)amount * component.IncomePenalty; amount -= (uint)num; component.CurrentDebt += num * component.IncomeEfficiency; if (component.CurrentDebt > 0f) { component.CurrentDebt = 0f; } } } orig.Invoke(self, amount); } } public class DebtManager : MonoBehaviour { public float IncomePenalty; public float IncomeEfficiency; [HideInInspector] public float CurrentDebt = 0f; public CharacterBody body; private MoneyText instance; private CharacterMaster master; public void FixedUpdate() { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)instance) && Object.op_Implicit((Object)(object)((IEnumerable<HUD>)HUD.instancesList).FirstOrDefault((Func<HUD, bool>)((HUD x) => Object.op_Implicit((Object)(object)x.targetBodyObject) && (Object)(object)x.targetBodyObject == (Object)(object)((Component)this).gameObject)))) { HUD val = ((IEnumerable<HUD>)HUD.instancesList).FirstOrDefault((Func<HUD, bool>)((HUD x) => Object.op_Implicit((Object)(object)x.targetBodyObject) && (Object)(object)x.targetBodyObject == (Object)(object)((Component)this).gameObject)); GameObject val2 = Object.Instantiate<GameObject>(((Component)val.moneyText).gameObject, ((Component)val.moneyText).transform.parent); instance = val2.GetComponent<MoneyText>(); ((Graphic)instance.targetText).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)15, byte.MaxValue)); ((Graphic)((Component)((Component)instance).transform.Find("DollarSign")).GetComponent<HGTextMeshProUGUI>()).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)15, byte.MaxValue)); ((Graphic)((Component)((Component)instance).transform.Find("BackgroundPanel")).GetComponent<RawImage>()).color = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)0, (byte)11, (byte)34)); ((Component)instance).transform.SetSiblingIndex(1); } if (!Object.op_Implicit((Object)(object)master)) { master = body.master; } if (Object.op_Implicit((Object)(object)instance)) { instance.targetValue = (int)CurrentDebt; } } } public abstract class CoolerBasicMeleeAttack : BasicMeleeAttack { public abstract float BaseDuration { get; } public abstract float DamageCoefficient { get; } public abstract string HitboxName { get; } public abstract GameObject HitEffectPrefab { get; } public abstract float ProcCoefficient { get; } public abstract float HitPauseDuration { get; } public abstract GameObject SwingEffectPrefab { get; } public abstract string MuzzleString { get; } public virtual string MechanimHitboxParameter { get; } public virtual bool ScaleHitPauseDurationWithAttackSpeed { get; } = true; public virtual float Knockback { get; } = 0f; public override void OnEnter() { base.baseDuration = BaseDuration; base.damageCoefficient = DamageCoefficient; base.hitBoxGroupName = HitboxName; base.hitEffectPrefab = HitEffectPrefab; base.procCoefficient = ProcCoefficient; base.hitPauseDuration = HitPauseDuration; base.swingEffectPrefab = SwingEffectPrefab; base.swingEffectMuzzleString = MuzzleString; base.pushAwayForce = Knockback; if (MechanimHitboxParameter != null) { base.mecanimHitboxActiveParameter = MechanimHitboxParameter; } base.scaleHitPauseDurationAndVelocityWithAttackSpeed = ScaleHitPauseDurationWithAttackSpeed; ((BasicMeleeAttack)this).OnEnter(); ((EntityState)this).GetModelAnimator().SetBool("noYawAim", true); ((EntityState)this).GetModelAnimator().SetBool("noPitchAim", true); } public override void OnExit() { ((BasicMeleeAttack)this).OnExit(); ((EntityState)this).GetModelAnimator().SetBool("noYawAim", false); ((EntityState)this).GetModelAnimator().SetBool("noPitchAim", false); } } [RequireComponent(typeof(InputBankTest))] [RequireComponent(typeof(CharacterBody))] public abstract class Tracker : MonoBehaviour { public Transform target; public Indicator indicator; public GameObject targetingIndicatorPrefab; private float stopwatch = 0f; public float searchDelay = 0.4f; public float maxSearchAngle = 40f; public float maxSearchDistance = 60f; public bool isActive = true; public InputBankTest inputBank; public CharacterBody body; public Func<bool> isActiveCallback = DefaultIsActiveCallback; public float minDot => Mathf.Cos(Mathf.Clamp(maxSearchAngle, 0f, 180f) * (MathF.PI / 180f)); private static bool DefaultIsActiveCallback() { return true; } public virtual void Start() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown indicator = new Indicator(((Component)this).gameObject, targetingIndicatorPrefab); body = ((Component)this).GetComponent<CharacterBody>(); inputBank = ((Component)this).GetComponent<InputBankTest>(); } public virtual void FixedUpdate() { if (indicator != null && !DefaultIsActiveCallback()) { indicator.active = false; return; } if (indicator != null && !Object.op_Implicit((Object)(object)target)) { indicator.active = false; } if (indicator != null && Object.op_Implicit((Object)(object)target)) { indicator.active = true; } stopwatch += Time.fixedDeltaTime; if (stopwatch >= searchDelay) { stopwatch = 0f; target = SearchForTarget(); if (Object.op_Implicit((Object)(object)target)) { indicator.targetTransform = target; } } } public abstract Transform SearchForTarget(); } public class HurtboxTracker : Tracker { public enum TargetType { Enemy, Friendly, All } public TeamIndex userIndex; public TargetType targetType; public Func<CharacterBody, bool> validTargetCallback = (CharacterBody x) => true; public override void Start() { //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) base.Start(); userIndex = body.teamComponent.teamIndex; } public override Transform SearchForTarget() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //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_008a: 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_009c: 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_00a1: Unknown result type (might be due to invalid IL or missing references) BullseyeSearch val = new BullseyeSearch(); Ray aimRay = inputBank.GetAimRay(); val.searchDirection = ((Ray)(ref aimRay)).direction; val.searchOrigin = ((Component)this).transform.position; val.maxDistanceFilter = maxSearchDistance; val.maxAngleFilter = maxSearchAngle; TeamMask teamMaskFilter = TeamMask.all; switch (targetType) { case TargetType.Enemy: ((TeamMask)(ref teamMaskFilter)).RemoveTeam(userIndex); break; case TargetType.Friendly: teamMaskFilter = TeamMask.none; ((TeamMask)(ref teamMaskFilter)).AddTeam(userIndex); break; case TargetType.All: teamMaskFilter = TeamMask.all; break; } val.teamMaskFilter = teamMaskFilter; val.RefreshCandidates(); val.FilterOutGameObject(((Component)this).gameObject); IEnumerable<HurtBox> source = from x in val.GetResults() where Object.op_Implicit((Object)(object)x.healthComponent) && validTargetCallback(x.healthComponent.body) select x; HurtBox? obj = source.FirstOrDefault(); return ((obj != null) ? ((Component)obj).transform : null) ?? null; } } public class ComponentTracker<T> : Tracker where T : Component { public Func<T, bool> validFilter = DefaultFilter; private static bool DefaultFilter(T t) { return true; } public override Transform SearchForTarget() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0082: 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_009b: Unknown result type (might be due to invalid IL or missing references) T[] array = Object.FindObjectsOfType<T>(); foreach (T val in array) { if (validFilter(val) && !(Vector3.Distance(((Component)this).transform.position, ((Component)val).transform.position) > maxSearchDistance)) { Ray aimRay = inputBank.GetAimRay(); Vector3 direction = ((Ray)(ref aimRay)).direction; Vector3 val2 = ((Component)val).transform.position - ((Component)this).transform.position; float num = Vector3.Dot(direction, ((Vector3)(ref val2)).normalized); if (!(num < base.minDot)) { return ((Component)val).transform; } } } return null; } } } namespace PlayableBiden.Assets { public static class Texture2D { public static Texture2D texAttackSpeedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texAttackSpeedIcon.png").WaitForCompletion(); public static Texture2D texAutomationActivationIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texAutomationActivationIcon.png").WaitForCompletion(); public static Texture2D texAutomationActivationIconNew => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texAutomationActivationIcon_New.png").WaitForCompletion(); public static Texture2D texBandit2ClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBandit2ClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texBandit2ConsecutiveResetIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBandit2ConsecutiveResetIcon.png").WaitForCompletion(); public static Texture2D texBandit2RevolverFinaleIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBandit2RevolverFinaleIcon.png").WaitForCompletion(); public static Texture2D texBandit2StackSuperBleedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBandit2StackSuperBleedIcon.png").WaitForCompletion(); public static Texture2D texBeatArenaIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBeatArenaIcon.png").WaitForCompletion(); public static Texture2D texBurnToDeathIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texBurnToDeathIcon.png").WaitForCompletion(); public static Texture2D texCaptainBuyMegaDroneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCaptainBuyMegaDroneIcon.png").WaitForCompletion(); public static Texture2D texCaptainClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCaptainClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texCaptainSupplyDropFinaleIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCaptainSupplyDropFinaleIcon.png").WaitForCompletion(); public static Texture2D texCaptainVisitSeveralStagesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCaptainVisitSeveralStagesIcon.png").WaitForCompletion(); public static Texture2D texCarryLunarItemsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCarryLunarItemsIcon.png").WaitForCompletion(); public static Texture2D texChargeTeleporterWhileNearDeathIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texChargeTeleporterWhileNearDeathIcon.png").WaitForCompletion(); public static Texture2D texCleanupDutyIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCleanupDutyIcon.png").WaitForCompletion(); public static Texture2D texCommandoClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCommandoClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texCommandoFastFirstStageClearIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCommandoFastFirstStageClearIcon.png").WaitForCompletion(); public static Texture2D texCommandoKillOverloadingWormIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCommandoKillOverloadingWormIcon.png").WaitForCompletion(); public static Texture2D texCommandoNonLunarEnduranceIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCommandoNonLunarEnduranceIcon.png").WaitForCompletion(); public static Texture2D texComplete20StagesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texComplete20StagesIcon.png").WaitForCompletion(); public static Texture2D texComplete30StagesCareerIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texComplete30StagesCareerIcon.png").WaitForCompletion(); public static Texture2D texCompleteMainEndingHardIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteMainEndingHardIcon.png").WaitForCompletion(); public static Texture2D texCompleteMainEndingIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteMainEndingIcon.png").WaitForCompletion(); public static Texture2D texCompleteMultiBossShrineIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteMultiBossShrineIcon.png").WaitForCompletion(); public static Texture2D texCompletePrismaticTrialIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompletePrismaticTrialIcon.png").WaitForCompletion(); public static Texture2D texCompleteTeleporterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteTeleporterIcon.png").WaitForCompletion(); public static Texture2D texCompleteTeleporterWithoutInjuryIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteTeleporterWithoutInjuryIcon.png").WaitForCompletion(); public static Texture2D texCompleteThreeStagesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteThreeStagesIcon.png").WaitForCompletion(); public static Texture2D texCompleteThreeStagesIconOLD => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteThreeStagesIconOLD.png").WaitForCompletion(); public static Texture2D texCompleteThreeStagesWithoutHealingIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteThreeStagesWithoutHealingIcon.png").WaitForCompletion(); public static Texture2D texCompleteUnknownEndingIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCompleteUnknownEndingIcon.png").WaitForCompletion(); public static Texture2D texCrocoClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCrocoClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texCrocoKillScavengerIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCrocoKillScavengerIcon.png").WaitForCompletion(); public static Texture2D texCrocoKillWeakEnemiesMilestoneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCrocoKillWeakEnemiesMilestoneIcon.png").WaitForCompletion(); public static Texture2D texCrocoTotalInfectionsMilestoneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texCrocoTotalInfectionsMilestoneIcon.png").WaitForCompletion(); public static Texture2D texDefeatSuperRoboBallBossIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDefeatSuperRoboBallBossIcon.png").WaitForCompletion(); public static Texture2D texDie20TimesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDie20TimesIcon.png").WaitForCompletion(); public static Texture2D texDie5TimesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDie5TimesIcon.png").WaitForCompletion(); public static Texture2D texDiscover10UniqueTier1Icon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDiscover10UniqueTier1Icon.png").WaitForCompletion(); public static Texture2D texDiscover5EquipmentIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texDiscover5EquipmentIcon.png").WaitForCompletion(); public static Texture2D texEngiArmyIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texEngiArmyIcon.png").WaitForCompletion(); public static Texture2D texEngiClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texEngiClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texEngiClearTeleporterWithZeroMonstersIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texEngiClearTeleporterWithZeroMonstersIcon.png").WaitForCompletion(); public static Texture2D texEngiKillBossQuickIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texEngiKillBossQuickIcon.png").WaitForCompletion(); public static Texture2D texFailShrineChanceIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFailShrineChanceIcon.png").WaitForCompletion(); public static Texture2D texFindDevilAltarIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFindDevilAltarIcon.png").WaitForCompletion(); public static Texture2D texFindTimedChestIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFindTimedChestIcon.png").WaitForCompletion(); public static Texture2D texFindUniqueNewtStatuesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFindUniqueNewtStatuesIcon.png").WaitForCompletion(); public static Texture2D texFreeMageIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texFreeMageIcon.png").WaitForCompletion(); public static Texture2D texHardEliteBossKillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHardEliteBossKillIcon.png").WaitForCompletion(); public static Texture2D texHardHitterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHardHitterIcon.png").WaitForCompletion(); public static Texture2D texHuntressAllGlaiveBouncesKillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressAllGlaiveBouncesKillIcon.png").WaitForCompletion(); public static Texture2D texHuntressAttackSpeedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressAttackSpeedIcon.png").WaitForCompletion(); public static Texture2D texHuntressClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texHuntressCollectCrowbarsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressCollectCrowbarsIcon.png").WaitForCompletion(); public static Texture2D texHuntressMaintainFullHealthOnFrozenWallIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texHuntressMaintainFullHealthOnFrozenWallIcon.png").WaitForCompletion(); public static Texture2D texKillBossQuantityInRunIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillBossQuantityInRunIcon.png").WaitForCompletion(); public static Texture2D texKillBossQuickIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillBossQuickIcon.png").WaitForCompletion(); public static Texture2D texKillElementalLemuriansIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillElementalLemuriansIcon.png").WaitForCompletion(); public static Texture2D texKillEliteMonsterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillEliteMonsterIcon.png").WaitForCompletion(); public static Texture2D texKillElitesMilestoneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillElitesMilestoneIcon.png").WaitForCompletion(); public static Texture2D texKillGoldTitanInOneCycleIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillGoldTitanInOneCycleIcon.png").WaitForCompletion(); public static Texture2D texKillTotalEnemiesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texKillTotalEnemiesIcon.png").WaitForCompletion(); public static Texture2D texLoaderBigSlamIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderBigSlamIcon.png").WaitForCompletion(); public static Texture2D texLoaderClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texLoaderKillLoadersIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderKillLoadersIcon.png").WaitForCompletion(); public static Texture2D texLoaderSpeedRunIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderSpeedRunIcon.png").WaitForCompletion(); public static Texture2D texLoaderThatsWeirdIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoaderThatsWeirdIcon.png").WaitForCompletion(); public static Texture2D texLogCollectorIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLogCollectorIcon.png").WaitForCompletion(); public static Texture2D texLoopOnceIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texLoopOnceIcon.png").WaitForCompletion(); public static Texture2D texMageAirborneMultiKillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageAirborneMultiKillIcon.png").WaitForCompletion(); public static Texture2D texMageClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texMageFastBossIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageFastBossIcon.png").WaitForCompletion(); public static Texture2D texMageMultiExecuteIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageMultiExecuteIcon.png").WaitForCompletion(); public static Texture2D texMageMultiKillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMageMultiKillIcon.png").WaitForCompletion(); public static Texture2D texMajorMultikillIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMajorMultikillIcon.png").WaitForCompletion(); public static Texture2D texMaxHealingShrineIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMaxHealingShrineIcon.png").WaitForCompletion(); public static Texture2D texMercClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMercClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texMercCompleteTrialWithFullHealthIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMercCompleteTrialWithFullHealthIcon.png").WaitForCompletion(); public static Texture2D texMercDontTouchGroundIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMercDontTouchGroundIcon.png").WaitForCompletion(); public static Texture2D texMercXSkillsInYSecondsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMercXSkillsInYSecondsIcon.png").WaitForCompletion(); public static Texture2D texMoveSpeedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMoveSpeedIcon.png").WaitForCompletion(); public static Texture2D texMultiCombatShrineIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texMultiCombatShrineIcon.png").WaitForCompletion(); public static Texture2D texNeverBackDownIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texNeverBackDownIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactBombIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactBombIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactCommandIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactCommandIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactEliteOnlyIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactEliteOnlyIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactEnigmaIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactEnigmaIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactFriendlyFireIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactFriendlyFireIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactGlassIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactGlassIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactMixEnemyIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactMixEnemyIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactMonsterTeamGainsItemsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactMonsterTeamGainsItemsIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactRandomSurvivorOnRespawnIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactRandomSurvivorOnRespawnIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactSacrificeIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactSacrificeIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactShadowCloneIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactShadowCloneIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactSingleMonsterTypeIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactSingleMonsterTypeIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactSwarmsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactSwarmsIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactTeamDeathIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactTeamDeathIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactWeakAssKneesIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactWeakAssKneesIcon.png").WaitForCompletion(); public static Texture2D texObtainArtifactWispOnDeathIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texObtainArtifactWispOnDeathIcon.png").WaitForCompletion(); public static Texture2D texPlaceholderAchievement => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texPlaceholderAchievement.png").WaitForCompletion(); public static Texture2D texRepeatedlyDuplicateItemsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texRepeatedlyDuplicateItemsIcon.png").WaitForCompletion(); public static Texture2D texRepeatFirstTeleporterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texRepeatFirstTeleporterIcon.png").WaitForCompletion(); public static Texture2D texRescueTreebotIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texRescueTreebotIcon.png").WaitForCompletion(); public static Texture2D texStayAlive1Icon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texStayAlive1Icon.png").WaitForCompletion(); public static Texture2D texSuicideHermitCrabsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texSuicideHermitCrabsIcon.png").WaitForCompletion(); public static Texture2D texToolbotBeatArenaLaterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texToolbotBeatArenaLaterIcon.png").WaitForCompletion(); public static Texture2D texToolbotClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texToolbotClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texToolbotGuardTeleporterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texToolbotGuardTeleporterIcon.png").WaitForCompletion(); public static Texture2D texToolbotKillImpBossWithBfgIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texToolbotKillImpBossWithBfgIcon.png").WaitForCompletion(); public static Texture2D texTotalDronesRepairedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTotalDronesRepairedIcon.png").WaitForCompletion(); public static Texture2D texTotalMoneyCollectedIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTotalMoneyCollectedIcon.png").WaitForCompletion(); public static Texture2D texTreebotBigHealIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTreebotBigHealIcon.png").WaitForCompletion(); public static Texture2D texTreebotClearGameMonsoonIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTreebotClearGameMonsoonIcon.png").WaitForCompletion(); public static Texture2D texTreebotDunkClayBossIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTreebotDunkClayBossIcon.png").WaitForCompletion(); public static Texture2D texTreebotLowHealthTeleporterIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texTreebotLowHealthTeleporterIcon.png").WaitForCompletion(); public static Texture2D texUseThreePortalsIcon => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Achievements/texUseThreePortalsIcon.png").WaitForCompletion(); public static Texture2D texArtifactCompoundCircleMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundCircleMask.png").WaitForCompletion(); public static Texture2D texArtifactCompoundCircleNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundCircleNormal.png").WaitForCompletion(); public static Texture2D texArtifactCompoundDiamondMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundDiamondMask.png").WaitForCompletion(); public static Texture2D texArtifactCompoundDiamondNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundDiamondNormal.png").WaitForCompletion(); public static Texture2D texArtifactCompoundFrameMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundFrameMask.png").WaitForCompletion(); public static Texture2D texArtifactCompoundFrameNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundFrameNormal.png").WaitForCompletion(); public static Texture2D texArtifactCompoundScavScarMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundScavScarMask.png").WaitForCompletion(); public static Texture2D texArtifactCompoundScavScarNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundScavScarNormal.png").WaitForCompletion(); public static Texture2D texArtifactCompoundSquareMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundSquareMask.png").WaitForCompletion(); public static Texture2D texArtifactCompoundSquareNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundSquareNormal.png").WaitForCompletion(); public static Texture2D texArtifactCompoundTriangleMask => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundTriangleMask.png").WaitForCompletion(); public static Texture2D texArtifactCompoundTriangleNormal => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/ArtifactCompounds/texArtifactCompoundTriangleNormal.png").WaitForCompletion(); public static Texture2D texArtifactBombDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Bomb/texArtifactBombDisabled.png").WaitForCompletion(); public static Texture2D texArtifactBombEnabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Bomb/texArtifactBombEnabled.png").WaitForCompletion(); public static Texture2D texArtifactCommandDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Command/texArtifactCommandDisabled.png").WaitForCompletion(); public static Texture2D texArtifactCommandEnabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Command/texArtifactCommandEnabled.png").WaitForCompletion(); public static Texture2D texArtifactEliteOnlyDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/EliteOnly/texArtifactEliteOnlyDisabled.png").WaitForCompletion(); public static Texture2D texArtifactEliteOnlyEnabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/EliteOnly/texArtifactEliteOnlyEnabled.png").WaitForCompletion(); public static Texture2D texArtifactRandomEquipmentDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Enigma/texArtifactRandomEquipmentDisabled.png").WaitForCompletion(); public static Texture2D texArtifactRandomEquipmentEnabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Enigma/texArtifactRandomEquipmentEnabled.png").WaitForCompletion(); public static Texture2D texArtifactFriendlyFireDisabled => Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/FriendlyFire/texArtifactFriendlyFireDisabled.png").WaitForCompletion(); public static Texture2D texArtifactFriendlyFireEnabled => A