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 FullRobotRex v1.0.2
RobotRex.dll
Decompiled 10 months 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 HG; using HG.Reflection; using KinematicCharacterController; using Microsoft.CodeAnalysis; using On.RoR2; using R2API; using R2API.Networking; using R2API.Networking.Interfaces; using Rewired.ComponentControls.Effects; using RoR2; using RoR2.Audio; using RoR2.EntitlementManagement; using RoR2.ExpansionManagement; using RoR2.Navigation; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using RobotRex.Skills; using RobotRex.States; using RobotRex.Utils; using RobotRex.Utils.Assets; using RobotRex.Utils.Components; using Survariants; using TMPro; using UnityEngine; using UnityEngine.AI; using UnityEngine.AddressableAssets; using UnityEngine.Audio; using UnityEngine.Networking; using UnityEngine.Rendering; [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("RobotRex")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("RobotRex")] [assembly: AssemblyTitle("RobotRex")] [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 RobotRex { [BepInPlugin("pseudopulse.RobotRex", "RobotRex", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class RobotRex : BaseUnityPlugin { public const string PluginGUID = "pseudopulse.RobotRex"; public const string PluginAuthor = "pseudopulse"; public const string PluginName = "RobotRex"; public const string PluginVersion = "1.0.0"; public static ManualLogSource ModLogger; public static AssetBundle Assets; public void Awake() { ModLogger = ((BaseUnityPlugin)this).Logger; Assets = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("RobotRex.dll", "robundle")); SwapAllShaders(Assets); ScanTypes(delegate(SkillBase x) { x.Init(); }); ScanTypes(delegate(SurvivorBase x) { x.Init(); }); } public static T Load<T>(string path) where T : Object { return Assets.LoadAsset<T>(path); } internal static void ScanTypes<T>(Action<T> action) { IEnumerable<Type> enumerable = from x in Assembly.GetExecutingAssembly().GetTypes() where !x.IsAbstract && x.IsSubclassOf(typeof(T)) select x; foreach (Type item in enumerable) { T obj = (T)Activator.CreateInstance(item); action(obj); } } public void SwapAllShaders(AssetBundle bundle) { Material[] array = bundle.LoadAllAssets<Material>(); Material[] array2 = array; foreach (Material val in array2) { switch (((Object)val.shader).name) { case "Hopoo Games/FX/Cloud Remap": val.shader = Shader.HGCloudRemap; break; case "Stubbed Hopoo Games/Deferred/Standard": val.shader = Resources.Load<Shader>("shaders/deferred/hgstandard"); break; case "StubbedShader/deferred/hgstandard": val.shader = Shader.HGStandard; break; case "StubbedShader/fx/hgintersectioncloudremap": val.shader = Resources.Load<Shader>("shaders/fx/hgintersectioncloudremap"); break; case "Stubbed Hopoo Games/Deferred/Snow Topped": val.shader = Resources.Load<Shader>("shaders/deferred/hgsnowtopped"); break; case "Stubbed Hopoo Games/FX/Cloud Remap": val.shader = Resources.Load<Shader>("shaders/fx/hgcloudremap"); break; case "Stubbed Hopoo Games/FX/Cloud Intersection Remap": val.shader = Resources.Load<Shader>("shaders/fx/hgintersectioncloudremap"); break; case "Stubbed Hopoo Games/FX/Opaque Cloud Remap": val.shader = Resources.Load<Shader>("shaders/fx/hgopaquecloudremap"); break; case "Stubbed Hopoo Games/FX/Distortion": val.shader = Resources.Load<Shader>("shaders/fx/hgdistortion"); break; case "Stubbed Hopoo Games/FX/Solid Parallax": val.shader = Resources.Load<Shader>("shaders/fx/hgsolidparallax"); break; case "Stubbed Hopoo Games/Environment/Distant Water": val.shader = Resources.Load<Shader>("shaders/environment/hgdistantwater"); break; case "StubbedRoR2/Base/Shaders/HGStandard": val.shader = LegacyShaderAPI.Find("Hopoo Games/Deferred/Standard"); break; case "StubbedRoR2/Base/Shaders/HGCloudRemap": val.shader = Shader.HGCloudRemap; break; case "StubbedRoR2/Base/Shaders/HGIntersectionCloudRemap": val.shader = LegacyShaderAPI.Find("Hopoo Games/FX/Cloud Intersection Remap"); break; } } } } public class RRAnimHandler : MonoBehaviour { public Animator Turret; private Animator us; public void Start() { us = ((Component)this).GetComponent<Animator>(); } public void Update() { us.SetBool("isSprinting", false); Turret.SetFloat("aimPitchCycle", us.GetFloat("aimPitchCycle") * 0.35f); } } public class RRBeeUpdater : MonoBehaviour { public void Start() { ProjectileImpactExplosion component = ((Component)this).GetComponent<ProjectileImpactExplosion>(); ProjectileController component2 = ((Component)this).GetComponent<ProjectileController>(); if (!Object.op_Implicit((Object)(object)component2.owner)) { return; } CharacterBody component3 = component2.owner.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component3) && Object.op_Implicit((Object)(object)component3.master)) { RRDroneStats component4 = ((Component)component3.master).GetComponent<RRDroneStats>(); if (Object.op_Implicit((Object)(object)component4)) { ((ProjectileExplosion)component).childrenCount = ((ProjectileExplosion)component).childrenCount + component4.BonusMissiles; } } } } public class RRDroneStats : MonoBehaviour { public int BonusBullets = 0; public float BonusChaingunSpeed = 0f; public int BonusMissiles = 0; public float BonusRegen = 0f; public float BonusHealth = 0f; public int BonusArmor = 0; public float BonusIncinerationDamage = 0f; public float BonusScale = 0f; } public class RRMissileTracker : HurtboxTracker { public override void Start() { //IL_002b: Unknown result type (might be due to invalid IL or missing references) targetingIndicatorPrefab = Survivor.TargetPainter; maxSearchAngle = 45f; maxSearchDistance = 120f; targetType = TargetType.Enemy; userIndex = (TeamIndex)1; base.Start(); } } public class Survivor : SurvivorBase<Survivor> { public static GameObject LaserSignal; public static GameObject OrbitalBeam; public static GameObject AcidProjectile; public static GameObject PollinateProjectile; public static GameObject PollinateBeeMissile; public static LazyIndex RobotRex = new LazyIndex("RobotRexBody"); public static GameObject TargetPainter; public static Dictionary<string, Action<RRDroneStats>> DroneMap = new Dictionary<string, Action<RRDroneStats>> { { "Drone1Master", delegate(RRDroneStats x) { x.BonusChaingunSpeed += 0.25f; x.BonusArmor += 2; x.BonusHealth += 0.05f; x.BonusScale += 0.05f; } }, { "Turret1Master", delegate(RRDroneStats x) { x.BonusBullets += 10; x.BonusArmor += 5; x.BonusHealth += 0.05f; x.BonusScale += 0.15f; } }, { "Drone2Master", delegate(RRDroneStats x) { x.BonusRegen += 0.1f; x.BonusArmor += 2; x.BonusHealth += 0.1f; x.BonusScale += 0.05f; } }, { "DroneMissileMaster", delegate(RRDroneStats x) { x.BonusMissiles += 2; x.BonusArmor += 5; x.BonusHealth += 0.05f; x.BonusScale += 0.1f; } }, { "EmergencyDroneMaster", delegate(RRDroneStats x) { x.BonusRegen += 0.25f; x.BonusArmor += 10; x.BonusHealth += 0.2f; x.BonusScale += 0.1f; } }, { "FlameDroneMaster", delegate(RRDroneStats x) { x.BonusIncinerationDamage += 0.25f; x.BonusArmor += 10; x.BonusHealth += 0.05f; x.BonusScale += 0.15f; } }, { "MegaDroneMaster", delegate(RRDroneStats x) { x.BonusArmor += 15; x.BonusHealth += 0.2f; x.BonusChaingunSpeed += 0.25f; x.BonusBullets += 25; x.BonusMissiles += 6; x.BonusIncinerationDamage += 0.25f; x.BonusRegen += 0.2f; x.BonusScale += 0.45f; } } }; public override string Name => "REX?"; public override string Description => "Having left the plant behind, REX? salvages the parts it can find to build its defenses and perform repairs.\n\n< ! > DIRECTIVE: Suppress can struggle to output sustained damage with its limited ammunition. Tinker with Gunner Turrets to increase it's capacity.\n\n< ! > When under threat, DIRECTIVE: Intercept can temporarily neutralize a focused target. Salvaging Missile Drones will add more missiles to the volley.\n\n< ! > DIRECTIVE: Pursuit provides great mobility and shreds a wide area, but has poor air control.\n\n< ! > DIRECTIVE: Incinerate is able to dish out incredible area of effect damage from long distances. Decommissioning Incinerator Drones will boost its power."; public override string Subtitle => "Aimless Construct"; public override string Outro => "...and so it left, buried behind amalgam."; public override string Failure => "...and so it vanished, having never been complete."; public override void LoadAssets() { //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Expected O, but got Unknown //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Expected O, but got Unknown //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Expected O, but got Unknown //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02e8: Unknown result type (might be due to invalid IL or missing references) //IL_038e: Unknown result type (might be due to invalid IL or missing references) //IL_0395: Expected O, but got Unknown //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: Unknown result type (might be due to invalid IL or missing references) Body = global::RobotRex.RobotRex.Load<GameObject>("RobotRexBody.prefab"); Master = PrefabAPI.InstantiateClone(GameObject.TreebotMonsterMaster, "RobotRexMaster"); Body.GetComponentInChildren<Animator>().runtimeAnimatorController = RuntimeAnimatorController.animTreebot; global::RobotRex.RobotRex.Load<GameObject>("DisplayRobotRex.prefab").GetComponentInChildren<Animator>().runtimeAnimatorController = RuntimeAnimatorController.animTreebotDisplay; SurvivorDef = global::RobotRex.RobotRex.Load<SurvivorDef>("sdRobotRex.asset"); Body.GetComponent<CharacterBody>()._defaultCrosshairPrefab = GameObject.TreebotCrosshair; CharacterMaster component = Master.GetComponent<CharacterMaster>(); component.bodyPrefab = Body; SkillLocator component2 = Body.GetComponent<SkillLocator>(); component2.passiveSkill.skillNameToken = "ROBOREX_PASSIVE_NAME"; component2.passiveSkill.skillDescriptionToken = "ROBOREX_PASSIVE_DESC"; "ROBOREX_PASSIVE_NAME".Add("Field Modification"); "ROBOREX_PASSIVE_DESC".Add("Repaired <style=cIsUtility>drones</style> are <style=cIsUtility>merged into you</style> to improve stats and weaponry."); ReplaceSkills(component2.primary, SkillBase<global::RobotRex.Skills.Suppress>.instance.skillDef); ReplaceSkills(component2.secondary, SkillBase<global::RobotRex.Skills.Intercept>.instance.skillDef); ReplaceSkills(component2.utility, SkillBase<Pursuit>.instance.skillDef); ReplaceSkills(component2.special, SkillBase<global::RobotRex.Skills.Incinerate>.instance.skillDef); ChildLocator componentInChildren = Body.GetComponentInChildren<ChildLocator>(); Transform val = componentInChildren.FindChild("TurretHull"); ((Component)val).GetComponent<Animator>().runtimeAnimatorController = RuntimeAnimatorController.animTurret1; ((Component)componentInChildren).gameObject.AddComponent<RRAnimHandler>().Turret = ((Component)val).GetComponent<Animator>(); Body.GetComponent<KinematicCharacterMotor>().playerCharacter = true; ContentAddition.AddNetworkedObject(Body); PrefabAPI.RegisterNetworkPrefab(Body); Body.GetComponent<CameraTargetParams>().cameraParams = CharacterCameraParams.ccpTreebot; Body.AddComponent<RRMissileTracker>(); LaserSignal = global::RobotRex.RobotRex.Load<GameObject>("LaserSignal.prefab"); OrbitalBeam = global::RobotRex.RobotRex.Load<GameObject>("OrbitalLaser.prefab"); DetachLineRendererAndFade detachLineRendererAndFade = LaserSignal.AddComponent<DetachLineRendererAndFade>(); DetachLineRendererAndFade detachLineRendererAndFade2 = OrbitalBeam.AddComponent<DetachLineRendererAndFade>(); detachLineRendererAndFade.line = LaserSignal.GetComponentInChildren<LineRenderer>(); detachLineRendererAndFade.decayTime = 0.4f; detachLineRendererAndFade2.line = OrbitalBeam.GetComponentInChildren<LineRenderer>(); detachLineRendererAndFade2.decayTime = 0.4f; CharacterBody.Start += new hook_Start(OnBodyStart); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(HandleDroneStats); SummonMasterBehavior.OpenSummon += new hook_OpenSummon(OpenSummon); TargetPainter = PrefabAPI.InstantiateClone(GameObject.EngiMissileTrackingIndicator, "RRTargetPainter"); SpriteRenderer val2 = TargetPainter.FindComponent<SpriteRenderer>("Base Core"); val2.color = Color.red; val2.sprite = Texture2D.texCaptainCrosshairInner.MakeSprite(); ((Component)val2).transform.localScale = new Vector3(0.01f, 0.01f, 0.01f); PollinateProjectile = global::RobotRex.RobotRex.Load<GameObject>("PollinateProjectile.prefab"); PollinateProjectile.gameObject.layer = LayerIndex.projectile.intVal; ((ProjectileExplosion)PollinateProjectile.GetComponent<ProjectileImpactExplosion>()).explosionEffect = GameObject.CryoCanisterExplosionPrimary; PollinateProjectile.AddComponent<RRBeeUpdater>(); PollinateBeeMissile = global::RobotRex.RobotRex.Load<GameObject>("PollinateMissile.prefab"); PollinateBeeMissile.gameObject.layer = LayerIndex.projectile.intVal; PollinateBeeMissile.GetComponent<ProjectileSingleTargetImpact>().impactEffect = GameObject.ExplosionDroneDeath; ContentAddition.AddProjectile(PollinateProjectile); ContentAddition.AddProjectile(PollinateBeeMissile); SurvivorVariantDef val3 = new SurvivorVariantDef(); val3.Color = Body.GetComponent<CharacterBody>().bodyColor; val3.DisplayName = "REX?"; val3.TargetSurvivor = global::RobotRex.Utils.Assets.SurvivorDef.Treebot; val3.VariantSurvivor = SurvivorDef; val3.Description = "Aimless Construct"; SurvivorDef.hidden = true; SurvivorVariantCatalog.AddSurvivorVariant(val3); } private void OpenSummon(orig_OpenSummon orig, SummonMasterBehavior self, Interactor activator) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)activator) && Object.op_Implicit((Object)(object)((Component)activator).GetComponent<CharacterBody>())) { CharacterBody component = ((Component)activator).GetComponent<CharacterBody>(); if (component.bodyIndex == (BodyIndex)RobotRex) { string name = ((Object)self.masterPrefab).name; if (DroneMap.ContainsKey(name)) { EffectManager.SpawnEffect(GameObject.OmniExplosionVFXRoboBallDeath, new EffectData { origin = ((Component)self).transform.position, scale = 5f }, true); AkSoundEngine.PostEvent(Events.Play_drone_repair, ((Component)self).gameObject); DroneMap[name](((Component)component.master).GetComponent<RRDroneStats>()); component.statsDirty = true; return; } } } orig.Invoke(self, activator); } private void HandleDroneStats(CharacterBody sender, StatHookEventArgs args) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)sender.master)) { RRDroneStats component = ((Component)sender.master).GetComponent<RRDroneStats>(); if (Object.op_Implicit((Object)(object)component)) { sender.transform.localScale = Vector3.one * (1f + component.BonusScale); ((Component)sender).GetComponent<Interactor>().maxInteractionDistance = 3f * (1f + component.BonusScale); args.regenMultAdd += component.BonusRegen; args.healthMultAdd += component.BonusHealth; args.armorAdd += (float)component.BonusArmor; sender.skillLocator.primary.SetBonusStockFromBody(component.BonusBullets); } } } private void OnBodyStart(orig_Start orig, CharacterBody self) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (self.bodyIndex == (BodyIndex)RobotRex && Object.op_Implicit((Object)(object)self.master) && !Object.op_Implicit((Object)(object)((Component)self.master).GetComponent<RRDroneStats>())) { ((Component)(object)self.master).AddComponent<RRDroneStats>(); } } } public abstract class SkillBase<T> : SkillBase where T : SkillBase<T> { public static T instance; public static implicit operator SkillDef(SkillBase<T> skill) { return skill.skillDef; } public SkillBase() { instance = this as T; } } public abstract class SkillBase { public SkillDef skillDef; public abstract string Name { get; } public abstract string Description { get; } public virtual string LangToken => GetType().Name.ToUpper(); public string NameToken => "RobotRex_SKILL_" + LangToken + "_NAME"; public string DescToken => "RobotRex_SKILL_" + LangToken + "_DESC"; public abstract Type ActivationStateType { get; } public abstract string ActivationMachineName { get; } public abstract float Cooldown { get; } public virtual bool BeginCooldownOnSkillEnd { get; } = false; public virtual bool MustKeyPress { get; } = false; public virtual int MaxStock { get; } = 1; public virtual int StockToConsume { get; } = 1; public virtual int RechargeStock { get; } = 1; public virtual bool Agile { get; } = false; public virtual bool CanceledFromSprinting => false; public virtual string[] Keywords { get; } = null; public virtual bool IsCombat => true; public virtual InterruptPriority InterruptPriority => (InterruptPriority)1; public virtual bool FullRestockOnAssign { get; } = true; public abstract Sprite Icon { get; } private static bool DefaultEnabledCallback(SkillBase self) { return true; } public virtual void Init() { CreateSkillDef(); SetupSkillDef(); CreateLang(); } public virtual void CreateSkillDef() { skillDef = ScriptableObject.CreateInstance<SkillDef>(); } public virtual void SetupSkillDef() { //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) skillDef.skillName = Name; skillDef.skillNameToken = NameToken; skillDef.skillDescriptionToken = DescToken; skillDef.baseRechargeInterval = Cooldown; skillDef.canceledFromSprinting = CanceledFromSprinting; skillDef.cancelSprintingOnActivation = !Agile; skillDef.baseMaxStock = MaxStock; skillDef.stockToConsume = StockToConsume; skillDef.activationStateMachineName = ActivationMachineName; skillDef.activationState = new SerializableEntityStateType(ActivationStateType); skillDef.icon = Icon; skillDef.rechargeStock = RechargeStock; skillDef.isCombatSkill = IsCombat; skillDef.keywordTokens = Keywords; skillDef.interruptPriority = InterruptPriority; skillDef.beginSkillCooldownOnSkillEnd = BeginCooldownOnSkillEnd; skillDef.mustKeyPress = MustKeyPress; skillDef.fullRestockOnAssign = FullRestockOnAssign; ContentAddition.AddSkillDef(skillDef); } public virtual void CreateLang() { NameToken.Add(Name); DescToken.Add(Description); } public string GetConfigName() { return Name; } } public abstract class SurvivorBase<T> : SurvivorBase where T : SurvivorBase<T> { public static T instance; public SurvivorBase() { instance = this as T; } } public abstract class SurvivorBase { public GameObject Body; public GameObject Master; public SurvivorDef SurvivorDef; public SkinDef mastery; public abstract string Name { get; } public abstract string Description { get; } public abstract string Subtitle { get; } public abstract string Outro { get; } public abstract string Failure { get; } public static bool DefaultEnabledCallback(SurvivorBase self) { return true; } public virtual void Init() { LoadAssets(); CreateLang(); ContentAddition.AddBody(Body); ContentAddition.AddMaster(Master); ContentAddition.AddSurvivorDef(SurvivorDef); } public virtual void LoadAssets() { } public virtual void CreateLang() { CharacterBody component = Body.GetComponent<CharacterBody>(); component.baseNameToken.Add(Name); component.subtitleNameToken.Add(Subtitle); SurvivorDef.outroFlavorToken.Add(Outro); SurvivorDef.mainEndingEscapeFailureFlavorToken.Add(Failure); SurvivorDef.descriptionToken.Add(Description); } public EntityStateMachine AddESM(GameObject prefab, string name, SerializableEntityStateType initial) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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) EntityStateMachine val = prefab.AddComponent<EntityStateMachine>(); val.customName = name; val.initialStateType = initial; val.mainStateType = initial; return val; } public void SwapMaterials(GameObject prefab, Material mat, bool all = false, List<int> renders = null) { CharacterModel componentInChildren = prefab.GetComponentInChildren<CharacterModel>(); if (all) { for (int i = 0; i < componentInChildren.baseRendererInfos.Length; i++) { componentInChildren.baseRendererInfos[i].defaultMaterial = mat; } } if (renders == null) { return; } foreach (int render in renders) { componentInChildren.baseRendererInfos[render].defaultMaterial = mat; } } public void ReplaceSkills(GenericSkill slot, params SkillDef[] skills) { //IL_0033: 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_0057: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) SkillFamily val = ScriptableObject.CreateInstance<SkillFamily>(); ((Object)val).name = slot.skillName ?? "default"; List<Variant> list = new List<Variant>(); foreach (SkillDef val2 in skills) { Variant item = new Variant { skillDef = val2 }; ((Variant)(ref item)).viewableNode = new Node(val2.skillNameToken, false, (Node)null); list.Add(item); } val.variants = list.ToArray(); slot._skillFamily = val; ContentAddition.AddSkillFamily(val); } public string GetConfigName() { return Name; } } } namespace RobotRex.Utils { public class BasicLaserBeam { public float DamageCoefficient; public CharacterBody Owner; public Transform TargetMuzzle; private LineRenderer lr; public GameObject effectInstance; private bool firing = false; private float stopwatch = 0f; private float growthStopwatch = 0f; private float delay; private BasicLaserInfo info; private Transform origin; private Transform end; private Vector3 targetEndpoint; private float origWidth = 0f; public bool Active => firing; public BasicLaserBeam(CharacterBody owner, Transform muzzle, BasicLaserInfo info) { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) this.info = info; delay = 1f / info.TickRate; TargetMuzzle = muzzle; DamageCoefficient = info.DamageCoefficient * delay; effectInstance = Object.Instantiate<GameObject>(info.EffectPrefab, ((Component)muzzle).transform.position, Quaternion.identity); growthStopwatch = info.ChargeDelay; origin = (info.OriginIsBase ? effectInstance.transform : effectInstance.GetComponent<ChildLocator>().FindChild(info.OriginName)); end = effectInstance.GetComponent<ChildLocator>().FindChild(info.EndpointName); lr = effectInstance.GetComponent<DetachLineRendererAndFade>().line; origWidth = lr.widthMultiplier; Owner = owner; targetEndpoint = GetEndpoint(out var _); ((Component)end).transform.position = targetEndpoint; ((Component)origin).transform.position = ((Component)TargetMuzzle).transform.position; } public void Fire() { if (Object.op_Implicit((Object)(object)info.FiringMaterial)) { ((Renderer)lr).material = info.FiringMaterial; } lr.widthMultiplier = origWidth * info.FiringWidthMultiplier; firing = true; stopwatch = 0f; } public void UpdateVisual(float deltaTime) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0038: 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_004a: Unknown result type (might be due to invalid IL or missing references) ((Component)origin).transform.position = ((Component)TargetMuzzle).transform.position; ((Component)end).transform.position = Vector3.MoveTowards(((Component)end).transform.position, targetEndpoint, 250f * deltaTime); } public void Update(float deltaTime) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_008e: 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_00a6: Expected O, but got Unknown stopwatch += deltaTime; if (stopwatch >= delay) { targetEndpoint = GetEndpoint(out var unmodified); stopwatch = 0f; if (firing && ((NetworkBehaviour)Owner).hasAuthority) { GetBulletAttack().Fire(); if (Object.op_Implicit((Object)(object)info.ImpactEffect)) { EffectManager.SpawnEffect(info.ImpactEffect, new EffectData { origin = unmodified, scale = 1f }, false); } } } if (!firing) { growthStopwatch -= deltaTime; lr.widthMultiplier = Mathf.Max(0f, growthStopwatch / info.ChargeDelay); } } public Vector3 GetEndpoint(out Vector3 unmodified) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006d: 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_0073: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) Vector3 val = ((info.FiringMode == LaserFiringMode.TrackAim) ? Owner.inputBank.aimDirection : TargetMuzzle.forward); Vector3 val2 = ((info.FiringMode == LaserFiringMode.TrackAim) ? Owner.inputBank.aimOrigin : TargetMuzzle.position); Ray val3 = new Ray(val2, val); Vector3 point = ((Ray)(ref val3)).GetPoint(info.MaxRange); RaycastHit val4 = default(RaycastHit); if (Physics.Raycast(val2, val, ref val4, info.MaxRange, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { point = ((RaycastHit)(ref val4)).point; } unmodified = point; return point + val * 5f; } public BulletAttack GetBulletAttack() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_005c: 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_0061: 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_007d: 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_0087: 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_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) BulletAttack val = new BulletAttack(); val.radius = lr.startWidth * 0.75f; val.damage = Owner.damage * DamageCoefficient; val.origin = ((info.FiringMode == LaserFiringMode.TrackAim) ? Owner.inputBank.aimOrigin : TargetMuzzle.position); Vector3 val2 = ((Component)end).transform.position - TargetMuzzle.position; val.aimVector = ((Vector3)(ref val2)).normalized; val.procCoefficient = 1f; val.owner = ((Component)Owner).gameObject; val.falloffModel = (FalloffModel)0; val.isCrit = Util.CheckRoll(Owner.crit, Owner.master); val.stopperMask = ((LayerIndex)(ref LayerIndex.world)).mask; return val; } public void Stop() { Object.Destroy((Object)(object)effectInstance); } } public class BasicLaserInfo { public GameObject EffectPrefab; public string OriginName = "Origin"; public string EndpointName = "End"; public bool OriginIsBase = true; public float TickRate = 20f; public float DamageCoefficient = 1f; public Material FiringMaterial; public float ChargeDelay = 0.5f; public float FiringWidthMultiplier = 2f; public LaserFiringMode FiringMode = LaserFiringMode.Straight; public float MaxRange = 60f; public GameObject ImpactEffect; } public enum LaserFiringMode { TrackAim, Straight } 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 Func<bool> AlternateActiveParameter { get; } = () => true; 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; if (MechanimHitboxParameter != null) { base.mecanimHitboxActiveParameter = MechanimHitboxParameter; } base.scaleHitPauseDurationAndVelocityWithAttackSpeed = ScaleHitPauseDurationWithAttackSpeed; ((BasicMeleeAttack)this).OnEnter(); } public override void FixedUpdate() { ((EntityState)this).fixedAge = ((EntityState)this).fixedAge + Time.fixedDeltaTime; if (string.IsNullOrEmpty(MechanimHitboxParameter) && AlternateActiveParameter()) { ((BasicMeleeAttack)this).BeginMeleeAttackEffect(); } else if (base.animator.GetFloat(MechanimHitboxParameter) >= 0.5f) { ((BasicMeleeAttack)this).BeginMeleeAttackEffect(); } if (((EntityState)this).isAuthority) { ((BasicMeleeAttack)this).AuthorityFixedUpdate(); } } } [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] internal sealed class AutoRunAttribute : Attribute { } internal sealed class AutoRunCollector { public static void HandleAutoRun() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); List<Type> list = types.ToList(); list.RemoveAll(asdf); types = list.ToArray(); Type[] array = types; foreach (Type type in array) { if (!type.FullName.Contains("CustomEmotesAPI")) { continue; } TypeInfo typeInfo = type.GetTypeInfo(); MethodInfo[] methods = typeInfo.GetMethods((BindingFlags)(-1)); foreach (MethodInfo methodInfo in methods) { AutoRunAttribute customAttribute = methodInfo.GetCustomAttribute<AutoRunAttribute>(); if (customAttribute != null && methodInfo.IsStatic) { methodInfo.Invoke(null, null); } } } } private static bool asdf(Type s) { return s.FullName.Contains("CustomEmotesAPI"); } } public class CallNetworkedMethod : INetMessage, ISerializableObject { private GameObject obj; private string method; private uint id; public CallNetworkedMethod(GameObject obj, string method) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) this.obj = obj; this.method = method; NetworkInstanceId netId = obj.GetComponent<NetworkIdentity>().netId; id = ((NetworkInstanceId)(ref netId)).Value; } public void Serialize(NetworkWriter writer) { writer.Write(id); writer.Write(method); } public void Deserialize(NetworkReader reader) { id = reader.ReadUInt32(); method = reader.ReadString(); } public void OnReceived() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) obj = Util.FindNetworkObject(new NetworkInstanceId(id)); obj.SendMessage(method, (SendMessageOptions)1); } public CallNetworkedMethod() { } } public class LockLocalTransform : MonoBehaviour { public Vector3 Position; public Vector3 Rotation; public Vector3 Scale; public void LateUpdate() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) ((Component)this).transform.localPosition = Position; ((Component)this).transform.localRotation = Quaternion.Euler(Rotation); ((Component)this).transform.localScale = Scale; } } public static class DamageColourHelper { [CompilerGenerated] private static class <>O { public static hook_FindColor <0>__DamageColor_FindColor; } public static List<DamageColorIndex> registeredColorIndicies = new List<DamageColorIndex>(); internal static void Init() { //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_001c: Expected O, but got Unknown object obj = <>O.<0>__DamageColor_FindColor; if (obj == null) { hook_FindColor val = DamageColor_FindColor; <>O.<0>__DamageColor_FindColor = val; obj = (object)val; } DamageColor.FindColor += (hook_FindColor)obj; } private static Color DamageColor_FindColor(orig_FindColor orig, DamageColorIndex colorIndex) { //IL_0006: 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_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0015: 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_0028: Unknown result type (might be due to invalid IL or missing references) if (registeredColorIndicies.Contains(colorIndex)) { return DamageColor.colors[colorIndex]; } return orig.Invoke(colorIndex); } public static DamageColorIndex RegisterDamageColor(Color color) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0025: 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_0029: Unknown result type (might be due to invalid IL or missing references) int num = DamageColor.colors.Length; DamageColorIndex val = (DamageColorIndex)(byte)num; ArrayUtils.ArrayAppend<Color>(ref DamageColor.colors, ref color); registeredColorIndicies.Add(val); return val; } } public static class CharacterExtensions { public static bool HasSkillEquipped(this CharacterBody body, SkillDef skill) { GenericSkill[] components = ((Component)body).GetComponents<GenericSkill>(); foreach (GenericSkill val in components) { if ((Object)(object)val.skillDef == (Object)(object)skill) { return true; } } return false; } public static void ClearInventory(this CharacterBody body) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)body.inventory)) { return; } List<ItemDef> list = new List<ItemDef>(); foreach (ItemIndex item in body.inventory.itemAcquisitionOrder) { ItemDef itemDef = ItemCatalog.GetItemDef(item); list.Add(itemDef); } foreach (ItemDef item2 in list) { body.inventory.RemoveItem(item2, body.inventory.GetItemCount(item2)); } } public static void ClearInventory(this CharacterBody body, bool hidden) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)body.inventory)) { return; } List<ItemDef> list = new List<ItemDef>(); foreach (ItemIndex item in body.inventory.itemAcquisitionOrder) { ItemDef itemDef = ItemCatalog.GetItemDef(item); if (hidden) { list.Add(itemDef); } else if (!itemDef.hidden) { list.Add(itemDef); } } foreach (ItemDef item2 in list) { body.inventory.RemoveItem(item2, body.inventory.GetItemCount(item2)); } } } public static class EnumeratorExtensions { public static T GetRandom<T>(this IEnumerable<T> self) { return self.ElementAt(Random.Range(0, self.Count())); } public static T GetRandom<T>(this IEnumerable<T> self, Xoroshiro128Plus rng) { return self.ElementAt(rng.RangeInt(0, self.Count())); } public static T GetRandom<T>(this IEnumerable<T> self, Func<T, bool> predicate) { try { return self.Where(predicate).ElementAt(Random.Range(0, self.Count())); } catch { return default(T); } } public static T GetRandom<T>(this IEnumerable<T> self, Xoroshiro128Plus rng, Func<T, bool> predicate) { try { return self.Where(predicate).ElementAt(rng.RangeInt(0, self.Count())); } catch { return default(T); } } } public static class StringExtensions { public static void Add(this string str, string text) { LanguageAPI.Add(str, text); } public static T Load<T>(this string str) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) try { return Addressables.LoadAssetAsync<T>((object)str).WaitForCompletion(); } catch { return default(T); } } public static string RemoveUnsafeCharacters(this string str) { string[] array = new string[17] { "\n", "'", " ", "!", "`", "&", "-", ")", "(", "{", "}", "|", "@", "<", ">", ".", "\\" }; string text = str; string[] array2 = array; foreach (string oldValue in array2) { text = text.Replace(oldValue, ""); } return text; } public static string RemoveUnsafeCharacters(this string str, string[] unsafeChars) { string text = str; foreach (string oldValue in unsafeChars) { text = text.Replace(oldValue, ""); } return text; } public static string AutoFormat(this string str) { return Formatter.FormatString(str); } } internal class Formatter { internal struct Format { public string match; public string expanded; } private static List<Format> formats = new List<Format> { new Format { match = "$su", expanded = "<style=cIsUtility>" }, new Format { match = "$sd", expanded = "<style=cIsDamage>" }, new Format { match = "$ss", expanded = "<style=cStack>" }, new Format { match = "$sr", expanded = "<style=cDeath>" }, new Format { match = "$sh", expanded = "<style=cIsHealing>" }, new Format { match = "$se", expanded = "</style>" }, new Format { match = "$rc", expanded = "<color=#36D7A9>" }, new Format { match = "$ec", expanded = "</color>" }, new Format { match = "$pc", expanded = "<color=#406096>" }, new Format { match = "$sv", expanded = "<style=cIsVoid>" } }; internal static string FormatString(string str) { foreach (Format format in formats) { str = str.Replace(format.match, format.expanded); } return str; } } public static class UnityExtensions { public static void RemoveComponent<T>(this GameObject self) where T : Component { Object.Destroy((Object)(object)self.GetComponent<T>()); } public static void RemoveComponents<T>(this GameObject self) where T : Component { T[] components = self.GetComponents<T>(); for (int i = 0; i < components.Length; i++) { Object.Destroy((Object)(object)components[i]); } } public static void CallNetworkedMethod(this GameObject self, string method, NetworkDestination dest = 1) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) NetMessageExtensions.Send((INetMessage)(object)new CallNetworkedMethod(self, method), dest); } public static T FindComponent<T>(this GameObject self, string name) where T : Component { return self.GetComponentsInChildren<T>().FirstOrDefault((T x) => ((Object)((Component)x).gameObject).name == name); } public static void RemoveComponent<T>(this Component self) where T : Component { Object.Destroy((Object)(object)self.GetComponent<T>()); } public static void RemoveComponents<T>(this Component self) where T : Component { T[] components = self.GetComponents<T>(); for (int i = 0; i < components.Length; i++) { Object.Destroy((Object)(object)components[i]); } } public static T AddComponent<T>(this Component self) where T : Component { return self.gameObject.AddComponent<T>(); } public static Sprite MakeSprite(this Texture2D self) { //IL_001a: 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) return Sprite.Create(self, new Rect(0f, 0f, (float)((Texture)self).width, (float)((Texture)self).height), new Vector2(0.5f, 0.5f), 100f); } } [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public class HookAttribute : SearchableAttribute { public Type type; public string eventName; public HookAttribute(Type type, string eventName) { this.type = type; this.eventName = eventName; } } public class HookAttributeHandler { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnLoad <>9__0_0; internal IEnumerator <Hook>b__0_0(orig_OnLoad orig, RoR2Application self) { Initialize(); return orig.Invoke(self); } } [AutoRun] internal static void Hook() { //IL_0015: 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_0020: Expected O, but got Unknown object obj = <>c.<>9__0_0; if (obj == null) { hook_OnLoad val = delegate(orig_OnLoad orig, RoR2Application self) { Initialize(); return orig.Invoke(self); }; <>c.<>9__0_0 = val; obj = (object)val; } RoR2Application.OnLoad += (hook_OnLoad)obj; } internal static void Initialize() { List<HookAttribute> list = new List<HookAttribute>(); SearchableAttribute.GetInstances<HookAttribute>(list); foreach (HookAttribute item in list) { if ((((SearchableAttribute)item).target as MethodInfo).IsStatic) { EventInfo @event = item.type.GetEvent(item.eventName); Delegate handler = Delegate.CreateDelegate(@event.EventHandlerType, null, ((SearchableAttribute)item).target as MethodInfo); @event.AddEventHandler(@event.DeclaringType, handler); } } } } public static class ItemHelpers { public static RendererInfo[] ItemDisplaySetup(GameObject obj, bool debugmode = false) { //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) List<Renderer> list = new List<Renderer>(); MeshRenderer[] componentsInChildren = obj.GetComponentsInChildren<MeshRenderer>(); if (componentsInChildren.Length != 0) { list.AddRange((IEnumerable<Renderer>)(object)componentsInChildren); } SkinnedMeshRenderer[] componentsInChildren2 = obj.GetComponentsInChildren<SkinnedMeshRenderer>(); if (componentsInChildren2.Length != 0) { list.AddRange((IEnumerable<Renderer>)(object)componentsInChildren2); } RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[list.Count]; for (int i = 0; i < list.Count; i++) { if (debugmode) { MaterialControllerComponents.HGControllerFinder hGControllerFinder = ((Component)list[i]).gameObject.AddComponent<MaterialControllerComponents.HGControllerFinder>(); hGControllerFinder.Renderer = list[i]; } array[i] = new RendererInfo { defaultMaterial = ((list[i] is SkinnedMeshRenderer) ? list[i].sharedMaterial : list[i].material), renderer = list[i], defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false }; } return array; } public static string OrderManifestLoreFormatter(string deviceName, string estimatedDelivery, string sentTo, string trackingNumber, string devicePickupDesc, string shippingMethod, string orderDetails) { string[] value = new string[19] { "<align=left>Estimated Delivery:<indent=70%>Sent To:</indent></align>", "<align=left>" + estimatedDelivery + "<indent=70%>" + sentTo + "</indent></align>", "", "<indent=1%><style=cIsDamage><size=125%><u> Shipping Details:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</u></size></style></indent>", "", "<indent=2%>-Order: <style=cIsUtility>" + deviceName + "</style></indent>", "<indent=4%><style=cStack>Tracking Number: " + trackingNumber + "</style></indent>", "", "<indent=2%>-Order Description: " + devicePickupDesc + "</indent>", "", "<indent=2%>-Shipping Method: <style=cIsHealth>" + shippingMethod + "</style></indent>", "", "", "", "<indent=2%>-Order Details: " + orderDetails + "</indent>", "", "", "", "<style=cStack>Delivery being brought to you by the brand new </style><style=cIsUtility>Orbital Drop-Crate System (TM)</style>. <style=cStack><u>No refunds.</u></style>" }; return string.Join("\n", value); } public static void RefreshTimedBuffs(CharacterBody body, BuffDef buffDef, float duration) { //IL_0039: 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) if (!Object.op_Implicit((Object)(object)body) || body.GetBuffCount(buffDef) <= 0) { return; } foreach (TimedBuff timedBuff in body.timedBuffs) { if (buffDef.buffIndex == timedBuff.buffIndex) { timedBuff.timer = duration; } } } public static void RefreshTimedBuffs(CharacterBody body, BuffDef buffDef, float taperStart, float taperDuration) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)body) || body.GetBuffCount(buffDef) <= 0) { return; } int num = 0; foreach (TimedBuff timedBuff in body.timedBuffs) { if (buffDef.buffIndex == timedBuff.buffIndex) { timedBuff.timer = taperStart + (float)num * taperDuration; num++; } } } public static void AddBuffAndDot(BuffDef buff, float duration, int stackCount, CharacterBody body) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Invalid comparison between Unknown and I4 //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { return; } DotIndex val = (DotIndex)Array.FindIndex(DotController.dotDefs, (DotDef dotDef) => (Object)(object)dotDef.associatedBuff == (Object)(object)buff); for (int i = 0; i < stackCount; i++) { if ((int)val != -1) { DotController.InflictDot(((Component)body).gameObject, ((Component)body).gameObject, val, duration, 0.25f, (uint?)null); } else { body.AddTimedBuff(buff.buffIndex, duration); } } } public static DotIndex FindAssociatedDotForBuff(BuffDef buff) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0026: 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) return (DotIndex)Array.FindIndex(DotController.dotDefs, (DotDef dotDef) => (Object)(object)dotDef.associatedBuff == (Object)(object)buff); } } public static class Keywords { public static string Poison = "KEYWORD_POISON"; public static string Regenerative = "KEYWORD_RAPID_REGEN"; public static string Agile = "KEYWORD_AGILE"; public static string HealthCost = "KEYWORD_PERCENT_HP"; public static string Disperse = "KEYWORD_SONIC_BOOM"; public static string Weak = "KEYWORD_WEAK"; public static string Heavy = "KEYWORD_HEAVY"; public static string Freeze = "KEYWORD_FREEZING"; public static string Stun = "KEYWORD_STUNNING"; public static string Expose = "KEYWORD_EXPOSE"; public static string Shock = "KEYWORD_SHOCKING"; public static string Slayer = "KEYWORD_SLAYER"; public static string Hemorrhage = "KEYWORD_SUPERBLEED"; public static string Ignite = "KEYWORD_IGNITE"; public static string Weakpoint = "KEYWORD_WEAKPOINT"; public static string ActiveReload = "KEYWORD_ACTIVERELOAD"; public static string VoidCorruption = "KEYWORD_VOIDCORRUPTION"; public static string OverdriveFormPrimary = "RobotRex_KEYWORD_OVERDRIVE_PRIMARY"; public static string OverdriveFormSecondary = "RobotRex_KEYWORD_OVERDRIVE_SECONDARY"; public static string OverdriveFormAltSecondary = "RobotRex_KEYWORD_OVERDRIVE_SECONDARY_ALT"; public static string OverdriveFormUtility = "RobotRex_KEYWORD_OVERDRIVE_UTILITY"; public static string OverdriveFormSpecial = "RobotRex_KEYWORD_OVERDRIVE_SPECIAL"; public static void SetupKeywords() { OverdriveFormPrimary.Add("<style=cKeywordName>Overdriven Form</style><style=cIsUtility>Agile</style>. Fire a rapid stream of bullets for <style=cIsDamage>90% damage</style>. <style=cDeath>Heat increases spread and ignite chance</style>."); OverdriveFormSecondary.Add("<style=cKeywordName>Overdriven Form</style><style=cIsDamage>Ignite</style>. Fire a short-range heat burst for <style=cIsDamage>8x180% damage</style>. Increase <style=cDeath>heat</style> by <style=cDeath>15%</style>."); OverdriveFormAltSecondary.Add("<style=cKeywordName>Overdriven Form</style><style=cIsDamage>Ignite</style>. Fire off a <style=cIsDamage>blazing ball</style> for <style=cIsDamage>600%</style> damage that <style=cIsDamage>engulfs</style> the ground on impact for <style=cIsDamage>250%</style> damage per second. Reduce $srheat$se by $su20%$se."); OverdriveFormUtility.Add("<style=cKeywordName>Overdriven Form</style><style=cIsUtility>Agile</style>. <style=cIsDamage>Stunning</style>. <style=cIsUtility>Sidestep</style> a very short distance and deal <style=cIsDamage>250% damage</style>. Hitting enemies generates <color=#36D7A9>3 Charge</style>."); OverdriveFormSpecial.Add("<style=cKeywordName>Overdriven Form</style><style=cIsUtility>Agile</style>. <style=cIsDamage>Ignite</style>. Release a <style=cIsDamage>fire nova</style> around you that deals <style=cIsDamage>300%</style> damage, increasing up to <style=cIsDamage>900%</style> in full heat. <style=cIsUtility>Consume all heat</style>, gaining an <style=cIsDamage>attack speed</style> boost, and <style=cDeath>exit overdrive</style>."); } } public static class MathHelpers { public static string FloatToPercentageString(float number, float numberBase = 100f) { return (number * numberBase).ToString("##0") + "%"; } public static Vector3 ClosestPointOnSphereToPoint(Vector3 origin, float radius, Vector3 targetPosition) { //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_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: 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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_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_0022: Unknown result type (might be due to invalid IL or missing references) Vector3 val = targetPosition - origin; val = Vector3.Normalize(val); val *= radius; return origin + val; } public static List<Vector3> DistributePointsEvenlyAroundSphere(int points, float radius, Vector3 origin) { //IL_0066: 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_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) List<Vector3> list = new List<Vector3>(); double num = Math.PI * (3.0 - Math.Sqrt(5.0)); for (int i = 0; i < points; i++) { int num2 = 1 - i / (points - 1) * 2; double num3 = Math.Sqrt(1 - num2 * num2); double num4 = num * (double)i; float num5 = (float)(Math.Cos(num4) * num3); float num6 = (float)(Math.Sin(num4) * num3); Vector3 val = origin + new Vector3(num5, (float)num2, num6); list.Add(val * radius); } return list; } public static List<Vector3> DistributePointsEvenlyAroundCircle(int points, float radius, Vector3 origin, float angleOffset = 0f) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) List<Vector3> list = new List<Vector3>(); Vector3 item = default(Vector3); for (int i = 0; i < points; i++) { double num = Math.PI * 2.0 / (double)points; double num2 = num * (double)i + (double)angleOffset; ((Vector3)(ref item))..ctor((float)((double)radius * Math.Cos(num2) + (double)origin.x), origin.y, (float)((double)radius * Math.Sin(num2) + (double)origin.z)); list.Add(item); } return list; } public static Vector3 GetPointOnUnitSphereCap(Quaternion targetDirection, float angle) { //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_001b: 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_002b: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) float num = Random.Range(0f, angle) * (MathF.PI / 180f); Vector2 insideUnitCircle = Random.insideUnitCircle; Vector2 val = ((Vector2)(ref insideUnitCircle)).normalized * Mathf.Sin(num); Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(val.x, val.y, Mathf.Cos(num)); return targetDirection * val2; } public static Vector3 GetPointOnUnitSphereCap(Vector3 targetDirection, float angle) { //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_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) return GetPointOnUnitSphereCap(Quaternion.LookRotation(targetDirection), angle); } public static Vector3 RandomPointOnCircle(Vector3 origin, float radius, Xoroshiro128Plus random) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) float num = random.RangeFloat(0f, MathF.PI * 2f); return origin + new Vector3(Mathf.Cos(num), 0f, Mathf.Sin(num)) * radius; } public static float InverseHyperbolicScaling(float baseValue, float additionalValue, float maxValue, int itemCount) { return baseValue + (maxValue - baseValue) * (1f - 1f / (1f + additionalValue * (float)(itemCount - 1))); } public static float CustomHyperbolic(float amplificationPercentage, float max = 100f) { return (1f - max / (max + amplificationPercentage)) * max; } } public static class MiscUtils { public static Vector3? RaycastToDirection(Vector3 position, float maxDistance, Vector3 direction, int layer) { //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_0003: 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) RaycastHit val = default(RaycastHit); if (Physics.Raycast(new Ray(position, direction), ref val, maxDistance, layer, (QueryTriggerInteraction)1)) { return ((RaycastHit)(ref val)).point; } return null; } public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> toShuffle, Xoroshiro128Plus random) { List<T> list = new List<T>(); foreach (T item in toShuffle) { list.Insert(random.RangeInt(0, list.Count + 1), item); } return list; } public static Vector3 FindClosestNodeToPosition(Vector3 position, HullClassification hullClassification, bool checkAirNodes = false) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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_004d: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) NodeGraph val = (checkAirNodes ? SceneInfo.instance.airNodes : SceneInfo.instance.groundNodes); NodeIndex val2 = val.FindClosestNode(position, hullClassification, float.PositiveInfinity); if (val2 != NodeIndex.invalid) { Vector3 result = default(Vector3); val.GetNodePosition(val2, ref result); return result; } return Vector3.zero; } public static bool TeleportBody(CharacterBody characterBody, GameObject target, GameObject teleportEffect, HullClassification hullClassification, Xoroshiro128Plus rng, float minDistance = 20f, float maxDistance = 45f, bool teleportAir = false) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)characterBody)) { return false; } SpawnCard val = ScriptableObject.CreateInstance<SpawnCard>(); val.hullSize = hullClassification; val.nodeGraphType = (GraphType)(teleportAir ? 1 : 0); val.prefab = Resources.Load<GameObject>("SpawnCards/HelperPrefab"); GameObject val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, new DirectorPlacementRule { placementMode = (PlacementMode)1, position = target.transform.position, minDistance = minDistance, maxDistance = maxDistance }, rng)); if (Object.op_Implicit((Object)(object)val2)) { TeleportHelper.TeleportBody(characterBody, val2.transform.position); if (Object.op_Implicit((Object)(object)teleportEffect)) { EffectManager.SimpleEffect(teleportEffect, val2.transform.position, Quaternion.identity, true); } Object.Destroy((Object)(object)val2); Object.Destroy((Object)(object)val); return true; } Object.Destroy((Object)(object)val); return false; } public static Vector3? AboveTargetVectorFromDamageInfo(DamageInfo damageInfo, float distanceAboveTarget) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: 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_0083: 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_0108: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_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_012d: 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_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) if (damageInfo.rejected || !Object.op_Implicit((Object)(object)damageInfo.attacker)) { return null; } CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { TeamMask enemyTeams = TeamMask.GetEnemyTeams(component.teamComponent.teamIndex); HurtBox val = new SphereSearch { radius = 1f, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask, origin = damageInfo.position }.RefreshCandidates().FilterCandidatesByHurtBoxTeam(enemyTeams).OrderCandidatesByDistance() .FilterCandidatesByDistinctHurtBoxEntities() .GetHurtBoxes() .FirstOrDefault(); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.healthComponent) && Object.op_Implicit((Object)(object)val.healthComponent.body)) { CharacterBody body = val.healthComponent.body; Vector3 val2 = body.mainHurtBox.collider.ClosestPointOnBounds(body.transform.position + new Vector3(0f, 10000f, 0f)); Vector3? val3 = RaycastToDirection(val2, distanceAboveTarget, Vector3.up, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)); if (val3.HasValue) { return val3.Value; } return val2 + Vector3.up * distanceAboveTarget; } } return null; } public static Vector3? AboveTargetBody(CharacterBody body, float distanceAbove) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0056: 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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)body)) { return null; } Vector3 val = body.mainHurtBox.collider.ClosestPointOnBounds(body.transform.position + new Vector3(0f, 10000f, 0f)); Vector3? val2 = RaycastToDirection(val, distanceAbove, Vector3.up, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)); if (val2.HasValue) { return val2.Value; } return val + Vector3.up * distanceAbove; } public static Dictionary<string, Vector3> GetAimSurfaceAlignmentInfo(Ray ray, int layerMask, float distance) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002d: 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_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_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_007a: 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) Dictionary<string, Vector3> dictionary = new Dictionary<string, Vector3>(); RaycastHit val = default(RaycastHit); if (!Physics.Raycast(ray, ref val, distance, layerMask, (QueryTriggerInteraction)1)) { return null; } Vector3 point = ((RaycastHit)(ref val)).point; Vector3 val2 = Vector3.Cross(((Ray)(ref ray)).direction, Vector3.up); Vector3 val3 = Vector3.ProjectOnPlane(((RaycastHit)(ref val)).normal, val2); Vector3 value = Vector3.Cross(val2, val3); dictionary.Add("Position", point); dictionary.Add("Right", val2); dictionary.Add("Forward", value); dictionary.Add("Up", val3); return dictionary; } public static FireProjectileInfo GetProjectile(GameObject prefab, float coeff, CharacterBody owner, DamageTypeCombo? damageTypeCombo = null) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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) FireProjectileInfo val = default(FireProjectileInfo); val.damage = owner.damage * coeff; val.crit = owner.RollCrit(); val.projectilePrefab = prefab; val.owner = ((Component)owner).gameObject; val.position = owner.corePosition; val.rotation = Util.QuaternionSafeLookRotation(owner.inputBank.aimDirection); FireProjectileInfo result = val; if (damageTypeCombo.HasValue) { result.damageTypeOverride = damageTypeCombo; } return result; } public static Vector3? GroundPoint(this Vector3 point) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) return RaycastToDirection(point, float.PositiveInfinity, Vector3.down, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)); } public static Tuple<Vector3?, Vector3?> GroundPointWithNormal(this Vector3 point) { //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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) RaycastHit val = default(RaycastHit); if (Physics.Raycast(point + Vector3.up * 20f, Vector3.down, ref val, 4000f, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask))) { return new Tuple<Vector3?, Vector3?>(((RaycastHit)(ref val)).point, ((RaycastHit)(ref val)).normal); } return new Tuple<Vector3?, Vector3?>(null, null); } public static Vector3[] GetSafePositionsWithinDistance(Vector3 center, float distance) { //IL_0097: 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_0045: 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_004d: 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_0054: 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_006a: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)SceneInfo.instance) && Object.op_Implicit((Object)(object)SceneInfo.instance.groundNodes)) { NodeGraph groundNodes = SceneInfo.instance.groundNodes; List<Vector3> list = new List<Vector3>(); Node[] nodes = groundNodes.nodes; foreach (Node val in nodes) { if (Vector3.Distance(val.position, center) <= distance) { list.Add(val.position); } } return list.ToArray(); } return (Vector3[])(object)new Vector3[1] { center }; } } public class LazyAddressable<T> where T : Object { private Func<T> func; private T asset = default(T); public T Asset { get { if (!Object.op_Implicit((Object)(object)asset)) { asset = func(); } return asset; } } public LazyAddressable(Func<T> func) { this.func = func; } public static implicit operator T(LazyAddressable<T> addressable) { return addressable.Asset; } } public class LazyIndex { private string target; private BodyIndex _value = (BodyIndex)(-1); public BodyIndex Value => UpdateValue(); public LazyIndex(string target) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) this.target = target; } public BodyIndex UpdateValue() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Invalid comparison between Unknown and I4 //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) //IL_0022: 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_0036: Unknown result type (might be due to invalid IL or missing references) if ((int)_value == -1 || (int)_value == -1) { _value = BodyCatalog.FindBodyIndex(target); } return _value; } public static implicit operator BodyIndex(LazyIndex index) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return index.Value; } } public static class NetworkingHelpers { public static T GetObjectFromNetIdValue<T>(uint netIdValue) { //IL_002c: 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) NetworkInstanceId key = default(NetworkInstanceId); ((NetworkInstanceId)(ref key))..ctor(netIdValue); NetworkIdentity value = null; if (NetworkServer.active) { NetworkServer.objects.TryGetValue(key, out value); } else { ClientScene.objects.TryGetValue(key, out value); } if (Object.op_Implicit((Object)(object)value)) { T component = ((Component)value).GetComponent<T>(); if (component != null) { return component; } } return default(T); } } public static class Scenes { public static string AphelianSanctuary = "ancientloft"; public static string VoidFields = "arena"; public static string DistantRoost = "blackbeach"; public static string DistantRoostAlt = "blackbeach2"; public static string AbyssalDepths = "dampcavesimple"; public static string WetlandAspect = "foggyswamp"; public static string RallypointDelta = "frozenwall"; public static string TitanicPlains = "golemplains"; public static string TitanicPlainsAlt = "golemplains2"; public static string AbandonedAqueduct = "goolake"; public static string Commencement = "moon2"; public static string SunderedGrove = "rootjungle"; public static string SirensCall = "shipgraveyard"; public static string SkyMeadow = "skymeadow"; public static string SiphonedForest = "snowyforest"; public static string SulfurPools = "sulfurpools"; public static string VoidLocus = "voidstage"; public static string Planetarium = "voidraid"; public static string ScorchedAcres = "wispgraveyard"; public static string BulwarksAmbry = "artifactword"; public static string Bazaar = "bazaar"; public static string GildedCoast = "goldshores"; public static string MomentWhole = "limbo"; public static string MomentFractured = "mysteryspace"; public static string[] AllStandard = new string[18] { AphelianSanctuary, VoidFields, DistantRoost, DistantRoostAlt, AbyssalDepths, WetlandAspect, RallypointDelta, TitanicPlains, TitanicPlainsAlt, AbandonedAqueduct, Commencement, SunderedGrove, SkyMeadow, SirensCall, SiphonedForest, SulfurPools, ScorchedAcres, BulwarksAmbry }; } public static class TotallyNotStolenUtils { public enum ItemIconBackgroundType { Tier1, Tier2, Tier3, Boss, Equipment, Lunar, Survivor } private static Dictionary<ItemTier, ItemIconBackgroundType> itemTierToIconBackgroundType = new Dictionary<ItemTier, ItemIconBackgroundType> { { (ItemTier)0, ItemIconBackgroundType.Tier1 }, { (ItemTier)1, ItemIconBackgroundType.Tier2 }, { (ItemTier)2, ItemIconBackgroundType.Tier3 }, { (ItemTier)4, ItemIconBackgroundType.Boss }, { (ItemTier)3, ItemIconBackgroundType.Lunar } }; public static ItemIconBackgroundType GetItemIconBackgroundTypeFromTier(ItemTier tier) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) if (itemTierToIconBackgroundType.ContainsKey(tier)) { return itemTierToIconBackgroundType[tier]; } return ItemIconBackgroundType.Tier1; } public static Sprite AddItemIconBackgroundToSprite(Sprite originalSprite, ItemIconBackgroundType bgType) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0068: 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) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_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_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_014a: 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_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Expected O, but got Unknown //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Expected O, but got Unknown //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0160: 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_034e: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0273: 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_0283: 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_0298: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02ea: Unknown result type (might be due to invalid IL or missing references) Texture2D texture = originalSprite.texture; Texture2D val = new Texture2D(((Texture)texture).width, ((Texture)texture).height, (TextureFormat)5, false); Graphics.ConvertTexture((Texture)(object)texture, (Texture)(object)val); RenderTexture temporary = RenderTexture.GetTemporary(((Texture)val).width, ((Texture)val).height, 24, (RenderTextureFormat)0); temporary.Create(); RenderTexture.active = temporary; Graphics.Blit((Texture)(object)val, temporary); val.ReadPixels(new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), 0, 0); val.Apply(); RenderTexture.active = null; RenderTexture.ReleaseTemporary(temporary); Sprite val2 = null; val2 = (Sprite)(bgType switch { ItemIconBackgroundType.Tier1 => Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texTier1BGIcon.png").WaitForCompletion(), ItemIconBackgroundType.Tier2 => Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texTier2BGIcon.png").WaitForCompletion(), ItemIconBackgroundType.Tier3 => Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texTier3BGIcon.png").WaitForCompletion(), ItemIconBackgroundType.Boss => Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texBossBGIcon.png").WaitForCompletion(), ItemIconBackgroundType.Equipment => Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texEquipmentBGIcon.png").WaitForCompletion(), ItemIconBackgroundType.Lunar => Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texLunarBGIcon.png").WaitForCompletion(), ItemIconBackgroundType.Survivor => Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texSurvivorBGIcon.png").WaitForCompletion(), _ => Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texTier1BGIcon.png").WaitForCompletion(), }); Texture2D val3 = new Texture2D(((Texture)val).width, ((Texture)val).height, (TextureFormat)5, false); Graphics.ConvertTexture((Texture)(object)val2.texture, (Texture)(object)val3); temporary = RenderTexture.GetTemporary(((Texture)val3).width, ((Texture)val3).height, 24, (RenderTextureFormat)0); temporary.Create(); RenderTexture.active = temporary; Graphics.Blit((Texture)(object)val3, temporary); val3.ReadPixels(new Rect(0f, 0f, (float)((Texture)val3).width, (float)((Texture)val3).height), 0, 0); val3.Apply(); RenderTexture.active = null; RenderTexture.ReleaseTemporary(temporary); Texture2D val4 = new Texture2D(((Texture)val).width, ((Texture)val).height, val.format, false); ((Texture)val4).wrapMode = ((Texture)val).wrapMode; ((Texture)val4).filterMode = ((Texture)val).filterMode; for (int i = 0; i < ((Texture)val4).width; i++) { for (int j = 0; j < ((Texture)val4).height; j++) { Color pixel = val3.GetPixel(i, j); Color pixel2 = val.GetPixel(i, j); val4.SetPixel(i, j, new Color(pixel.r * (1f - pixel2.a) + pixel2.r * pixel2.a, pixel.g * (1f - pixel2.a) + pixel2.g * pixel2.a, pixel.b * (1f - pixel2.a) + pixel2.b * pixel2.a, Mathf.Clamp01(pixel.a + pixel2.a))); } } val4.Apply(); return Sprite.Create(val4, new Rect(0f, 0f, (float)((Texture)val4).width, (float)((Texture)val4).height), new Vector2(0.5f, 0.5f), 25f, 1u, (SpriteMeshType)1); } public static Sprite CreateItemIconWithBackgroundFromItem(ItemDef itemDef) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)itemDef) && Object.op_Implicit((Object)(object)itemDef.pickupIconSprite)) { return AddItemIconBackgroundToSprite(itemDef.pickupIconSprite, GetItemIconBackgroundTypeFromTier(itemDef.tier)); } return null; } public static Sprite CreateItemIconWithBackgroundFromEquipment(EquipmentDef equipmentDef) { if (Object.op_Implicit((Object)(object)equipmentDef) && Object.op_Implicit((Object)(object)equipmentDef.pickupIconSprite)) { return AddItemIconBackgroundToSprite(equipmentDef.pickupIconSprite, ItemIconBackgroundType.Equipment); } return null; } } [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.1f; 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 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) //IL_00a8: 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.sortMode = (SortMode)2; val.RefreshCandidates(); val.FilterOutGameObject(((Component)this).gameObject); IEnumerable<HurtBox> results = val.GetResults(); HurtBox? obj = results.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: Unkn