| 
					
				 | 
			
			
				@@ -29,7 +29,6 @@ import org.bukkit.event.EventPriority; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.bukkit.event.entity.EntityDamageEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.bukkit.inventory.ItemStack; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class Roll extends AcrobaticsSubSkill implements RandomChance { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private int fallTries = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     protected Location lastFallLocation; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -137,7 +136,6 @@ public class Roll extends AcrobaticsSubSkill implements RandomChance { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          *   Append the messages 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /*componentBuilder.append(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Acrobatics.Effect.2"), LocaleLoader.getString("Acrobatics.Effect.3"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         componentBuilder.append("\n");*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -319,4 +317,83 @@ public class Roll extends AcrobaticsSubSkill implements RandomChance { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public int getNumRanks() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Prints detailed info about this subskill to the player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param player the target player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void printInfo(Player player) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //Header 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super.printInfo(player); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //Start the description string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //player.sendMessage(getDescription()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //Player stats 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.Stats", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            LocaleLoader.getString("Acrobatics.SubSkill.Roll.Stats", getStats(player)[0], getStats(player)[1]))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //Mechanics 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        player.sendMessage(LocaleLoader.getString("Commands.MmoInfo.Mechanics")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        player.sendMessage(getMechanics()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Returns a collection of strings about how a skill works 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public String getMechanics() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //Vars passed to locale 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //0 = chance to roll at half max level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //1 = chance to roll with grace at half max level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //2 = level where maximum bonus is reached 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //3 = additive chance to succeed per level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Roll: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # ChanceMax: Maximum chance of rolling when on <MaxBonusLevel> or higher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # MaxBonusLevel: On this level or higher, the roll chance will not go higher than <ChanceMax> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # DamageThreshold: The max damage a player can negate with a roll 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ChanceMax: 100.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            MaxBonusLevel: 100 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DamageThreshold: 7.0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        double rollChanceHalfMax, graceChanceHalfMax, maxBonusLevel, curve, damageThreshold, chancePerLevel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        curve = AdvancedConfig.getInstance().getMaxChance(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        maxBonusLevel = (double) AdvancedConfig.getInstance().getMaxBonusLevel(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //Chance 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rollChanceHalfMax   = 100 * SkillUtils.getChanceOfSuccess(maxBonusLevel / 2, maxBonusLevel, curve); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        graceChanceHalfMax  = 100 * SkillUtils.getChanceOfSuccess(maxBonusLevel / 2, maxBonusLevel, curve / 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        damageThreshold     = AdvancedConfig.getInstance().getRollDamageThreshold(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        chancePerLevel = (1/curve) * maxBonusLevel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return LocaleLoader.getString("Acrobatics.SubSkill.Roll.Mechanics", rollChanceHalfMax, graceChanceHalfMax, maxBonusLevel, chancePerLevel, damageThreshold); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Get an array of various stats for a player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param player target player 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return stat array for target player for this skill 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public Double[] getStats(Player player) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        double curve, maxBonusLevel, playerChanceRoll, playerChanceGrace; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        curve = AdvancedConfig.getInstance().getMaxChance(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        maxBonusLevel = (double) AdvancedConfig.getInstance().getMaxBonusLevel(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        playerChanceRoll        = 100 * SkillUtils.getChanceOfSuccess(UserManager.getPlayer(player).getSkillLevel(getPrimarySkill()), maxBonusLevel, curve); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        playerChanceGrace       = 100 * SkillUtils.getChanceOfSuccess(UserManager.getPlayer(player).getSkillLevel(getPrimarySkill()), maxBonusLevel, curve / 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Double[] stats = { playerChanceRoll, playerChanceGrace}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return stats; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |