Pedro Gomes 078fda69ac Continued Stat revamp scaling
- updated all abilities to scale with new stat system
- updated difficulty settings using new stat system
- added S+ difficulty as the end game
- updated items using new stat system
- small re-balance to make things a bit more fun to test
2024-08-18 14:45:57 +01:00

76 lines
2.5 KiB
C#

using Kryz.CharacterStats.Examples;
using Photon.Pun;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DropTable : MonoBehaviour
{
[SerializeField] private GameObject interactableDropPrefab;
[SerializeField] private GameObject coinPrefab;
[SerializeField] private int coinAmount;
[SerializeField] private int extraDropChance;
[SerializeField] private GameEvent_Int onCoinDrop;
public List<EquippableItem> guaranteedItemDrop = new List<EquippableItem>();
public List<EquippableItem> extraDrops = new List<EquippableItem>();
PhotonView photonView;
GameObject instantiatedDrop;
EquippableItemDrop itemDrop;
GameObject instantiatedCoinDrop;
CoinDrop coinDrop;
int finalCoinAmount;
Vector3 spawnPosition;
private void Awake()
{
photonView = GetComponentInParent<PhotonView>();
}
// Start is called before the first frame update
void Start()
{
}
public bool CalculateLootDrop()
{
return Random.Range(0, 100) < (extraDropChance * (1 + GameConstants.GameBalancing.IncreasedItemDropBasedOnDifficultyMultiplier * GameDifficultyController.Instance.GetCurrentDifficultyLevel()));
}
public void DropLoot(bool lootDrop)
{
spawnPosition = this.transform.position;
spawnPosition.y = 0f;
instantiatedCoinDrop = Instantiate(coinPrefab, spawnPosition, this.transform.rotation);
coinDrop = instantiatedCoinDrop.GetComponent<CoinDrop>();
finalCoinAmount = Mathf.RoundToInt(coinAmount * (1 + GameConstants.GameBalancing.IncreasedCoinDropBasedOnDifficultyMultiplier * GameDifficultyController.Instance.GetCurrentDifficultyLevel()));
coinDrop.Init(finalCoinAmount);
onCoinDrop.Raise(finalCoinAmount);
for (int i = 0; i < guaranteedItemDrop.Count; i++)
{
instantiatedDrop = Instantiate(interactableDropPrefab, spawnPosition, this.transform.rotation);
itemDrop = instantiatedDrop.GetComponent<EquippableItemDrop>();
itemDrop.itemDrop = guaranteedItemDrop[i];
}
if (!lootDrop) return;
if (extraDrops.Count <= 0) return;
spawnPosition = this.transform.position;
spawnPosition.y = 0f;
instantiatedDrop = Instantiate(interactableDropPrefab, spawnPosition, this.transform.rotation);
itemDrop = instantiatedDrop.GetComponent<EquippableItemDrop>();
itemDrop.itemDrop = extraDrops[Random.Range(0, extraDrops.Count)];
}
}