Many changes to Invector inventory system, added WIP UI system, added implementation for max stamina, moving speed, attack speed, attack power, thorns
This commit is contained in:
@@ -62,6 +62,7 @@ namespace Beyond
|
||||
public static Player Instance => s_instance;
|
||||
|
||||
public bItemManager ItemManager { private set; get; }
|
||||
|
||||
public WeaponTrail ActiveWeaponTrail { set; get; }
|
||||
|
||||
private PlayerAttribute faithAttribute;
|
||||
@@ -83,7 +84,8 @@ namespace Beyond
|
||||
speedMult = 1f,
|
||||
faithRegenMult = 1f,
|
||||
attackSpeedMult = 1f,
|
||||
thornDamageMult = 1f
|
||||
thornDamageMult = 1f,
|
||||
staminaMult = 1f
|
||||
};
|
||||
|
||||
public TrinketManager.TrinketStats CurrentTrinketStats => m_trinketStats;
|
||||
@@ -92,13 +94,28 @@ namespace Beyond
|
||||
{
|
||||
m_trinketStats = newStats;
|
||||
// Force stats recalculation
|
||||
UodatePlayerStatistics();
|
||||
UpdatePlayerStatistics();
|
||||
|
||||
// Apply immediate effects
|
||||
if (m_vController)
|
||||
if (m_vController)
|
||||
{
|
||||
m_vController.speedMultiplier = m_trinketStats.speedMult;
|
||||
// 2. Apply Attack Speed (UI Method)
|
||||
if (m_vController.animator)
|
||||
m_vController.animator.SetFloat("AttackSpeed", m_trinketStats.attackSpeedMult);
|
||||
}
|
||||
|
||||
// 3. Apply Damage Multiplier (NEW)
|
||||
if (m_meleeManager)
|
||||
{
|
||||
// Calculate the base multiplier from stats
|
||||
float totalDamageMult = m_trinketStats.damageMult;
|
||||
totalDamageMult += 0.10f;
|
||||
|
||||
// Send to Melee Manager
|
||||
m_meleeManager.SetGlobalDamageMultiplier(totalDamageMult);
|
||||
}
|
||||
|
||||
}
|
||||
// --- TRINKET SYSTEM INTEGRATION END ---
|
||||
|
||||
@@ -155,7 +172,7 @@ namespace Beyond
|
||||
private float faithBaseMaxValue = 100f;
|
||||
|
||||
private System.Action onMenuScrollClosed;
|
||||
public System.Action<float> onStatsUpdated;
|
||||
public System.Action<float, float, float> onStatsUpdated;
|
||||
private UnityAction<Transform> onDialogueEnded;
|
||||
private bLockOn m_lockOn;
|
||||
public bLockOn LockOn => m_lockOn;
|
||||
@@ -483,7 +500,7 @@ namespace Beyond
|
||||
Lua.UnregisterFunction("GetMaturity");
|
||||
}
|
||||
|
||||
public void UodatePlayerStatistics()
|
||||
public void UpdatePlayerStatistics()
|
||||
{
|
||||
float maturityMupltiplier = (float)(1 + (float)(0.5f * maturityAttribute.AttributeCurrentValue / maturityAttribute.AttributeMaxValue));
|
||||
float maxBrightness = brightnessAttribute.AttributeMaxValue;
|
||||
@@ -507,33 +524,36 @@ namespace Beyond
|
||||
{
|
||||
// --- TRINKET INTEGRATION IN STATS CALCULATION ---
|
||||
|
||||
// Faith Regen
|
||||
faithRegenMultiplier = sceneDependantFaithRegenMultiplier * finalMultiplier * m_trinketStats.faithRegenMult;
|
||||
|
||||
// Max Faith
|
||||
// 1. Calculate specific total multipliers for UI scaling
|
||||
// 1. Calculate specific total multipliers
|
||||
float totalHealthMult = finalMultiplier * m_trinketStats.healthMult;
|
||||
float totalFaithMult = finalMultiplier * m_trinketStats.faithMult;
|
||||
float totalStaminaMult = finalMultiplier * (m_trinketStats.staminaMult > 0 ? m_trinketStats.staminaMult : 1f); // Handle 0 default
|
||||
|
||||
// 2. Capture Current Health Percentage BEFORE changes
|
||||
float healthPercent = m_vController.maxHealth > 0 ? m_vController.currentHealth / m_vController.maxHealth : 1f;
|
||||
|
||||
// 3. Apply Stats
|
||||
|
||||
// Faith
|
||||
faithRegenMultiplier = sceneDependantFaithRegenMultiplier * finalMultiplier * m_trinketStats.faithRegenMult;
|
||||
faithAttribute.AttributeMaxValue = Mathf.RoundToInt(faithBaseMaxValue * totalFaithMult);
|
||||
|
||||
// Max Health
|
||||
float totalHealthMult = finalMultiplier * m_trinketStats.healthMult;
|
||||
m_vController.maxHealth = Mathf.RoundToInt(totalHealthMult * healthBaseMaxValue);
|
||||
int newMaxHealth = Mathf.RoundToInt(totalHealthMult * healthBaseMaxValue);
|
||||
m_vController.maxHealth = newMaxHealth;
|
||||
|
||||
// Reset health if caps changed downwards
|
||||
if (m_vController.maxHealth < m_vController.currentHealth)
|
||||
{
|
||||
m_vController.ResetHealth();
|
||||
}
|
||||
// Apply Proportional Current Health
|
||||
// We update the current health to match the previous percentage
|
||||
//m_vController.currentHealth = Mathf.RoundToInt(newMaxHealth * healthPercent);
|
||||
|
||||
// Health Recovery
|
||||
m_vController.SetHealthRecovery(finalMultiplier * healthBaseRegenValue);
|
||||
|
||||
// Stamina (assuming no trinket mult for stamina yet, if needed add m_trinketStats.staminaMult)
|
||||
m_vController.maxStamina = Mathf.Round(finalMultiplier * staminaBaseMaxValue);
|
||||
// Stamina
|
||||
m_vController.maxStamina = Mathf.Round(totalStaminaMult * staminaBaseMaxValue);
|
||||
m_vController.staminaRecovery = (finalMultiplier * staminaBaseRegenValue);
|
||||
|
||||
// ------------------------------------------------
|
||||
|
||||
onStatsUpdated?.Invoke(finalMultiplier);
|
||||
onStatsUpdated?.Invoke(totalHealthMult, totalFaithMult, totalStaminaMult);
|
||||
}
|
||||
|
||||
public void UpdatePlayerStatisticsOnMaturityChange(float val = 0, float prevVal = 0)
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Beyond
|
||||
private void Start()
|
||||
{
|
||||
Player.Instance.sceneDependantFaithRegenMultiplier = faithRegenMultiplier;
|
||||
Player.Instance.UodatePlayerStatistics();
|
||||
Player.Instance.UpdatePlayerStatistics();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
|
||||
Reference in New Issue
Block a user