using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using ArtifactOfPutrefaction.Artifact;
using ArtifactOfPutrefaction.Utils.Components;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using Microsoft.CodeAnalysis;
using On.RoR2;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Navigation;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.SceneManagement;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("ArtifactOfPutrefaction")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ArtifactOfPutrefaction")]
[assembly: AssemblyTitle("ArtifactOfPutrefaction")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace ArtifactOfPutrefaction
{
[BepInPlugin("com.acanthi.artifactofputrefaction", "Artifact of Putrefaction", "1.0.0")]
[BepInDependency("com.bepis.r2api", "5.1.6")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
[R2APISubmoduleDependency(new string[] { "ItemAPI", "LanguageAPI" })]
public class Main : BaseUnityPlugin
{
public const string ModGuid = "com.acanthi.artifactofputrefaction";
public const string ModName = "Artifact of Putrefaction";
public const string ModVer = "1.0.0";
public static AssetBundle MainAssets;
public List<ArtifactBase> Artifacts = new List<ArtifactBase>();
public static ManualLogSource ModLogger;
private void Awake()
{
ModLogger = ((BaseUnityPlugin)this).Logger;
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ArtifactOfPutrefaction.artifactofputrefaction_assets"))
{
MainAssets = AssetBundle.LoadFromStream(stream);
}
IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes()
where !type.IsAbstract && type.IsSubclassOf(typeof(ArtifactBase))
select type;
foreach (Type item in enumerable)
{
ArtifactBase artifactBase = (ArtifactBase)Activator.CreateInstance(item);
if (ValidateArtifact(artifactBase, Artifacts))
{
artifactBase.Init(((BaseUnityPlugin)this).Config);
}
}
}
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;
}
}
}
namespace ArtifactOfPutrefaction.Utils
{
public static class ItemHelpers
{
public static RendererInfo[] ItemDisplaySetup(GameObject obj, bool debugmode = false)
{
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
List<Renderer> list = new List<Renderer>();
MeshRenderer[] componentsInChildren = obj.GetComponentsInChildren<MeshRenderer>();
if (componentsInChildren.Length != 0)
{
list.AddRange((IEnumerable<Renderer>)(object)componentsInChildren);
}
SkinnedMeshRenderer[] componentsInChildren2 = obj.GetComponentsInChildren<SkinnedMeshRenderer>();
if (componentsInChildren2.Length != 0)
{
list.AddRange((IEnumerable<Renderer>)(object)componentsInChildren2);
}
RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[list.Count];
for (int i = 0; i < list.Count; i++)
{
if (debugmode)
{
MaterialControllerComponents.HGControllerFinder hGControllerFinder = ((Component)list[i]).gameObject.AddComponent<MaterialControllerComponents.HGControllerFinder>();
hGControllerFinder.Renderer = list[i];
}
array[i] = new RendererInfo
{
defaultMaterial = ((list[i] is SkinnedMeshRenderer) ? list[i].sharedMaterial : list[i].material),
renderer = list[i],
defaultShadowCastingMode = (ShadowCastingMode)1,
ignoreOverlays = false
};
}
return array;
}
public static string OrderManifestLoreFormatter(string deviceName, string estimatedDelivery, string sentTo, string trackingNumber, string devicePickupDesc, string shippingMethod, string orderDetails)
{
string[] value = new string[19]
{
"<align=left>Estimated Delivery:<indent=70%>Sent To:</indent></align>",
"<align=left>" + estimatedDelivery + "<indent=70%>" + sentTo + "</indent></align>",
"",
"<indent=1%><style=cIsDamage><size=125%><u> Shipping Details:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</u></size></style></indent>",
"",
"<indent=2%>-Order: <style=cIsUtility>" + deviceName + "</style></indent>",
"<indent=4%><style=cStack>Tracking Number: " + trackingNumber + "</style></indent>",
"",
"<indent=2%>-Order Description: " + devicePickupDesc + "</indent>",
"",
"<indent=2%>-Shipping Method: <style=cIsHealth>" + shippingMethod + "</style></indent>",
"",
"",
"",
"<indent=2%>-Order Details: " + orderDetails + "</indent>",
"",
"",
"",
"<style=cStack>Delivery being brought to you by the brand new </style><style=cIsUtility>Orbital Drop-Crate System (TM)</style>. <style=cStack><u>No refunds.</u></style>"
};
return string.Join("\n", value);
}
public static void RefreshTimedBuffs(CharacterBody body, BuffDef buffDef, float duration)
{
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
if (!Object.op_Implicit((Object)(object)body) || body.GetBuffCount(buffDef) <= 0)
{
return;
}
foreach (TimedBuff timedBuff in body.timedBuffs)
{
if (buffDef.buffIndex == timedBuff.buffIndex)
{
timedBuff.timer = duration;
}
}
}
public static void RefreshTimedBuffs(CharacterBody body, BuffDef buffDef, float taperStart, float taperDuration)
{
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
if (!Object.op_Implicit((Object)(object)body) || body.GetBuffCount(buffDef) <= 0)
{
return;
}
int num = 0;
foreach (TimedBuff timedBuff in body.timedBuffs)
{
if (buffDef.buffIndex == timedBuff.buffIndex)
{
timedBuff.timer = taperStart + (float)num * taperDuration;
num++;
}
}
}
public static void AddBuffAndDot(BuffDef buff, float duration, int stackCount, CharacterBody body)
{
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Invalid comparison between Unknown and I4
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
if (!NetworkServer.active)
{
return;
}
DotIndex val = (DotIndex)Array.FindIndex(DotController.dotDefs, (DotDef dotDef) => (Object)(object)dotDef.associatedBuff == (Object)(object)buff);
for (int i = 0; i < stackCount; i++)
{
if ((int)val != -1)
{
DotController.InflictDot(((Component)body).gameObject, ((Component)body).gameObject, val, duration, 0.25f, (uint?)null);
}
else
{
body.AddTimedBuff(buff.buffIndex, duration);
}
}
}
public static DotIndex FindAssociatedDotForBuff(BuffDef buff)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
return (DotIndex)Array.FindIndex(DotController.dotDefs, (DotDef dotDef) => (Object)(object)dotDef.associatedBuff == (Object)(object)buff);
}
}
public static class 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
{
public static Vector3? RaycastToDirection(Vector3 position, float maxDistance, Vector3 direction, int layer)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
RaycastHit val = default(RaycastHit);
if (Physics.Raycast(new Ray(position, direction), ref val, maxDistance, layer, (QueryTriggerInteraction)1))
{
return ((RaycastHit)(ref val)).point;
}
return null;
}
public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> toShuffle, Xoroshiro128Plus random)
{
List<T> list = new List<T>();
foreach (T item in toShuffle)
{
list.Insert(random.RangeInt(0, list.Count + 1), item);
}
return list;
}
public static Vector3 FindClosestNodeToPosition(Vector3 position, HullClassification hullClassification, bool checkAirNodes = false)
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_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;
}
Main.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))
{
Main.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 class NetworkingHelpers
{
public static T GetObjectFromNetIdValue<T>(uint netIdValue)
{
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
NetworkInstanceId key = default(NetworkInstanceId);
((NetworkInstanceId)(ref key))..ctor(netIdValue);
NetworkIdentity value = null;
if (NetworkServer.active)
{
NetworkServer.objects.TryGetValue(key, out value);
}
else
{
ClientScene.objects.TryGetValue(key, out value);
}
if (Object.op_Implicit((Object)(object)value))
{
T component = ((Component)value).GetComponent<T>();
if (component != null)
{
return component;
}
}
return default(T);
}
}
}
namespace ArtifactOfPutrefaction.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 ArtifactOfPutrefaction.Artifact
{
public abstract class ArtifactBase<T> : ArtifactBase where T : ArtifactBase<T>
{
public static T instance { get; private set; }
public ArtifactBase()
{
if (instance != null)
{
throw new InvalidOperationException("Singleton class \"" + typeof(T).Name + "\" inheriting ArtifactBase was instantiated twice");
}
instance = this as T;
}
}
public abstract class ArtifactBase
{
public ArtifactDef ArtifactDef;
public abstract string ArtifactName { get; }
public abstract string ArtifactLangTokenName { get; }
public abstract string ArtifactDescription { get; }
public abstract Sprite ArtifactEnabledIcon { get; }
public abstract Sprite ArtifactDisabledIcon { get; }
public bool ArtifactEnabled => RunArtifactManager.instance.IsArtifactEnabled(ArtifactDef);
public abstract void Init(ConfigFile config);
protected void CreateLang()
{
LanguageAPI.Add("ARTIFACT_" + ArtifactLangTokenName + "_NAME", ArtifactName);
LanguageAPI.Add("ARTIFACT_" + ArtifactLangTokenName + "_DESCRIPTION", ArtifactDescription);
}
protected void CreateArtifact()
{
ArtifactDef = ScriptableObject.CreateInstance<ArtifactDef>();
ArtifactDef.cachedName = "ARTIFACT_" + ArtifactLangTokenName;
ArtifactDef.nameToken = "ARTIFACT_" + ArtifactLangTokenName + "_NAME";
ArtifactDef.descriptionToken = "ARTIFACT_" + ArtifactLangTokenName + "_DESCRIPTION";
ArtifactDef.smallIconSelectedSprite = ArtifactEnabledIcon;
ArtifactDef.smallIconDeselectedSprite = ArtifactDisabledIcon;
ContentAddition.AddArtifactDef(ArtifactDef);
}
public abstract void Hooks();
}
internal class PutrefactionArtifact : ArtifactBase<PutrefactionArtifact>
{
public static ConfigEntry<bool> AllowVoidSeedInVoidFields;
public static ConfigEntry<bool> AllowVoidSeedInCommencement;
public SpawnCard VoidCampSpawnCard;
public override string ArtifactName => "Artifact of Putrefaction";
public override string ArtifactLangTokenName => "ARTIFACT_OF_PUTREFACTION";
public override string ArtifactDescription => "All stages will contain at least one Void Seed.";
public override Sprite ArtifactEnabledIcon => Main.MainAssets.LoadAsset<Sprite>("PutrefactionOn.png");
public override Sprite ArtifactDisabledIcon => Main.MainAssets.LoadAsset<Sprite>("Putrefaction.png");
public override void Init(ConfigFile config)
{
//IL_0024: 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)
CreateConfig(config);
CreateLang();
CreateArtifact();
Hooks();
VoidCampSpawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/DLC1/VoidCamp/iscVoidCamp.asset").WaitForCompletion();
}
public override void Hooks()
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Expected O, but got Unknown
SceneDirector.PopulateScene += new hook_PopulateScene(GiveMeYourSeedBro);
}
private void CreateConfig(ConfigFile config)
{
AllowVoidSeedInVoidFields = config.Bind<bool>("Artifact: " + ArtifactName, "Allow Void Seeds in Void Fields?", false, "Do you like fun?");
AllowVoidSeedInCommencement = config.Bind<bool>("Artifact: " + ArtifactName, "Allow Void Seeds in Commencement?", true, "Do you like fun?");
}
private void GiveMeYourSeedBro(orig_PopulateScene orig, SceneDirector self)
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0104: Expected O, but got Unknown
//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_0128: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Expected O, but got Unknown
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_0138: Expected O, but got Unknown
if (!base.ArtifactEnabled)
{
orig.Invoke(self);
return;
}
Scene activeScene = SceneManager.GetActiveScene();
string name = ((Scene)(ref activeScene)).name;
if (name.Equals("arena") && !AllowVoidSeedInVoidFields.Value)
{
orig.Invoke(self);
return;
}
if (name.Equals("moon2") && !AllowVoidSeedInCommencement.Value)
{
orig.Invoke(self);
return;
}
if (name.Equals("voidraid") || name.Equals("mysteryspace") || name.Equals("limbo") || name.Equals("voidstage"))
{
orig.Invoke(self);
return;
}
if (name.StartsWith("artifactworld"))
{
orig.Invoke(self);
return;
}
Xoroshiro128Plus val = new Xoroshiro128Plus((ulong)Run.instance.stageRng.nextUint);
if (Object.op_Implicit((Object)(object)VoidCampSpawnCard))
{
DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(VoidCampSpawnCard, new DirectorPlacementRule
{
placementMode = (PlacementMode)4
}, val));
}
orig.Invoke(self);
}
}
}