using System; using System.Collections.Generic; 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.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using LethalLib.Modules; using Microsoft.CodeAnalysis; using ReservedItemSlotCore.Data; using Unity.Netcode; 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("SeanathonHooper.ThrowableBrick")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.3.2.0")] [assembly: AssemblyInformationalVersion("1.3.2+f590a58ed953c5863bed26b61e185037ca531a1b")] [assembly: AssemblyProduct("ThrowableBrick")] [assembly: AssemblyTitle("SeanathonHooper.ThrowableBrick")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.3.2.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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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 ThrowableBrick { internal class FracturedBrickBehavior : PhysicsProp { protected Ray brickThrowRay; protected int brickMask = 268437761; protected RaycastHit brickHit; private PlayerControllerB playerThrower; public bool isExplosive = true; public int health = 5; public int entityDamage = 3; public int playerDamage = 20; public int explosiveDamange = 37; public bool damagePlayers = true; public float brickValueLoss = 0.72f; protected bool isThrown; protected HashSet hits = new HashSet(); public bool isDamaged; protected void DamageBrick() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) health--; if (health <= 0) { if (isExplosive) { Landmine.SpawnExplosion(((Component)this).transform.position + Vector3.up, true, 5.7f, 6f, explosiveDamange, 10f, (GameObject)null, false); } ((GrabbableObject)this).DestroyObjectInHand(((GrabbableObject)this).playerHeldBy); } ((GrabbableObject)this).SetScrapValue((int)((float)((GrabbableObject)this).scrapValue * brickValueLoss)); } public override void ItemActivate(bool used, bool buttonDown = true) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).ItemActivate(used, buttonDown); Debug.Log((object)"ACTIVATED!"); isThrown = true; playerThrower = ((GrabbableObject)this).playerHeldBy; ((GrabbableObject)this).playerHeldBy.DiscardHeldObject(true, (NetworkObject)null, GetThrowDestination(), true); } public override void Update() { //IL_0017: 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_00b3: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).Update(); if (!isThrown) { return; } Collider[] array = Physics.OverlapSphere(((Component)this).transform.position, 1f, 2621448, (QueryTriggerInteraction)2); Collider[] array2 = array; foreach (Collider val in array2) { if (hits.Contains(val)) { continue; } if (((Component)val).gameObject.layer == 3) { if (damagePlayers) { PlayerControllerB component = ((Component)val).gameObject.GetComponent(); if ((Object)(object)component != (Object)(object)playerThrower) { Debug.Log((object)("Hit " + ((Object)((Component)component).gameObject).name)); component.DamagePlayer(playerDamage, true, true, (CauseOfDeath)0, 0, false, default(Vector3)); hits.Add(val); } } } else if (((Component)val).gameObject.layer == 19) { EnemyAICollisionDetect componentInChildren = ((Component)val).gameObject.GetComponentInChildren(); componentInChildren.mainScript.HitEnemy(entityDamage, ((GrabbableObject)this).playerHeldBy, true, -1); Debug.Log((object)("Hit " + ((Object)((Component)componentInChildren).gameObject).name)); hits.Add(val); } } } public override void EquipItem() { ((PhysicsProp)this).EquipItem(); string[] array = new string[1] { "Throw: [LMB]" }; if (((NetworkBehaviour)this).IsOwner) { HUDManager.Instance.ChangeControlTipMultiple(array, true, ((GrabbableObject)this).itemProperties); } } public override void OnHitGround() { ((GrabbableObject)this).OnHitGround(); hits.Clear(); if (isThrown) { DamageBrick(); } isThrown = false; } protected Vector3 GetThrowDestination() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) Vector3 position = ((Component)this).transform.position; Debug.DrawRay(((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.position, ((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.forward, Color.yellow, 15f); brickThrowRay = new Ray(((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.position, ((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.forward); position = ((!Physics.Raycast(brickThrowRay, ref brickHit, 12f, brickMask, (QueryTriggerInteraction)1)) ? ((Ray)(ref brickThrowRay)).GetPoint(10f) : ((Ray)(ref brickThrowRay)).GetPoint(((RaycastHit)(ref brickHit)).distance - 0.05f)); Debug.DrawRay(position, Vector3.down, Color.blue, 15f); brickThrowRay = new Ray(position, Vector3.down); if (Physics.Raycast(brickThrowRay, ref brickHit, 30f, brickMask, (QueryTriggerInteraction)1)) { return ((RaycastHit)(ref brickHit)).point + Vector3.up * 0.05f; } return ((Ray)(ref brickThrowRay)).GetPoint(30f); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "SeanathonHooper.ThrowableBrick"; public const string PLUGIN_NAME = "ThrowableBrick"; public const string PLUGIN_VERSION = "1.3.2"; } } namespace ThrowableBrick.Patches { internal class BrickBehavior : PhysicsProp { protected Ray brickThrowRay; protected int brickMask = 268437761; protected RaycastHit brickHit; private PlayerControllerB playerThrower; public bool isExplosive = true; public int health = 5; public int entityDamage = 3; public int playerDamage = 20; public int explosiveDamange = 37; public bool damagePlayers = true; public float brickValueLoss = 0.72f; protected bool isThrown; protected HashSet hits = new HashSet(); public bool isDamaged; public Item fracturedBrick; protected void DamageBrick() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) health--; if (health <= 0) { if (isExplosive) { Landmine.SpawnExplosion(((Component)this).transform.position + Vector3.up, true, 5.7f, 6f, explosiveDamange, 10f, (GameObject)null, false); } ((GrabbableObject)this).DestroyObjectInHand(((GrabbableObject)this).playerHeldBy); } ((GrabbableObject)this).SetScrapValue((int)((float)((GrabbableObject)this).scrapValue * brickValueLoss)); } public override void ItemActivate(bool used, bool buttonDown = true) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).ItemActivate(used, buttonDown); Debug.Log((object)"ACTIVATED!"); isThrown = true; playerThrower = ((GrabbableObject)this).playerHeldBy; ((GrabbableObject)this).playerHeldBy.DiscardHeldObject(true, (NetworkObject)null, GetThrowDestination(), true); } public override void Update() { //IL_0017: 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_00b3: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).Update(); if (!isThrown) { return; } Collider[] array = Physics.OverlapSphere(((Component)this).transform.position, 1f, 2621448, (QueryTriggerInteraction)2); Collider[] array2 = array; foreach (Collider val in array2) { if (hits.Contains(val)) { continue; } if (((Component)val).gameObject.layer == 3) { if (damagePlayers) { PlayerControllerB component = ((Component)val).gameObject.GetComponent(); if ((Object)(object)component != (Object)(object)playerThrower) { Debug.Log((object)("Hit " + ((Object)((Component)component).gameObject).name)); component.DamagePlayer(playerDamage, true, true, (CauseOfDeath)0, 0, false, default(Vector3)); hits.Add(val); } } } else if (((Component)val).gameObject.layer == 19) { EnemyAICollisionDetect componentInChildren = ((Component)val).gameObject.GetComponentInChildren(); componentInChildren.mainScript.HitEnemy(entityDamage, ((GrabbableObject)this).playerHeldBy, true, -1); Debug.Log((object)("Hit " + ((Object)((Component)componentInChildren).gameObject).name)); hits.Add(val); } } } public override void EquipItem() { ((PhysicsProp)this).EquipItem(); string[] array = new string[1] { "Throw: [LMB]" }; if (((NetworkBehaviour)this).IsOwner) { HUDManager.Instance.ChangeControlTipMultiple(array, true, ((GrabbableObject)this).itemProperties); } } public override void OnHitGround() { //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).OnHitGround(); hits.Clear(); if (isThrown) { DamageBrick(); if (!isDamaged && (Object)(object)fracturedBrick != (Object)null && health != 0) { GameObject val = Object.Instantiate(fracturedBrick.spawnPrefab, ((Component)this).transform.position, Quaternion.identity); val.GetComponent().health = health; ((GrabbableObject)val.GetComponent()).SetScrapValue(((GrabbableObject)this).scrapValue); NetworkObject component = val.GetComponent(); if ((Object)(object)component != (Object)null && !component.IsSpawned) { component.Spawn(false); } ((GrabbableObject)this).DestroyObjectInHand(((GrabbableObject)this).playerHeldBy); } } isThrown = false; } protected Vector3 GetThrowDestination() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) Vector3 position = ((Component)this).transform.position; Debug.DrawRay(((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.position, ((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.forward, Color.yellow, 15f); brickThrowRay = new Ray(((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.position, ((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.forward); position = ((!Physics.Raycast(brickThrowRay, ref brickHit, 12f, brickMask, (QueryTriggerInteraction)1)) ? ((Ray)(ref brickThrowRay)).GetPoint(10f) : ((Ray)(ref brickThrowRay)).GetPoint(((RaycastHit)(ref brickHit)).distance - 0.05f)); Debug.DrawRay(position, Vector3.down, Color.blue, 15f); brickThrowRay = new Ray(position, Vector3.down); if (Physics.Raycast(brickThrowRay, ref brickHit, 30f, brickMask, (QueryTriggerInteraction)1)) { return ((RaycastHit)(ref brickHit)).point + Vector3.up * 0.05f; } return ((Ray)(ref brickThrowRay)).GetPoint(30f); } } public static class ReservedItemSlotCompat { public static void CreateSlotsAddItems() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: 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_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0026: 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_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown ReservedItemData val = new ReservedItemData("Brick", (PlayerBone)0, default(Vector3), default(Vector3)); ReservedItemData val2 = new ReservedItemData("Fractured Brick", (PlayerBone)0, default(Vector3), default(Vector3)); ReservedItemSlotData val3 = ReservedItemSlotData.CreateReservedItemSlotData("brickSlot", 20, 100); val3.AddItemToReservedItemSlot(val); val3.AddItemToReservedItemSlot(val2); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("SeanathonHooper.ThrowableBrick", "ThrowableBrick", "1.3.2")] public class ThrowableBrick : BaseUnityPlugin { public static AssetBundle? BrickAsset; public static ConfigEntry? MinimumValue = null; public static ConfigEntry? MaximumValue = null; public static ConfigEntry? Weight = null; public static ConfigEntry? EntityDamage = null; public static ConfigEntry? PlayerDamage = null; public static ConfigEntry? BrickHealth = null; public static ConfigEntry? GrabbableToEnemies = null; public static ConfigEntry? ItemRarity = null; public static ConfigEntry? FunnyMode = null; public static ConfigEntry? FunnyModeExplosionDamage = null; public static ConfigEntry? DamagePlayers = null; public static ConfigEntry? BrickValueLoss = null; public static ConfigEntry? FracturedWeight = null; public static ConfigEntry? FracturedEntityDamage = null; public static ConfigEntry? FracturedPlayerDamage = null; public static ConfigEntry? ReservedItemSlot = null; public static bool useItemSlot = true; public static ThrowableBrick Instance { get; private set; } = null; internal static ManualLogSource Logger { get; private set; } = null; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; Logger.LogInfo((object)"SeanathonHooper.ThrowableBrick v1.3.2 has loaded!"); GetModConfig(); InitializeItem(); if (Chainloader.PluginInfos.ContainsKey("FlipMods.ReservedItemSlotCore") && useItemSlot) { ReservedItemSlotCompat.CreateSlotsAddItems(); } } internal void GetModConfig() { MinimumValue = ((BaseUnityPlugin)this).Config.Bind("General", "MinimumValue", 32, "Minimum value of the brick"); MaximumValue = ((BaseUnityPlugin)this).Config.Bind("General", "MaximumValue", 80, "Maximum value of the brick"); Weight = ((BaseUnityPlugin)this).Config.Bind("General", "Weight", 10, "Weight of the brick"); EntityDamage = ((BaseUnityPlugin)this).Config.Bind("General", "EntityDamage", 3, "How many shovel hits worth of damage the brick does on impact"); PlayerDamage = ((BaseUnityPlugin)this).Config.Bind("General", "PlayerDamage", 20, "Damage dealt to the player in terms of percentage of health"); BrickHealth = ((BaseUnityPlugin)this).Config.Bind("General", "BrickHealth", 5, "How many times the brick can be thrown before being destroyed."); GrabbableToEnemies = ((BaseUnityPlugin)this).Config.Bind("General", "GrabbableToEnemies", true, "If true, enemies can pick up this item."); ItemRarity = ((BaseUnityPlugin)this).Config.Bind("General", "ItemRarity", 100, "Controls how often this item spawns (higher = more common)."); FunnyMode = ((BaseUnityPlugin)this).Config.Bind("General", "FunnyMode", true, "Enables explosions on brick destruction."); FunnyModeExplosionDamage = ((BaseUnityPlugin)this).Config.Bind("General", "FunnyModeExplosionDamage", 37, "Explosion damage dealt when FunnyMode is enabled."); DamagePlayers = ((BaseUnityPlugin)this).Config.Bind("General", "DamagePlayers", true, "If true, it damages players when thrown."); BrickValueLoss = ((BaseUnityPlugin)this).Config.Bind("General", "BrickValueLoss", 0.28f, "Percentage of scrap value lost on when thrown (0.0–1.0), set to 1 for no value lost."); FracturedWeight = ((BaseUnityPlugin)this).Config.Bind("General", "FractureWeight", 7, "Weight of the brick when fractured."); FracturedEntityDamage = ((BaseUnityPlugin)this).Config.Bind("General", "FracturdedEntityDamage", 3, "Damage dealt to enemies by the fractured brick."); FracturedPlayerDamage = ((BaseUnityPlugin)this).Config.Bind("General", "FracturedPlayerDamage", 20, "Damage dealt to players by the fractured brick."); ReservedItemSlot = ((BaseUnityPlugin)this).Config.Bind("General", "ReservedItemSlot", true, "If true, enables the ReservedItemSlot."); } internal static void InitializeItem() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); BrickAsset = AssetBundle.LoadFromFile(Path.Combine(directoryName, "brickassetbundle")); if ((Object)(object)BrickAsset == (Object)null) { Logger.LogInfo((object)"Failed to load custom assets"); return; } Item val = BrickAsset.LoadAsset("Assets/BRICK/BrickItem.asset"); Item val2 = BrickAsset.LoadAsset("Assets/BRICK/FracturedBrickItem.asset"); BrickBehavior brickBehavior = val.spawnPrefab.AddComponent(); FracturedBrickBehavior fracturedBrickBehavior = val2.spawnPrefab.AddComponent(); ((GrabbableObject)brickBehavior).grabbable = true; ((GrabbableObject)brickBehavior).itemProperties = val; int value = ItemRarity.Value; val.minValue = MinimumValue.Value; val.maxValue = MaximumValue.Value; val.weight = (float)Weight.Value / 105f + 1f; brickBehavior.isExplosive = FunnyMode.Value; ((GrabbableObject)brickBehavior).grabbableToEnemies = GrabbableToEnemies.Value; brickBehavior.health = BrickHealth.Value; brickBehavior.explosiveDamange = FunnyModeExplosionDamage.Value; brickBehavior.entityDamage = EntityDamage.Value; brickBehavior.playerDamage = PlayerDamage.Value; brickBehavior.damagePlayers = DamagePlayers.Value; brickBehavior.brickValueLoss = 1f - BrickValueLoss.Value; brickBehavior.fracturedBrick = val2; ((GrabbableObject)fracturedBrickBehavior).grabbable = true; ((GrabbableObject)fracturedBrickBehavior).itemProperties = val2; val2.minValue = MinimumValue.Value; val2.maxValue = MaximumValue.Value; val2.weight = (float)FracturedWeight.Value / 105f + 1f; fracturedBrickBehavior.isExplosive = FunnyMode.Value; ((GrabbableObject)fracturedBrickBehavior).grabbableToEnemies = GrabbableToEnemies.Value; fracturedBrickBehavior.health = BrickHealth.Value; fracturedBrickBehavior.explosiveDamange = FunnyModeExplosionDamage.Value; fracturedBrickBehavior.entityDamage = FracturedEntityDamage.Value; fracturedBrickBehavior.playerDamage = FracturedPlayerDamage.Value; fracturedBrickBehavior.damagePlayers = DamagePlayers.Value; fracturedBrickBehavior.brickValueLoss = 1f - BrickValueLoss.Value; useItemSlot = ReservedItemSlot.Value; NetworkPrefabs.RegisterNetworkPrefab(val.spawnPrefab); NetworkPrefabs.RegisterNetworkPrefab(val2.spawnPrefab); Items.RegisterScrap(val, value, (LevelTypes)(-1)); Items.RegisterScrap(val2, value, (LevelTypes)1); } } }