@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Skill other = (Skill) obj;
		if (hero == null) {
			if (other.hero != null)
				return false;
		} else if (!hero.equals(other.hero))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (AoEType != other.AoEType)
			return false;
		if (areaOfEffect != other.areaOfEffect)
			return false;
		if (Float.floatToIntBits(baseCooldown) != Float
				.floatToIntBits(other.baseCooldown))
			return false;
		if (baseRange != other.baseRange)
			return false;
		if (Float.floatToIntBits(cooldownFactor) != Float
				.floatToIntBits(other.cooldownFactor))
			return false;
		if (description == null) {
			if (other.description != null)
				return false;
		} else if (!description.equals(other.description))
			return false;
		if (hotkey != other.hotkey)
			return false;
		
		if (rangeFactor != other.rangeFactor)
			return false;
		return true;
	}