public String generateGenericDescription() {
		StringBuilder string = new StringBuilder();
		string.append(String.format("|cffffcc00Damage:|r %s|n", damageTable));
		if (baseRange <= 120 && rangeFactor == 0) {
			string.append("|cffffcc00Range:|r Meele|n");
		} else {
			if (rangeFactor == 0) {
				string.append(String.format("|cffffcc00Range:|r %d|n", baseRange));
			} else {
				string.append(String.format("|cffffcc00Range:|r %d + %d x Lvl|n", baseRange, rangeFactor));
			}
		}
		if (areaOfEffect == 0) {
			string.append("|cffffcc00Area of Effect:|r Target|n");
		} else {
			if (AoEType == null) {
				string.append(String.format("|cffffcc00Area of Effect:|r %d|n", areaOfEffect));
			} else {
				string.append(String.format("|cffffcc00Area of Effect:|r %d (%s)|n", areaOfEffect, AoEType));
			}
		}
		
		if (baseCooldown == 0 && cooldownFactor == 0) { 
			string.append("|cffffcc00Cooldown:|r Instant|n");
		} else {
			if (cooldownFactor == 0) {
				string.append(String.format("|cffffcc00Cooldown:|r %.1fs|n", baseCooldown, cooldownFactor));
			} else {
				string.append(String.format("|cffffcc00Cooldown:|r %.1fs + %.1fs x Lvl|n", baseCooldown, cooldownFactor));
			}
		}
		if (description != null)
			string.append("|n" + description);
		return string.toString();
	}