Fixed a bug where static chance skills uses incorrect calculations for success

Cleaned up some leftover code from the old skill unlock system
This commit is contained in:
nossr50 2019-01-31 14:07:03 -08:00
parent 0193b53988
commit bff72486d0
13 changed files with 79 additions and 109 deletions

View File

@ -7,6 +7,19 @@ Key:
! Change ! Change
- Removal - Removal
Version 2.1.4
Fixed a bug where static chance skills like Arcane Salvage were using incorrect calculations for success
Advanced Salvage now uses a rank system
Arcane Salvage now goes by your rank to determine the maximum amount of materials salvaged and is no longer percentage based
Fixed a bug where Iron Arm was checking for Iron Grip to be unlocked instead of itself
(Plugin Compatibility) mcMMO now ignores cancelled events relating to the player left or right clicking
(Locale) Changed the string for "Salvage.Ability.Bonus.1" to fit the new material recovery mechanics of Salvage
(Config) Cleaned up some leftover 'unlocklevel' settings, this stuff is now handled in skillranks.yml
(Config) Removed Salvage.MaxPercentage
(Config) Removed Salvage.MaxPercentageChance
(Config) Added Salvage.ArcaneSalvage.MaxBonusLevel
(Config) Added Salvage.ArcaneSalvage.MaxChance
Version 2.1.3 Version 2.1.3
Temporarily removed the unarmed no-item pickup feature until its fixed Temporarily removed the unarmed no-item pickup feature until its fixed

View File

@ -40,12 +40,7 @@ public class SalvageCommand extends SkillCommand {
SalvageManager salvageManager = UserManager.getPlayer(player).getSalvageManager(); SalvageManager salvageManager = UserManager.getPlayer(player).getSalvageManager();
if (canAdvancedSalvage) { if (canAdvancedSalvage) {
if (skillValue < Salvage.advancedSalvageUnlockLevel) { messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Salvage.Ability.Bonus.0"), LocaleLoader.getString("Salvage.Ability.Bonus.1", salvageManager.getSalvageableAmount())));
messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Salvage.Ability.Locked.0", Salvage.advancedSalvageUnlockLevel)));
}
else {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Salvage.Ability.Bonus.0"), LocaleLoader.getString("Salvage.Ability.Bonus.1", percent.format(salvageManager.getMaxSalvagePercentage()))));
}
} }
if (canArcaneSalvage) { if (canArcaneSalvage) {

View File

@ -59,22 +59,12 @@ public class TamingCommand extends SkillCommand {
List<String> messages = new ArrayList<String>(); List<String> messages = new ArrayList<String>();
if (canEnvironmentallyAware) { if (canEnvironmentallyAware) {
if (skillValue < Taming.environmentallyAwareUnlockLevel) {
messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.0", Taming.environmentallyAwareUnlockLevel)));
}
else {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.0"), LocaleLoader.getString("Taming.Ability.Bonus.1"))); messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.0"), LocaleLoader.getString("Taming.Ability.Bonus.1")));
} }
}
if (canFastFood) { if (canFastFood) {
if (skillValue < Taming.fastFoodServiceUnlockLevel) {
messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.4", Taming.fastFoodServiceUnlockLevel)));
}
else {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.8"), LocaleLoader.getString("Taming.Ability.Bonus.9", percent.format(Taming.fastFoodServiceActivationChance / 100D)))); messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.8"), LocaleLoader.getString("Taming.Ability.Bonus.9", percent.format(Taming.fastFoodServiceActivationChance / 100D))));
} }
}
if (canGore) { if (canGore) {
messages.add(LocaleLoader.getString("Ability.Generic.Template", messages.add(LocaleLoader.getString("Ability.Generic.Template",
@ -83,40 +73,20 @@ public class TamingCommand extends SkillCommand {
} }
if (canHolyHound) { if (canHolyHound) {
if (skillValue < Taming.holyHoundUnlockLevel) {
messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.5", Taming.holyHoundUnlockLevel)));
}
else {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.10"), LocaleLoader.getString("Taming.Ability.Bonus.11"))); messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.10"), LocaleLoader.getString("Taming.Ability.Bonus.11")));
} }
}
if (canSharpenedClaws) { if (canSharpenedClaws) {
if (skillValue < Taming.sharpenedClawsUnlockLevel) {
messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.3", Taming.sharpenedClawsUnlockLevel)));
}
else {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.6"), LocaleLoader.getString("Taming.Ability.Bonus.7", Taming.sharpenedClawsBonusDamage))); messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.6"), LocaleLoader.getString("Taming.Ability.Bonus.7", Taming.sharpenedClawsBonusDamage)));
} }
}
if (canShockProof) { if (canShockProof) {
if (skillValue < Taming.shockProofUnlockLevel) {
messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.2", Taming.shockProofUnlockLevel)));
}
else {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.4"), LocaleLoader.getString("Taming.Ability.Bonus.5", Taming.shockProofModifier))); messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.4"), LocaleLoader.getString("Taming.Ability.Bonus.5", Taming.shockProofModifier)));
} }
}
if (canThickFur) { if (canThickFur) {
if (skillValue < Taming.thickFurUnlockLevel) {
messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.1", Taming.thickFurUnlockLevel)));
}
else {
messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.2"), LocaleLoader.getString("Taming.Ability.Bonus.3", Taming.thickFurModifier))); messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.2"), LocaleLoader.getString("Taming.Ability.Bonus.3", Taming.thickFurModifier)));
} }
}
return messages; return messages;
} }

