OcCubeValuables
Adds my friends ocs as cubes
About this mod Author’s original text
using System;
using System.Collections;
using System.Collections.Generic;
using Photon.Pun;
using UnityEngine;
using UnityEngine.AI;
public class ValuableObject: MonoBehaviour
{
[Serializable]
public class ExtractionPointTracking
{
public GameObject extractionPoint;
public int closestRingReached;
public float localPlayerHaulToExtraction;
public ExtractionPointTracking(GameObject _extractionPoint)
{
extractionPoint = _extractionPoint;
closestRingReached = -1;
localPlayerHaulToExtraction = 0f;
}
}
[Space(40f)]
[Header("Presets")]
public Durability durabilityPreset;
public Value valuePreset;
public PhysAttribute physAttributePreset;
public PhysAudio audioPreset;
[Range(0.5f, 3f)]
public float audioPresetPitch = 1f;
public Gradient particleColors;
[Space(70f)]
public ValuableVolume.Type volumeType;
public bool debugVolume = true;
private PhysGrabObjectImpactDetector impactDetector;
[Space(20f)]
internal float dollarValueOriginal = 100f;
internal float dollarValueCurrent = 100f;
internal bool dollarValueSet;
internal int dollarValueOverride;
private Rigidbody rb;
private PhotonView photonView;
private NavMeshObstacle navMeshObstacle;
private bool inStartRoom;
private float inStartRoomCheckTimer;
internal RoomVolumeCheck roomVolumeCheck;
internal PhysGrabObject physGrabObject;
internal bool discovered;
internal bool discoveredReminder;
private float discoveredReminderTimer;
private List extractionPointTrackings = new List();
private bool extractionTrackingInitialized;
private Vector3 lastExtractionTrackingPosition;
private Dictionary playerGrabbedTime = new Dictionary();
private Dictionary> cartSnapshots = new Dictionary>();
private float lastGrabbedTimeUpdate;
[SerializeField]
private DebugValuableMeshes debugValuableMeshes;
private void Awake()
{
photonView = GetComponent();
}
private void Start()
{
physGrabObject = GetComponent();
roomVolumeCheck = GetComponent();
impactDetector = GetComponent();
float num = Mathf.Max(base.transform.localScale.x, base.transform.localScale.y, base.transform.localScale.z);
if (num > 1f)
{
float t = Mathf.Clamp01((num - 1f) / 1f);
audioPresetPitch = Mathf.Lerp(audioPresetPitch, 0.65f, t);
}
navMeshObstacle = GetComponent();
if ((bool)navMeshObstacle)
{
Debug.LogError(base.gameObject.name + " has a NavMeshObstacle component. Please remove it.");
}
StartCoroutine(DollarValueSet());
rb = GetComponent();
if ((bool)physAttributePreset)
{
if ((bool)rb)
{
rb.mass = physAttributePreset.mass;
}
if ((bool)physGrabObject)
{
physGrabObject.massOriginal = physAttributePreset.mass;
}
}
else if ((bool)rb || (bool)physGrabObject || (bool)impactDetector)
{
Debug.LogError(base.gameObject.name + " is missing a PhysAttributePreset.", base.gameObject);
}
if (!LevelGenerator.Instance.Generated)
{
ValuableDirector.instance.valuableSpawnAmount++;
}
ValuableDirector.instance.valuableList.Add(this);
if (volumeType () &&!RoundDirector.instance.dollarHaulList.Contains(base.gameObject))
{
RoundDirector.instance.dollarHaulList.Add(base.gameObject);
}
}
[PunRPC]
public void AddToDollarHaulListRPC(PhotonMessageInfo _info = default(PhotonMessageInfo))
{
if (SemiFunc.MasterOnlyRPC(_info) && (bool)GetComponent() &&!RoundDirector.instance.dollarHaulList.Contains(base.gameObject))
{
RoundDirector.instance.dollarHaulList.Add(base.gameObject);
}
}
private void RemoveFromDollarHaulList()
{
if (GameManager.instance.gameMode == 1)
{
photonView.RPC("RemoveFromDollarHaulListRPC", RpcTarget.All);
}
else if ((bool)GetComponent() && RoundDirector.instance.dollarHaulList.Contains(base.gameObject))
{
RoundDirector.instance.dollarHaulList.Remove(base.gameObject);
}
}
[PunRPC]
public void RemoveFromDollarHaulListRPC(PhotonMessageInfo _info = default(PhotonMessageInfo))
{
if (SemiFunc.MasterOnlyRPC(_info) && (bool)GetComponent() && RoundDirector.instance.dollarHaulList.Contains(base.gameObjec
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.
Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.
Install these first, or the mod will not work: