glados123123123123

issuecode

Jan 17th, 2024
1,027
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.79 KB | None | 0 0
  1. using LethalLib.Modules;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using Unity.Netcode;
  9. using UnityEngine;
  10.  
  11. namespace TombsMadnessMod.ItemScript
  12. {
  13.     public class Throwable : GrabbableObject
  14.     {
  15.         private Ray grenadeThrowRay;
  16.  
  17.         private RaycastHit hit;
  18.         public bool instaThrow;
  19.  
  20.         public bool canThrowWhenNotCharged;
  21.  
  22.         [HideInInspector]
  23.         public bool isThrown = false;
  24.  
  25.         public AnimationCurve fallCurve;
  26.  
  27.         public AnimationCurve verticalFallCurve;
  28.  
  29.         public AnimationCurve verticalFallCurveNoBounce;
  30.  
  31.         public RoundManager roundManager;
  32.  
  33.         public override void Start()
  34.         {
  35.             base.Start();
  36.             roundManager = FindObjectOfType<RoundManager>();
  37.         }
  38.  
  39.         public override void ItemActivate(bool used, bool buttonDown = true)
  40.         {
  41.             base.ItemActivate(used, buttonDown);
  42.             if (NetworkManager.Singleton.IsServer)
  43.             {
  44.                 ServerRCPThrow();
  45.             }
  46.             else { ClientRequestDiscardHeldObject(); }
  47.  
  48.         }
  49.  
  50.         [ClientRpc]
  51.         public void ClientRequestDiscardHeldObject()
  52.         {
  53.             ServerRCPThrow();
  54.         }
  55.  
  56.         [ServerRpc]
  57.         public void ServerRCPThrow()
  58.         {
  59.             if (!canThrowWhenNotCharged && insertedBattery.charge <= 0)
  60.             {
  61.                 return;
  62.             }
  63.             if (isThrown || instaThrow)
  64.             {
  65.                 playerHeldBy.DiscardHeldObject(placeObject: true, null, GetThrowDestination());
  66.                 itemUsedUp = true;
  67.             }
  68.             isThrown = true;
  69.         }
  70.  
  71.         public Vector3 GetThrowDestination()
  72.         {
  73.             Vector3 position = transform.position;
  74.  
  75.             grenadeThrowRay = new Ray(playerHeldBy.gameplayCamera.transform.position, playerHeldBy.gameplayCamera.transform.forward);
  76.  
  77.             position = !Physics.Raycast(grenadeThrowRay, out hit, 12f, StartOfRound.Instance.collidersAndRoomMaskAndDefault)
  78.                 ? grenadeThrowRay.GetPoint(10f) : grenadeThrowRay.GetPoint(hit.distance - 0.05f);
  79.  
  80.             grenadeThrowRay = new Ray(position, Vector3.down);
  81.  
  82.             if (Physics.Raycast(grenadeThrowRay, out hit, 30f, StartOfRound.Instance.collidersAndRoomMaskAndDefault))
  83.             {
  84.                 return hit.point + Vector3.up * 0.05f;
  85.             }
  86.  
  87.             return grenadeThrowRay.GetPoint(30f);
  88.         }
  89.  
  90.  
  91.         public override void FallWithCurve()
  92.         {
  93.             float magnitude = (startFallingPosition - targetFloorPosition).magnitude;
  94.  
  95.             transform.rotation = Quaternion.Lerp(transform.rotation,
  96.                 Quaternion.Euler(itemProperties.restingRotation.x, transform.eulerAngles.y, itemProperties.restingRotation.z), 14f * Time.deltaTime / magnitude);
  97.  
  98.             transform.localPosition = Vector3.Lerp(startFallingPosition, targetFloorPosition, fallCurve.Evaluate(fallTime));
  99.  
  100.             if (magnitude > 5f)
  101.             {
  102.                 transform.localPosition = Vector3.Lerp(new Vector3(transform.localPosition.x, startFallingPosition.y, transform.localPosition.z), new Vector3(transform.localPosition.x, targetFloorPosition.y, transform.localPosition.z), verticalFallCurveNoBounce.Evaluate(fallTime));
  103.             }
  104.             else
  105.             {
  106.                 transform.localPosition = Vector3.Lerp(new Vector3(transform.localPosition.x, startFallingPosition.y, transform.localPosition.z), new Vector3(transform.localPosition.x, targetFloorPosition.y, transform.localPosition.z), verticalFallCurve.Evaluate(fallTime));
  107.             }
  108.  
  109.             fallTime += Mathf.Abs(Time.deltaTime * 12f / magnitude);
  110.         }
  111.  
  112.     }
  113. }
  114.  
Advertisement
Add Comment
Please, Sign In to add comment