- Home /
Need help implementing a damage reduction
So I am working on a enemy unit that once it reaches a certain amount of health they will take 5% less damage from the player. I am completely lost I thought I had it coded correctly but alas I did not. For all the units in my game I have a data model script which holds well...the data and then I have a State Machine Script that calls on variables from the data model. Really does make coding a lot easier and organized. Here is the script I am having an issue with
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RoyalBearGuardMiuh : MonoBehaviour
{
[SerializeField]
private int royalBearGuardMiuhHealth = 40;
[SerializeField]
private int Armor = 25;
[SerializeField]
private int contactDamage = 7;
[SerializeField]
private int nexaStone = 20;
[SerializeField]
public float moveSpeed = 5.0f;
private float changeGray = 5;
private float colorChange = 0;
RoyalBearGuardMiuhStatemachine daBears;
public int damageReduction;
//float damageReduced = damageReduction / 100.0f;
// Start is called before the first frame update
void Start()
{
GetComponent<Renderer>().material.color = Color.gray;
}
// Update is called once per frame
void Update()
{
}
public void TakeDamage(int amount)
{
royalBearGuardMiuhHealth -= amount;
if(daBears.direMode == true && daBears.isThickHide == true)
{
royalBearGuardMiuhHealth -= amount * (damageReduction);
}
}
public void TakeArmorDamage(int amount)
{
Armor -= amount;
}
public int GetMiuhHealth()
{
return royalBearGuardMiuhHealth;
}
public int GetMiuhArmor()
{
return Armor;
}
public float ColorTimer()
{
return colorChange;
}
public void ColorTimeIncrease()
{
colorChange += Time.deltaTime;
}
public void ResetColorTimer()
{
colorChange = 0;
}
public float ChangeGray()
{
return changeGray;
}
public float GetMoveSpeed()
{
return moveSpeed;
}
}
So once I can get this solved I should be able to apply the solution across the board. What did I do wrong? If someone could explain the solution to me and point me in the right direction I would be very grateful. I struggle with coding but I do want to get better at it <3!
Kindly,
Harpoaian
Answer by UnityPlum · Nov 11, 2021 at 08:46 PM
public void TakeDamage(int amount)
{
if(daBears.direMode == true && daBears.isThickHide == true)
{
royalBearGuardMiuhHealth -= amount * (damageReduction);
} else {
royalBearGuardMiuhHealth -= amount;
}
}
Just tried that, for testing purposes I have the damageReduction variable set to 2 in the inspector and the math DID NOT apply : /