using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using LethalLib.Modules;
using Microsoft.CodeAnalysis;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("OrianaGamesLethalCompany")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("By Lunastellia")]
[assembly: AssemblyFileVersion("1.0.3.0")]
[assembly: AssemblyInformationalVersion("1.0.3")]
[assembly: AssemblyProduct("OrianaGamesLethalCompany")]
[assembly: AssemblyTitle("OrianaGamesLethalCompany")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.3.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 OrianaCore
{
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "OrianaGamesLethalCompany";
public const string PLUGIN_NAME = "OrianaGamesLethalCompany";
public const string PLUGIN_VERSION = "1.0.3";
}
}
namespace OrianaGamesLC
{
public class LightCheck : MonoBehaviour
{
private MeshRenderer mainRend;
private Light thisLight;
private Shovel thisHitdamage;
private static bool IsActived;
private void Start()
{
thisLight = ((Component)this).GetComponentInChildren<Light>();
mainRend = ((Component)this).GetComponentInChildren<MeshRenderer>();
thisHitdamage = ((Component)this).GetComponentInChildren<Shovel>();
thisHitdamage.shovelHitForce = Config.lightsaberDamage.Value;
}
private void On()
{
IsActived = true;
}
private void Off()
{
IsActived = false;
}
private void Update()
{
((Behaviour)thisLight).enabled = ((Renderer)mainRend).enabled;
if ((((GrabbableObject)thisHitdamage).isHeld && !((GrabbableObject)thisHitdamage).isPocketed) || ((GrabbableObject)thisHitdamage).isHeldByEnemy)
{
On();
}
else
{
Off();
}
thisHitdamage.shovelHitForce = Config.lightsaberDamage.Value;
if (IsActived)
{
thisLight.intensity = 0f + Config.lightsaberIntensity.Value;
thisLight.range = 0f + Config.lightsaberRange.Value;
((Behaviour)thisLight).enabled = true;
}
else
{
thisLight.intensity = 0f;
thisLight.range = 0f;
((Behaviour)thisLight).enabled = false;
}
}
}
public class Config
{
public static ConfigEntry<int> lightsaberPrice;
public static ConfigEntry<int> lightsaberColor;
public static ConfigEntry<float> lightsaberIntensity;
public static ConfigEntry<float> lightsaberRange;
public static ConfigEntry<bool> lightsaberCanscrap;
public static ConfigEntry<int> lightsaberScrap;
public static ConfigEntry<int> lightsaberDamage;
public static ConfigEntry<bool> usefriendlyfire;
public static ConfigEntry<int> friendlydamages;
public static ConfigFile Configfile;
public static void Load()
{
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_013d: Expected O, but got Unknown
lightsaberPrice = Plugin.config.Bind<int>("Lasersaber", "Price", 50, "Change price to Lasersaber, Default = 50");
lightsaberColor = Plugin.config.Bind<int>("Lasersaber", "Buyable Color", 0, "0 - random 1 - green, 2 - red, 3 - blue, 4 - purple, Default = 0");
lightsaberCanscrap = Plugin.config.Bind<bool>("Lasersaber", "Can Scrap", true, "Can scrap Lasersaber in dungeon, Default = true");
lightsaberScrap = Plugin.config.Bind<int>("Lasersaber", "Scrap spawn value", 10, "Spawn rarity (range 0-100), Default = 10");
lightsaberIntensity = Plugin.config.Bind<float>("Lasersaber", "Intensity", 40f, "Change intencity to Lasersaber, Default = 40");
lightsaberRange = Plugin.config.Bind<float>("Lasersaber", "Range", 15f, "Change light range to Lasersaber, Default = 15");
lightsaberDamage = Plugin.config.Bind<int>("Lasersaber", "Damage multiplier", 1, "Damage multiplier, (Shovel damage = x1), Default = 1");
usefriendlyfire = Plugin.config.Bind<bool>("Friendly damages", "Enable custom Friendly damages", true, "for compatibility with other mods, Default = true");
friendlydamages = Plugin.config.Bind<int>("Friendly damages", "damage to other player", 30, "from shovel, lasersaber and other similar weapon, Default = 30");
Configfile = new ConfigFile(Paths.ConfigPath + "\\OrianaGames.LethalCorporation.cfg", true);
}
}
[HarmonyPatch]
internal class DamagePatch
{
[HarmonyPatch(typeof(PlayerControllerB), "DamagePlayerFromOtherClientServerRpc")]
[HarmonyPrefix]
public static void DamagePlayerFromOtherClientServerRpc(ref int damageAmount, Vector3 hitDirection, int playerWhoHit)
{
if (Config.usefriendlyfire.Value)
{
damageAmount = Config.friendlydamages.Value;
}
}
}
public static class PluginInfo
{
public const string GUID = "Orianagames.LethalCorporation";
public const string NAME = "LethalCorporation";
public const string VERSION = "1.0.3";
}
[BepInPlugin("Orianagames.LethalCorporation", "LethalCorporation", "1.0.3")]
internal class Plugin : BaseUnityPlugin
{
public static ConfigFile config;
private readonly Harmony harmony = new Harmony("Orianagames.LethalCorporation");
private static Plugin instance;
private static string Debugg = "*";
public void Awake()
{
config = ((BaseUnityPlugin)this).Config;
Config.Load();
if ((Object)(object)instance == (Object)null)
{
instance = this;
string[] array = new string[4] { "0LS", "1LS", "2LS", "3LS" };
string[] array2 = new string[4] { "GreenLightsaber", "RedLightsaber", "BlueLightsaber", "PurpleLightsaber" };
int num = 2;
num = ((Config.lightsaberColor.Value == 0) ? Random.Range(0, 4) : ((Config.lightsaberColor.Value != 1) ? ((Config.lightsaberColor.Value == 2) ? 1 : ((Config.lightsaberColor.Value == 3) ? 2 : ((Config.lightsaberColor.Value != 4) ? Random.Range(0, 4) : 3))) : 0));
for (int i = 0; i < 4; i++)
{
string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), array[i]);
AssetBundle val = AssetBundle.LoadFromFile(text);
string text2 = "Assets/" + array2[i] + ".asset";
Item val2 = val.LoadAsset<Item>(text2);
val2.itemName = "LaserSaber";
val2.weight = 1.05f;
val2.isConductiveMetal = true;
val2.canBeGrabbedBeforeGameStart = true;
NetworkPrefabs.RegisterNetworkPrefab(val2.spawnPrefab);
Utilities.FixMixerGroups(val2.spawnPrefab);
Shovel component = val2.spawnPrefab.GetComponent<Shovel>();
component.shovelHitForce = Config.lightsaberDamage.Value;
LightCheck lightCheck = val2.spawnPrefab.AddComponent<LightCheck>();
if (Config.lightsaberCanscrap.Value)
{
Items.RegisterScrap(val2, Config.lightsaberScrap.Value, (LevelTypes)(-1));
}
else
{
Items.RegisterScrap(val2, 0, (LevelTypes)(-1));
}
if (i == num)
{
TerminalNode val3 = ScriptableObject.CreateInstance<TerminalNode>();
val3.clearPreviousText = true;
val3.displayText = "A f*ckin lazersaber!\n\n";
Items.RegisterShopItem(val2, (TerminalNode)null, (TerminalNode)null, val3, Config.lightsaberPrice.Value);
if (num == 0)
{
Debugg = " - (LightsaberColor = Green)";
}
if (num == 0)
{
Debugg = " - (LightsaberColor = Red)";
}
if (num == 0)
{
Debugg = " - (LightsaberColor = Bleu)";
}
if (num == 0)
{
Debugg = " - (LightsaberColor = Purple)";
}
}
}
}
harmony.PatchAll(typeof(Plugin).Assembly);
harmony.PatchAll();
((BaseUnityPlugin)this).Logger.Log((LogLevel)16, (object)("OrianaGames - LethalCorporation loaded!" + Debugg));
}
}
public static class MainMenuManager_Patch
{
[HarmonyPatch(typeof(MenuManager), "Awake")]
public static class MainMenuManagerPatch
{
public static void Postfix(MenuManager __instance)
{
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Expected O, but got Unknown
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
try
{
GameObject gameObject = ((Component)((Component)__instance).transform.parent).gameObject;
GameObject gameObject2 = ((Component)gameObject.transform.Find("MenuContainer").Find("VersionNum")).gameObject;
GameObject gameObject3 = ((Component)gameObject.transform.Find("MenuContainer").Find("MainButtons").Find("HeaderImage")).gameObject;
if (!Object.op_Implicit((Object)(object)GameObject.Find("VersionText")))
{
GameObject val = new GameObject("VersionText");
val.transform.position = gameObject3.transform.position;
TextMesh val2 = val.AddComponent<TextMesh>();
val2.fontStyle = (FontStyle)1;
val2.alignment = (TextAlignment)1;
val2.text = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<size=25><color=#ffff66>LethalCorporation</color> <color=#0066cc>[1.0.2]</color><color=#ff0000>\n- </color><color=#ff00ff> By Lunastellia </color><color=#3399ff>(OrianaGames)</color></size>";
}
}
catch (Exception)
{
}
}
}
}
}