@Brian_Trotter had previously helped me as seen in this post, Trying to Create a "Show Weapon Damage" script - #11 by Brian_Trotter, with much of his stuff working as intended.
One change I made was making what is admittedly probably a bit of a clunky GetWeaponDamage script:
using System.Collections;
using System.Linq;
using System.Collections.Generic;
using RPG.Combat;
using RPG.Attributes;
using UnityEngine;
using TMPro;
using System;
public class GetWeaponDamage : MonoBehaviour
{
//public float physical = 0;
public float fire = 0;
public float lightning = 0;
public float acid = 0;
public float divine = 0;
public float myth = 0;
//[SerializeField] TMP_Text physicalText;
[SerializeField] TMP_Text fireText;
[SerializeField] TMP_Text lightningText;
[SerializeField] TMP_Text acidText;
[SerializeField] TMP_Text divineText;
[SerializeField] TMP_Text mythText;
IEnumerable<ElementalDamage> elementalDamages;
GameObject player;
Fighter playerFighter;
WeaponConfig currentWeaponConfig;
float damage;
void Start()
{
player = GameObject.FindWithTag("Player");
playerFighter = player.GetComponent<Fighter>();
}
void Update()
{
currentWeaponConfig = playerFighter.currentWeaponConfig;
elementalDamages = currentWeaponConfig.GetElementalDamages();
CheckDamages();
SetNumbers();
}
private void SetNumbers()
{
//physicalText.SetText(physical.ToString());//should be same as default damage
fireText.SetText(fire.ToString());
lightningText.SetText(lightning.ToString());
acidText.SetText(acid.ToString());
divineText.SetText(divine.ToString());
mythText.SetText(myth.ToString());
}
public void CheckDamages()
{
//physical = elementalDamages.FirstOrDefault(x => x.damageType == DamageType.Physical).amount;
fire = elementalDamages.FirstOrDefault(x => x.damageType == DamageType.Fire).amount;
lightning = elementalDamages.FirstOrDefault(x => x.damageType == DamageType.Lightning).amount;
acid = elementalDamages.FirstOrDefault(x => x.damageType == DamageType.Acid).amount;
divine = elementalDamages.FirstOrDefault(x => x.damageType == DamageType.Divine).amount;
myth = elementalDamages.FirstOrDefault(x => x.damageType == DamageType.Myth).amount;
}
}