protected bool TryDamage(int dmg, GameObject target) { // TODO: Check if target can be damaged. Debug.Log(string.Format("\t{0} dealt {1} damage to {2}", name, dmg, target.name)); Character unit = target.GetComponent <Character>(); unit.ModifyCurrentHp(-dmg); Debug.Log(string.Format("{0}'s HP: {1}", target.name, unit.GetCurrentHp())); // If HP is still positive, return // if (unit.GetCurrentHp() > 0) return true; //// unit.TryIncapacitate(); // Incapacitate the unit. Cannot act until revived //// units.Remove(target); // Remove unit from the list if no more HP //// RemoveTargetFromQueue(unit); // Debug.LogFormat("contains {0}: {1}", target, units.Contains(target)); // // TODO: if party member, make incapacitated: can be revived // if(target.CompareTag("Enemy")) { // RemoveTargetFromQueue(unit); // Remove enemy from queue, does not perform any more actions // enemies.Remove(target); // target.SetActive(false); // expToGive += unit.expToGrant; // if(enemies.Count == 0) { // EndBattle(WinStatus.Win); // } // } // if(target.CompareTag("Ally")) { //// Player player = target.GetComponent<Player>(); //// PlayerStatBar statBar = UIManager.um.GetPlayerStatBar(player.slot); //// statBar.UpdateHpBar(0); //// PlayerManager.pm.IncapacitateUnit(unit.GetComponent<Player>()); // // // Allies do not get removed from queue in case their turn comes around when revived // if(PlayerManager.pm.AllAlliesIncapacitated()) { // EndBattle(WinStatus.Lose); // } // } return(true); }