View File

@ -389,13 +389,13 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
}*/ }*/
/* SALVAGE */ /* SALVAGE */
if (getSalvageMaxPercentage() < 1) { /*if (getSalvageMaxPercentage() < 1) {
reason.add("Skills.Salvage.MaxPercentage should be at least 1!"); reason.add("Skills.Salvage.MaxPercentage should be at least 1!");
} }
if (getSalvageMaxPercentageLevel() < 1) { if (getSalvageMaxPercentageLevel() < 1) {
reason.add("Skills.Salvage.MaxPercentageLevel should be at least 1!"); reason.add("Skills.Salvage.MaxPercentageLevel should be at least 1!");
} }*/
/*if (getAdvancedSalvageUnlockLevel() < 0) { /*if (getAdvancedSalvageUnlockLevel() < 0) {
reason.add("Skills.Salvage.AdvancedSalvage.UnlockLevel should be at least 0!"); reason.add("Skills.Salvage.AdvancedSalvage.UnlockLevel should be at least 0!");
@ -684,7 +684,7 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
* @return the level at which this skills max benefits will be reached on the curve * @return the level at which this skills max benefits will be reached on the curve
*/ */
public int getMaxBonusLevel(SubSkillType subSkillType) { public int getMaxBonusLevel(SubSkillType subSkillType) {
int maxBonusLevel = config.getInt(subSkillType.getAdvConfigAddress() + ".MaxBonusLevel"); int maxBonusLevel = config.getInt(subSkillType.getAdvConfigAddress() + ".MaxBonusLevel", 100);
if(mcMMO.isRetroModeEnabled()) if(mcMMO.isRetroModeEnabled())
maxBonusLevel *= 10; maxBonusLevel *= 10;
@ -696,7 +696,7 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
} }
public int getMaxBonusLevel(AbstractSubSkill abstractSubSkill) { public int getMaxBonusLevel(AbstractSubSkill abstractSubSkill) {
int maxBonusLevel = config.getInt("Skills."+abstractSubSkill.getPrimaryKeyName()+"."+abstractSubSkill.getConfigKeyName()+".MaxBonusLevel"); int maxBonusLevel = config.getInt("Skills."+abstractSubSkill.getPrimaryKeyName()+"."+abstractSubSkill.getConfigKeyName()+".MaxBonusLevel", 100);
if(mcMMO.isRetroModeEnabled()) if(mcMMO.isRetroModeEnabled())
maxBonusLevel *= 10; maxBonusLevel *= 10;
@ -939,7 +939,7 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
public int getRepairMasteryMaxLevel() { return config.getInt("Skills.Repair.RepairMastery.MaxBonusLevel", 100); } public int getRepairMasteryMaxLevel() { return config.getInt("Skills.Repair.RepairMastery.MaxBonusLevel", 100); }
/* Arcane Forging */ /* Arcane Forging */
public int getArcaneForgingRankLevel(int rank) { return config.getInt("Skills.Repair.ArcaneForging.Rank_Levels.Rank_" + rank); } //public int getArcaneForgingRankLevel(int rank) { return config.getInt("Skills.Repair.ArcaneForging.Rank_Levels.Rank_" + rank); }
public boolean getArcaneForgingEnchantLossEnabled() { return config.getBoolean("Skills.Repair.ArcaneForging.May_Lose_Enchants", true); } public boolean getArcaneForgingEnchantLossEnabled() { return config.getBoolean("Skills.Repair.ArcaneForging.May_Lose_Enchants", true); }
public double getArcaneForgingKeepEnchantsChance(int rank) { return config.getDouble("Skills.Repair.ArcaneForging.Keep_Enchants_Chance.Rank_" + rank); } public double getArcaneForgingKeepEnchantsChance(int rank) { return config.getDouble("Skills.Repair.ArcaneForging.Keep_Enchants_Chance.Rank_" + rank); }
@ -948,10 +948,8 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
public double getArcaneForgingDowngradeChance(int rank) { return config.getDouble("Skills.Repair.ArcaneForging.Downgrades_Chance.Rank_" + rank); } public double getArcaneForgingDowngradeChance(int rank) { return config.getDouble("Skills.Repair.ArcaneForging.Downgrades_Chance.Rank_" + rank); }
/* SALVAGE */ /* SALVAGE */
public double getSalvageMaxPercentage() { return config.getDouble("Skills.Salvage.MaxPercentage", 100.0D); } //public double getSalvageMaxPercentage() { return config.getDouble("Skills.Salvage.MaxPercentage", 100.0D); }
public int getSalvageMaxPercentageLevel() { return config.getInt("Skills.Salvage.MaxPercentageLevel", 1000); } //public int getSalvageMaxPercentageLevel() { return config.getInt("Skills.Salvage.MaxPercentageLevel", 1000); }
/*public int getAdvancedSalvageUnlockLevel() { return config.getInt("Skills.Salvage.AdvancedSalvage.UnlockLevel", 350); }*/
public boolean getArcaneSalvageEnchantDowngradeEnabled() { return config.getBoolean("Skills.Salvage.ArcaneSalvage.EnchantDowngradeEnabled", true); } public boolean getArcaneSalvageEnchantDowngradeEnabled() { return config.getBoolean("Skills.Salvage.ArcaneSalvage.EnchantDowngradeEnabled", true); }
public boolean getArcaneSalvageEnchantLossEnabled() { return config.getBoolean("Skills.Salvage.ArcaneSalvage.EnchantLossEnabled", true); } public boolean getArcaneSalvageEnchantLossEnabled() { return config.getBoolean("Skills.Salvage.ArcaneSalvage.EnchantLossEnabled", true); }
@ -988,10 +986,10 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
public double getGoreModifier() { return config.getDouble("Skills.Taming.Gore.Modifier", 2.0D); } public double getGoreModifier() { return config.getDouble("Skills.Taming.Gore.Modifier", 2.0D); }
/*public int getFastFoodUnlock() { return config.getInt("Skills.Taming.FastFood.UnlockLevel", 50); }*/ /*public int getFastFoodUnlock() { return config.getInt("Skills.Taming.FastFood.UnlockLevel", 50); }*/
public double getFastFoodChance() { return config.getDouble("Skills.Taming.FastFood.Chance", 50.0D); } public double getFastFoodChance() { return config.getDouble("Skills.Taming.FastFoodService.Chance", 50.0D); }
public double getPummelChance() { return config.getDouble("Skills.Taming.Pummel.Chance", 10.0D); } public double getPummelChance() { return config.getDouble("Skills.Taming.Pummel.Chance", 10.0D); }
public int getEnviromentallyAwareUnlock() { return config.getInt("Skills.Taming.EnvironmentallyAware.UnlockLevel", 100); } //public int getEnviromentallyAwareUnlock() { return config.getInt("Skills.Taming.EnvironmentallyAware.UnlockLevel", 100); }
/*public int getThickFurUnlock() { return config.getInt("Skills.Taming.ThickFur.UnlockLevel", 250); }*/ /*public int getThickFurUnlock() { return config.getInt("Skills.Taming.ThickFur.UnlockLevel", 250); }*/
public double getThickFurModifier() { return config.getDouble("Skills.Taming.ThickFur.Modifier", 2.0D); } public double getThickFurModifier() { return config.getDouble("Skills.Taming.ThickFur.Modifier", 2.0D); }

View File

@ -59,7 +59,7 @@ public enum SubSkillType {
REPAIR_SUPER_REPAIR, REPAIR_SUPER_REPAIR,
/* Salvage */ /* Salvage */
SALVAGE_ADVANCED_SALVAGE, SALVAGE_ADVANCED_SALVAGE(1),
SALVAGE_ARCANE_SALVAGE(8), SALVAGE_ARCANE_SALVAGE(8),
/* Smelting */ /* Smelting */

View File

@ -9,10 +9,10 @@ import org.bukkit.Material;
public class Salvage { public class Salvage {
public static Material anvilMaterial = Config.getInstance().getSalvageAnvilMaterial(); public static Material anvilMaterial = Config.getInstance().getSalvageAnvilMaterial();
public static int salvageMaxPercentageLevel = AdvancedConfig.getInstance().getSalvageMaxPercentageLevel(); /*public static int salvageMaxPercentageLevel = AdvancedConfig.getInstance().getSalvageMaxPercentageLevel();
public static double salvageMaxPercentage = AdvancedConfig.getInstance().getSalvageMaxPercentage(); public static double salvageMaxPercentage = AdvancedConfig.getInstance().getSalvageMaxPercentage();
public static int advancedSalvageUnlockLevel = RankUtils.getRankUnlockLevel(SubSkillType.SALVAGE_ADVANCED_SALVAGE, 1); public static int advancedSalvageUnlockLevel = RankUtils.getRankUnlockLevel(SubSkillType.SALVAGE_ADVANCED_SALVAGE, 1);*/
public static boolean arcaneSalvageDowngrades = AdvancedConfig.getInstance().getArcaneSalvageEnchantDowngradeEnabled(); public static boolean arcaneSalvageDowngrades = AdvancedConfig.getInstance().getArcaneSalvageEnchantDowngradeEnabled();
public static boolean arcaneSalvageEnchantLoss = AdvancedConfig.getInstance().getArcaneSalvageEnchantLossEnabled(); public static boolean arcaneSalvageEnchantLoss = AdvancedConfig.getInstance().getArcaneSalvageEnchantLossEnabled();

View File

@ -81,16 +81,16 @@ public class SalvageManager extends SkillManager {
return; return;
} }
int skillLevel = getSkillLevel(); /*int skillLevel = getSkillLevel();
int minimumSalvageableLevel = salvageable.getMinimumLevel(); int minimumSalvageableLevel = salvageable.getMinimumLevel();*/
// Level check // Level check
if (skillLevel < minimumSalvageableLevel) { if (!RankUtils.hasUnlockedSubskill(player, SubSkillType.SALVAGE_ARCANE_SALVAGE)) {
NotificationManager.sendPlayerInformation(player, NotificationType.REQUIREMENTS_NOT_MET, "Salvage.Skills.Adept.Level", String.valueOf(minimumSalvageableLevel), StringUtils.getPrettyItemString(item.getType())); NotificationManager.sendPlayerInformation(player, NotificationType.REQUIREMENTS_NOT_MET, "Salvage.Skills.Adept.Level", String.valueOf(RankUtils.getUnlockLevel(SubSkillType.SALVAGE_ARCANE_SALVAGE)), StringUtils.getPrettyItemString(item.getType()));
return; return;
} }
if (item.getDurability() != 0 && (getSkillLevel() < Salvage.advancedSalvageUnlockLevel || !Permissions.advancedSalvage(player))) { if (item.getDurability() != 0 && (!RankUtils.hasUnlockedSubskill(player, SubSkillType.SALVAGE_ADVANCED_SALVAGE) || !Permissions.advancedSalvage(player))) {
NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILURE, "Salvage.Skills.Adept.Damaged"); NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILURE, "Salvage.Skills.Adept.Damaged");
return; return;
} }
@ -103,7 +103,8 @@ public class SalvageManager extends SkillManager {
return; return;
} }
salvageableAmount = Math.max((int) (salvageableAmount * getMaxSalvagePercentage()), 1); // Always get at least something back, if you're capable of salvaging it. //Amount of materials to salvage based on rank
salvageableAmount = getSalvageableAmount();
player.getInventory().setItemInMainHand(new ItemStack(Material.AIR)); player.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
location.add(0.5, 1, 0.5); location.add(0.5, 1, 0.5);
@ -139,8 +140,12 @@ public class SalvageManager extends SkillManager {
NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE, "Salvage.Skills.Success"); NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE, "Salvage.Skills.Success");
} }
public double getMaxSalvagePercentage() { /*public double getMaxSalvagePercentage() {
return Math.min((((Salvage.salvageMaxPercentage / Salvage.salvageMaxPercentageLevel) * getSkillLevel()) / 100.0D), Salvage.salvageMaxPercentage / 100.0D); return Math.min((((Salvage.salvageMaxPercentage / Salvage.salvageMaxPercentageLevel) * getSkillLevel()) / 100.0D), Salvage.salvageMaxPercentage / 100.0D);
}*/
public int getSalvageableAmount() {
return (RankUtils.getRank(getPlayer(), SubSkillType.SALVAGE_ARCANE_SALVAGE) * 1);
} }
/** /**
@ -187,7 +192,7 @@ public class SalvageManager extends SkillManager {
private ItemStack arcaneSalvageCheck(Map<Enchantment, Integer> enchants) { private ItemStack arcaneSalvageCheck(Map<Enchantment, Integer> enchants) {
Player player = getPlayer(); Player player = getPlayer();
if (getArcaneSalvageRank() == 0 || !Permissions.arcaneSalvage(player)) { if (!RankUtils.hasUnlockedSubskill(player, SubSkillType.SALVAGE_ARCANE_SALVAGE) || !Permissions.arcaneSalvage(player)) {
NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILURE, "Salvage.Skills.ArcaneFailed"); NotificationManager.sendPlayerInformation(player, NotificationType.SUBSKILL_MESSAGE_FAILURE, "Salvage.Skills.ArcaneFailed");
return null; return null;
} }
@ -199,9 +204,14 @@ public class SalvageManager extends SkillManager {
for (Entry<Enchantment, Integer> enchant : enchants.entrySet()) { for (Entry<Enchantment, Integer> enchant : enchants.entrySet()) {
getPlayer().sendMessage("DEBUG SALVAGE CHANCE: "+RandomChanceUtil.getRandomChanceExecutionChance(new RandomChanceSkillStatic(getExtractFullEnchantChance(), getPlayer(), SubSkillType.SALVAGE_ARCANE_SALVAGE)));
if (!Salvage.arcaneSalvageEnchantLoss if (!Salvage.arcaneSalvageEnchantLoss
|| RandomChanceUtil.checkRandomChanceExecutionSuccess(new RandomChanceSkillStatic(getExtractFullEnchantChance(), getPlayer(), SubSkillType.SALVAGE_ARCANE_SALVAGE))) { || RandomChanceUtil.checkRandomChanceExecutionSuccess(new RandomChanceSkillStatic(getExtractFullEnchantChance(), getPlayer(), SubSkillType.SALVAGE_ARCANE_SALVAGE))) {
enchantMeta.addStoredEnchant(enchant.getKey(), enchant.getValue(), true); enchantMeta.addStoredEnchant(enchant.getKey(), enchant.getValue(), true);
getPlayer().sendMessage("DEBUG: FULL ENCHANT RECOVERY SUCCESS");
} }
else if (enchant.getValue() > 1 else if (enchant.getValue() > 1
&& Salvage.arcaneSalvageDowngrades && Salvage.arcaneSalvageDowngrades

View File

@ -7,10 +7,6 @@ import org.bukkit.EntityEffect;
import org.bukkit.entity.*; import org.bukkit.entity.*;
public class Taming { public class Taming {
public static int environmentallyAwareUnlockLevel = AdvancedConfig.getInstance().getEnviromentallyAwareUnlock();
public static int holyHoundUnlockLevel = RankUtils.getUnlockLevel(SubSkillType.TAMING_HOLY_HOUND);
public static int fastFoodServiceUnlockLevel = RankUtils.getUnlockLevel(SubSkillType.TAMING_FAST_FOOD_SERVICE);
public static double fastFoodServiceActivationChance = AdvancedConfig.getInstance().getFastFoodChance(); public static double fastFoodServiceActivationChance = AdvancedConfig.getInstance().getFastFoodChance();
public static int goreBleedTicks = 2; //Equivalent to rank 1 in Rupture public static int goreBleedTicks = 2; //Equivalent to rank 1 in Rupture

View File

@ -40,23 +40,28 @@ public class TamingManager extends SkillManager {
private static HashMap<EntityType, List<TrackedTamingEntity>> summonedEntities = new HashMap<EntityType, List<TrackedTamingEntity>>(); private static HashMap<EntityType, List<TrackedTamingEntity>> summonedEntities = new HashMap<EntityType, List<TrackedTamingEntity>>();
public boolean canUseThickFur() { public boolean canUseThickFur() {
return getSkillLevel() >= Taming.thickFurUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_THICK_FUR); return RankUtils.hasUnlockedSubskill(getPlayer(), SubSkillType.TAMING_THICK_FUR)
&& Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_THICK_FUR);
} }
public boolean canUseEnvironmentallyAware() { public boolean canUseEnvironmentallyAware() {
return getSkillLevel() >= Taming.environmentallyAwareUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_ENVIRONMENTALLY_AWARE); return RankUtils.hasUnlockedSubskill(getPlayer(), SubSkillType.TAMING_ENVIRONMENTALLY_AWARE)
&& Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_ENVIRONMENTALLY_AWARE);
} }
public boolean canUseShockProof() { public boolean canUseShockProof() {
return getSkillLevel() >= Taming.shockProofUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_SHOCK_PROOF); return RankUtils.hasUnlockedSubskill(getPlayer(), SubSkillType.TAMING_SHOCK_PROOF)
&& Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_SHOCK_PROOF);
} }
public boolean canUseHolyHound() { public boolean canUseHolyHound() {
return getSkillLevel() >= Taming.holyHoundUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_HOLY_HOUND); return RankUtils.hasUnlockedSubskill(getPlayer(), SubSkillType.TAMING_ENVIRONMENTALLY_AWARE)
&& Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_HOLY_HOUND);
} }
public boolean canUseFastFoodService() { public boolean canUseFastFoodService() {
return getSkillLevel() >= Taming.fastFoodServiceUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_FAST_FOOD_SERVICE); return RankUtils.hasUnlockedSubskill(getPlayer(), SubSkillType.TAMING_FAST_FOOD_SERVICE)
&& Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.TAMING_FAST_FOOD_SERVICE);
} }
public boolean canUseSharpenedClaws() { public boolean canUseSharpenedClaws() {

View File

@ -6,6 +6,7 @@ import com.gmail.nossr50.datatypes.skills.SubSkillType;
import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill; import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillEvent; import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillEvent;
import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillRandomCheckEvent; import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillRandomCheckEvent;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.util.EventUtils; import com.gmail.nossr50.util.EventUtils;
import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.skills.SkillActivationType; import com.gmail.nossr50.util.skills.SkillActivationType;
@ -161,6 +162,17 @@ public class RandomChanceUtil
return chanceOfSuccess; return chanceOfSuccess;
} }
private static double calculateChanceOfSuccess(RandomChanceSkillStatic randomChance) {
mcMMO.p.getServer().broadcastMessage("DEBUG: USING CORRECT STATIC CALCULATION METHOD");
double chanceOfSuccess = getChanceOfSuccess(randomChance.getXPos(), 100, 100);
//Add Luck
chanceOfSuccess = addLuck(randomChance.isLucky(), chanceOfSuccess);
return chanceOfSuccess;
}
/** /**
* The formula for RNG success is determined like this * The formula for RNG success is determined like this
* maximum probability * ( x / maxlevel ) * maximum probability * ( x / maxlevel )

View File

@ -114,11 +114,9 @@ Skills:
### ###
Alchemy: Alchemy:
Catalysis: Catalysis:
# UnlockLevel: Alchemy level when the Catalysis ability unlocks
# MaxBonusLevel: Maximum bonus level of Catalysis, when a player reaches this level his brewing speed will be <MaxSpeed> # MaxBonusLevel: Maximum bonus level of Catalysis, when a player reaches this level his brewing speed will be <MaxSpeed>
# MinSpeed: Minimum brewing speed allowed when at <UnlockLevel> or lower # MinSpeed: Minimum brewing speed allowed when at <UnlockLevel> or lower
# MaxSpeed: Maximum brewing speed allowed when at <MaxBonusLevel> or higher # MaxSpeed: Maximum brewing speed allowed when at <MaxBonusLevel> or higher
UnlockLevel: 10
MaxBonusLevel: 100 MaxBonusLevel: 100
MinSpeed: 1.0 MinSpeed: 1.0
MaxSpeed: 4.0 MaxSpeed: 4.0
@ -215,15 +213,9 @@ Skills:
# This determines when Fisherman's Diet adds extra hunger recovery to food # This determines when Fisherman's Diet adds extra hunger recovery to food
RankChange: 20 RankChange: 20
IceFishing:
# UnlockLevel: Fishing level when the Ice Fishing ability unlocks
UnlockLevel: 5
MasterAngler: MasterAngler:
# UnlockLevel: Fishing level when the Master Angler ability unlocks
# BoatMultiplier: Catch rate is multiplied by this modifier # BoatMultiplier: Catch rate is multiplied by this modifier
# BiomeModifier: Catch rate is multiplied by this modifier # BiomeModifier: Catch rate is multiplied by this modifier
UnlockLevel: 12
BoatModifier: 2.0 BoatModifier: 2.0
BiomeModifier: 2.0 BiomeModifier: 2.0
# #
@ -265,9 +257,7 @@ Skills:
ChanceMax: 100.0 ChanceMax: 100.0
MaxBonusLevel: 100 MaxBonusLevel: 100
# BlastMining_Rank: BlastMining rank unlocks
BlastMining: BlastMining:
# BlastDamageDecrease Ranks: % of damage reduced from TNT explosions # BlastDamageDecrease Ranks: % of damage reduced from TNT explosions
BlastDamageDecrease: BlastDamageDecrease:
Rank_1: 0.0 Rank_1: 0.0
@ -363,15 +353,6 @@ Skills:
# Settings for Salvage # Settings for Salvage
### ###
Salvage: Salvage:
# MaxPercentage: Maximum percentage of materials to be returned when Salvaging
# MaxPercentageLevel: On this level, the Salvage percentage will be <MaxPercentage>
MaxPercentage: 100.0
MaxPercentageLevel: 100
# AdvancedSalvage_UnlockLevel: The level at which Advance Salvage become available
AdvancedSalvage:
UnlockLevel: 35
ArcaneSalvage: ArcaneSalvage:
# EnchantLossEnabled: When salvaging enchanted items, the enchants may be lost # EnchantLossEnabled: When salvaging enchanted items, the enchants may be lost
# EnchantDowngradeEnabled: When salvaging enchanted items, the enchants may be downgraded # EnchantDowngradeEnabled: When salvaging enchanted items, the enchants may be downgraded
@ -416,9 +397,7 @@ Skills:
MaxBonusLevel: 100 MaxBonusLevel: 100
FluxMining: FluxMining:
# UnlockLevel: Level when Flux Mining becomes available
# Chance: Chance for Flux Mining to activate # Chance: Chance for Flux Mining to activate
UnlockLevel: 25
Chance: 33.0 Chance: 33.0
MaxBonusLevel: 100 MaxBonusLevel: 100
@ -479,31 +458,18 @@ Skills:
# BleedTicks: Determines the length of the bleeding effect # BleedTicks: Determines the length of the bleeding effect
# Modifier: Damage will get multiplied by this modifier # Modifier: Damage will get multiplied by this modifier
Modifier: 2.0 Modifier: 2.0
FastFood: FastFoodService:
# UnlockLevel: Level when FastFood unlocks
# Chance: The chance for wolves to heal hp when inflicting damage # Chance: The chance for wolves to heal hp when inflicting damage
UnlockLevel: 5
Chance: 50.0 Chance: 50.0
EnvironmentallyAware: EnvironmentallyAware:
# UnlockLevel: Level when EnvironmentallyAware unlocks
UnlockLevel: 10
ThickFur: ThickFur:
# UnlockLevel: Level when ThickFur unlocks
# Modifier: Damage will get divided by this modifier # Modifier: Damage will get divided by this modifier
UnlockLevel: 25
Modifier: 2.0 Modifier: 2.0
HolyHound:
# UnlockLevel: Level when HolyHound unlocks
UnlockLevel: 37
ShockProof: ShockProof:
# UnlockLevel: Level when ShockProof unlocks
# Modifier: Damage will get divided by this modifier # Modifier: Damage will get divided by this modifier
UnlockLevel: 50
Modifier: 6.0 Modifier: 6.0
SharpenedClaws: SharpenedClaws:
# UnlockLevel: Level when SharpenedClaws unlocks
# Bonus: This bonus will get added to the damage caused # Bonus: This bonus will get added to the damage caused
UnlockLevel: 75
Bonus: 2.0 Bonus: 2.0
CallOfTheWild: CallOfTheWild:
# MinHorseJumpStrength: The minimum jump strength a summoned horse must have # MinHorseJumpStrength: The minimum jump strength a summoned horse must have

View File

@ -366,7 +366,7 @@ Salvage.SubSkill.ArcaneSalvage.Name=Arcane Salvaging
Salvage.SubSkill.ArcaneSalvage.Description=Extract enchantments from items Salvage.SubSkill.ArcaneSalvage.Description=Extract enchantments from items
Salvage.Ability.Locked.0=LOCKED UNTIL {0}+ SKILL (ADVANCED SALVAGE) Salvage.Ability.Locked.0=LOCKED UNTIL {0}+ SKILL (ADVANCED SALVAGE)
Salvage.Ability.Bonus.0=Advanced Salvage Salvage.Ability.Bonus.0=Advanced Salvage
Salvage.Ability.Bonus.1=Max yield {0} item destroyed Salvage.Ability.Bonus.1={0} Max Materials Recovered from Salvaging
Salvage.Arcane.Rank=Arcane Salvaging: [[YELLOW]]Rank {0}/{1} Salvage.Arcane.Rank=Arcane Salvaging: [[YELLOW]]Rank {0}/{1}
Salvage.Arcane.ExtractFull=[[GRAY]]AS Full-Enchant Chance Salvage.Arcane.ExtractFull=[[GRAY]]AS Full-Enchant Chance
Salvage.Arcane.ExtractPartial=[[GRAY]]AS Partial-Enchant Chance Salvage.Arcane.ExtractPartial=[[GRAY]]AS Partial-Enchant Chance

View File

@ -232,6 +232,11 @@ Smelting:
Rank_7: 850 Rank_7: 850
Rank_8: 1000 Rank_8: 1000
Salvage: Salvage:
AdvancedSalvage:
Standard:
Rank_1: 35
RetroMode:
Rank_1: 350
ArcaneSalvage: ArcaneSalvage:
Standard: Standard:
Rank_1: 10 Rank_1: 10