using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using EntityStates;
using EntityStates.InfiniteTowerSafeWard;
using HG.Reflection;
using IL.EntityStates.ChildMonster;
using IL.RoR2;
using InLobbyConfig;
using InLobbyConfig.Fields;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates.InfiniteTowerSafeWard;
using On.RoR2;
using On.RoR2.Items;
using R2API.Utils;
using RoR2;
using RoR2.Navigation;
using ShareSuite;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Experimental.Rendering;
using UnityEngine.Networking;
using UnityEngine.Rendering;
using UnityEngine.ResourceManagement.AsyncOperations;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: OptIn]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("ServerSideTweaks")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+a0273983a9477457c5c3f57277a2845a90de1775")]
[assembly: AssemblyProduct("ServerSideTweaks")]
[assembly: AssemblyTitle("ServerSideTweaks")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace ServerSideTweaks
{
public class BepConfig
{
public static ConfigEntry<float> PearlReplacesLunarItemChance;
public static ConfigEntry<float> IrradiantPearlReplacesLunarItemChance;
public static ConfigEntry<bool> NoPearlsInBazaar;
public static ConfigEntry<bool> ChildReducedTeleportRange;
public static ConfigEntry<bool> ChildRemoveInvincibility;
public static ConfigEntry<bool> SimulacrumNonSharedLoot;
public static ConfigEntry<int> SimulacrumLootMaxItemDebt;
public static ConfigEntry<bool> SimulacrumLootSkullTokens;
public static ConfigEntry<float> SimulacrumCommencementArtifactDissonanceChance;
public static ConfigEntry<float> SimulacrumDirectorEnemyPowerBias;
public static ConfigEntry<int> SimulacrumMaxSquadSize;
public static ConfigEntry<float> SimulacrumWavePeriodSecondsFactor;
public static ConfigEntry<bool> SimulacrumFastVoidCrab;
public static ConfigEntry<float> ClassicDirectorEnemyPowerBias;
public static ConfigEntry<bool> Enabled { get; set; }
public static void Init()
{
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_004b: Expected O, but got Unknown
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Expected O, but got Unknown
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Expected O, but got Unknown
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Expected O, but got Unknown
//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Expected O, but got Unknown
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Expected O, but got Unknown
//IL_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Expected O, but got Unknown
//IL_014f: Unknown result type (might be due to invalid IL or missing references)
//IL_0159: Expected O, but got Unknown
//IL_0179: Unknown result type (might be due to invalid IL or missing references)
//IL_0183: Expected O, but got Unknown
//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
//IL_01ad: Expected O, but got Unknown
//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
//IL_01d4: Expected O, but got Unknown
//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
//IL_01fe: Expected O, but got Unknown
//IL_021a: Unknown result type (might be due to invalid IL or missing references)
//IL_0224: Expected O, but got Unknown
//IL_0244: Unknown result type (might be due to invalid IL or missing references)
//IL_024e: Expected O, but got Unknown
ConfigFile config = ((BaseUnityPlugin)ServerSideTweaks.instance).Config;
Enabled = config.Bind<bool>("Main", "Enabled", true, "Enable Mod");
PearlReplacesLunarItemChance = config.Bind<float>("Main", "Pearl replaces Lunar Item chance", 0.1f, new ConfigDescription("Adds a chance for lunar items to be replaced by a pearl.", (AcceptableValueBase)null, Array.Empty<object>()));
IrradiantPearlReplacesLunarItemChance = config.Bind<float>("Main", "Irradiant Pearl replaces Lunar Item chance", 0.02f, new ConfigDescription("Adds a chance for lunar items to be replaced by an irradiant pearl.", (AcceptableValueBase)null, Array.Empty<object>()));
NoPearlsInBazaar = config.Bind<bool>("Main", "No Pearl replacements in the Bazaar between Times", true, new ConfigDescription("Prevents pearls from appearing in the Bazaar to prevent hoarding.", (AcceptableValueBase)null, Array.Empty<object>()));
ChildReducedTeleportRange = config.Bind<bool>("Main", "Child: Reduced teleport range", true, new ConfigDescription("Reduces the range children can teleport away.", (AcceptableValueBase)null, Array.Empty<object>()));
ChildRemoveInvincibility = config.Bind<bool>("Main", "Child: Remove invincibility", true, new ConfigDescription("Removes the invincibility buff that children get before teleporting.", (AcceptableValueBase)null, Array.Empty<object>()));
SimulacrumNonSharedLoot = config.Bind<bool>("Simulacrum", "Non-shared loot", false, new ConfigDescription("(ShareSuite only) Forces the loot dropped at the end of each wave to be non-shared.", (AcceptableValueBase)null, Array.Empty<object>()));
SimulacrumLootMaxItemDebt = config.Bind<int>("Simulacrum", "Max loot debt", 2, new ConfigDescription("Prevents greedy players from taking too much of the loot dropped at the end of each wave.", (AcceptableValueBase)null, Array.Empty<object>()));
SimulacrumLootSkullTokens = config.Bind<bool>("Simulacrum", "Max loot debt - Skull Tokens", true, new ConfigDescription("Indicate to players how many void potentials they can take by assigning Skull Tokens.", (AcceptableValueBase)null, Array.Empty<object>()));
SimulacrumCommencementArtifactDissonanceChance = config.Bind<float>("Simulacrum", "Commencement Artifact of Dissonance Chance", 0.5f, new ConfigDescription("The chance for Artifact of Dissonance to be activated each wave when in the commencement stage to increase enemy variety.", (AcceptableValueBase)null, Array.Empty<object>()));
SimulacrumDirectorEnemyPowerBias = config.Bind<float>("Simulacrum", "Director: Enemy Power Bias", 0.5f, new ConfigDescription("Bias towards many,weak enemies (=0) or few,strong enemies (=1). Value between 0 and 1, 0.5 = vanilla.", (AcceptableValueBase)null, Array.Empty<object>()));
SimulacrumMaxSquadSize = config.Bind<int>("Simulacrum", "Max squad size", 30, new ConfigDescription("No more than this many enemies shall be spawned at the same time (30 = vanilla).", (AcceptableValueBase)null, Array.Empty<object>()));
SimulacrumWavePeriodSecondsFactor = config.Bind<float>("Simulacrum", "Wave Period Seconds Factor", 1f, new ConfigDescription("A factor on how long each wave takes. A value smaller than 1.0 makes the wave go faster, but also with stronger enemies. A value higher than 1.0 makes the wave take longer but the enemies are weaker. (1.0 = vanilla).", (AcceptableValueBase)null, Array.Empty<object>()));
SimulacrumFastVoidCrab = config.Bind<bool>("Simulacrum", "Void Crab picks up speed", false, new ConfigDescription("Makes the Void Crab faster the more waves you complete.", (AcceptableValueBase)null, Array.Empty<object>()));
ClassicDirectorEnemyPowerBias = config.Bind<float>("Classic", "Director: Enemy Power Bias", 0.5f, new ConfigDescription("Bias towards many,weak enemies (=0) or few,strong enemies (=1). Value between 0 and 1, 0.5 = vanilla.", (AcceptableValueBase)null, Array.Empty<object>()));
if (ModCompatibilityInLobbyConfig.enabled)
{
ModCompatibilityInLobbyConfig.CreateFromBepInExConfigFile(config, "Server-Side Tweaks");
}
}
}
public static class ChatHelper
{
private const string RedColor = "ff0000";
private const string GreenColor = "32cd32";
private const string SilverColor = "c0c0c0";
public static void PlayerHasTooManyItems(string userName)
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Expected O, but got Unknown
string baseToken = "<color=#ff0000>" + userName + " is being greedy!</color>";
Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage
{
baseToken = baseToken
});
}
}
public class EnumCollection
{
public enum ArtifactEnum
{
None,
Chaos,
Command,
Death,
Dissonance,
Enigma,
Evolution,
Frailty,
Glass,
Honor,
Kin,
Metamorphosis,
Sacrifice,
Soul,
Spite,
Swarms,
Vengeance
}
public enum StageEnum
{
None,
TitanicPlains,
DistantRoost,
WetlandAspect,
AbandonedAqueduct,
RallypointDelta,
ScorchedAcres,
AbyssalDepths,
SirensCall,
GildedCoast,
MomentFractured,
Bazaar,
VoidFields,
MomentWhole,
SkyMeadow,
BullwarksAmbry,
Commencement,
SunderedGrove,
VoidLocus,
Planetarium,
AphelianSanctuary,
SimulacrumAbandonedAquaduct,
SimulacrumAbyssalDepths,
SimulacrumAphelianSanctuary,
SimulacrumCommencement,
SimulacrumRallypointDelta,
SimulacrumSkyMeadow,
SimulacrumTitanicPlains,
SiphonedForest,
SulfurPools
}
public static Dictionary<StageEnum, List<string>> SceneNames = new Dictionary<StageEnum, List<string>>
{
{
StageEnum.TitanicPlains,
new List<string> { "golemplains", "golemplains2" }
},
{
StageEnum.DistantRoost,
new List<string> { "blackbeach", "blackbeach2" }
},
{
StageEnum.WetlandAspect,
new List<string> { "foggyswamp" }
},
{
StageEnum.AbandonedAqueduct,
new List<string> { "goolake" }
},
{
StageEnum.RallypointDelta,
new List<string> { "frozenwall" }
},
{
StageEnum.ScorchedAcres,
new List<string> { "wispgraveyard" }
},
{
StageEnum.AbyssalDepths,
new List<string> { "dampcavesimple" }
},
{
StageEnum.SirensCall,
new List<string> { "shipgraveyard" }
},
{
StageEnum.GildedCoast,
new List<string> { "goldshores" }
},
{
StageEnum.MomentFractured,
new List<string> { "mysteryspace" }
},
{
StageEnum.Bazaar,
new List<string> { "bazaar" }
},
{
StageEnum.VoidFields,
new List<string> { "arena" }
},
{
StageEnum.MomentWhole,
new List<string> { "limbo" }
},
{
StageEnum.SkyMeadow,
new List<string> { "skymeadow" }
},
{
StageEnum.BullwarksAmbry,
new List<string> { "artifactworld" }
},
{
StageEnum.Commencement,
new List<string> { "moon", "moon2" }
},
{
StageEnum.SunderedGrove,
new List<string> { "rootjungle" }
},
{
StageEnum.VoidLocus,
new List<string> { "voidstage" }
},
{
StageEnum.Planetarium,
new List<string> { "voidraid" }
},
{
StageEnum.AphelianSanctuary,
new List<string> { "ancientloft" }
},
{
StageEnum.SimulacrumAbandonedAquaduct,
new List<string> { "itgoolake" }
},
{
StageEnum.SimulacrumAbyssalDepths,
new List<string> { "itdampcave" }
},
{
StageEnum.SimulacrumAphelianSanctuary,
new List<string> { "itancientloft" }
},
{
StageEnum.SimulacrumCommencement,
new List<string> { "itmoon" }
},
{
StageEnum.SimulacrumRallypointDelta,
new List<string> { "itfrozenwall" }
},
{
StageEnum.SimulacrumSkyMeadow,
new List<string> { "itskymeadow" }
},
{
StageEnum.SimulacrumTitanicPlains,
new List<string> { "itgolemplains" }
},
{
StageEnum.SiphonedForest,
new List<string> { "snowyforest" }
},
{
StageEnum.SulfurPools,
new List<string> { "sulfurpools" }
}
};
public static T DecrementEnumValue<T>(T value) where T : struct, IConvertible
{
if (!typeof(T).IsEnum)
{
throw new ArgumentException("T must be an enumerated type");
}
int length = Enum.GetValues(typeof(T)).Length;
return (T)(object)(((int)(object)value - 1 + length) % length);
}
public static T IncrementEnumValue<T>(T value) where T : struct, IConvertible
{
if (!typeof(T).IsEnum)
{
throw new ArgumentException("T must be an enumerated type");
}
int length = Enum.GetValues(typeof(T)).Length;
return (T)(object)(((int)(object)value + 1) % length);
}
public static bool IsSimulacrumStage(string name)
{
if (GetFirstStageName(StageEnum.SimulacrumAbandonedAquaduct) == name)
{
return true;
}
if (GetFirstStageName(StageEnum.SimulacrumAbyssalDepths) == name)
{
return true;
}
if (GetFirstStageName(StageEnum.SimulacrumAphelianSanctuary) == name)
{
return true;
}
if (GetFirstStageName(StageEnum.SimulacrumCommencement) == name)
{
return true;
}
if (GetFirstStageName(StageEnum.SimulacrumRallypointDelta) == name)
{
return true;
}
if (GetFirstStageName(StageEnum.SimulacrumSkyMeadow) == name)
{
return true;
}
if (GetFirstStageName(StageEnum.SimulacrumTitanicPlains) == name)
{
return true;
}
return false;
}
public static bool SceneNameIsStage(string sceneName, StageEnum stageEnum)
{
return SceneNames[stageEnum].Contains(sceneName);
}
public static string GetFirstStageName(StageEnum stageEnum)
{
return SceneNames[stageEnum].First();
}
public static ArtifactDef GetArtifactDef(ArtifactEnum artifacts)
{
return (ArtifactDef)(artifacts switch
{
ArtifactEnum.Chaos => Artifacts.FriendlyFire,
ArtifactEnum.Command => Artifacts.Command,
ArtifactEnum.Death => Artifacts.TeamDeath,
ArtifactEnum.Dissonance => Artifacts.MixEnemy,
ArtifactEnum.Enigma => Artifacts.Enigma,
ArtifactEnum.Evolution => Artifacts.MonsterTeamGainsItems,
ArtifactEnum.Frailty => Artifacts.WeakAssKnees,
ArtifactEnum.Glass => Artifacts.Glass,
ArtifactEnum.Honor => Artifacts.EliteOnly,
ArtifactEnum.Kin => Artifacts.SingleMonsterType,
ArtifactEnum.Metamorphosis => Artifacts.RandomSurvivorOnRespawn,
ArtifactEnum.Sacrifice => Artifacts.Sacrifice,
ArtifactEnum.Soul => Artifacts.WispOnDeath,
ArtifactEnum.Spite => Artifacts.Bomb,
ArtifactEnum.Swarms => Artifacts.Swarms,
ArtifactEnum.Vengeance => Artifacts.ShadowClone,
_ => null,
});
}
}
public class FastSimulacrumVrab
{
[CompilerGenerated]
private static class <>O
{
public static hook_OnEnter <0>__Travelling_OnEnter;
}
private static bool enabled;
private static AsyncOperationHandle<GameObject> iscInfiniteTowerSafeWard;
private static AsyncOperationHandle<Material> matNullifierSafeWardPillarGlow;
private static AsyncOperationHandle<Material> matNullifierSafeWardPillarStars;
public static void Setup()
{
//IL_0005: 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_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_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)
iscInfiniteTowerSafeWard = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/InfiniteTowerAssets/InfiniteTowerSafeWard.prefab");
matNullifierSafeWardPillarGlow = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matNullifierSafeWardPillarGlow.mat");
matNullifierSafeWardPillarStars = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matNullifierSafeWardPillarStars.mat");
}
public static void Enable()
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
enabled = true;
object obj = <>O.<0>__Travelling_OnEnter;
if (obj == null)
{
hook_OnEnter val = Travelling_OnEnter;
<>O.<0>__Travelling_OnEnter = val;
obj = (object)val;
}
Travelling.OnEnter += (hook_OnEnter)obj;
}
public static void Disable()
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
enabled = false;
object obj = <>O.<0>__Travelling_OnEnter;
if (obj == null)
{
hook_OnEnter val = Travelling_OnEnter;
<>O.<0>__Travelling_OnEnter = val;
obj = (object)val;
}
Travelling.OnEnter -= (hook_OnEnter)obj;
}
private static void Travelling_OnEnter(orig_OnEnter orig, Travelling self)
{
//IL_0072: 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_0046: Expected O, but got Unknown
orig.Invoke(self);
if (BepConfig.SimulacrumFastVoidCrab.Value && (Object)(object)Run.instance != (Object)null && ((object)Run.instance).GetType() == typeof(InfiniteTowerRun))
{
InfiniteTowerRun val = (InfiniteTowerRun)Run.instance;
self.travelSpeed = 5f + (float)val.waveIndex * 0.1f;
}
if (NetworkServer.active)
{
List<NodeIndex> list = self.groundNodeGraph.FindNodesInRangeWithFlagConditions(((EntityState)self).transform.position, self.minDistanceToNewLocation, 500f, (HullMask)1, (NodeFlags)2, (NodeFlags)0, false);
Util.ShuffleList<NodeIndex>(list, self.rng);
self.potentialEndNodes.AddRange(list);
}
}
private static void Travelling_EvaluateNextEndpoint(orig_EvaluateNextEndpoint orig, Travelling self)
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Expected O, but got Unknown
//IL_007e: 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_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
//IL_00f4: 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_012d: Expected O, but got Unknown
//IL_0156: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_016f: Unknown result type (might be due to invalid IL or missing references)
//IL_017a: Unknown result type (might be due to invalid IL or missing references)
//IL_018e: Unknown result type (might be due to invalid IL or missing references)
//IL_0193: 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_024c: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
if (((object)Run.instance).GetType() == typeof(InfiniteTowerRun))
{
InfiniteTowerRun val = (InfiniteTowerRun)Run.instance;
GameObject val2 = new GameObject("Corridor");
MeshFilter val3 = val2.AddComponent<MeshFilter>();
MeshRenderer val4 = val2.AddComponent<MeshRenderer>();
CombineInstance[] array = (CombineInstance[])(object)new CombineInstance[self.catmullRomPoints.Count];
int num = 50;
for (int i = 0; i < self.catmullRomPoints.Count; i++)
{
GameObject obj = GameObject.CreatePrimitive((PrimitiveType)2);
obj.transform.localScale = new Vector3((float)num, 120f, (float)num);
obj.transform.position = self.catmullRomPoints[i];
obj.transform.rotation = Quaternion.identity;
MeshFilter component = obj.GetComponent<MeshFilter>();
((CombineInstance)(ref array[i])).mesh = component.sharedMesh;
((CombineInstance)(ref array[i])).transform = ((Component)component).transform.localToWorldMatrix;
Object.Destroy((Object)(object)obj);
IZone val5 = CreateSafeZone2(self.catmullRomPoints[i], null);
val.fogDamageController.AddSafeZone(val5);
}
Mesh val6 = new Mesh();
val6.CombineMeshes(array, true, true);
val3.mesh = val6;
((Renderer)val4).castShadows = true;
((Renderer)val4).motionVectors = true;
((Renderer)val4).useLightProbes = true;
((Renderer)val4).bounds = new Bounds(Vector3.zero, new Vector3(2f, 120f, 2f));
((Renderer)val4).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f));
((Renderer)val4).enabled = true;
((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1;
((Renderer)val4).receiveShadows = true;
((Renderer)val4).forceRenderingOff = false;
((Renderer)val4).staticShadowCaster = false;
((Renderer)val4).motionVectorGenerationMode = (MotionVectorGenerationMode)1;
((Renderer)val4).lightProbeUsage = (LightProbeUsage)1;
((Renderer)val4).reflectionProbeUsage = (ReflectionProbeUsage)1;
((Renderer)val4).renderingLayerMask = uint.MaxValue;
((Renderer)val4).rendererPriority = 0;
((Renderer)val4).rayTracingMode = (RayTracingMode)2;
((Renderer)val4).sortingLayerName = "Default";
((Renderer)val4).sortingLayerID = 0;
((Renderer)val4).sortingOrder = 0;
((Renderer)val4).allowOcclusionWhenDynamic = true;
((Renderer)val4).lightmapIndex = -1;
((Renderer)val4).realtimeLightmapIndex = -1;
((Renderer)val4).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
((Renderer)val4).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
Material sharedMaterial = (((Renderer)val4).material = matNullifierSafeWardPillarStars.WaitForCompletion());
((Renderer)val4).sharedMaterial = sharedMaterial;
NetworkServer.Spawn(val2);
}
}
private static Mesh CreateCylinderMesh()
{
GameObject obj = GameObject.CreatePrimitive((PrimitiveType)2);
Mesh mesh = obj.GetComponent<MeshFilter>().mesh;
Object.Destroy((Object)(object)obj);
return mesh;
}
private static GameObject CreateCylinder()
{
//IL_0005: 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_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: 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_005d: 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_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: 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_00dc: 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_0195: Unknown result type (might be due to invalid IL or missing references)
//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
//IL_01c8: Expected O, but got Unknown
GameObject val = new GameObject("IndicatorCylinder");
val.transform.position = new Vector3(0f, 0f, 0f);
val.transform.rotation = Quaternion.Euler(0f, 0f, 180f);
val.transform.localScale = new Vector3(2f, 120f, 2f);
MeshFilter obj = val.AddComponent<MeshFilter>();
obj.sharedMesh = CreateCylinderMesh();
obj.mesh = obj.sharedMesh;
MeshRenderer obj2 = val.AddComponent<MeshRenderer>();
((Renderer)obj2).castShadows = true;
((Renderer)obj2).motionVectors = true;
((Renderer)obj2).useLightProbes = true;
((Renderer)obj2).bounds = new Bounds(Vector3.zero, new Vector3(2f, 120f, 2f));
((Renderer)obj2).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f));
((Renderer)obj2).enabled = true;
((Renderer)obj2).shadowCastingMode = (ShadowCastingMode)1;
((Renderer)obj2).receiveShadows = true;
((Renderer)obj2).forceRenderingOff = false;
((Renderer)obj2).staticShadowCaster = false;
((Renderer)obj2).motionVectorGenerationMode = (MotionVectorGenerationMode)1;
((Renderer)obj2).lightProbeUsage = (LightProbeUsage)1;
((Renderer)obj2).reflectionProbeUsage = (ReflectionProbeUsage)1;
((Renderer)obj2).renderingLayerMask = uint.MaxValue;
((Renderer)obj2).rendererPriority = 0;
((Renderer)obj2).rayTracingMode = (RayTracingMode)2;
((Renderer)obj2).sortingLayerName = "Default";
((Renderer)obj2).sortingLayerID = 0;
((Renderer)obj2).sortingOrder = 0;
((Renderer)obj2).allowOcclusionWhenDynamic = true;
((Renderer)obj2).lightmapIndex = -1;
((Renderer)obj2).realtimeLightmapIndex = -1;
((Renderer)obj2).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
((Renderer)obj2).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
Material sharedMaterial = (((Renderer)obj2).material = matNullifierSafeWardPillarStars.WaitForCompletion());
((Renderer)obj2).sharedMaterial = sharedMaterial;
val.transform.position = Vector3.zero;
return val;
}
private static GameObject CreateSphere()
{
//IL_0005: 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_0020: 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_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: 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_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: 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_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_0160: Unknown result type (might be due to invalid IL or missing references)
//IL_017f: Unknown result type (might be due to invalid IL or missing references)
//IL_01a9: Expected O, but got Unknown
GameObject val = new GameObject("IndicatorSphere");
Transform transform = val.transform;
transform.position = new Vector3(0f, 0f, 0f);
transform.rotation = Quaternion.Euler(0f, 0f, 0f);
transform.localScale = new Vector3(2f, 2f, 2f);
val.AddComponent<MeshFilter>().sharedMesh = CreateSphereMesh();
MeshRenderer obj = val.AddComponent<MeshRenderer>();
((Renderer)obj).castShadows = true;
((Renderer)obj).motionVectors = true;
((Renderer)obj).useLightProbes = true;
((Renderer)obj).bounds = new Bounds(Vector3.zero, new Vector3(2f, 2f, 2f));
((Renderer)obj).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f));
((Renderer)obj).enabled = true;
((Renderer)obj).shadowCastingMode = (ShadowCastingMode)1;
((Renderer)obj).receiveShadows = true;
((Renderer)obj).forceRenderingOff = false;
((Renderer)obj).staticShadowCaster = false;
((Renderer)obj).motionVectorGenerationMode = (MotionVectorGenerationMode)1;
((Renderer)obj).lightProbeUsage = (LightProbeUsage)1;
((Renderer)obj).reflectionProbeUsage = (ReflectionProbeUsage)1;
((Renderer)obj).renderingLayerMask = uint.MaxValue;
((Renderer)obj).rendererPriority = 0;
((Renderer)obj).rayTracingMode = (RayTracingMode)2;
((Renderer)obj).sortingLayerName = "Default";
((Renderer)obj).sortingLayerID = 0;
((Renderer)obj).sortingOrder = 0;
((Renderer)obj).allowOcclusionWhenDynamic = true;
((Renderer)obj).lightmapIndex = -1;
((Renderer)obj).realtimeLightmapIndex = -1;
((Renderer)obj).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
((Renderer)obj).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
Material sharedMaterial = (((Renderer)obj).material = matNullifierSafeWardPillarGlow.WaitForCompletion());
((Renderer)obj).sharedMaterial = sharedMaterial;
((Renderer)obj).allowOcclusionWhenDynamic = true;
return val;
}
private static Mesh CreateSphereMesh()
{
GameObject obj = GameObject.CreatePrimitive((PrimitiveType)0);
Mesh mesh = obj.GetComponent<MeshFilter>().mesh;
Object.Destroy((Object)(object)obj);
return mesh;
}
private static IZone CreateSafeZone2(Vector3 position, Transform rangeIndicator)
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Expected O, but got Unknown
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
GameObject val = new GameObject();
SphereZone obj = val.AddComponent<SphereZone>();
obj.radius = 15f;
obj.rangeIndicator = rangeIndicator;
obj.indicatorSmoothTime = 0.2f;
obj.isInverted = false;
obj.rangeIndicatorScaleVelocity = 0f;
((Behaviour)obj).enabled = true;
((MonoBehaviour)obj).useGUILayout = true;
obj.Networkradius = 15f;
val.transform.position = position;
NetworkServer.Spawn(val);
return (IZone)(object)obj;
}
private static IZone CreateSafeZone(Vector3 position)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
GameObject obj = iscInfiniteTowerSafeWard.WaitForCompletion();
GameObject val = Object.Instantiate<GameObject>(obj, position, Quaternion.identity);
HoldoutZoneController component = obj.GetComponent<HoldoutZoneController>();
component.holdoutZoneShape = (HoldoutZoneShape)1;
NetworkServer.Spawn(val);
return (IZone)(object)component;
}
}
public class FastSimulacrumVrabObsolete
{
[CompilerGenerated]
private static class <>O
{
public static hook_EvaluateNextEndpoint <0>__Travelling_EvaluateNextEndpoint;
}
private static bool enabled;
private static AsyncOperationHandle<GameObject> iscInfiniteTowerSafeWard;
private static AsyncOperationHandle<Material> matNullifierSafeWardPillarGlow;
private static AsyncOperationHandle<Material> matNullifierSafeWardPillarStars;
public static void Setup()
{
//IL_0005: 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_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_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)
iscInfiniteTowerSafeWard = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/InfiniteTowerAssets/InfiniteTowerSafeWard.prefab");
matNullifierSafeWardPillarGlow = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matNullifierSafeWardPillarGlow.mat");
matNullifierSafeWardPillarStars = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matNullifierSafeWardPillarStars.mat");
}
public static void Enable()
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
enabled = true;
object obj = <>O.<0>__Travelling_EvaluateNextEndpoint;
if (obj == null)
{
hook_EvaluateNextEndpoint val = Travelling_EvaluateNextEndpoint;
<>O.<0>__Travelling_EvaluateNextEndpoint = val;
obj = (object)val;
}
Travelling.EvaluateNextEndpoint += (hook_EvaluateNextEndpoint)obj;
}
public static void Disable()
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Expected O, but got Unknown
enabled = false;
object obj = <>O.<0>__Travelling_EvaluateNextEndpoint;
if (obj == null)
{
hook_EvaluateNextEndpoint val = Travelling_EvaluateNextEndpoint;
<>O.<0>__Travelling_EvaluateNextEndpoint = val;
obj = (object)val;
}
Travelling.EvaluateNextEndpoint -= (hook_EvaluateNextEndpoint)obj;
}
private static void Travelling_EvaluateNextEndpoint(orig_EvaluateNextEndpoint orig, Travelling self)
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Expected O, but got Unknown
//IL_007e: 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_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
//IL_00f4: 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_012d: Expected O, but got Unknown
//IL_0156: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_016f: Unknown result type (might be due to invalid IL or missing references)
//IL_017a: Unknown result type (might be due to invalid IL or missing references)
//IL_018e: Unknown result type (might be due to invalid IL or missing references)
//IL_0193: 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_024c: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(self);
if (((object)Run.instance).GetType() == typeof(InfiniteTowerRun))
{
InfiniteTowerRun val = (InfiniteTowerRun)Run.instance;
GameObject val2 = new GameObject("Corridor");
MeshFilter val3 = val2.AddComponent<MeshFilter>();
MeshRenderer val4 = val2.AddComponent<MeshRenderer>();
CombineInstance[] array = (CombineInstance[])(object)new CombineInstance[self.catmullRomPoints.Count];
int num = 50;
for (int i = 0; i < self.catmullRomPoints.Count; i++)
{
GameObject obj = GameObject.CreatePrimitive((PrimitiveType)2);
obj.transform.localScale = new Vector3((float)num, 120f, (float)num);
obj.transform.position = self.catmullRomPoints[i];
obj.transform.rotation = Quaternion.identity;
MeshFilter component = obj.GetComponent<MeshFilter>();
((CombineInstance)(ref array[i])).mesh = component.sharedMesh;
((CombineInstance)(ref array[i])).transform = ((Component)component).transform.localToWorldMatrix;
Object.Destroy((Object)(object)obj);
IZone val5 = CreateSafeZone2(self.catmullRomPoints[i], null);
val.fogDamageController.AddSafeZone(val5);
}
Mesh val6 = new Mesh();
val6.CombineMeshes(array, true, true);
val3.mesh = val6;
((Renderer)val4).castShadows = true;
((Renderer)val4).motionVectors = true;
((Renderer)val4).useLightProbes = true;
((Renderer)val4).bounds = new Bounds(Vector3.zero, new Vector3(2f, 120f, 2f));
((Renderer)val4).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f));
((Renderer)val4).enabled = true;
((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1;
((Renderer)val4).receiveShadows = true;
((Renderer)val4).forceRenderingOff = false;
((Renderer)val4).staticShadowCaster = false;
((Renderer)val4).motionVectorGenerationMode = (MotionVectorGenerationMode)1;
((Renderer)val4).lightProbeUsage = (LightProbeUsage)1;
((Renderer)val4).reflectionProbeUsage = (ReflectionProbeUsage)1;
((Renderer)val4).renderingLayerMask = uint.MaxValue;
((Renderer)val4).rendererPriority = 0;
((Renderer)val4).rayTracingMode = (RayTracingMode)2;
((Renderer)val4).sortingLayerName = "Default";
((Renderer)val4).sortingLayerID = 0;
((Renderer)val4).sortingOrder = 0;
((Renderer)val4).allowOcclusionWhenDynamic = true;
((Renderer)val4).lightmapIndex = -1;
((Renderer)val4).realtimeLightmapIndex = -1;
((Renderer)val4).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
((Renderer)val4).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
Material sharedMaterial = (((Renderer)val4).material = matNullifierSafeWardPillarStars.WaitForCompletion());
((Renderer)val4).sharedMaterial = sharedMaterial;
NetworkServer.Spawn(val2);
}
}
private static Mesh CreateCylinderMesh()
{
GameObject obj = GameObject.CreatePrimitive((PrimitiveType)2);
Mesh mesh = obj.GetComponent<MeshFilter>().mesh;
Object.Destroy((Object)(object)obj);
return mesh;
}
private static GameObject CreateCylinder()
{
//IL_0005: 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_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: 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_005d: 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_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: 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_00dc: 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_0195: Unknown result type (might be due to invalid IL or missing references)
//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
//IL_01c8: Expected O, but got Unknown
GameObject val = new GameObject("IndicatorCylinder");
val.transform.position = new Vector3(0f, 0f, 0f);
val.transform.rotation = Quaternion.Euler(0f, 0f, 180f);
val.transform.localScale = new Vector3(2f, 120f, 2f);
MeshFilter obj = val.AddComponent<MeshFilter>();
obj.sharedMesh = CreateCylinderMesh();
obj.mesh = obj.sharedMesh;
MeshRenderer obj2 = val.AddComponent<MeshRenderer>();
((Renderer)obj2).castShadows = true;
((Renderer)obj2).motionVectors = true;
((Renderer)obj2).useLightProbes = true;
((Renderer)obj2).bounds = new Bounds(Vector3.zero, new Vector3(2f, 120f, 2f));
((Renderer)obj2).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f));
((Renderer)obj2).enabled = true;
((Renderer)obj2).shadowCastingMode = (ShadowCastingMode)1;
((Renderer)obj2).receiveShadows = true;
((Renderer)obj2).forceRenderingOff = false;
((Renderer)obj2).staticShadowCaster = false;
((Renderer)obj2).motionVectorGenerationMode = (MotionVectorGenerationMode)1;
((Renderer)obj2).lightProbeUsage = (LightProbeUsage)1;
((Renderer)obj2).reflectionProbeUsage = (ReflectionProbeUsage)1;
((Renderer)obj2).renderingLayerMask = uint.MaxValue;
((Renderer)obj2).rendererPriority = 0;
((Renderer)obj2).rayTracingMode = (RayTracingMode)2;
((Renderer)obj2).sortingLayerName = "Default";
((Renderer)obj2).sortingLayerID = 0;
((Renderer)obj2).sortingOrder = 0;
((Renderer)obj2).allowOcclusionWhenDynamic = true;
((Renderer)obj2).lightmapIndex = -1;
((Renderer)obj2).realtimeLightmapIndex = -1;
((Renderer)obj2).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
((Renderer)obj2).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
Material sharedMaterial = (((Renderer)obj2).material = matNullifierSafeWardPillarStars.WaitForCompletion());
((Renderer)obj2).sharedMaterial = sharedMaterial;
val.transform.position = Vector3.zero;
return val;
}
private static GameObject CreateSphere()
{
//IL_0005: 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_0020: 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_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: 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_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_009d: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: 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_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_0160: Unknown result type (might be due to invalid IL or missing references)
//IL_017f: Unknown result type (might be due to invalid IL or missing references)
//IL_01a9: Expected O, but got Unknown
GameObject val = new GameObject("IndicatorSphere");
Transform transform = val.transform;
transform.position = new Vector3(0f, 0f, 0f);
transform.rotation = Quaternion.Euler(0f, 0f, 0f);
transform.localScale = new Vector3(2f, 2f, 2f);
val.AddComponent<MeshFilter>().sharedMesh = CreateSphereMesh();
MeshRenderer obj = val.AddComponent<MeshRenderer>();
((Renderer)obj).castShadows = true;
((Renderer)obj).motionVectors = true;
((Renderer)obj).useLightProbes = true;
((Renderer)obj).bounds = new Bounds(Vector3.zero, new Vector3(2f, 2f, 2f));
((Renderer)obj).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f));
((Renderer)obj).enabled = true;
((Renderer)obj).shadowCastingMode = (ShadowCastingMode)1;
((Renderer)obj).receiveShadows = true;
((Renderer)obj).forceRenderingOff = false;
((Renderer)obj).staticShadowCaster = false;
((Renderer)obj).motionVectorGenerationMode = (MotionVectorGenerationMode)1;
((Renderer)obj).lightProbeUsage = (LightProbeUsage)1;
((Renderer)obj).reflectionProbeUsage = (ReflectionProbeUsage)1;
((Renderer)obj).renderingLayerMask = uint.MaxValue;
((Renderer)obj).rendererPriority = 0;
((Renderer)obj).rayTracingMode = (RayTracingMode)2;
((Renderer)obj).sortingLayerName = "Default";
((Renderer)obj).sortingLayerID = 0;
((Renderer)obj).sortingOrder = 0;
((Renderer)obj).allowOcclusionWhenDynamic = true;
((Renderer)obj).lightmapIndex = -1;
((Renderer)obj).realtimeLightmapIndex = -1;
((Renderer)obj).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
((Renderer)obj).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f);
Material sharedMaterial = (((Renderer)obj).material = matNullifierSafeWardPillarGlow.WaitForCompletion());
((Renderer)obj).sharedMaterial = sharedMaterial;
((Renderer)obj).allowOcclusionWhenDynamic = true;
return val;
}
private static Mesh CreateSphereMesh()
{
GameObject obj = GameObject.CreatePrimitive((PrimitiveType)0);
Mesh mesh = obj.GetComponent<MeshFilter>().mesh;
Object.Destroy((Object)(object)obj);
return mesh;
}
private static IZone CreateSafeZone2(Vector3 position, Transform rangeIndicator)
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Expected O, but got Unknown
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
GameObject val = new GameObject();
SphereZone obj = val.AddComponent<SphereZone>();
obj.radius = 15f;
obj.rangeIndicator = rangeIndicator;
obj.indicatorSmoothTime = 0.2f;
obj.isInverted = false;
obj.rangeIndicatorScaleVelocity = 0f;
((Behaviour)obj).enabled = true;
((MonoBehaviour)obj).useGUILayout = true;
obj.Networkradius = 15f;
val.transform.position = position;
NetworkServer.Spawn(val);
return (IZone)(object)obj;
}
private static IZone CreateSafeZone(Vector3 position)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
GameObject obj = iscInfiniteTowerSafeWard.WaitForCompletion();
GameObject val = Object.Instantiate<GameObject>(obj, position, Quaternion.identity);
HoldoutZoneController component = obj.GetComponent<HoldoutZoneController>();
component.holdoutZoneShape = (HoldoutZoneShape)1;
NetworkServer.Spawn(val);
return (IZone)(object)component;
}
}
internal static class Log
{
internal static ManualLogSource _logSource;
internal static void Init(ManualLogSource logSource)
{
_logSource = logSource;
}
internal static void LogDebug(object data)
{
_logSource.LogDebug(data);
}
internal static void LogError(object data)
{
_logSource.LogError(data);
}
internal static void LogFatal(object data)
{
_logSource.LogFatal(data);
}
internal static void LogInfo(object data)
{
_logSource.LogInfo(data);
}
internal static void LogMessage(object data)
{
_logSource.LogMessage(data);
}
internal static void LogWarning(object data)
{
_logSource.LogWarning(data);
}
}
public static class ModCompatibilityInLobbyConfig
{
private static bool? _enabled;
public static bool enabled
{
get
{
if (!_enabled.HasValue)
{
_enabled = Chainloader.PluginInfos.ContainsKey("com.KingEnderBrine.InLobbyConfig");
}
return _enabled.Value;
}
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public static void CreateFromBepInExConfigFile(ConfigFile config, string displayName)
{
ModConfigCatalog.Add(ConfigFieldUtilities.CreateFromBepInExConfigFile(config, displayName));
}
}
public static class ModCompatibilityShareSuite
{
private static bool? _enabled;
public static bool enabled
{
get
{
if (!_enabled.HasValue)
{
_enabled = Chainloader.PluginInfos.ContainsKey("com.funkfrog_sipondo.sharesuite");
}
return _enabled.Value;
}
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public static void AddPickupEventHandler(Func<GenericPickupController, CharacterBody, bool> f)
{
ItemSharingHooks.AdditionalPickupValidityChecks += f;
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public static void RemovePickupEventHandler(Func<GenericPickupController, CharacterBody, bool> f)
{
ItemSharingHooks.AdditionalPickupValidityChecks -= f;
}
}
public class NonShareableItem : MonoBehaviour
{
}
[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.*/)]
[BepInPlugin("Def.ServerSideTweaks", "ServerSideTweaks", "2.1.1")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
public class ServerSideTweaks : BaseUnityPlugin
{
public static ServerSideTweaks instance;
public static int totalItemRewardCount = 0;
public static float directorEnemyPowerBiasOverride = -1f;
public static GameObject mostRecentlyCreatedPickup = null;
public static Dictionary<PlayerCharacterMasterController, float> usersItemCredit = new Dictionary<PlayerCharacterMasterController, float>();
public static List<EquipmentIndex> disableEquipments = new List<EquipmentIndex>();
public static List<PickupIndex> availableEquipmentDropList_Saved = new List<PickupIndex>();
public static List<PickupIndex> availableLunarItemDropList_Saved = new List<PickupIndex>();
public static List<PickupIndex> availableLunarEquipmentDropList_Saved = new List<PickupIndex>();
public static EnumCollection.StageEnum debug_nextStage = EnumCollection.StageEnum.None;
public const string PluginGUID = "Def.ServerSideTweaks";
public const string PluginAuthor = "Def";
public const string PluginName = "ServerSideTweaks";
public const string PluginVersion = "2.1.1";
public static PluginInfo PInfo { get; private set; }
public void Awake()
{
PInfo = ((BaseUnityPlugin)this).Info;
instance = this;
Log.Init(((BaseUnityPlugin)this).Logger);
BepConfig.Init();
BepConfig.ChildReducedTeleportRange.SettingChanged += ChildReducedTeleportRange_SettingChanged;
ChildReducedTeleportRange_SettingChanged(null, null);
FastSimulacrumVrab.Setup();
}
private void ChildReducedTeleportRange_SettingChanged(object sender, EventArgs e)
{
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Expected O, but got Unknown
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Expected O, but got Unknown
if (BepConfig.ChildReducedTeleportRange.Value)
{
FrolicAway.TeleportAway += new Manipulator(FrolicAway_TeleportAway);
}
else
{
FrolicAway.TeleportAway -= new Manipulator(FrolicAway_TeleportAway);
}
}
private void OnEnable()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Expected O, but got Unknown
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Expected O, but got Unknown
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Expected O, but got Unknown
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Expected O, but got Unknown
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: 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_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: 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_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Expected O, but got Unknown
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Expected O, but got Unknown
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Expected O, but got Unknown
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: Expected O, but got Unknown
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_0110: Expected O, but got Unknown
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Expected O, but got Unknown
Run.Start += new hook_Start(Run_Start);
InfiniteTowerRun.OnWaveAllEnemiesDefeatedServer += new hook_OnWaveAllEnemiesDefeatedServer(InfiniteTowerRun_OnWaveAllEnemiesDefeatedServer);
InfiniteTowerRun.AdvanceWave += new hook_AdvanceWave(InfiniteTowerRun_AdvanceWave);
CombatDirector.AttemptSpawnOnTarget += new Manipulator(CombatDirector_AttemptSpawnOnTarget);
Run.FixedUpdate += new hook_FixedUpdate(Run_FixedUpdate);
InfiniteTowerWaveController.DropRewards += new Manipulator(InfiniteTowerWaveController_DropRewards);
InfiniteTowerWaveController.DropRewards += new hook_DropRewards(InfiniteTowerWaveController_DropRewards1);
GenericPickupController.AttemptGrant += new hook_AttemptGrant(GenericPickupController_AttemptGrant);
GenericPickupController.OnInteractionBegin += new hook_OnInteractionBegin(GenericPickupController_OnInteractionBegin);
GenericPickupController.CreatePickup += new Manipulator(GenericPickupController_CreatePickup);
PickupDropletController.OnCollisionEnter += new hook_OnCollisionEnter(PickupDropletController_OnCollisionEnter);
PickupPickerController.OnInteractionBegin += new hook_OnInteractionBegin(PickupPickerController_OnInteractionBegin);
PickupPickerController.CreatePickup_PickupIndex += new hook_CreatePickup_PickupIndex(PickupPickerController_CreatePickup_PickupIndex);
RandomlyLunarUtils.CheckForLunarReplacement += new hook_CheckForLunarReplacement(RandomlyLunarUtils_CheckForLunarReplacement);
RandomlyLunarUtils.CheckForLunarReplacementUniqueArray += new hook_CheckForLunarReplacementUniqueArray(RandomlyLunarUtils_CheckForLunarReplacementUniqueArray);
InfiniteTowerWaveController.Initialize += new hook_Initialize(InfiniteTowerWaveController_Initialize);
ChildMonsterController.RegisterTeleport += new hook_RegisterTeleport(ChildMonsterController_RegisterTeleport);
FastSimulacrumVrab.Enable();
if (ModCompatibilityShareSuite.enabled)
{
ModCompatibilityShareSuite.AddPickupEventHandler(NonShareableItemCheck);
}
}
private void OnDisable()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0022: Expected O, but got Unknown
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Expected O, but got Unknown
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Expected O, but got Unknown
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Expected O, but got Unknown
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Expected O, but got Unknown
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Expected O, but got Unknown
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: 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_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: 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_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00cc: Expected O, but got Unknown
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00dd: Expected O, but got Unknown
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Expected O, but got Unknown
//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
//IL_00ff: Expected O, but got Unknown
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_0110: Expected O, but got Unknown
//IL_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Expected O, but got Unknown
Run.Start -= new hook_Start(Run_Start);
InfiniteTowerRun.OnWaveAllEnemiesDefeatedServer -= new hook_OnWaveAllEnemiesDefeatedServer(InfiniteTowerRun_OnWaveAllEnemiesDefeatedServer);
InfiniteTowerRun.AdvanceWave -= new hook_AdvanceWave(InfiniteTowerRun_AdvanceWave);
CombatDirector.AttemptSpawnOnTarget -= new Manipulator(CombatDirector_AttemptSpawnOnTarget);
Run.FixedUpdate -= new hook_FixedUpdate(Run_FixedUpdate);
InfiniteTowerWaveController.DropRewards -= new Manipulator(InfiniteTowerWaveController_DropRewards);
InfiniteTowerWaveController.DropRewards -= new hook_DropRewards(InfiniteTowerWaveController_DropRewards1);
GenericPickupController.AttemptGrant -= new hook_AttemptGrant(GenericPickupController_AttemptGrant);
GenericPickupController.OnInteractionBegin -= new hook_OnInteractionBegin(GenericPickupController_OnInteractionBegin);
GenericPickupController.CreatePickup -= new Manipulator(GenericPickupController_CreatePickup);
PickupDropletController.OnCollisionEnter -= new hook_OnCollisionEnter(PickupDropletController_OnCollisionEnter);
PickupPickerController.OnInteractionBegin -= new hook_OnInteractionBegin(PickupPickerController_OnInteractionBegin);
PickupPickerController.CreatePickup_PickupIndex -= new hook_CreatePickup_PickupIndex(PickupPickerController_CreatePickup_PickupIndex);
RandomlyLunarUtils.CheckForLunarReplacement -= new hook_CheckForLunarReplacement(RandomlyLunarUtils_CheckForLunarReplacement);
RandomlyLunarUtils.CheckForLunarReplacementUniqueArray -= new hook_CheckForLunarReplacementUniqueArray(RandomlyLunarUtils_CheckForLunarReplacementUniqueArray);
InfiniteTowerWaveController.Initialize -= new hook_Initialize(InfiniteTowerWaveController_Initialize);
ChildMonsterController.RegisterTeleport -= new hook_RegisterTeleport(ChildMonsterController_RegisterTeleport);
FastSimulacrumVrab.Disable();
if (ModCompatibilityShareSuite.enabled)
{
ModCompatibilityShareSuite.RemovePickupEventHandler(NonShareableItemCheck);
}
}
private void ChildMonsterController_RegisterTeleport(orig_RegisterTeleport orig, ChildMonsterController self, bool addInvincibility)
{
if (BepConfig.Enabled.Value && BepConfig.ChildRemoveInvincibility.Value)
{
orig.Invoke(self, false);
}
else
{
orig.Invoke(self, addInvincibility);
}
}
private void FrolicAway_TeleportAway(ILContext il)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//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)
ILCursor val = new ILCursor(il);
val.GotoNext(new Func<Instruction, bool>[2]
{
(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 100f),
(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 200f)
});
val.Remove();
val.Remove();
val.Emit(OpCodes.Ldc_R4, 50f);
val.Emit(OpCodes.Ldc_R4, 100f);
}
private void InfiniteTowerWaveController_Initialize(orig_Initialize orig, InfiniteTowerWaveController self, int waveIndex, Inventory enemyInventory, GameObject spawnTarget)
{
if (BepConfig.Enabled.Value)
{
self.maxSquadSize = BepConfig.SimulacrumMaxSquadSize.Value;
}
if (NetworkServer.active && BepConfig.Enabled.Value)
{
self.wavePeriodSeconds *= BepConfig.SimulacrumWavePeriodSecondsFactor.Value;
}
orig.Invoke(self, waveIndex, enemyInventory, spawnTarget);
}
private bool NonShareableItemCheck(GenericPickupController pickup, CharacterBody picker)
{
NonShareableItem nonShareableItem = default(NonShareableItem);
if (BepConfig.SimulacrumNonSharedLoot.Value)
{
return !((Component)pickup).TryGetComponent<NonShareableItem>(ref nonShareableItem);
}
return true;
}
private void Run_Start(orig_Start orig, Run self)
{
totalItemRewardCount = 0;
mostRecentlyCreatedPickup = null;
usersItemCredit.Clear();
ResetOverridePowerBias();
orig.Invoke(self);
}
public static void SetOverridePowerBias(float powerBias)
{
directorEnemyPowerBiasOverride = powerBias;
}
public static float GetCurrentPowerBias()
{
if (((object)Run.instance).GetType() == typeof(InfiniteTowerRun) && BepConfig.Enabled.Value)
{
return BepConfig.SimulacrumDirectorEnemyPowerBias.Value;
}
if (BepConfig.Enabled.Value)
{
return BepConfig.ClassicDirectorEnemyPowerBias.Value;
}
return 0.5f;
}
public static void ResetOverridePowerBias()
{
directorEnemyPowerBiasOverride = -1f;
}
private void Run_FixedUpdate(orig_FixedUpdate orig, Run self)
{
orig.Invoke(self);
_ = NetworkServer.active;
}
private void PickupPickerController_OnInteractionBegin(orig_OnInteractionBegin orig, PickupPickerController self, Interactor activator)
{
if (CanInteract(((Component)self).gameObject, activator))
{
orig.Invoke(self, activator);
}
}
private void GenericPickupController_OnInteractionBegin(orig_OnInteractionBegin orig, GenericPickupController self, Interactor activator)
{
if (CanInteract(((Component)self).gameObject, activator))
{
orig.Invoke(self, activator);
}
}
private bool CanInteract(GameObject self, CharacterBody body)
{
if (!BepConfig.Enabled.Value)
{
return true;
}
NonShareableItem nonShareableItem = default(NonShareableItem);
if (self.TryGetComponent<NonShareableItem>(ref nonShareableItem))
{
CharacterMaster master = body.master;
if ((Object)(object)master != (Object)null && (Object)(object)master.playerCharacterMasterController != (Object)null)
{
PlayerCharacterMasterController playerCharacterMasterController = master.playerCharacterMasterController;
if (usersItemCredit.TryGetValue(playerCharacterMasterController, out var value))
{
if (value + (float)BepConfig.SimulacrumLootMaxItemDebt.Value >= 1f)
{
return true;
}
ChatHelper.PlayerHasTooManyItems(playerCharacterMasterController.GetDisplayName());
return false;
}
}
}
return true;
}
private bool CanInteract(GameObject self, Interactor activator)
{
return CanInteract(self, (activator != null) ? ((Component)activator).GetComponent<CharacterBody>() : null);
}
private void GenericPickupController_AttemptGrant(orig_AttemptGrant orig, GenericPickupController self, CharacterBody body)
{
if ((BepConfig.Enabled.Value && CanInteract(((Component)self).gameObject, body)) || !BepConfig.Enabled.Value)
{
orig.Invoke(self, body);
}
NonShareableItem nonShareableItem = default(NonShareableItem);
if (!NetworkServer.active || !BepConfig.Enabled.Value || !((Component)self).TryGetComponent<NonShareableItem>(ref nonShareableItem) || !self.consumed)
{
return;
}
CharacterMaster master = body.master;
if ((Object)(object)master != (Object)null && (Object)(object)master.playerCharacterMasterController != (Object)null)
{
PlayerCharacterMasterController playerCharacterMasterController = master.playerCharacterMasterController;
if (usersItemCredit.ContainsKey(playerCharacterMasterController))
{
usersItemCredit[playerCharacterMasterController] -= 1f;
}
else
{
usersItemCredit.Add(playerCharacterMasterController, -1f);
}
if (PlayerCharacterMasterController.instances.Where((PlayerCharacterMasterController pc) => pc.isConnected).Count() == 1)
{
SetSkullCounterCount(body.inventory, 0, null);
}
else
{
SetSkullCounterCount(body.inventory, (int)Math.Floor(usersItemCredit[playerCharacterMasterController] + (float)BepConfig.SimulacrumLootMaxItemDebt.Value), ((Component)body).gameObject);
}
}
}
private void SetSkullCounterCount(Inventory inventory, int count, GameObject playerObject)
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: 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_0078: 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_0060: Unknown result type (might be due to invalid IL or missing references)
if (!BepConfig.SimulacrumLootSkullTokens.Value)
{
return;
}
ItemIndex val = ItemCatalog.FindItemIndex("SkullCounter");
int itemCount = inventory.GetItemCount(val);
int num = count - itemCount;
if (num == 0)
{
return;
}
inventory.GiveItem(val, num);
InfiniteTowerSafeWardController safeWardController = ((InfiniteTowerRun)Run.instance).safeWardController;
if ((Object)(object)playerObject != (Object)null && (Object)(object)safeWardController != (Object)null)
{
if (num > 0)
{
PurchaseInteraction.CreateItemTakenOrb(((Component)safeWardController).transform.position, playerObject, val);
}
else
{
PurchaseInteraction.CreateItemTakenOrb(playerObject.transform.position, ((Component)safeWardController).gameObject, val);
}
}
}
private void InfiniteTowerWaveController_DropRewards(ILContext il)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
ILCursor val = new ILCursor(il);
val.DefineLabel();
val.GotoNext(new Func<Instruction, bool>[2]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 2),
(Instruction x) => ILPatternMatchingExt.MatchCall<PickupDropletController>(x, "CreatePickupDroplet")
});
val.Index += 1;
val.Remove();
val.EmitDelegate<Action<CreatePickupInfo, Vector3, Vector3>>((Action<CreatePickupInfo, Vector3, Vector3>)delegate(CreatePickupInfo pickupInfo, Vector3 position, Vector3 velocity)
{
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: 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_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_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
if (BepConfig.Enabled.Value)
{
GameObject obj = Object.Instantiate<GameObject>(PickupDropletController.pickupDropletPrefab, position, Quaternion.identity);
PickupDropletController component = obj.GetComponent<PickupDropletController>();
if (Object.op_Implicit((Object)(object)component))
{
component.createPickupInfo = pickupInfo;
component.NetworkpickupIndex = ((CreatePickupInfo)(ref pickupInfo)).pickupIndex;
}
Rigidbody component2 = obj.GetComponent<Rigidbody>();
component2.velocity = velocity;
component2.AddTorque(Random.Range(150f, 120f) * Random.onUnitSphere);
obj.AddComponent<NonShareableItem>();
NetworkServer.Spawn(obj);
totalItemRewardCount++;
}
else
{
PickupDropletController.CreatePickupDroplet(pickupInfo, position, velocity);
}
});
}
private void InfiniteTowerWaveController_DropRewards1(orig_DropRewards orig, InfiniteTowerWaveController self)
{
orig.Invoke(self);
if (!NetworkServer.active || !BepConfig.Enabled.Value)
{
return;
}
float num = 0f;
int num2 = 0;
foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances)
{
if (instance.isConnected)
{
num2++;
}
else if (usersItemCredit.ContainsKey(instance))
{
num += Math.Max(0f, usersItemCredit[instance]);
usersItemCredit[instance] = 0f;
Inventory inventory = instance.master.inventory;
int value = BepConfig.SimulacrumLootMaxItemDebt.Value;
CharacterBody body = instance.body;
SetSkullCounterCount(inventory, value, (body != null) ? ((Component)body).gameObject : null);
}
}
foreach (PlayerCharacterMasterController instance2 in PlayerCharacterMasterController.instances)
{
if (instance2.isConnected)
{
if (usersItemCredit.ContainsKey(instance2))
{
usersItemCredit[instance2] += (float)totalItemRewardCount / (float)num2;
}
else
{
usersItemCredit.Add(instance2, (float)totalItemRewardCount / (float)num2);
}
usersItemCredit[instance2] += num / Math.Max(1f, num2);
if (num2 == 1)
{
SetSkullCounterCount(instance2.master.inventory, 0, null);
}
else
{
Inventory inventory2 = instance2.master.inventory;
int count = (int)Math.Floor(usersItemCredit[instance2] + (float)BepConfig.SimulacrumLootMaxItemDebt.Value);
CharacterBody body2 = instance2.body;
SetSkullCounterCount(inventory2, count, (body2 != null) ? ((Component)body2).gameObject : null);
}
Log.LogDebug(instance2.networkUser.userName + " itemCredit: " + usersItemCredit[instance2]);
}
}
totalItemRewardCount = 0;
}
private void PickupDropletController_OnCollisionEnter(orig_OnCollisionEnter orig, PickupDropletController self, Collision collision)
{
mostRecentlyCreatedPickup = null;
orig.Invoke(self, collision);
if (BepConfig.Enabled.Value && (Object)(object)mostRecentlyCreatedPickup != (Object)null && Object.op_Implicit((Object)(object)((Component)self).GetComponent<NonShareableItem>()))
{
mostRecentlyCreatedPickup.AddComponent<NonShareableItem>();
}
}
private void PickupPickerController_CreatePickup_PickupIndex(orig_CreatePickup_PickupIndex orig, PickupPickerController self, PickupIndex pickupIndex)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
mostRecentlyCreatedPickup = null;
orig.Invoke(self, pickupIndex);
if (BepConfig.Enabled.Value && (Object)(object)mostRecentlyCreatedPickup != (Object)null && Object.op_Implicit((Object)(object)((Component)self).GetComponent<NonShareableItem>()))
{
mostRecentlyCreatedPickup.AddComponent<NonShareableItem>();
}
}
private void CommandArtifactManager_OnDropletHitGroundServer(ILContext il)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
ILCursor val = new ILCursor(il);
val.DefineLabel();
val.GotoNext(new Func<Instruction, bool>[6]
{
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<CreatePickupInfo>(x, "position"),
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<CreatePickupInfo>(x, "rotation"),
(Instruction x) => ILPatternMatchingExt.MatchCall<Object>(x, "Instantiate"),
(Instruction x) => ILPatternMatchingExt.MatchDup(x)
});
val.Index += 5;
val.EmitDelegate<Func<GameObject, GameObject>>((Func<GameObject, GameObject>)delegate(GameObject obj)
{
mostRecentlyCreatedPickup = obj;
return obj;
});
}
private void GenericPickupController_CreatePickup(ILContext il)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
ILCursor val = new ILCursor(il);
val.DefineLabel();
val.GotoNext(new Func<Instruction, bool>[5]
{
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<CreatePickupInfo>(x, "position"),
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<CreatePickupInfo>(x, "rotation"),
(Instruction x) => ILPatternMatchingExt.MatchCall<Object>(x, "Instantiate")
});
val.Index += 5;
val.EmitDelegate<Func<GameObject, GameObject>>((Func<GameObject, GameObject>)delegate(GameObject obj)
{
mostRecentlyCreatedPickup = obj;
return obj;
});
}
private bool SkipWithPowerBias(float costMultipliedByMaximumNumberToSpawnBeforeSkipping, CombatDirector combatDirector, float powerBias)
{
if (costMultipliedByMaximumNumberToSpawnBeforeSkipping / (float)combatDirector.maximumNumberToSpawnBeforeSkipping > (float)combatDirector.mostExpensiveMonsterCostInDeck * (0.5f + powerBias) * (0.5f + powerBias) * (0.5f + powerBias))
{
float num = Math.Max(0f, 0.1f - powerBias);
if (2f * (0.5f - powerBias) - num > RoR2Application.rng.nextNormalizedFloat)
{
return true;
}
}
return costMultipliedByMaximumNumberToSpawnBeforeSkipping * (1.5f - powerBias) * (1.5f - powerBias) < combatDirector.monsterCredit;
}
private void CombatDirector_AttemptSpawnOnTarget(ILContext il)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//IL_0139: Unknown result type (might be due to invalid IL or missing references)
ILCursor val = new ILCursor(il);
ILLabel val2 = val.DefineLabel();
val.GotoNext(new Func<Instruction, bool>[7]
{
(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 1),
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<CombatDirector>(x, "maximumNumberToSpawnBeforeSkipping"),
(Instruction x) => ILPatternMatchingExt.MatchMul(x),
(Instruction x) => ILPatternMatchingExt.MatchConvR4(x),
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<CombatDirector>(x, "monsterCredit")
});
val.Index += 6;
val.Remove();
val.Remove();
val.EmitDelegate<Func<float, CombatDirector, bool>>((Func<float, CombatDirector, bool>)delegate(float costMultipliedByMaximumNumberToSpawnBeforeSkipping, CombatDirector combatDirector)
{
if (directorEnemyPowerBiasOverride >= 0f)
{
return SkipWithPowerBias(costMultipliedByMaximumNumberToSpawnBeforeSkipping, combatDirector, directorEnemyPowerBiasOverride);
}
if (((object)Run.instance).GetType() == typeof(InfiniteTowerRun) && BepConfig.Enabled.Value)
{
return SkipWithPowerBias(costMultipliedByMaximumNumberToSpawnBeforeSkipping, combatDirector, BepConfig.SimulacrumDirectorEnemyPowerBias.Value);
}
return BepConfig.Enabled.Value ? SkipWithPowerBias(costMultipliedByMaximumNumberToSpawnBeforeSkipping, combatDirector, BepConfig.ClassicDirectorEnemyPowerBias.Value) : (costMultipliedByMaximumNumberToSpawnBeforeSkipping < combatDirector.monsterCredit);
});
val.Emit(OpCodes.Brfalse, (object)val2);
val.Index += 2;
val.GotoNext(new Func<Instruction, bool>[4]
{
(Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0),
(Instruction x) => ILPatternMatchingExt.MatchLdfld<CombatDirector>(x, "currentMonsterCard"),
(Instruction x) => ILPatternMatchingExt.MatchCallvirt<DirectorCard>(x, "GetSpawnCard"),
(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 4)
});
val.MarkLabel(val2);
}
private void InfiniteTowerRun_OnWaveAllEnemiesDefeatedServer(orig_OnWaveAllEnemiesDefeatedServer orig, InfiniteTowerRun self, InfiniteTowerWaveController wc)
{
orig.Invoke(self, wc);
if (BepConfig.Enabled.Value && NetworkServer.active && !(BepConfig.SimulacrumCommencementArtifactDissonanceChance.Value <= 0f) && (EnumCollection.SceneNameIsStage(SceneCatalog.currentSceneDef.cachedName, EnumCollection.StageEnum.SimulacrumCommencement) || EnumCollection.SceneNameIsStage(SceneCatalog.currentSceneDef.cachedName, EnumCollection.StageEnum.Commencement)))
{
RunArtifactManager.instance.SetArtifactEnabledServer(EnumCollection.GetArtifactDef(EnumCollection.ArtifactEnum.Dissonance), false);
}
}
private void InfiniteTowerRun_AdvanceWave(orig_AdvanceWave orig, InfiniteTowerRun self)
{
orig.Invoke(self);
if (BepConfig.Enabled.Value && NetworkServer.active && !(BepConfig.SimulacrumCommencementArtifactDissonanceChance.Value <= 0f) && (EnumCollection.SceneNameIsStage(SceneCatalog.currentSceneDef.cachedName, EnumCollection.StageEnum.SimulacrumCommencement) || EnumCollection.SceneNameIsStage(SceneCatalog.currentSceneDef.cachedName, EnumCollection.StageEnum.Commencement)) && BepConfig.SimulacrumCommencementArtifactDissonanceChance.Value > RoR2Application.rng.nextNormalizedFloat)
{
RunArtifactManager.instance.SetArtifactEnabledServer(EnumCollection.GetArtifactDef(EnumCollection.ArtifactEnum.Dissonance), true);
}
}
private PickupIndex RandomlyLunarUtils_CheckForLunarReplacement(orig_CheckForLunarReplacement orig, PickupIndex pickupIndex, Xoroshiro128Plus rng)
{
//IL_0001: 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_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: 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_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
pickupIndex = orig.Invoke(pickupIndex, rng);
if (!BepConfig.Enabled.Value || pickupIndex == PickupIndex.none)
{
return pickupIndex;
}
PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndex);
if (pickupDef != null && pickupDef.isLunar && (!BepConfig.NoPearlsInBazaar.Value || !EnumCollection.SceneNameIsStage(SceneCatalog.currentSceneDef.cachedName, EnumCollection.StageEnum.Bazaar)))
{
float nextNormalizedFloat = rng.nextNormalizedFloat;
if (nextNormalizedFloat < BepConfig.IrradiantPearlReplacesLunarItemChance.Value)
{
pickupIndex = PickupCatalog.FindPickupIndex(ItemCatalog.FindItemIndex("ShinyPearl"));
}
else if (nextNormalizedFloat < BepConfig.IrradiantPearlReplacesLunarItemChance.Value + BepConfig.PearlReplacesLunarItemChance.Value)
{
pickupIndex = PickupCatalog.FindPickupIndex(ItemCatalog.FindItemIndex("Pearl"));
}
return pickupIndex;
}
return pickupIndex;
}
private void RandomlyLunarUtils_CheckForLunarReplacementUniqueArray(orig_CheckForLunarReplacementUniqueArray orig, PickupIndex[] pickupIndices, Xoroshiro128Plus rng)
{
//IL_001e: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: 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_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
orig.Invoke(pickupIndices, rng);
if (!BepConfig.Enabled.Value)
{
return;
}
for (int i = 0; i < pickupIndices.Length; i++)
{
PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndices[i]);
if (pickupDef != null && pickupDef.isLunar && (!BepConfig.NoPearlsInBazaar.Value || !EnumCollection.SceneNameIsStage(SceneCatalog.currentSceneDef.cachedName, EnumCollection.StageEnum.Bazaar)))
{
float nextNormalizedFloat = rng.nextNormalizedFloat;
if (nextNormalizedFloat < BepConfig.IrradiantPearlReplacesLunarItemChance.Value)
{
pickupIndices[i] = PickupCatalog.FindPickupIndex(ItemCatalog.FindItemIndex("ShinyPearl"));
}
else if (nextNormalizedFloat < BepConfig.IrradiantPearlReplacesLunarItemChance.Value + BepConfig.PearlReplacesLunarItemChance.Value)
{
pickupIndices[i] = PickupCatalog.FindPickupIndex(ItemCatalog.FindItemIndex("Pearl"));
}
}
}
}
}
}