Gold Challenge (simple solution)

class Monster {

var name: String!                            //  "!": my add for the Gold Challenge

required init?(town: Town?, monsterName: String) { // "init?": my add for the Gold Challenge
    if monsterName.isEmpty {                       // my add for the Gold Challenge
        self.name = nil                            // my add for the Gold Challenge
        return nil                                 // my add for the Gold Challenge
    }
    self.town = town
    name = monsterName
}

}

class Zombie: Monster {

init?(limp: Bool, fallingApart: Bool, town: Town?, monsterName: String) {// "init?": my add for the Gold Challenge
    walksWithLimp = limp
    isFallingApart = fallingApart
    super.init(town: town, monsterName: monsterName)
}

convenience init?(limp: Bool, fallingApart: Bool) { // "init?": my add for the Gold Challenge
    self.init(limp: limp, fallingApart: fallingApart, town: nil, monsterName: "Fred")
    if walksWithLimp {
        print("This zombie has a bad knee.")
    }
}

required convenience init?(town: Town?, monsterName: String) {// "init?": my add for the Gold Challenge // my add for the Silver Challenge
    self.init(limp: false, fallingApart: false, town: town, monsterName: monsterName)
}  

}