using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security.Permissions;
using BepInEx;
using On.RoR2;
using R2API.Utils;
using RoR2;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("SyncedTurrets")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+a315658135d68a10ab86627d7d9b7adaf0924ca5")]
[assembly: AssemblyProduct("SyncedTurrets")]
[assembly: AssemblyTitle("SyncedTurrets")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
namespace SyncedTurrets;
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.WPhantom.SyncedTurrets", "SyncedTurrets", "0.0.3")]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
internal class SyncedTurrets : BaseUnityPlugin
{
private const string ModID = "com.WPhantom.SyncedTurrets";
private const string ModName = "SyncedTurrets";
private const string ModVer = "0.0.3";
public void Awake()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
CharacterMaster.AddDeployable += new hook_AddDeployable(HookThingy);
}
private static void HookThingy(orig_AddDeployable orig, CharacterMaster self, Deployable deployable, DeployableSlot slot)
{
//IL_0003: 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_000b: Invalid comparison between Unknown and I4
orig.Invoke(self, deployable, slot);
if ((int)slot == 1)
{
SyncTurrets syncTurrets = ((Component)deployable).gameObject.AddComponent<SyncTurrets>();
syncTurrets.characterMaster = self;
syncTurrets.Init();
}
}
}
public class SyncTurrets : MonoBehaviour
{
internal CharacterMaster characterMaster;
internal void Init()
{
characterMaster.inventory.onInventoryChanged += UpdateInventory;
}
private void UpdateInventory()
{
if ((Object)(object)((Component)this).gameObject == (Object)null)
{
Object.Destroy((Object)(object)this);
return;
}
CharacterMaster component = ((Component)this).gameObject.GetComponent<CharacterMaster>();
if ((Object)(object)component == (Object)null || !Object.op_Implicit((Object)(object)component))
{
return;
}
Inventory inventory = component.inventory;
if ((Object)(object)characterMaster.inventory == (Object)null || !Object.op_Implicit((Object)(object)characterMaster.inventory))
{
characterMaster = ((Component)this).gameObject.GetComponent<Deployable>().ownerMaster;
}
inventory.CopyItemsFrom(characterMaster.inventory);
inventory.ResetItem(Items.WardOnLevel);
inventory.ResetItem(Items.BeetleGland);
inventory.ResetItem(Items.CrippleWardOnLevel);
inventory.ResetItem(Items.ExtraLife);
inventory.ResetItem(Items.ExtraLifeConsumed);
inventory.GiveItem(Items.ExtraLife, inventory.GetItemCount(Items.ExtraLife));
inventory.GiveItem(Items.ExtraLifeConsumed, inventory.GetItemCount(Items.ExtraLifeConsumed));
int itemCount = characterMaster.inventory.GetItemCount(Items.DroneWeapons);
inventory.ResetItem(Items.DroneWeapons);
inventory.ResetItem(Items.DroneWeaponsBoost);
inventory.ResetItem(Items.DroneWeaponsDisplay1);
inventory.ResetItem(Items.DroneWeaponsDisplay2);
if (itemCount > 0)
{
inventory.GiveItem(Items.DroneWeaponsBoost, itemCount);
ItemDef val = Items.DroneWeaponsDisplay1;
if (Random.value < 0.1f)
{
val = Items.DroneWeaponsDisplay2;
}
inventory.GiveItem(val, itemCount);
}
inventory.ResetItem(Items.HealingPotion);
inventory.ResetItem(Items.HealingPotionConsumed);
inventory.GiveItem(Items.HealingPotion, inventory.GetItemCount(Items.HealingPotion));
inventory.GiveItem(Items.HealingPotionConsumed, inventory.GetItemCount(Items.HealingPotionConsumed));
inventory.ResetItem(Items.ExtraLifeVoid);
inventory.ResetItem(Items.ExtraLifeVoidConsumed);
inventory.GiveItem(Items.ExtraLifeVoid, inventory.GetItemCount(Items.ExtraLifeVoid));
inventory.GiveItem(Items.ExtraLifeVoidConsumed, inventory.GetItemCount(Items.ExtraLifeVoidConsumed));
inventory.ResetItem(Items.FragileDamageBonus);
inventory.ResetItem(Items.FragileDamageBonusConsumed);
inventory.GiveItem(Items.FragileDamageBonus, inventory.GetItemCount(Items.FragileDamageBonus));
inventory.GiveItem(Items.FragileDamageBonusConsumed, inventory.GetItemCount(Items.FragileDamageBonusConsumed));
component.GetBody().RecalculateStats();
}
private void OnDisable()
{
characterMaster.inventory.onInventoryChanged -= UpdateInventory;
Object.Destroy((Object)(object)this);
}
}