const val EXCELLENT_HEALTH = "is in excellent condition!"
const val GOOD_HEALTH = "has a few scratches!"
const val MINOR_HEALTH = "has some minor wounds!"
const val LOW_HEALTH = "looks pretty hurt!"
const val POOR_HEALTH = "is in poor condition!"
const val IS_BLESSED = "has some minor wounds but will heal quickly!"
const val IMMORTAL_AURA = "GREEN"
const val IMMORTAL_NOT = "NONE"
const val MINE_KEEPER = "Keeper of the Mines"
const val HILL_PEOPLE = "Free People of the Rolling Hill"

fun main() {
    val name = "Magar"
    var healthpoints = 90
    var isBlessed = true
    val isImmortal = false
    val race = "gnome"
    val faction = when (race) {
        "dwarf " -> MINE_KEEPER
        "gnome " -> MINE_KEEPER
        "orc " -> HILL_PEOPLE
        "human " -> HILL_PEOPLE
        else -> "UNKNOWN RACE"
    }
    println("$race $faction")

    //karma
    val karma = (Math.pow(Math.random(), (110 - healthpoints) / 100.0 * 20).toInt())

    //Aura
    val auraVisible = isBlessed && healthpoints > 50 || isImmortal

    val healthStatus = when (healthpoints) {
        in 100..89 -> EXCELLENT_HEALTH
        in 90..99 -> GOOD_HEALTH
        in 75..98 -> MINOR_HEALTH
        in 75..89 -> if (isBlessed) {
            IS_BLESSED
        } else {
        }
        in 15..74 -> LOW_HEALTH
        else -> POOR_HEALTH
    }
    //Player status
    println("$name $healthStatus")
}