using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using AssistManager;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using ClassicItemsReturns.Artifact;
using ClassicItemsReturns.Equipment;
using ClassicItemsReturns.Equipment.EliteEquipment;
using ClassicItemsReturns.Items;
using ClassicItemsReturns.Items.Common;
using ClassicItemsReturns.Items.NoTier;
using ClassicItemsReturns.Items.Rare;
using ClassicItemsReturns.Items.Uncommon;
using ClassicItemsReturns.Modules;
using ClassicItemsReturns.SharedHooks;
using ClassicItemsReturns.Utils;
using ClassicItemsReturns.Utils.Components;
using EntityStates;
using EntityStates.ArtifactShell;
using EntityStates.DeepVoidPortalBattery;
using EntityStates.Drone.DroneWeapon;
using EntityStates.Gup;
using EntityStates.InfiniteTowerSafeWard;
using EntityStates.Interactables.GoldBeacon;
using EntityStates.MeridianEvent;
using EntityStates.Missions.Arena.NullWard;
using EntityStates.Missions.BrotherEncounter;
using EntityStates.Missions.Goldshores;
using EntityStates.Missions.Moon;
using HG;
using HG.Reflection;
using IL.EntityStates;
using IL.RoR2;
using JetBrains.Annotations;
using KinematicCharacterController;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates;
using On.EntityStates.ArtifactShell;
using On.EntityStates.DeepVoidPortalBattery;
using On.EntityStates.Gup;
using On.EntityStates.InfiniteTowerSafeWard;
using On.EntityStates.Interactables.GoldBeacon;
using On.EntityStates.MeridianEvent;
using On.EntityStates.Missions.Arena.NullWard;
using On.EntityStates.Missions.BrotherEncounter;
using On.EntityStates.Missions.Goldshores;
using On.EntityStates.Missions.Moon;
using On.RoR2;
using On.RoR2.UI.MainMenu;
using R2API;
using R2API.Utils;
using RiskOfOptions;
using RiskyMod.Items;
using RiskyMod.Items.Uncommon;
using RoR2;
using RoR2.Artifacts;
using RoR2.Audio;
using RoR2.ContentManagement;
using RoR2.ExpansionManagement;
using RoR2.Items;
using RoR2.Navigation;
using RoR2.Orbs;
using RoR2.Projectile;
using RoR2.UI.MainMenu;
using ShaderSwapper;
using SneedHooks;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: AssemblyInformationalVersion("1.0.0+0295356b0d665079977ae8792e9cbfa92994f637")]
[assembly: AssemblyProduct("ClassicItemsReturns")]
[assembly: AssemblyTitle("ClassicItemsReturns")]
[assembly: AssemblyCompany("ClassicItemsReturns")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
[Microsoft.CodeAnalysis.Embedded]
[CompilerGenerated]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
}
namespace ClassicItemsReturns
{
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.RiskySleeps.ClassicItemsReturns", "Classic Items Returns", "3.6.22")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class ClassicItemsReturnsPlugin : BaseUnityPlugin
{
public const string ModGuid = "com.RiskySleeps.ClassicItemsReturns";
public const string ModName = "Classic Items Returns";
public const string ModVer = "3.6.22";
public const string ModDescription = "Adds items and equipment from Risk of Rain and Risk of Rain Returns.";
public static bool useClassicSprites = false;
public static bool use3dModels = true;
public static bool useUnfinished = false;
public static List<ArtifactBase> Artifacts = new List<ArtifactBase>();
public static List<ItemBase> Items = new List<ItemBase>();
public static List<EquipmentBase> Equipments = new List<EquipmentBase>();
public static List<EliteEquipmentBase> EliteEquipments = new List<EliteEquipmentBase>();
public static SceneDef bazaarScene = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/Base/bazaar/bazaar.asset").WaitForCompletion();
public static ManualLogSource ModLogger;
public const bool debug = true;
public static Action onFinishScanning;
public static PluginInfo PInfo { get; private set; }
public static void ModDebugLog(object data)
{
bool flag = true;
ModLogger.LogMessage(data);
}
private void Awake()
{
use3dModels = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Use 3d Models", true, "Use 3d models instead of sprites.").Value;
useClassicSprites = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Use Classic Sprites", false, "Use the original Risk of Rain sprites instead of the Returns sprites. (Requires Use 3d Models = false)").Value;
useUnfinished = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Enable Unfinished Content", false, "Enables unfinished content that lacks 3d models.").Value;
PInfo = ((BaseUnityPlugin)this).Info;
new PluginContentPack().Initialize();
ModLogger = ((BaseUnityPlugin)this).Logger;
Assets.Init();
SoundBanks.Init();
DLCSupport.Initialize();
ModSupport.CheckForModSupport();
LanguageOverrides.Initialize();
Deployables.Initialize();
Buffs.Initialize();
Orbs.Initialize();
AddToAssembly();
Dots.Initialize();
TakeDamage.Initialize();
OnCharacterDeath.Initialize();
new IsTeleActivatedTracker();
}
private void AddToAssembly()
{
IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes()
where !type.IsAbstract && type.IsSubclassOf(typeof(EquipmentBase))
select type;
List<string> list = new List<string>();
List<EquipmentBase> list2 = new List<EquipmentBase>();
foreach (Type item in enumerable)
{
EquipmentBase equipmentBase = (EquipmentBase)Activator.CreateInstance(item);
if (equipmentBase.ParentEquipmentName != null)
{
list2.Add(equipmentBase);
}
else if (ValidateEquipment(equipmentBase, Equipments))
{
equipmentBase.Init(((BaseUnityPlugin)this).Config);
list.Add(equipmentBase.EquipmentName);
}
}
foreach (EquipmentBase item2 in list2)
{
if (list.Contains(item2.ParentEquipmentName))
{
item2.Init(((BaseUnityPlugin)this).Config);
}
}
IEnumerable<Type> enumerable2 = from type in Assembly.GetExecutingAssembly().GetTypes()
where !type.IsAbstract && type.IsSubclassOf(typeof(EliteEquipmentBase))
select type;
foreach (Type item3 in enumerable2)
{
EliteEquipmentBase eliteEquipmentBase = (EliteEquipmentBase)Activator.CreateInstance(item3);
if (ValidateEliteEquipment(eliteEquipmentBase, EliteEquipments))
{
eliteEquipmentBase.Init(((BaseUnityPlugin)this).Config);
}
}
IEnumerable<Type> enumerable3 = from type in Assembly.GetExecutingAssembly().GetTypes()
where !type.IsAbstract && type.IsSubclassOf(typeof(ItemBase))
select type;
List<string> list3 = new List<string>();
List<ItemBase> list4 = new List<ItemBase>();
foreach (Type item4 in enumerable3)
{
ItemBase itemBase = (ItemBase)Activator.CreateInstance(item4);
if (itemBase.ParentEquipmentName != null || itemBase.ParentItemName != null)
{
list4.Add(itemBase);
}
else if (ValidateItem(itemBase, Items))
{
itemBase.Init(((BaseUnityPlugin)this).Config);
list3.Add(itemBase.ItemName);
}
}
foreach (ItemBase item5 in list4)
{
if (list3.Contains(item5.ParentItemName) || list.Contains(item5.ParentEquipmentName))
{
item5.Init(((BaseUnityPlugin)this).Config);
}
}
IEnumerable<Type> enumerable4 = from type in Assembly.GetExecutingAssembly().GetTypes()
where !type.IsAbstract && type.IsSubclassOf(typeof(ArtifactBase))
select type;
foreach (Type item6 in enumerable4)
{
ArtifactBase artifactBase = (ArtifactBase)Activator.CreateInstance(item6);
if (ValidateArtifact(artifactBase, Artifacts))
{
artifactBase.Init(((BaseUnityPlugin)this).Config);
}
}
onFinishScanning?.Invoke();
}
public bool ValidateArtifact(ArtifactBase artifact, List<ArtifactBase> artifactList)
{
bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Artifact: " + artifact.ArtifactName, "Enable Artifact?", true, "Should this artifact appear for selection?").Value;
if (value)
{
artifactList.Add(artifact);
}
return value;
}
public bool ValidateItem(ItemBase item, List<ItemBase> itemList)
{
string text = "Should this item appear in runs?";
if (item.Unfinished)
{
text = "UNFINISHED! " + text;
}
bool value = ((BaseUnityPlugin)this).Config.Bind<bool>(item.ConfigCategory, "Enable Item?", true, text).Value;
bool flag = item.ItemTags.Contains((ItemTag)4);
bool value2 = ((BaseUnityPlugin)this).Config.Bind<bool>(item.ConfigCategory, "Blacklist Item from AI Use?", flag, "Should the AI not be able to obtain this item?").Value;
if (item.Unfinished && !useUnfinished)
{
return false;
}
if (value)
{
itemList.Add(item);
if (value2)
{
item.AIBlacklisted = true;
}
}
return value;
}
public bool ValidateEquipment(EquipmentBase equipment, List<EquipmentBase> equipmentList)
{
string text = "Should this equipment appear in runs?";
if (equipment.Unfinished)
{
text = "UNFINISHED! " + text;
}
bool value = ((BaseUnityPlugin)this).Config.Bind<bool>(equipment.ConfigCategory, "Enable Equipment?", true, text).Value;
if (equipment.Unfinished && !useUnfinished)
{
return false;
}
if (value)
{
equipmentList.Add(equipment);
return true;
}
return false;
}
public bool ValidateEliteEquipment(EliteEquipmentBase eliteEquipment, List<EliteEquipmentBase> eliteEquipmentList)
{
if (((BaseUnityPlugin)this).Config.Bind<bool>("Equipment: " + eliteEquipment.EliteEquipmentName, "Enable Elite Equipment?", true, "Should this elite equipment appear in runs? If disabled, the associated elite will not appear in runs either.").Value)
{
eliteEquipmentList.Add(eliteEquipment);
return true;
}
return false;
}
}
}
namespace ClassicItemsReturns.Utils
{
public class IsTeleActivatedTracker
{
public delegate void OnTPActivatedDelegate();
public static bool teleporterActivated = false;
public static List<string> alwaysActiveStages = new List<string> { "voidraid", "limbo", "enemiesreturns_outoftime", "solutionalhaunt", "solusweb" };
public static OnTPActivatedDelegate OnTPActivatedActions;
public IsTeleActivatedTracker()
{
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_002b: Expected O, but got Unknown
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Expected O, but got Unknown
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Expected O, but got Unknown
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Expected O, but got Unknown
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Expected O, but got Unknown
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Expected O, but got Unknown
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Expected O, but got Unknown
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a9: Expected O, but got Unknown
//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
//IL_00bb: Expected O, but got Unknown
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Expected O, but got Unknown
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00df: Expected O, but got Unknown
Stage.onStageStartGlobal += Stage_onStageStartGlobal;
ChargingState.OnEnter += new hook_OnEnter(ChargingState_OnEnter);
ChargedState.OnEnter += new hook_OnEnter(ChargedState_OnEnter);
Active.OnEnter += new hook_OnEnter(Active_OnEnter);
Travelling.OnEnter += new hook_OnEnter(Travelling_OnEnter);
BrotherEncounterPhaseBaseState.OnEnter += new hook_OnEnter(BrotherEncounterPhaseBaseState_OnEnter);
ArenaMissionController.BeginRound += new hook_BeginRound(ArenaMissionController_BeginRound);
MoonBatteryActive.OnEnter += new hook_OnEnter(MoonBatteryActive_OnEnter);
StartHurt.OnEnter += new hook_OnEnter(StartHurt_OnEnter);
Charging.OnEnter += new hook_OnEnter(Charging_OnEnter);
GoldshoresBossfight.SpawnBoss += new hook_SpawnBoss(GoldshoresBossfight_SpawnBoss);
MeridianEventStart.OnEnter += new hook_OnEnter(MeridianEventStart_OnEnter1);
}
private void MeridianEventStart_OnEnter1(orig_OnEnter orig, MeridianEventStart self)
{
orig.Invoke(self);
OnTPActivated();
}
private void GoldshoresBossfight_SpawnBoss(orig_SpawnBoss orig, GoldshoresBossfight self)
{
orig.Invoke(self);
OnTPActivated();
}
private void StartHurt_OnEnter(orig_OnEnter orig, StartHurt self)
{
orig.Invoke(self);
OnTPActivated();
}
private void Charging_OnEnter(orig_OnEnter orig, Charging self)
{
orig.Invoke(self);
OnTPActivated();
}
private void MoonBatteryActive_OnEnter(orig_OnEnter orig, MoonBatteryActive self)
{
orig.Invoke(self);
OnTPActivated();
}
private void ArenaMissionController_BeginRound(orig_BeginRound orig, ArenaMissionController self)
{
orig.Invoke(self);
OnTPActivated();
}
private void BrotherEncounterPhaseBaseState_OnEnter(orig_OnEnter orig, BrotherEncounterPhaseBaseState self)
{
orig.Invoke(self);
OnTPActivated();
}
private void ChargedState_OnEnter(orig_OnEnter orig, ChargedState self)
{
orig.Invoke(self);
OnTPActivated();
}
private void Active_OnEnter(orig_OnEnter orig, Active self)
{
orig.Invoke(self);
OnTPActivated();
}
private void ChargingState_OnEnter(orig_OnEnter orig, ChargingState self)
{
orig.Invoke(self);
OnTPActivated();
}
private void Travelling_OnEnter(orig_OnEnter orig, Travelling self)
{
orig.Invoke(self);
teleporterActivated = false;
}
private void Stage_onStageStartGlobal(Stage obj)
{
teleporterActivated = false;
SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene();
if (Object.op_Implicit((Object)(object)sceneDefForCurrentScene) && alwaysActiveStages.Contains(sceneDefForCurrentScene.cachedName))
{
OnTPActivated();
}
}
public static void OnTPActivated()
{
if (!teleporterActivated)
{
teleporterActivated = true;
OnTPActivatedActions?.Invoke();
}
}
}
public static class ItemHelpers
{
public class OverlayPreviewer : MonoBehaviour
{
public enum AnimationCurveType
{
Constant,
Linear,
EaseInAndOut
}
public bool EnableToPreview = false;
public string materialAssetPath = "";
[HideInInspector]
public Material materialInstance;
public bool isAssigned;
public CharacterModel assignedCharacterModel;
public CharacterModel inspectorCharacterModel;
public bool animateShaderAlpha;
public AnimationCurve alphaCurve;
public float constantAnimCurveFloat = 1f;
public AnimationCurveType animationCurveType = AnimationCurveType.Constant;
public float duration = 2f;
public void Update()
{
if (EnableToPreview)
{
EnableToPreview = false;
TemporaryOverlay val = ((Component)((Component)this).gameObject.GetComponent<ModelLocator>().modelTransform).gameObject.AddComponent<TemporaryOverlay>();
val.duration = duration;
val.animateShaderAlpha = animateShaderAlpha;
val.alphaCurve = AnimationCurve.Constant(0f, duration, constantAnimCurveFloat);
val.destroyComponentOnEnd = true;
try
{
val.originalMaterial = Assets.LoadAddressable<Material>(materialAssetPath);
val.AddToCharacerModel(((Component)((Component)this).gameObject.GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>());
}
catch
{
Object.Destroy((Object)(object)val);
Chat.AddMessage("Exception on preview");
}
}
}
}
private static Shader hopooShader = Addressables.LoadAssetAsync<Shader>((object)"RoR2/Base/Shaders/HGStandard.shader").WaitForCompletion();
private static List<Material> cachedMaterials = new List<Material>();
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 void SetupMaterials(GameObject model)
{
//IL_00d7: 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_0124: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_016e: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
Renderer[] componentsInChildren = model.GetComponentsInChildren<Renderer>();
Renderer[] array = componentsInChildren;
foreach (Renderer val in array)
{
bool flag = Object.op_Implicit((Object)(object)val.material.shader) && ((Object)val.material.shader).name == "Standard";
bool flag2 = ((Object)val).name == "UseGlassShader" || ((Object)val).name == "UseGlass2Shader" || ((Object)val).name == "UseGlass3Shader";
if (Object.op_Implicit((Object)(object)val.material) && (flag || flag2))
{
if (((Object)val).name == "UseGlassShader")
{
Debug.Log((object)("ClassicItemsReturns: Swapping material to Infusion Glass material for " + ((Object)model).name));
val.material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Infusion/matInfusionGlass.mat").WaitForCompletion();
}
else if (((Object)val).name == "UseGlass2Shader")
{
Debug.Log((object)("ClassicItemsReturns: Swapping material to Elixir Glass material for " + ((Object)model).name));
val.material = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/HealingPotion/matHealingPotionGlass.mat").WaitForCompletion();
}
else if (((Object)val).name == "UseGlass3Shader")
{
Debug.Log((object)("ClassicItemsReturns: Swapping material to Vending Machine Glass material for " + ((Object)model).name));
val.material = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VendingMachine/matVendingMachineGlass.mat").WaitForCompletion();
}
else
{
val.sharedMaterial = val.sharedMaterial.SetHopooMaterial();
}
}
}
}
public static Sprite LoadItemSprite(string spriteName)
{
Sprite val = Assets.LoadSprite("texIcon3d" + spriteName);
Sprite val2 = Assets.LoadSprite("texIcon" + spriteName);
Sprite val3 = Assets.LoadSprite("texIconClassic" + spriteName);
if (ClassicItemsReturnsPlugin.use3dModels)
{
if (Object.op_Implicit((Object)(object)val))
{
return val;
}
if (Object.op_Implicit((Object)(object)val2))
{
return val2;
}
return val3;
}
if (!ClassicItemsReturnsPlugin.useClassicSprites)
{
if (Object.op_Implicit((Object)(object)val2))
{
return val2;
}
if (Object.op_Implicit((Object)(object)val3))
{
return val3;
}
return val;
}
if (Object.op_Implicit((Object)(object)val3))
{
return val3;
}
if (Object.op_Implicit((Object)(object)val2))
{
return val2;
}
return val;
}
public static Material SetHopooMaterial(this Material tempMat)
{
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_009c: 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_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_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//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)
//IL_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_0120: Unknown result type (might be due to invalid IL or missing references)
//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
//IL_0294: Unknown result type (might be due to invalid IL or missing references)
//IL_023d: Unknown result type (might be due to invalid IL or missing references)
//IL_024b: 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_0275: Unknown result type (might be due to invalid IL or missing references)
if (cachedMaterials.Contains(tempMat))
{
return tempMat;
}
float? num = null;
Color? val = null;
float? num2 = null;
float? num3 = tempMat.GetFloat("_Metallic");
bool flag = tempMat.IsKeywordEnabled("_NORMALMAP");
bool flag2 = tempMat.IsKeywordEnabled("_PARALLAXMAP");
Texture val2 = null;
Vector2 val3 = Vector2.one;
Vector2 val4 = Vector2.zero;
Texture val5 = null;
Vector2 val6 = Vector2.one;
Vector2 val7 = Vector2.zero;
if (flag2)
{
val2 = tempMat.GetTexture("_ParallaxMap");
val3 = tempMat.GetTextureScale("_ParallaxMap");
val4 = tempMat.GetTextureOffset("_ParallaxMap");
num2 = tempMat.GetFloat("_Parallax");
}
if (flag)
{
num = tempMat.GetFloat("_BumpScale");
val5 = tempMat.GetTexture("_BumpMap");
val6 = tempMat.GetTextureScale("_BumpMap");
val7 = tempMat.GetTextureOffset("_BumpMap");
}
if (tempMat.IsKeywordEnabled("_EMISSION"))
{
val = tempMat.GetColor("_EmissionColor");
}
tempMat.shader = hopooShader;
tempMat.SetColor("_Color", tempMat.GetColor("_Color"));
tempMat.SetTexture("_MainTex", tempMat.GetTexture("_MainTex"));
tempMat.SetTexture("_EmTex", tempMat.GetTexture("_EmissionMap"));
tempMat.EnableKeyword("DITHER");
if (num3.HasValue)
{
tempMat.SetFloat("_SpecularStrength", 1f);
}
if (flag2)
{
tempMat.SetTexture("_ParallaxMap", val2);
tempMat.SetTextureScale("_ParallaxMap", val3);
tempMat.SetTextureOffset("_ParallaxMap", val4);
if (num2.HasValue)
{
tempMat.SetFloat("_Parallax", num2.Value);
}
}
if (flag)
{
if (num.HasValue)
{
tempMat.SetFloat("_NormalStrength", num.Value);
}
tempMat.SetTexture("_BumpMap", val5);
tempMat.SetTextureScale("_BumpMap", val6);
tempMat.SetTextureOffset("_BumpMap", val7);
tempMat.SetTexture("_NormalTex", val5);
tempMat.SetTextureScale("_NormalTex", val6);
tempMat.SetTextureOffset("_NormalTex", val7);
}
if (val.HasValue)
{
tempMat.SetColor("_EmColor", val.Value);
tempMat.SetFloat("_EmPower", 1f);
}
if (tempMat.IsKeywordEnabled("NOCULL"))
{
tempMat.SetInt("_Cull", 0);
}
if (tempMat.IsKeywordEnabled("LIMBREMOVAL"))
{
tempMat.SetInt("_LimbRemovalOn", 1);
}
cachedMaterials.Add(tempMat);
return tempMat;
}
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 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 float StackingLinear(int itemCount, float baseValue, float stackValue)
{
return baseValue + stackValue * (float)(itemCount - 1);
}
public static int StackingLinear(int itemCount, int baseValue, int stackValue)
{
return baseValue + stackValue * (itemCount - 1);
}
public static bool TryGetBuffCount(CharacterBody characterBody, BuffDef buffDef, out int buffCount)
{
buffCount = 0;
if (!Object.op_Implicit((Object)(object)characterBody))
{
return false;
}
buffCount = characterBody.GetBuffCount(buffDef);
return buffCount > 0;
}
}
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 class MiscUtils
{
private static GameObject teleportHelperPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/DirectorSpawnProbeHelperPrefab.prefab").WaitForCompletion();
public static Vector3 FindSafeTeleportPosition(Vector3 position, HullClassification hullSize, bool isFlying, float maxDistance, PlacementMode placementMode)
{
//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_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: 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_002f: 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_0033: 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_0048: Expected I4, but got Unknown
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_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_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_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Expected O, but got Unknown
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Expected O, but got Unknown
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
Vector3 result = position;
SpawnCard val = ScriptableObject.CreateInstance<SpawnCard>();
val.hullSize = hullSize;
val.nodeGraphType = (GraphType)(isFlying ? 1 : 0);
val.prefab = teleportHelperPrefab;
float minDistance = 0f;
switch ((int)hullSize)
{
case 0:
minDistance = 4f;
break;
case 1:
minDistance = 8f;
break;
case 2:
minDistance = 16f;
break;
}
GameObject val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, new DirectorPlacementRule
{
placementMode = placementMode,
position = position,
minDistance = minDistance,
maxDistance = maxDistance
}, RoR2Application.rng));
if (Object.op_Implicit((Object)(object)val2))
{
result = val2.transform.position;
Object.Destroy((Object)(object)val2);
}
Object.Destroy((Object)(object)val);
return result;
}
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 void TryRemoveBuff(CharacterBody body, BuffDef buff)
{
if (body.HasBuff(buff))
{
body.RemoveBuff(buff);
}
}
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_0052: 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_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_006c: 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;
}
ClassicItemsReturnsPlugin.ModLogger.LogInfo((object)$"No closest node to be found for XYZ: {position}, returning 0,0,0");
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_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_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_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_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_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_007a: 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_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
Dictionary<string, Vector3> dictionary = new Dictionary<string, Vector3>();
RaycastHit val = default(RaycastHit);
if (!Physics.Raycast(ray, ref val, distance, layerMask, (QueryTriggerInteraction)1))
{
ClassicItemsReturnsPlugin.ModLogger.LogInfo((object)$"GetAimSurfaceAlignmentInfo did not hit anything in the aim direction on the specified layer ({layerMask}).");
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 List<HealthComponent> FindEnemiesInSphere(float radius, Vector3 position, TeamIndex team)
{
//IL_0009: 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_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
int num = 0;
List<HealthComponent> list = new List<HealthComponent>();
Collider[] array = Physics.OverlapSphere(position, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask));
for (int i = 0; i < array.Length; i++)
{
HurtBox component = ((Component)array[i]).GetComponent<HurtBox>();
if (Object.op_Implicit((Object)(object)component))
{
HealthComponent healthComponent = component.healthComponent;
if (Object.op_Implicit((Object)(object)healthComponent) && Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.teamComponent) && healthComponent.body.teamComponent.teamIndex != team && !list.Contains(healthComponent))
{
list.Add(healthComponent);
}
}
}
return list;
}
}
public static class NetworkingHelpers
{
public static T GetObjectFromNetIdValue<T>(uint netIdValue)
{
//IL_002a: 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)
NetworkInstanceId key = default(NetworkInstanceId);
((NetworkInstanceId)(ref key))..ctor(netIdValue);
NetworkIdentity value;
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);
}
}
}
namespace ClassicItemsReturns.Utils.Components
{
public class MaterialControllerComponents
{
public class HGControllerFinder : MonoBehaviour
{
public Renderer Renderer;
public Material Material;
public void Start()
{
if (Object.op_Implicit((Object)(object)Renderer))
{
Material = Renderer.materials[0];
if (Object.op_Implicit((Object)(object)Material))
{
switch (((Object)Material.shader).name)
{
case "Hopoo Games/Deferred/Standard":
{
HGStandardController hGStandardController = ((Component)this).gameObject.AddComponent<HGStandardController>();
hGStandardController.Material = Material;
hGStandardController.Renderer = Renderer;
break;
}
case "Hopoo Games/FX/Cloud Remap":
{
HGCloudRemapController hGCloudRemapController = ((Component)this).gameObject.AddComponent<HGCloudRemapController>();
hGCloudRemapController.Material = Material;
hGCloudRemapController.Renderer = Renderer;
break;
}
case "Hopoo Games/FX/Cloud Intersection Remap":
{
HGIntersectionController hGIntersectionController = ((Component)this).gameObject.AddComponent<HGIntersectionController>();
hGIntersectionController.Material = Material;
hGIntersectionController.Renderer = Renderer;
break;
}
}
}
}
Object.Destroy((Object)(object)this);
}
}
public class HGStandardController : MonoBehaviour
{
public enum _RampInfoEnum
{
TwoTone = 0,
SmoothedTwoTone = 1,
Unlitish = 3,
Subsurface = 4,
Grass = 5
}
public enum _DecalLayerEnum
{
Default,
Environment,
Character,
Misc
}
public enum _CullEnum
{
Off,
Front,
Back
}
public enum _PrintDirectionEnum
{
BottomUp = 0,
TopDown = 1,
BackToFront = 3
}
public Material Material;
public Renderer Renderer;
public string MaterialName;
public bool _EnableCutout;
public Color _Color;
public Texture _MainTex;
public Vector2 _MainTexScale;
public Vector2 _MainTexOffset;
[Range(0f, 5f)]
public float _NormalStrength;
public Texture _NormalTex;
public Vector2 _NormalTexScale;
public Vector2 _NormalTexOffset;
public Color _EmColor;
public Texture _EmTex;
[Range(0f, 10f)]
public float _EmPower;
[Range(0f, 1f)]
public float _Smoothness;
public bool _IgnoreDiffuseAlphaForSpeculars;
public _RampInfoEnum _RampChoice;
public _DecalLayerEnum _DecalLayer;
[Range(0f, 1f)]
public float _SpecularStrength;
[Range(0.1f, 20f)]
public float _SpecularExponent;
public _CullEnum _Cull_Mode;
public bool _EnableDither;
[Range(0f, 1f)]
public float _FadeBias;
public bool _EnableFresnelEmission;
public Texture _FresnelRamp;
[Range(0.1f, 20f)]
public float _FresnelPower;
public Texture _FresnelMask;
[Range(0f, 20f)]
public float _FresnelBoost;
public bool _EnablePrinting;
[Range(-25f, 25f)]
public float _SliceHeight;
[Range(0f, 10f)]
public float _PrintBandHeight;
[Range(0f, 1f)]
public float _PrintAlphaDepth;
public Texture _PrintAlphaTexture;
public Vector2 _PrintAlphaTextureScale;
public Vector2 _PrintAlphaTextureOffset;
[Range(0f, 10f)]
public float _PrintColorBoost;
[Range(0f, 4f)]
public float _PrintAlphaBias;
[Range(0f, 1f)]
public float _PrintEmissionToAlbedoLerp;
public _PrintDirectionEnum _PrintDirection;
public Texture _PrintRamp;
[Range(-10f, 10f)]
public float _EliteBrightnessMin;
[Range(-10f, 10f)]
public float _EliteBrightnessMax;
public bool _EnableSplatmap;
public bool _UseVertexColorsInstead;
[Range(0f, 1f)]
public float _BlendDepth;
public Texture _SplatmapTex;
public Vector2 _SplatmapTexScale;
public Vector2 _SplatmapTexOffset;
[Range(0f, 20f)]
public float _SplatmapTileScale;
public Texture _GreenChannelTex;
public Texture _GreenChannelNormalTex;
[Range(0f, 1f)]
public float _GreenChannelSmoothness;
[Range(-2f, 5f)]
public float _GreenChannelBias;
public Texture _BlueChannelTex;
public Texture _BlueChannelNormalTex;
[Range(0f, 1f)]
public float _BlueChannelSmoothness;
[Range(-2f, 5f)]
public float _BlueChannelBias;
public bool _EnableFlowmap;
public Texture _FlowTexture;
public Texture _FlowHeightmap;
public Vector2 _FlowHeightmapScale;
public Vector2 _FlowHeightmapOffset;
public Texture _FlowHeightRamp;
public Vector2 _FlowHeightRampScale;
public Vector2 _FlowHeightRampOffset;
[Range(-1f, 1f)]
public float _FlowHeightBias;
[Range(0.1f, 20f)]
public float _FlowHeightPower;
[Range(0.1f, 20f)]
public float _FlowEmissionStrength;
[Range(0f, 15f)]
public float _FlowSpeed;
[Range(0f, 5f)]
public float _MaskFlowStrength;
[Range(0f, 5f)]
public float _NormalFlowStrength;
[Range(0f, 10f)]
public float _FlowTextureScaleFactor;
public bool _EnableLimbRemoval;
public void Start()
{
GrabMaterialValues();
}
public void GrabMaterialValues()
{
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_0078: 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_00ba: 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_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
//IL_02cd: Unknown result type (might be due to invalid IL or missing references)
//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
//IL_02e3: 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_03ec: Unknown result type (might be due to invalid IL or missing references)
//IL_03f1: Unknown result type (might be due to invalid IL or missing references)
//IL_0402: Unknown result type (might be due to invalid IL or missing references)
//IL_0407: Unknown result type (might be due to invalid IL or missing references)
//IL_0520: Unknown result type (might be due to invalid IL or missing references)
//IL_0525: Unknown result type (might be due to invalid IL or missing references)
//IL_0536: Unknown result type (might be due to invalid IL or missing references)
//IL_053b: Unknown result type (might be due to invalid IL or missing references)
//IL_0562: Unknown result type (might be due to invalid IL or missing references)
//IL_0567: Unknown result type (might be due to invalid IL or missing references)
//IL_0578: Unknown result type (might be due to invalid IL or missing references)
//IL_057d: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)Material))
{
_EnableCutout = Material.IsKeywordEnabled("CUTOUT");
_Color = Material.GetColor("_Color");
_MainTex = Material.GetTexture("_MainTex");
_MainTexScale = Material.GetTextureScale("_MainTex");
_MainTexOffset = Material.GetTextureOffset("_MainTex");
_NormalStrength = Material.GetFloat("_NormalStrength");
_NormalTex = Material.GetTexture("_NormalTex");
_NormalTexScale = Material.GetTextureScale("_NormalTex");
_NormalTexOffset = Material.GetTextureOffset("_NormalTex");
_EmColor = Material.GetColor("_EmColor");
_EmTex = Material.GetTexture("_EmTex");
_EmPower = Material.GetFloat("_EmPower");
_Smoothness = Material.GetFloat("_Smoothness");
_IgnoreDiffuseAlphaForSpeculars = Material.IsKeywordEnabled("FORCE_SPEC");
_RampChoice = (_RampInfoEnum)Material.GetFloat("_RampInfo");
_DecalLayer = (_DecalLayerEnum)Material.GetFloat("_DecalLayer");
_SpecularStrength = Material.GetFloat("_SpecularStrength");
_SpecularExponent = Material.GetFloat("_SpecularExponent");
_Cull_Mode = (_CullEnum)Material.GetFloat("_Cull");
_EnableDither = Material.IsKeywordEnabled("DITHER");
_FadeBias = Material.GetFloat("_FadeBias");
_EnableFresnelEmission = Material.IsKeywordEnabled("FRESNEL_EMISSION");
_FresnelRamp = Material.GetTexture("_FresnelRamp");
_FresnelPower = Material.GetFloat("_FresnelPower");
_FresnelMask = Material.GetTexture("_FresnelMask");
_FresnelBoost = Material.GetFloat("_FresnelBoost");
_EnablePrinting = Material.IsKeywordEnabled("PRINT_CUTOFF");
_SliceHeight = Material.GetFloat("_SliceHeight");
_PrintBandHeight = Material.GetFloat("_SliceBandHeight");
_PrintAlphaDepth = Material.GetFloat("_SliceAlphaDepth");
_PrintAlphaTexture = Material.GetTexture("_SliceAlphaTex");
_PrintAlphaTextureScale = Material.GetTextureScale("_SliceAlphaTex");
_PrintAlphaTextureOffset = Material.GetTextureOffset("_SliceAlphaTex");
_PrintColorBoost = Material.GetFloat("_PrintBoost");
_PrintAlphaBias = Material.GetFloat("_PrintBias");
_PrintEmissionToAlbedoLerp = Material.GetFloat("_PrintEmissionToAlbedoLerp");
_PrintDirection = (_PrintDirectionEnum)Material.GetFloat("_PrintDirection");
_PrintRamp = Material.GetTexture("_PrintRamp");
_EliteBrightnessMin = Material.GetFloat("_EliteBrightnessMin");
_EliteBrightnessMax = Material.GetFloat("_EliteBrightnessMax");
_EnableSplatmap = Material.IsKeywordEnabled("SPLATMAP");
_UseVertexColorsInstead = Material.IsKeywordEnabled("USE_VERTEX_COLORS");
_BlendDepth = Material.GetFloat("_Depth");
_SplatmapTex = Material.GetTexture("_SplatmapTex");
_SplatmapTexScale = Material.GetTextureScale("_SplatmapTex");
_SplatmapTexOffset = Material.GetTextureOffset("_SplatmapTex");
_SplatmapTileScale = Material.GetFloat("_SplatmapTileScale");
_GreenChannelTex = Material.GetTexture("_GreenChannelTex");
_GreenChannelNormalTex = Material.GetTexture("_GreenChannelNormalTex");
_GreenChannelSmoothness = Material.GetFloat("_GreenChannelSmoothness");
_GreenChannelBias = Material.GetFloat("_GreenChannelBias");
_BlueChannelTex = Material.GetTexture("_BlueChannelTex");
_BlueChannelNormalTex = Material.GetTexture("_BlueChannelNormalTex");
_BlueChannelSmoothness = Material.GetFloat("_BlueChannelSmoothness");
_BlueChannelBias = Material.GetFloat("_BlueChannelBias");
_EnableFlowmap = Material.IsKeywordEnabled("FLOWMAP");
_FlowTexture = Material.GetTexture("_FlowTex");
_FlowHeightmap = Material.GetTexture("_FlowHeightmap");
_FlowHeightmapScale = Material.GetTextureScale("_FlowHeightmap");
_FlowHeightmapOffset = Material.GetTextureOffset("_FlowHeightmap");
_FlowHeightRamp = Material.GetTexture("_FlowHeightRamp");
_FlowHeightRampScale = Material.GetTextureScale("_FlowHeightRamp");
_FlowHeightRampOffset = Material.GetTextureOffset("_FlowHeightRamp");
_FlowHeightBias = Material.GetFloat("_FlowHeightBias");
_FlowHeightPower = Material.GetFloat("_FlowHeightPower");
_FlowEmissionStrength = Material.GetFloat("_FlowEmissionStrength");
_FlowSpeed = Material.GetFloat("_FlowSpeed");
_MaskFlowStrength = Material.GetFloat("_FlowMaskStrength");
_NormalFlowStrength = Material.GetFloat("_FlowNormalStrength");
_FlowTextureScaleFactor = Material.GetFloat("_FlowTextureScaleFactor");
_EnableLimbRemoval = Material.IsKeywordEnabled("LIMBREMOVAL");
MaterialName = ((Object)Material).name;
}
}
public void Update()
{
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_013d: Unknown result type (might be due to invalid IL or missing references)
//IL_0154: Unknown result type (might be due to invalid IL or missing references)
//IL_0182: Unknown result type (might be due to invalid IL or missing references)
//IL_0427: Unknown result type (might be due to invalid IL or missing references)
//IL_043e: Unknown result type (might be due to invalid IL or missing references)
//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
//IL_05c5: Unknown result type (might be due to invalid IL or missing references)
//IL_07e6: Unknown result type (might be due to invalid IL or missing references)
//IL_07fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0854: Unknown result type (might be due to invalid IL or missing references)
//IL_086b: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)Material))
{
if (((Object)Material).name != MaterialName && Object.op_Implicit((Object)(object)Renderer))
{
GrabMaterialValues();
PutMaterialIntoMeshRenderer(Renderer, Material);
}
SetShaderKeywordBasedOnBool(_EnableCutout, Material, "CUTOUT");
Material.SetColor("_Color", _Color);
if (Object.op_Implicit((Object)(object)_MainTex))
{
Material.SetTexture("_MainTex", _MainTex);
Material.SetTextureScale("_MainTex", _MainTexScale);
Material.SetTextureOffset("_MainTex", _MainTexOffset);
}
else
{
Material.SetTexture("_MainTex", (Texture)null);
}
Material.SetFloat("_NormalStrength", _NormalStrength);
if (Object.op_Implicit((Object)(object)_NormalTex))
{
Material.SetTexture("_NormalTex", _NormalTex);
Material.SetTextureScale("_NormalTex", _NormalTexScale);
Material.SetTextureOffset("_NormalTex", _NormalTexOffset);
}
else
{
Material.SetTexture("_NormalTex", (Texture)null);
}
Material.SetColor("_EmColor", _EmColor);
if (Object.op_Implicit((Object)(object)_EmTex))
{
Material.SetTexture("_EmTex", _EmTex);
}
else
{
Material.SetTexture("_EmTex", (Texture)null);
}
Material.SetFloat("_EmPower", _EmPower);
Material.SetFloat("_Smoothness", _Smoothness);
SetShaderKeywordBasedOnBool(_IgnoreDiffuseAlphaForSpeculars, Material, "FORCE_SPEC");
Material.SetFloat("_RampInfo", Convert.ToSingle(_RampChoice));
Material.SetFloat("_DecalLayer", Convert.ToSingle(_DecalLayer));
Material.SetFloat("_SpecularStrength", _SpecularStrength);
Material.SetFloat("_SpecularExponent", _SpecularExponent);
Material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode));
SetShaderKeywordBasedOnBool(_EnableDither, Material, "DITHER");
Material.SetFloat("_FadeBias", _FadeBias);
SetShaderKeywordBasedOnBool(_EnableFresnelEmission, Material, "FRESNEL_EMISSION");
if (Object.op_Implicit((Object)(object)_FresnelRamp))
{
Material.SetTexture("_FresnelRamp", _FresnelRamp);
}
else
{
Material.SetTexture("_FresnelRamp", (Texture)null);
}
Material.SetFloat("_FresnelPower", _FresnelPower);
if (Object.op_Implicit((Object)(object)_FresnelMask))
{
Material.SetTexture("_FresnelMask", _FresnelMask);
}
else
{
Material.SetTexture("_FresnelMask", (Texture)null);
}
Material.SetFloat("_FresnelBoost", _FresnelBoost);
SetShaderKeywordBasedOnBool(_EnablePrinting, Material, "PRINT_CUTOFF");
Material.SetFloat("_SliceHeight", _SliceHeight);
Material.SetFloat("_SliceBandHeight", _PrintBandHeight);
Material.SetFloat("_SliceAlphaDepth", _PrintAlphaDepth);
if (Object.op_Implicit((Object)(object)_PrintAlphaTexture))
{
Material.SetTexture("_SliceAlphaTex", _PrintAlphaTexture);
Material.SetTextureScale("_SliceAlphaTex", _PrintAlphaTextureScale);
Material.SetTextureOffset("_SliceAlphaTex", _PrintAlphaTextureOffset);
}
else
{
Material.SetTexture("_SliceAlphaTex", (Texture)null);
}
Material.SetFloat("_PrintBoost", _PrintColorBoost);
Material.SetFloat("_PrintBias", _PrintAlphaBias);
Material.SetFloat("_PrintEmissionToAlbedoLerp", _PrintEmissionToAlbedoLerp);
Material.SetFloat("_PrintDirection", Convert.ToSingle(_PrintDirection));
if (Object.op_Implicit((Object)(object)_PrintRamp))
{
Material.SetTexture("_PrintRamp", _PrintRamp);
}
else
{
Material.SetTexture("_PrintRamp", (Texture)null);
}
Material.SetFloat("_EliteBrightnessMin", _EliteBrightnessMin);
Material.SetFloat("_EliteBrightnessMax", _EliteBrightnessMax);
SetShaderKeywordBasedOnBool(_EnableSplatmap, Material, "SPLATMAP");
SetShaderKeywordBasedOnBool(_UseVertexColorsInstead, Material, "USE_VERTEX_COLORS");
Material.SetFloat("_Depth", _BlendDepth);
if (Object.op_Implicit((Object)(object)_SplatmapTex))
{
Material.SetTexture("_SplatmapTex", _SplatmapTex);
Material.SetTextureScale("_SplatmapTex", _SplatmapTexScale);
Material.SetTextureOffset("_SplatmapTex", _SplatmapTexOffset);
}
else
{
Material.SetTexture("_SplatmapTex", (Texture)null);
}
Material.SetFloat("_SplatmapTileScale", _SplatmapTileScale);
if (Object.op_Implicit((Object)(object)_GreenChannelTex))
{
Material.SetTexture("_GreenChannelTex", _GreenChannelTex);
}
else
{
Material.SetTexture("_GreenChannelTex", (Texture)null);
}
if (Object.op_Implicit((Object)(object)_GreenChannelNormalTex))
{
Material.SetTexture("_GreenChannelNormalTex", _GreenChannelNormalTex);
}
else
{
Material.SetTexture("_GreenChannelNormalTex", (Texture)null);
}
Material.SetFloat("_GreenChannelSmoothness", _GreenChannelSmoothness);
Material.SetFloat("_GreenChannelBias", _GreenChannelBias);
if (Object.op_Implicit((Object)(object)_BlueChannelTex))
{
Material.SetTexture("_BlueChannelTex", _BlueChannelTex);
}
else
{
Material.SetTexture("_BlueChannelTex", (Texture)null);
}
if (Object.op_Implicit((Object)(object)_BlueChannelNormalTex))
{
Material.SetTexture("_BlueChannelNormalTex", _BlueChannelNormalTex);
}
else
{
Material.SetTexture("_BlueChannelNormalTex", (Texture)null);
}
Material.SetFloat("_BlueChannelSmoothness", _BlueChannelSmoothness);
Material.SetFloat("_BlueChannelBias", _BlueChannelBias);
SetShaderKeywordBasedOnBool(_EnableFlowmap, Material, "FLOWMAP");
if (Object.op_Implicit((Object)(object)_FlowTexture))
{
Material.SetTexture("_FlowTex", _FlowTexture);
}
else
{
Material.SetTexture("_FlowTex", (Texture)null);
}
if (Object.op_Implicit((Object)(object)_FlowHeightmap))
{
Material.SetTexture("_FlowHeightmap", _FlowHeightmap);
Material.SetTextureScale("_FlowHeightmap", _FlowHeightmapScale);
Material.SetTextureOffset("_FlowHeightmap", _FlowHeightmapOffset);
}
else
{
Material.SetTexture("_FlowHeightmap", (Texture)null);
}
if (Object.op_Implicit((Object)(object)_FlowHeightRamp))
{
Material.SetTexture("_FlowHeightRamp", _FlowHeightRamp);
Material.SetTextureScale("_FlowHeightRamp", _FlowHeightRampScale);
Material.SetTextureOffset("_FlowHeightRamp", _FlowHeightRampOffset);
}
else
{
Material.SetTexture("_FlowHeightRamp", (Texture)null);
}
Material.SetFloat("_FlowHeightBias", _FlowHeightBias);
Material.SetFloat("_FlowHeightPower", _FlowHeightPower);
Material.SetFloat("_FlowEmissionStrength", _FlowEmissionStrength);
Material.SetFloat("_FlowSpeed", _FlowSpeed);
Material.SetFloat("_FlowMaskStrength", _MaskFlowStrength);
Material.SetFloat("_FlowNormalStrength", _NormalFlowStrength);
Material.SetFloat("_FlowTextureScaleFactor", _FlowTextureScaleFactor);
SetShaderKeywordBasedOnBool(_EnableLimbRemoval, Material, "LIMBREMOVAL");
}
}
}
public class HGCloudRemapController : MonoBehaviour
{
public enum _SrcBlendFloatEnum
{
Zero,
One,
DstColor,
SrcColor,
OneMinusDstColor,
SrcAlpha,
OneMinusSrcColor,
DstAlpha,
OneMinusDstAlpha,
SrcAlphaSaturate,
OneMinusSrcAlpha
}
public enum _DstBlendFloatEnum
{
Zero,
One,
DstColor,
SrcColor,
OneMinusDstColor,
SrcAlpha,
OneMinusSrcColor,
DstAlpha,
OneMinusDstAlpha,
SrcAlphaSaturate,
OneMinusSrcAlpha
}
public enum _CullEnum
{
Off,
Front,
Back
}
public enum _ZTestEnum
{
Disabled,
Never,
Less,
Equal,
LessEqual,
Greater,
NotEqual,
GreaterEqual,
Always
}
public Material Material;
public Renderer Renderer;
public string MaterialName;
public _SrcBlendFloatEnum _Source_Blend_Mode;
public _DstBlendFloatEnum _Destination_Blend_Mode;
public int _InternalSimpleBlendMode;
public Color _Tint;
public bool _DisableRemapping;
public Texture _MainTex;
public Vector2 _MainTexScale;
public Vector2 _MainTexOffset;
public Texture _RemapTex;
public Vector2 _RemapTexScale;
public Vector2 _RemapTexOffset;
[Range(0f, 2f)]
public float _SoftFactor;
[Range(1f, 20f)]
public float _BrightnessBoost;
[Range(0f, 20f)]
public float _AlphaBoost;
[Range(0f, 1f)]
public float _AlphaBias;
public bool _UseUV1;
public bool _FadeWhenNearCamera;
[Range(0f, 1f)]
public float _FadeCloseDistance;
public _CullEnum _Cull_Mode;
public _ZTestEnum _ZTest_Mode;
[Range(-10f, 10f)]
public float _DepthOffset;
public bool _CloudRemapping;
public bool _DistortionClouds;
[Range(-2f, 2f)]
public float _DistortionStrength;
public Texture _Cloud1Tex;
public Vector2 _Cloud1TexScale;
public Vector2 _Cloud1TexOffset;
public Texture _Cloud2Tex;
public Vector2 _Cloud2TexScale;
public Vector2 _Cloud2TexOffset;
public Vector4 _CutoffScroll;
public bool _VertexColors;
public bool _LuminanceForVertexAlpha;
public bool _LuminanceForTextureAlpha;
public bool _VertexOffset;
public bool _FresnelFade;
public bool _SkyboxOnly;
[Range(-20f, 20f)]
public float _FresnelPower;
[Range(0f, 3f)]
public float _VertexOffsetAmount;
public void Start()
{
GrabMaterialValues();
}
public void GrabMaterialValues()
{
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_024b: Unknown result type (might be due to invalid IL or missing references)
//IL_0250: Unknown result type (might be due to invalid IL or missing references)
//IL_0261: Unknown result type (might be due to invalid IL or missing references)
//IL_0266: Unknown result type (might be due to invalid IL or missing references)
//IL_028d: Unknown result type (might be due to invalid IL or missing references)
//IL_0292: Unknown result type (might be due to invalid IL or missing references)
//IL_02a3: 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_02b9: Unknown result type (might be due to invalid IL or missing references)
//IL_02be: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)Material))
{
_Source_Blend_Mode = (_SrcBlendFloatEnum)Material.GetFloat("_SrcBlend");
_Destination_Blend_Mode = (_DstBlendFloatEnum)Material.GetFloat("_DstBlend");
_InternalSimpleBlendMode = (int)Material.GetFloat("_InternalSimpleBlendMode");
_Tint = Material.GetColor("_TintColor");
_DisableRemapping = Material.IsKeywordEnabled("DISABLEREMAP");
_MainTex = Material.GetTexture("_MainTex");
_MainTexScale = Material.GetTextureScale("_MainTex");
_MainTexOffset = Material.GetTextureOffset("_MainTex");
_RemapTex = Material.GetTexture("_RemapTex");
_RemapTexScale = Material.GetTextureScale("_RemapTex");
_RemapTexOffset = Material.GetTextureOffset("_RemapTex");
_SoftFactor = Material.GetFloat("_InvFade");
_BrightnessBoost = Material.GetFloat("_Boost");
_AlphaBoost = Material.GetFloat("_AlphaBoost");
_AlphaBias = Material.GetFloat("_AlphaBias");
_UseUV1 = Material.IsKeywordEnabled("USE_UV1");
_FadeWhenNearCamera = Material.IsKeywordEnabled("FADECLOSE");
_FadeCloseDistance = Material.GetFloat("_FadeCloseDistance");
_Cull_Mode = (_CullEnum)Material.GetFloat("_Cull");
_ZTest_Mode = (_ZTestEnum)Material.GetFloat("_ZTest");
_DepthOffset = Material.GetFloat("_DepthOffset");
_CloudRemapping = Material.IsKeywordEnabled("USE_CLOUDS");
_DistortionClouds = Material.IsKeywordEnabled("CLOUDOFFSET");
_DistortionStrength = Material.GetFloat("_DistortionStrength");
_Cloud1Tex = Material.GetTexture("_Cloud1Tex");
_Cloud1TexScale = Material.GetTextureScale("_Cloud1Tex");
_Cloud1TexOffset = Material.GetTextureOffset("_Cloud1Tex");
_Cloud2Tex = Material.GetTexture("_Cloud2Tex");
_Cloud2TexScale = Material.GetTextureScale("_Cloud2Tex");
_Cloud2TexOffset = Material.GetTextureOffset("_Cloud2Tex");
_CutoffScroll = Material.GetVector("_CutoffScroll");
_VertexColors = Material.IsKeywordEnabled("VERTEXCOLOR");
_LuminanceForVertexAlpha = Material.IsKeywordEnabled("VERTEXALPHA");
_LuminanceForTextureAlpha = Material.IsKeywordEnabled("CALCTEXTUREALPHA");
_VertexOffset = Material.IsKeywordEnabled("VERTEXOFFSET");
_FresnelFade = Material.IsKeywordEnabled("FRESNEL");
_SkyboxOnly = Material.IsKeywordEnabled("SKYBOX_ONLY");
_FresnelPower = Material.GetFloat("_FresnelPower");
_VertexOffsetAmount = Material.GetFloat("_OffsetAmount");
MaterialName = ((Object)Material).name;
}
}
public void Update()
{
//IL_00bf: 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_012b: Unknown result type (might be due to invalid IL or missing references)
//IL_0180: Unknown result type (might be due to invalid IL or missing references)
//IL_0197: Unknown result type (might be due to invalid IL or missing references)
//IL_032d: Unknown result type (might be due to invalid IL or missing references)
//IL_0344: Unknown result type (might be due to invalid IL or missing references)
//IL_039b: Unknown result type (might be due to invalid IL or missing references)
//IL_03b2: Unknown result type (might be due to invalid IL or missing references)
//IL_03e0: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)Material))
{
if (((Object)Material).name != MaterialName && Object.op_Implicit((Object)(object)Renderer))
{
GrabMaterialValues();
PutMaterialIntoMeshRenderer(Renderer, Material);
}
Material.SetFloat("_SrcBlend", Convert.ToSingle(_Source_Blend_Mode));
Material.SetFloat("_DstBlend", Convert.ToSingle(_Destination_Blend_Mode));
Material.SetFloat("_InternalSimpleBlendMode", (float)_InternalSimpleBlendMode);
Material.SetColor("_TintColor", _Tint);
SetShaderKeywordBasedOnBool(_DisableRemapping, Material, "DISABLEREMAP");
if (Object.op_Implicit((Object)(object)_MainTex))
{
Material.SetTexture("_MainTex", _MainTex);
Material.SetTextureScale("_MainTex", _MainTexScale);
Material.SetTextureOffset("_MainTex", _MainTexOffset);
}
else
{
Material.SetTexture("_MainTex", (Texture)null);
}
if (Object.op_Implicit((Object)(object)_RemapTex))
{
Material.SetTexture("_RemapTex", _RemapTex);
Material.SetTextureScale("_RemapTex", _RemapTexScale);
Material.SetTextureOffset("_RemapTex", _RemapTexOffset);
}
else
{
Material.SetTexture("_RemapTex", (Texture)null);
}
Material.SetFloat("_InvFade", _SoftFactor);
Material.SetFloat("_Boost", _BrightnessBoost);
Material.SetFloat("_AlphaBoost", _AlphaBoost);
Material.SetFloat("_AlphaBias", _AlphaBias);
SetShaderKeywordBasedOnBool(_UseUV1, Material, "USE_UV1");
SetShaderKeywordBasedOnBool(_FadeWhenNearCamera, Material, "FADECLOSE");
Material.SetFloat("_FadeCloseDistance", _FadeCloseDistance);
Material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode));
Material.SetFloat("_ZTest", Convert.ToSingle(_ZTest_Mode));
Material.SetFloat("_DepthOffset", _DepthOffset);
SetShaderKeywordBasedOnBool(_CloudRemapping, Material, "USE_CLOUDS");
SetShaderKeywordBasedOnBool(_DistortionClouds, Material, "CLOUDOFFSET");
Material.SetFloat("_DistortionStrength", _DistortionStrength);
if (Object.op_Implicit((Object)(object)_Cloud1Tex))
{
Material.SetTexture("_Cloud1Tex", _Cloud1Tex);
Material.SetTextureScale("_Cloud1Tex", _Cloud1TexScale);
Material.SetTextureOffset("_Cloud1Tex", _Cloud1TexOffset);
}
else
{
Material.SetTexture("_Cloud1Tex", (Texture)null);
}
if (Object.op_Implicit((Object)(object)_Cloud2Tex))
{
Material.SetTexture("_Cloud2Tex", _Cloud2Tex);
Material.SetTextureScale("_Cloud2Tex", _Cloud2TexScale);
Material.SetTextureOffset("_Cloud2Tex", _Cloud2TexOffset);
}
else
{
Material.SetTexture("_Cloud2Tex", (Texture)null);
}
Material.SetVector("_CutoffScroll", _CutoffScroll);
SetShaderKeywordBasedOnBool(_VertexColors, Material, "VERTEXCOLOR");
SetShaderKeywordBasedOnBool(_LuminanceForVertexAlpha, Material, "VERTEXALPHA");
SetShaderKeywordBasedOnBool(_LuminanceForTextureAlpha, Material, "CALCTEXTUREALPHA");
SetShaderKeywordBasedOnBool(_VertexOffset, Material, "VERTEXOFFSET");
SetShaderKeywordBasedOnBool(_FresnelFade, Material, "FRESNEL");
SetShaderKeywordBasedOnBool(_SkyboxOnly, Material, "SKYBOX_ONLY");
Material.SetFloat("_FresnelPower", _FresnelPower);
Material.SetFloat("_OffsetAmount", _VertexOffsetAmount);
}
}
}
public class HGIntersectionController : MonoBehaviour
{
public enum _SrcBlendFloatEnum
{
Zero,
One,
DstColor,
SrcColor,
OneMinusDstColor,
SrcAlpha,
OneMinusSrcColor,
DstAlpha,
OneMinusDstAlpha,
SrcAlphaSaturate,
OneMinusSrcAlpha
}
public enum _DstBlendFloatEnum
{
Zero,
One,
DstColor,
SrcColor,
OneMinusDstColor,
SrcAlpha,
OneMinusSrcColor,
DstAlpha,
OneMinusDstAlpha,
SrcAlphaSaturate,
OneMinusSrcAlpha
}
public enum _CullEnum
{
Off,
Front,
Back
}
public Material Material;
public Renderer Renderer;
public string MaterialName;
public _SrcBlendFloatEnum _Source_Blend_Mode;
public _DstBlendFloatEnum _Destination_Blend_Mode;
public Color _Tint;
public Texture _MainTex;
public Vector2 _MainTexScale;
public Vector2 _MainTexOffset;
public Texture _Cloud1Tex;
public Vector2 _Cloud1TexScale;
public Vector2 _Cloud1TexOffset;
public Texture _Cloud2Tex;
public Vector2 _Cloud2TexScale;
public Vector2 _Cloud2TexOffset;
public Texture _RemapTex;
public Vector2 _RemapTexScale;
public Vector2 _RemapTexOffset;
public Vector4 _CutoffScroll;
[Range(0f, 30f)]
public float _SoftFactor;
[Range(0.1f, 20f)]
public float _SoftPower;
[Range(0f, 5f)]
public float _BrightnessBoost;
[Range(0.1f, 20f)]
public float _RimPower;
[Range(0f, 5f)]
public float _RimStrength;
[Range(0f, 20f)]
public float _AlphaBoost;
[Range(0f, 20f)]
public float _IntersectionStrength;
public _CullEnum _Cull_Mode;
public bool _FadeFromVertexColorsOn;
public bool _EnableTriplanarProjectionsForClouds;
public void Start()
{
GrabMaterialValues();
}
public void GrabMaterialValues()
{
//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_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: 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_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: 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)
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: Unknown result type (might be due to invalid IL or missing references)
//IL_0145: Unknown result type (might be due to invalid IL or missing references)
//IL_0156: Unknown result type (might be due to invalid IL or missing references)
//IL_015b: Unknown result type (might be due to invalid IL or missing references)
//IL_016c: 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)
if (Object.op_Implicit((Object)(object)Material))
{
_Source_Blend_Mode = (_SrcBlendFloatEnum)Material.GetFloat("_SrcBlendFloat");
_Destination_Blend_Mode = (_DstBlendFloatEnum)Material.GetFloat("_DstBlendFloat");
_Tint = Material.GetColor("_TintColor");
_MainTex = Material.GetTexture("_MainTex");
_MainTexScale = Material.GetTextureScale("_MainTex");
_MainTexOffset = Material.GetTextureOffset("_MainTex");
_Cloud1Tex = Material.GetTexture("_Cloud1Tex");
_Cloud1TexScale = Material.GetTextureScale("_Cloud1Tex");
_Cloud1TexOffset = Material.GetTextureOffset("_Cloud1Tex");
_Cloud2Tex = Material.GetTexture("_Cloud2Tex");
_Cloud2TexScale = Material.GetTextureScale("_Cloud2Tex");
_Cloud2TexOffset = Material.GetTextureOffset("_Cloud2Tex");
_RemapTex = Material.GetTexture("_RemapTex");
_RemapTexScale = Material.GetTextureScale("_RemapTex");
_RemapTexOffset = Material.GetTextureOffset("_RemapTex");
_CutoffScroll = Material.GetVector("_CutoffScroll");
_SoftFactor = Material.GetFloat("_InvFade");
_SoftPower = Material.GetFloat("_SoftPower");
_BrightnessBoost = Material.GetFloat("_Boost");
_RimPower = Material.GetFloat("_RimPower");
_RimStrength = Material.GetFloat("_RimStrength");
_AlphaBoost = Material.GetFloat("_AlphaBoost");
_IntersectionStrength = Material.GetFloat("_IntersectionStrength");
_Cull_Mode = (_CullEnum)Material.GetFloat("_Cull");
_FadeFromVertexColorsOn = Material.IsKeywordEnabled("FADE_FROM_VERTEX_COLORS");
_EnableTriplanarProjectionsForClouds = Material.IsKeywordEnabled("TRIPLANAR");
MaterialName = ((Object)Material).name;
}
}
public void Update()
{
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0151: Unknown result type (might be due to invalid IL or missing references)
//IL_0168: Unknown result type (might be due to invalid IL or missing references)
//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
//IL_022d: Unknown result type (might be due to invalid IL or missing references)
//IL_0244: Unknown result type (might be due to invalid IL or missing references)
//IL_0272: Unknown result type (might be due to invalid IL or missing references)
if (Object.op_Implicit((Object)(object)Material))
{
if (((Object)Material).name != MaterialName && Object.op_Implicit((Object)(object)Renderer))
{
GrabMaterialValues();
PutMaterialIntoMeshRenderer(Renderer, Material);
}
Material.SetFloat("_SrcBlendFloat", Convert.ToSingle(_Source_Blend_Mode));
Material.SetFloat("_DstBlendFloat", Convert.ToSingle(_Destination_Blend_Mode));
Material.SetColor("_TintColor", _Tint);
if (Object.op_Implicit((Object)(object)_MainTex))
{
Material.SetTexture("_MainTex", _MainTex);
Material.SetTextureScale("_MainTex", _MainTexScale);
Material.SetTextureOffset("_MainTex", _MainTexOffset);
}
else
{
Material.SetTexture("_MainTex", (Texture)null);
}
if (Object.op_Implicit((Object)(object)_Cloud1Tex))
{
Material.SetTexture("_Cloud1Tex", _Cloud1Tex);
Material.SetTextureScale("_Cloud1Tex", _Cloud1TexScale);
Material.SetTextureOffset("_Cloud1Tex", _Cloud1TexOffset);
}
else
{
Material.SetTexture("_Cloud1Tex", (Texture)null);
}
if (Object.op_Implicit((Object)(object)_Cloud2Tex))
{
Material.SetTexture("_Cloud2Tex", _Cloud2Tex);
Material.SetTextureScale("_Cloud2Tex", _Cloud2TexScale);
Material.SetTextureOffset("_Cloud2Tex", _Cloud2TexOffset);
}
else
{
Material.SetTexture("_Cloud2Tex", (Texture)null);
}
if (Object.op_Implicit((Object)(object)_RemapTex))
{
Material.SetTexture("_RemapTex", _RemapTex);
Material.SetTextureScale("_RemapTex", _RemapTexScale);
Material.SetTextureOffset("_RemapTex", _RemapTexOffset);
}
else
{
Material.SetTexture("_RemapTex", (Texture)null);
}
Material.SetVector("_CutoffScroll", _CutoffScroll);
Material.SetFloat("_InvFade", _SoftFactor);
Material.SetFloat("_SoftPower", _SoftPower);
Material.SetFloat("_Boost", _BrightnessBoost);
Material.SetFloat("_RimPower", _RimPower);
Material.SetFloat("_RimStrength", _RimStrength);
Material.SetFloat("_AlphaBoost", _AlphaBoost);
Material.SetFloat("_IntersectionStrength", _IntersectionStrength);
Material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode));
SetShaderKeywordBasedOnBool(_FadeFromVertexColorsOn, Material, "FADE_FROM_VERTEX_COLORS");
SetShaderKeywordBasedOnBool(_EnableTriplanarProjectionsForClouds, Material, "TRIPLANAR");
}
}
}
public static void SetShaderKeywordBasedOnBool(bool enabled, Material material, string keyword)
{
if (!Object.op_Implicit((Object)(object)material))
{
return;
}
if (enabled)
{
if (!material.IsKeywordEnabled(keyword))
{
material.EnableKeyword(keyword);
}
}
else if (material.IsKeywordEnabled(keyword))
{
material.DisableKeyword(keyword);
}
}
public static void PutMaterialIntoMeshRenderer(Renderer renderer, Material material)
{
if (Object.op_Implicit((Object)(object)material) && Object.op_Implicit((Object)(object)renderer))
{
renderer.materials[0] = material;
}
}
}
}
namespace ClassicItemsReturns.SharedHooks
{
public static class OnCharacterDeath
{
public delegate void OnCharacterDeathAttackerInventory(GlobalEventManager globalEventManager, DamageReport damageReport, CharacterBody attackerBody, Inventory attackerInventory);
public static OnCharacterDeathAttackerInventory OnCharacterDeathAttackerInventoryActions;
public static void Initialize()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
GlobalEventManager.OnCharacterDeath += new hook_OnCharacterDeath(GlobalEventManager_OnCharacterDeath);
}
private static void GlobalEventManager_OnCharacterDeath(orig_OnCharacterDeath orig, GlobalEventManager self, DamageReport damageReport)
{
orig.Invoke(self, damageReport);
if (NetworkServer.active && Object.op_Implicit((Object)(object)damageReport.attackerBody) && Object.op_Implicit((Object)(object)damageReport.attackerBody.inventory))
{
OnCharacterDeathAttackerInventoryActions?.Invoke(self, damageReport, damageReport.attackerBody, damageReport.attackerBody.inventory);
}
}
}
public static class TakeDamage
{
public delegate void OnDamageTakenInventory(DamageInfo damageInfo, HealthComponent self, CharacterBody victimBody, Inventory inventory, bool lostShield, bool lostOutOfDanger);
public static OnDamageTakenInventory OnDamageTakenInventoryActions;
public static void Initialize()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
HealthComponent.TakeDamageProcess += new hook_TakeDamageProcess(HealthComponent_TakeDamage);
}
private static void HealthComponent_TakeDamage(orig_TakeDamageProcess orig, HealthComponent self, DamageInfo damageInfo)
{
bool flag = self.shield > 0f;
bool lostOutOfDanger = Object.op_Implicit((Object)(object)self.body) && self.body.outOfDanger;
orig.Invoke(self, damageInfo);
if (NetworkServer.active && damageInfo.damage > 0f && !damageInfo.rejected && Object.op_Implicit((Object)(object)self.body) && Object.op_Implicit((Object)(object)self.body.inventory))
{
bool lostShield = flag && self.shield <= 0f;
OnDamageTakenInventoryActions?.Invoke(damageInfo, self, self.body, self.body.inventory, lostShield, lostOutOfDanger);
}
}
}
}
namespace ClassicItemsReturns.ReadmeGenerator
{
internal class ReadmeGeneratorMain
{
public static void Init()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
MainMenuController.Start += new hook_Start(MainMenuController_Start);
}
private static void MainMenuController_Start(orig_Start orig, MainMenuController self)
{
orig.Invoke(self);
FormatItemCatalog("CLASSICITEMSRETURNS");
FormatEquipmentCatalog("CLASSICITEMSRETURNS");
}
public static string ReplaceStyleTagsWithBackticks(string input)
{
string pattern = "<style=[^>]+>(.*?)<\\/style>";
string replacement = "`$1`";
return Regex.Replace(input, pattern, replacement);
}
public static void FormatItemCatalog(string nametokenfilter)
{
//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_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_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: 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_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Expected I4, but got Unknown
List<ItemDef> list = new List<ItemDef>();
List<ItemDef> list2 = new List<ItemDef>();
List<ItemDef> list3 = new List<ItemDef>();
List<ItemDef> list4 = new List<ItemDef>();
Enumerator<ItemDef> enumerator = ItemCatalog.allItemDefs.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
ItemDef current = enumerator.Current;
if (Object.op_Implicit((Object)(object)current) && current.nameToken.Contains(nametokenfilter))
{
ItemTier tier = current.tier;
ItemTier val = tier;
switch ((int)val)
{
case 0:
list.Add(current);
break;
case 1:
list2.Add(current);
break;
case 2:
list3.Add(current);
break;
case 3:
list4.Add(current);
break;
}
}
}
}
finally
{
((IDisposable)enumerator).Dispose();
}
Debug.Log((object)FormatItemSection(list.ToArray(), "Common"));
Debug.Log((object)FormatItemSection(list2.ToArray(), "Uncommon"));
Debug.Log((object)FormatItemSection(list3.ToArray(), "Legendary"));
Debug.Log((object)FormatItemSection(list4.ToArray(), "Lunar"));
}
public static string FormatItemRow(ItemDef itemDef, ref Strin