public void levelUp() { try { int lastLevel = level; super.levelUp(); if (lastLevel != level) { helth = (int) ((Math.pow(2.5, level - 1)) - Math.pow(2.0, level - 1) + (40 * level) + 40) - (maxHelth - helth); maxHelth = (int) ((Math.pow(2.5, level - 1)) - Math.pow(2.0, level - 1) + (40 * level) + 40); buildImages.clear(); costs.clear(); if (level >= 1) { MagicSpirit m = new MagicSpirit(null, null); m.level = level - 2; m.levelUp(); buildImages.add(GameRunner.getMagicSpirit()); costs.add(50); buildNames.add("Train " + m.firstName); Mage ma = new Mage(null, null); ma.level = level - 2; ma.levelUp(); buildImages.add(GameRunner.getMage()); costs.add(100); buildNames.add("Train " + ma.firstName); buildImages.add(ImageIO.read(new File("src/+1.png"))); costs.add((int) (Math.pow(3.4, level) + (300 * level) + 196.6)); buildNames.add("Level Up to gain better units"); buildImages.add(GameRunner.getAutoMine()); costs.add(0); buildNames.add("Automatically mine gold with any units that can this turn"); } if (level >= 2) { Summoner s = new Summoner(null, null); buildImages.add(GameRunner.getSummoner()); costs.add(100); buildNames.add("Train " + s.name + " to summon units into battle"); } if (level >= 3) { ArchMage am = new ArchMage(null, null); am.level = level - 4; am.levelUp(); buildImages.add(GameRunner.getArchMage()); costs.add(300); buildNames.add("Train " + am.firstName); } } } catch (Exception e) { LogHandling.logError("Can't add image " + e); } }