{"body":"package com.herocraftonline.heroes.characters.skill.skills;\n\nimport org.bukkit.Sound;\nimport org.bukkit.configuration.ConfigurationSection;\nimport org.bukkit.entity.LivingEntity;\nimport org.bukkit.entity.Player;\nimport org.bukkit.event.entity.EntityDamageEvent.DamageCause;\n\nimport com.herocraftonline.heroes.Heroes;\nimport com.herocraftonline.heroes.api.SkillResult;\nimport com.herocraftonline.heroes.attributes.AttributeType;\nimport com.herocraftonline.heroes.characters.Hero;\nimport com.herocraftonline.heroes.characters.skill.SkillConfigManager;\nimport com.herocraftonline.heroes.characters.skill.SkillSetting;\nimport com.herocraftonline.heroes.characters.skill.SkillType;\nimport com.herocraftonline.heroes.characters.skill.TargettedSkill;\nimport com.herocraftonline.heroes.characters.skill.VisualEffect;\nimport com.herocraftonline.heroes.util.Util;\n\npublic class SkillSmite extends TargettedSkill {\n    // This is for Firework Effects\n    public VisualEffect fplayer = new VisualEffect();\n\n    public SkillSmite(Heroes plugin) {\n        super(plugin, \"Smite\");\n        setDescription(\"You smite the target, dealing $1 light damage to the target. Will instead deal $2 damage if the target is undead.\");\n        setUsage(\"/skill smite\");\n        setArgumentRange(0, 0);\n        setIdentifiers(\"skill smite\");\n        setTypes(SkillType.DAMAGING, SkillType.ABILITY_PROPERTY_LIGHT, SkillType.SILENCEABLE, SkillType.AGGRESSIVE);\n    }\n\n    @Override\n    public String getDescription(Hero hero) {\n\n        int intellect = hero.getAttributeValue(AttributeType.INTELLECT);\n\n        int undeadDamage = SkillConfigManager.getUseSetting(hero, this, \"undead-damage\", 80, false);\n        double damageIncrease = SkillConfigManager.getUseSetting(hero, this, SkillSetting.DAMAGE_INCREASE_PER_INTELLECT, 1.0, false);\n        undeadDamage += damageIncrease * intellect;\n\n        int damage = SkillConfigManager.getUseSetting(hero, this, SkillSetting.DAMAGE, 40, false);\n        damage += damageIncrease * intellect;\n\n        String formattedUndeadDamage = Util.decFormat.format(undeadDamage);\n        String formattedDamage = Util.decFormat.format(damage);\n\n        return getDescription().replace(\"$1\", formattedDamage).replace(\"$2\", formattedUndeadDamage);\n    }\n\n    @Override\n    public ConfigurationSection getDefaultConfig() {\n        ConfigurationSection node = super.getDefaultConfig();\n\n        node.set(SkillSetting.MAX_DISTANCE.node(), 6);\n        node.set(\"undead-damage\", 80);\n        node.set(SkillSetting.DAMAGE.node(), (double) 40);\n        node.set(SkillSetting.DAMAGE_INCREASE_PER_INTELLECT.node(), 1.0);\n\n        return node;\n    }\n\n    @Override\n    public SkillResult use(Hero hero, LivingEntity target, String[] args) {\n        Player player = hero.getPlayer();\n\n        broadcastExecuteText(hero, target);\n\n        int intellect = hero.getAttributeValue(AttributeType.INTELLECT);\n\n        double damage;\n        if (Util.isUndead(plugin, target)) {\n            damage = SkillConfigManager.getUseSetting(hero, this, \"undead-damage\", 80, false);\n            double damageIncrease = SkillConfigManager.getUseSetting(hero, this, SkillSetting.DAMAGE_INCREASE_PER_INTELLECT, 1.0, false);\n            damage += (damageIncrease * intellect);\n        }\n        else {\n            damage = SkillConfigManager.getUseSetting(hero, this, SkillSetting.DAMAGE, 40, false);\n            double damageIncrease = SkillConfigManager.getUseSetting(hero, this, SkillSetting.DAMAGE_INCREASE_PER_INTELLECT, 1.0, false);\n            damage += (damageIncrease * intellect);\n        }\n\n        addSpellTarget(target, hero);\n        damageEntity(target, player, damage, DamageCause.ENTITY_EXPLOSION);\n\n        player.getWorld().playSound(target.getLocation(), Sound.HURT_FLESH, 0.5f, 1.0f);\n\n        player.getWorld().spigot().playEffect(target.getLocation().add(0, 0.5, 0), // location\n                org.bukkit.Effect.CRIT, // effect\n                0, 0, // id,data: for block effect\n                0, 0, 0, // offset\n                1.0f, // speed\n                50, // particle count\n                SkillConfigManager.getUseSetting(hero, this, SkillSetting.MAX_DISTANCE, 6, false) + 1); // radius: player observable distance\n\n        return SkillResult.NORMAL;\n    }\n}\n","name":"","extension":"","url":"https://www.irccloud.com/pastebin/378BQIKF","modified":1421279160,"id":"378BQIKF","size":4261,"lines":98,"own_paste":false,"theme":"","date":1421279160}