Added new Hylian Luck skill to Herbalism.

This commit is contained in:
GJ
2013-01-19 12:33:57 -05:00
parent f184e7bd01
commit b9bf3f96d2
27 changed files with 225 additions and 38 deletions

View File

@ -19,6 +19,8 @@ public class HerbalismCommand extends SkillCommand {
private String farmersDietRank;
private String doubleDropChance;
private String doubleDropChanceLucky;
private String hylianLuckChance;
private String hylianLuckChanceLucky;
private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
private int farmersDietRankChange = advancedConfig.getFarmerDietRankChange();
@ -30,6 +32,7 @@ public class HerbalismCommand extends SkillCommand {
private double doubleDropsMaxBonus = advancedConfig.getHerbalismDoubleDropsChanceMax();
private int doubleDropsMaxLevel = advancedConfig.getHerbalismDoubleDropsMaxLevel();
private boolean hasHylianLuck;
private boolean canGreenTerra;
private boolean canGreenThumbWheat;
private boolean canGreenThumbBlocks;
@ -47,6 +50,7 @@ public class HerbalismCommand extends SkillCommand {
protected void dataCalculations() {
float greenThumbChanceF;
float doubleDropChanceF;
float hylianLuckChanceF;
int length = 2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel);
greenTerraLength = String.valueOf(length);
@ -83,12 +87,18 @@ public class HerbalismCommand extends SkillCommand {
doubleDropChance = percent.format(doubleDropChanceF / 100D);
if (doubleDropChanceF * 1.3333D >= 100D) doubleDropChanceLucky = percent.format(1D);
else doubleDropChanceLucky = percent.format(doubleDropChanceF * 1.3333D / 100D);
//HYLIAN LUCK
hylianLuckChanceF = (skillValue / 100);
hylianLuckChance = percent.format(hylianLuckChanceF / 100D);
if (hylianLuckChanceF * 1.3333D >= 100D) hylianLuckChanceLucky = percent.format(1D);
else hylianLuckChanceLucky = percent.format(hylianLuckChanceF * 1.3333D / 100D);
}
@Override
protected void permissionsCheck() {
Config configInstance = Config.getInstance();
hasHylianLuck = Permissions.hylianLuck(player);
canGreenTerra = Permissions.greenTerra(player);
canGreenThumbWheat = Permissions.greenThumbWheat(player);
canGreenThumbBlocks = Permissions.greenThumbBlocks(player);
@ -127,6 +137,10 @@ public class HerbalismCommand extends SkillCommand {
player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.6"), LocaleLoader.getString("Herbalism.Effect.7") }));
}
if (hasHylianLuck) {
player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.10"), LocaleLoader.getString("Herbalism.Effect.11") }));
}
if (canDoubleDrop && !doubleDropsDisabled) {
player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.8"), LocaleLoader.getString("Herbalism.Effect.9") }));
}
@ -161,6 +175,12 @@ public class HerbalismCommand extends SkillCommand {
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.FD", new Object[] { farmersDietRank } ));
}
if (hasHylianLuck) {
if (lucky)
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.HylianLuck", new Object[] { hylianLuckChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { hylianLuckChanceLucky }));
else
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.HylianLuck", new Object[] { hylianLuckChance }));
}
if (canDoubleDrop && !doubleDropsDisabled) {
if (lucky)
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.DoubleDropChance", new Object[] { doubleDropChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { doubleDropChanceLucky }));

View File

@ -203,6 +203,10 @@ public class BlockListener implements Listener {
}
}
if (Permissions.hylianLuck(player) && ItemChecks.isSword(player.getItemInHand())) {
Herbalism.hylianLuck(block, player, event);
}
//Remove metadata when broken
if (BlockChecks.shouldBeWatched(block)) {
mcMMO.placeStore.setFalse(block);

View File

@ -9,7 +9,6 @@ import java.util.List;
import net.shatteredlands.shatt.backup.ZipLibrary;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;

View File

@ -538,4 +538,80 @@ public class Herbalism {
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Fail"));
}
}
public static void hylianLuck(Block block, Player player, BlockBreakEvent event) {
int chance = Users.getProfile(player).getSkillLevel(SkillType.HERBALISM) / 100;
int randomChance = 100;
if (Permissions.luckyHerbalism(player)) {
randomChance = 75;
}
if (chance > Misc.getRandom().nextInt(randomChance)) {
Location location = block.getLocation();
int dropNumber = Misc.getRandom().nextInt(3);
ItemStack item = null;
switch (block.getType()) {
case DEAD_BUSH:
case LONG_GRASS:
case SAPLING:
if (dropNumber == 0) {
item = new ItemStack(Material.MELON_SEEDS);
}
else if (dropNumber == 1) {
item = new ItemStack(Material.PUMPKIN_SEEDS);
}
else {
try {
item = (new MaterialData(Material.INK_SACK, DyeColor.BROWN.getDyeData())).toItemStack(1);
}
catch (Exception e) {
item = (new MaterialData(Material.INK_SACK, (byte) 0x3)).toItemStack(1);
}
catch (NoSuchMethodError e) {
item = (new MaterialData(Material.INK_SACK, (byte) 0x3)).toItemStack(1);
}
}
break;
case RED_ROSE:
case YELLOW_FLOWER:
if (dropNumber == 0) {
item = new ItemStack(Material.POTATO);
}
else if (dropNumber == 1) {
item = new ItemStack(Material.CARROT);
}
else {
item = new ItemStack(Material.APPLE);
}
break;
case FLOWER_POT:
if (dropNumber == 0) {
item = new ItemStack(Material.EMERALD);
}
else if (dropNumber == 1) {
item = new ItemStack(Material.DIAMOND);
}
else {
item = new ItemStack(Material.GOLD_NUGGET);
}
break;
default:
break;
}
if (item == null) {
return;
}
event.setCancelled(true);
event.getBlock().setType(Material.AIR);
Misc.dropItem(location, item);
player.sendMessage(LocaleLoader.getString("Herbalism.HylianLuck"));
}
}
}

View File

@ -408,6 +408,10 @@ public class Permissions {
return hasPermission(player, "mcmmo.ability.herbalism.farmersdiet");
}
public static boolean hylianLuck(Player player) {
return hasPermission(player, "mcmmo.ability.herbalism.hylianluck");
}
/*
* MCMMO.ABILITY.EXCAVATION.*
*/