public string Execute(params string[] parameters) { try { if (parameters.Length == 2 || parameters.Length == 3) { GameObject target = DebugUtil.FindObjectFromInstanceID <GameObject>(int.Parse(parameters[1])); if (target == null || !target.activeInHierarchy) { return("Error: Invalid instance id."); } UDEBaseCharacter targetScript = null; switch (parameters[0]) { case "enemy": targetScript = target.GetComponent <UDEEnemy>(); break; case "player": targetScript = target.GetComponent <UDEPlayer>(); break; default: return("Error: Invalid parameters. Usage: damage <target: enemy|player> <id> [amount]"); } if (targetScript == null) { return("Error: Invalid instance id."); } float health = targetScript.Health; float damage = 0.0f; if (parameters.Length == 3) { damage = float.Parse(parameters[2]); } else { damage = 1.0f; } health -= damage; var healthField = typeof(UDEBaseCharacter).GetField("health", BindingFlags.NonPublic | BindingFlags.Instance); healthField.SetValue(targetScript, health); return($"The health of {parameters[0]} {target.name}({parameters[1]}) had {damage} damage and the current health is {health}."); } else { return("Error: Invalid parameters. Usage: damage <target: enemy|player> <id> [amount]"); } } catch (Exception) { return("Error: Invalid parameters. Usage: damage <target: enemy|player> <id> [amount]"); } }