//Check enemy remaining HP and updates player HP on the status screen void UpdateStatus() { statusText.text = ""; for (int i = 0; i < players.Length; i++) { CharacterStatSheet playerStat = players[i].GetComponent <CharacterStatSheet>(); statusText.text += playerStat.Name + " " + playerStat.HP + "/" + playerStat.MaxHP + " \n"; } for (int i = 0; i < enemies.Length; i++) { if (enemies[i] != null) { CharacterStatSheet enemyStat = enemies[i].GetComponent <CharacterStatSheet>(); if (enemyStat.HP <= 0) { GameObject.Destroy(enemies[i]); //enemies[i].SetActive(false); enemies[i] = null; characterDefeated = true; } else { //statusText.text += enemyStat.Name + " " + enemyStat.HP + "/" + enemyStat.MaxHP + " \n"; } } } }
//Recieves the attacker and target to process action based on action string float ProcessAction(GameObject player, GameObject target) { CharacterStatSheet attackerStat = player.GetComponent <CharacterStatSheet>(); CharacterStatSheet targetStat = target.GetComponent <CharacterStatSheet>(); float damage = 0; bool buff = false; switch (ActionName) { case "Attack": damage = attackerStat.Attack - targetStat.Defense; if (attackerStat.FocusActive) { attackerStat.FocusActive = false; attackerStat.Attack /= 2.5f; } break; case "X-Cut": //double attack damage = (attackerStat.Attack - targetStat.Defense) * 2; if (attackerStat.FocusActive) { attackerStat.FocusActive = false; attackerStat.Attack /= 2.5f; } break; case "Pierce": //ignores defense damage = attackerStat.Attack; if (attackerStat.FocusActive) { attackerStat.FocusActive = false; attackerStat.Attack /= 2.5f; } break; case "Heal": //recovers HP, scales with attack damage = attackerStat.Attack * -1.5f; if (attackerStat.FocusActive) { attackerStat.FocusActive = false; attackerStat.Attack /= 2.5f; } break; case "Focus": //double attack stat for the next attack/heal. Does not stack. buff = true; if (targetStat.FocusActive == false) { targetStat.FocusActive = true; targetStat.Attack *= 2.5f; } break; case "Shield": //buffs defense for target. Does not stack buff = true; if (targetStat.ShieldActive == false) { targetStat.ShieldActive = true; targetStat.Defense *= 1.5f; } break; case "Potion": damage = -25f; break; case "FullHeal": damage = -50f; break; default: break; } if (buff) //if focus or shield skill was used { return(0); } else { targetStat.HP -= (float)Math.Floor(damage); if (targetStat.HP > targetStat.MaxHP) //prevent over-healing { targetStat.HP = targetStat.MaxHP; } } return((float)Math.Floor(damage)); }