Browse Source

Another WIP update

nossr50 14 years ago
parent
commit
d32ff935db

+ 3 - 1
mcMMO/Changelog.txt

@@ -3,10 +3,12 @@ Changelog:
 Version 0.9
 Version 0.9
 --NEW CONTENT--
 --NEW CONTENT--
 Woodcutting now has the "Tree Feller" Ability
 Woodcutting now has the "Tree Feller" Ability
+Unarmed now has the "Berserk" Ability
+Swords now has the "Serrated Strikes" Ability
 Mining now has the "Super Breaker" Ability
 Mining now has the "Super Breaker" Ability
 Axes now has the "Skull Splitter" Ability
 Axes now has the "Skull Splitter" Ability
 Excavation now has the "Giga Drill Breaker" Ability
 Excavation now has the "Giga Drill Breaker" Ability
-Added /mcrefresh tool for refreshing cooldowns
+Added /mcrefresh <playername> - tool for refreshing cooldowns
 Unarmed now has the "Deflect Arrows" passive skill
 Unarmed now has the "Deflect Arrows" passive skill
 Chimaera Wing Item Added
 Chimaera Wing Item Added
 
 

+ 14 - 1
mcMMO/com/gmail/nossr50/mcBlockListener.java

@@ -68,6 +68,19 @@ public class mcBlockListener extends BlockListener {
 			block.setType(Material.AIR);
 			block.setType(Material.AIR);
 			block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
 			block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
     	}
     	}
+    	/*
+    	 * BERSERK MODE CHECKS
+    	 */
+    	if(mcUsers.getProfile(player).getBerserkMode() && player.getItemInHand().getTypeId() == 0 && dmg == 0 && mcExcavation.getInstance().canBeGigaDrillBroken(block)){
+    		Material mat = Material.getMaterial(block.getTypeId());
+    		if(block.getTypeId() == 2)
+    			mat = Material.DIRT;
+			byte type = block.getData();
+			ItemStack item = new ItemStack(mat, 1, (byte)0, type);
+			block.setType(Material.AIR);
+			block.getLocation().getWorld().dropItemNaturally(block.getLocation(), item);
+    	}
+    	
     	/*
     	/*
     	 * SUPER BREAKER CHECKS
     	 * SUPER BREAKER CHECKS
     	 */
     	 */
@@ -120,7 +133,7 @@ public class mcBlockListener extends BlockListener {
 	    			/*
 	    			/*
 	    			 * IF PLAYER IS USING TREEFELLER
 	    			 * IF PLAYER IS USING TREEFELLER
 	   				 */
 	   				 */
-	   				if(mcPermissions.getInstance().woodcuttingability(player) && mcUsers.getProfile(player).getTreeFellerMode() && block.getTypeId() == 17){
+	   				if(mcPermissions.getInstance().woodCuttingAbility(player) && mcUsers.getProfile(player).getTreeFellerMode() && block.getTypeId() == 17){
 	    				mcWoodCutting.getInstance().treeFeller(block, player);
 	    				mcWoodCutting.getInstance().treeFeller(block, player);
 	    				for(Block blockx : mcConfig.getInstance().getTreeFeller()){
 	    				for(Block blockx : mcConfig.getInstance().getTreeFeller()){
 	    					if(blockx != null){
 	    					if(blockx != null){

+ 32 - 1
mcMMO/com/gmail/nossr50/mcCombat.java

@@ -498,7 +498,7 @@ public class mcCombat {
     }
     }
     public void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Entity x){
     public void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Entity x){
     	for(Entity derp : x.getWorld().getEntities()){
     	for(Entity derp : x.getWorld().getEntities()){
-    		if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 5){
+    		if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 7){
     			if(derp instanceof Player){
     			if(derp instanceof Player){
     				Player target = (Player)derp;
     				Player target = (Player)derp;
     				if(mcParty.getInstance().inSameParty(attacker, target))
     				if(mcParty.getInstance().inSameParty(attacker, target))
@@ -519,6 +519,37 @@ public class mcCombat {
     		}
     		}
     	}
     	}
     }
     }
+    public void applySerratedStrikes(Player attacker, EntityDamageByEntityEvent event, Entity x){
+    	for(Entity derp : x.getWorld().getEntities()){
+    		if(mcm.getInstance().getDistance(x.getLocation(), derp.getLocation()) < 7){
+    			if(derp instanceof Player){
+    				Player target = (Player)derp;
+    				if(mcParty.getInstance().inSameParty(attacker, target))
+    					continue;
+    				if(!target.getName().equals(attacker.getName())){
+    					target.damage(event.getDamage() / 4);
+    					target.sendMessage(ChatColor.DARK_RED+"Struck by Serrated Strike!");
+    					if(!mcConfig.getInstance().isBleedTracked(derp)){
+        					mcConfig.getInstance().addBleedTrack(x);
+        					mcUsers.getProfile(target).setBleedTicks(12);
+    					}
+    				}
+    			}
+    			if(derp instanceof Monster){
+    				if(!mcConfig.getInstance().isBleedTracked(derp))
+    					mcConfig.getInstance().addBleedTrack(x);
+    				Monster target = (Monster)derp;
+    				target.damage(event.getDamage() / 4);
+    			}
+    			if(derp instanceof Animals){
+    				if(!mcConfig.getInstance().isBleedTracked(derp))
+    					mcConfig.getInstance().addBleedTrack(x);
+    				Animals target = (Animals)derp;
+    				target.damage(event.getDamage() / 4);
+    			}
+    		}
+    	}
+    }
     public void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Entity x){
     public void axeCriticalCheck(Player attacker, EntityDamageByEntityEvent event, Entity x){
     	if(mcm.getInstance().isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
     	if(mcm.getInstance().isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
     		if(mcUsers.getProfile(attacker).getAxesInt() >= 750){
     		if(mcUsers.getProfile(attacker).getAxesInt() >= 750){

+ 7 - 0
mcMMO/com/gmail/nossr50/mcEntityListener.java

@@ -96,6 +96,11 @@ public class mcEntityListener extends EntityListener {
         		Player attacker = (Player)f;
         		Player attacker = (Player)f;
         		if(mcUsers.getProfile(attacker).getAxePreparationMode())
         		if(mcUsers.getProfile(attacker).getAxePreparationMode())
         			mcSkills.getInstance().skullSplitterCheck(attacker);
         			mcSkills.getInstance().skullSplitterCheck(attacker);
+        		/*
+        		 * BERSERK DAMAGE MODIFIER
+        		 */
+        		if(mcUsers.getProfile(attacker).getBerserkMode())
+        			event.setDamage(event.getDamage() + (event.getDamage() / 2));
         		/*
         		/*
         		 * Player versus Monster checks, this handles all skill damage modifiers and any procs.
         		 * Player versus Monster checks, this handles all skill damage modifiers and any procs.
         		 */
         		 */
@@ -118,6 +123,8 @@ public class mcEntityListener extends EntityListener {
         		 */
         		 */
         		if(!event.isCancelled() && mcUsers.getProfile(attacker).getSkullSplitterMode())
         		if(!event.isCancelled() && mcUsers.getProfile(attacker).getSkullSplitterMode())
             		mcCombat.getInstance().applyAoeDamage(attacker, eventb, x);
             		mcCombat.getInstance().applyAoeDamage(attacker, eventb, x);
+        		if(!event.isCancelled() && mcUsers.getProfile(attacker).getSerratedStrikesMode())
+            		mcCombat.getInstance().applyAoeDamage(attacker, eventb, x);
         	}
         	}
         	
         	
         	if(e instanceof Monster || e instanceof Animals){
         	if(e instanceof Monster || e instanceof Animals){

+ 10 - 3
mcMMO/com/gmail/nossr50/mcPermissions.java

@@ -65,7 +65,7 @@ public class mcPermissions {
             return true;
             return true;
         }
         }
     }
     }
-    public boolean miningability(Player player){
+    public boolean miningAbility(Player player){
     	if (permissionsEnabled) {
     	if (permissionsEnabled) {
             return permission(player, "mcmmo.ability.mining");
             return permission(player, "mcmmo.ability.mining");
         } else {
         } else {
@@ -79,14 +79,14 @@ public class mcPermissions {
             return true;
             return true;
         }
         }
     }
     }
-    public boolean swordsability(Player player){
+    public boolean swordsAbility(Player player){
     	if (permissionsEnabled) {
     	if (permissionsEnabled) {
             return permission(player, "mcmmo.ability.swords");
             return permission(player, "mcmmo.ability.swords");
         } else {
         } else {
             return true;
             return true;
         }
         }
     }
     }
-    public boolean woodcuttingability(Player player) {
+    public boolean woodCuttingAbility(Player player) {
     	if (permissionsEnabled) {
     	if (permissionsEnabled) {
             return permission(player, "mcmmo.ability.woodcutting");
             return permission(player, "mcmmo.ability.woodcutting");
         } else {
         } else {
@@ -128,6 +128,13 @@ public class mcPermissions {
             return true;
             return true;
         }
         }
     }
     }
+    public boolean setMySpawnOther(Player player) {
+        if (permissionsEnabled) {
+            return permission(player, "mcmmo.commands.setmyspawnother");
+        } else {
+            return true;
+        }
+    }
     public boolean partyChat(Player player) {
     public boolean partyChat(Player player) {
         if (permissionsEnabled) {
         if (permissionsEnabled) {
             return permission(player, "mcmmo.chat.partychat");
             return permission(player, "mcmmo.chat.partychat");

+ 12 - 2
mcMMO/com/gmail/nossr50/mcPlayerListener.java

@@ -61,7 +61,7 @@ public class mcPlayerListener extends PlayerListener {
     public void onPlayerJoin(PlayerEvent event) {
     public void onPlayerJoin(PlayerEvent event) {
     	Player player = event.getPlayer();
     	Player player = event.getPlayer();
     	if(mcPermissions.getInstance().motd(player)){
     	if(mcPermissions.getInstance().motd(player)){
-    	player.sendMessage(ChatColor.BLUE + "This server is running mcMMO "+plugin.getDescription().getVersion()+" type /"+ChatColor.YELLOW+mcLoadProperties.mcmmo+ChatColor.BLUE+ " for help.");
+    		player.sendMessage(ChatColor.BLUE + "This server is running mcMMO "+plugin.getDescription().getVersion()+" type /"+ChatColor.YELLOW+mcLoadProperties.mcmmo+ChatColor.BLUE+ " for help.");
     	}
     	}
     }
     }
     //Check if string is a player
     //Check if string is a player
@@ -131,6 +131,12 @@ public class mcPlayerListener extends PlayerListener {
     		mcUsers.getProfile(player).setTreeFellerCooldown(0);
     		mcUsers.getProfile(player).setTreeFellerCooldown(0);
     		mcUsers.getProfile(player).setTreeFellerMode(false);
     		mcUsers.getProfile(player).setTreeFellerMode(false);
     		mcUsers.getProfile(player).setTreeFellerTicks(0);
     		mcUsers.getProfile(player).setTreeFellerTicks(0);
+    		/*
+    		 * BERSERK
+    		 */
+    		mcUsers.getProfile(player).setBerserkCooldown(0);
+    		mcUsers.getProfile(player).setBerserkMode(false);
+    		mcUsers.getProfile(player).setBerserkTicks(0);
     		
     		
     		player.sendMessage(ChatColor.GREEN+"**ABILITIES REFRESHED!**");
     		player.sendMessage(ChatColor.GREEN+"**ABILITIES REFRESHED!**");
     	}
     	}
@@ -300,13 +306,17 @@ public class mcPlayerListener extends PlayerListener {
     			player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions.");
     			player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions.");
     			return;
     			return;
     		}
     		}
+    		if((mcPermissions.getInstance().setMySpawnOther(player) || player.isOp()) && split.length >= 2 && isPlayer(split[1])){
+    			player.sendMessage("You have set "+split[1]+"'s spawn!");
+    			player = getPlayer(split[1]);
+    		}
     		event.setCancelled(true);
     		event.setCancelled(true);
     		double x = player.getLocation().getX();
     		double x = player.getLocation().getX();
     		double y = player.getLocation().getY();
     		double y = player.getLocation().getY();
     		double z = player.getLocation().getZ();
     		double z = player.getLocation().getZ();
     		String myspawnworld = player.getWorld().getName();
     		String myspawnworld = player.getWorld().getName();
     		mcUsers.getProfile(player).setMySpawn(x, y, z, myspawnworld);
     		mcUsers.getProfile(player).setMySpawn(x, y, z, myspawnworld);
-    		player.sendMessage(ChatColor.DARK_AQUA + "Myspawn has been set to your current location.");
+    		player.sendMessage(ChatColor.DARK_AQUA + "Myspawn has been set.");
     	}
     	}
     	/*
     	/*
     	 * STATS COMMAND
     	 * STATS COMMAND

+ 89 - 5
mcMMO/com/gmail/nossr50/mcSkills.java

@@ -49,10 +49,16 @@ public class mcSkills {
     	}
     	}
     	if(mcUsers.getProfile(player).getSerratedStrikesCooldown() >= 1){
     	if(mcUsers.getProfile(player).getSerratedStrikesCooldown() >= 1){
     		mcUsers.getProfile(player).decreaseSerratedStrikesCooldown();
     		mcUsers.getProfile(player).decreaseSerratedStrikesCooldown();
-			if(mcUsers.getProfile(player).getSuperBreakerCooldown() == 0){
+			if(mcUsers.getProfile(player).getSerratedStrikesCooldown() == 0){
 				player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Serrated Strikes "+ChatColor.GREEN+"ability is refreshed!");
 				player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Serrated Strikes "+ChatColor.GREEN+"ability is refreshed!");
 			}
 			}
     	}
     	}
+    	if(mcUsers.getProfile(player).getBerserkCooldown() >= 1){
+    		mcUsers.getProfile(player).decreaseBerserkCooldown();
+			if(mcUsers.getProfile(player).getBerserkCooldown() == 0){
+				player.sendMessage(ChatColor.GREEN+"Your "+ChatColor.YELLOW+"Berserk "+ChatColor.GREEN+"ability is refreshed!");
+			}
+    	}
     	if(mcUsers.getProfile(player).getSkullSplitterCooldown() >= 1){
     	if(mcUsers.getProfile(player).getSkullSplitterCooldown() >= 1){
     		mcUsers.getProfile(player).decreaseSkullSplitterCooldown();
     		mcUsers.getProfile(player).decreaseSkullSplitterCooldown();
 			if(mcUsers.getProfile(player).getSkullSplitterCooldown() == 0){
 			if(mcUsers.getProfile(player).getSkullSplitterCooldown() == 0){
@@ -82,14 +88,92 @@ public class mcSkills {
     	}
     	}
     }
     }
     public void abilityActivationCheck(Player player, Block block){
     public void abilityActivationCheck(Player player, Block block){
-    	if(mcPermissions.getInstance().miningability(player)){
+    	if(mcPermissions.getInstance().miningAbility(player)){
     		mcMining.getInstance().superBreakerCheck(player, block);
     		mcMining.getInstance().superBreakerCheck(player, block);
     	}
     	}
     	if(mcPermissions.getInstance().excavationAbility(player)){
     	if(mcPermissions.getInstance().excavationAbility(player)){
     		mcExcavation.getInstance().gigaDrillBreakerActivationCheck(player, block);
     		mcExcavation.getInstance().gigaDrillBreakerActivationCheck(player, block);
     	}
     	}
+    	if(mcPermissions.getInstance().unarmed(player)){
+    		berserkActivationCheck(player, block);
+    	}
+    	if(mcPermissions.getInstance().swords(player)){
+    		serratedStrikesActivationCheck(player, block);
+    	}
     	axeActivationCheck(player, block);
     	axeActivationCheck(player, block);
     }
     }
+    public void serratedStrikesActivationCheck(Player player, Block block){
+		if(mcm.getInstance().isSwords(player.getItemInHand())){
+	    	if(block != null){
+		    	if(!mcm.getInstance().abilityBlockCheck(block))
+		    		return;
+	    	}
+	    	
+	    	int ticks = 2;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 50)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 150)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 250)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 350)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 450)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 550)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 650)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 750)
+    			ticks++;
+    		
+	    	if(!mcUsers.getProfile(player).getSerratedStrikesMode() && mcUsers.getProfile(player).getSerratedStrikesCooldown() == 0){
+	    		player.sendMessage(ChatColor.GREEN+"**SERRATED STRIKES ACTIVATED**");
+	    		mcUsers.getProfile(player).setSerratedStrikesTicks(ticks);
+	    		mcUsers.getProfile(player).setSerratedStrikesMode(true);
+	    	}
+	    	
+	    	if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){
+	    		player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
+	    	}
+	    }
+	}
+    public void berserkActivationCheck(Player player, Block block){
+		if(player.getItemInHand().getTypeId() == 0){
+	    	if(block != null){
+		    	if(!mcm.getInstance().abilityBlockCheck(block))
+		    		return;
+	    	}
+	    	
+	    	int ticks = 2;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 50)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 150)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 250)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 350)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 450)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 550)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 650)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 750)
+    			ticks++;
+    		
+	    	if(!mcUsers.getProfile(player).getBerserkMode() && mcUsers.getProfile(player).getBerserkCooldown() == 0){
+	    		player.sendMessage(ChatColor.GREEN+"**BERSERK ACTIVATED**");
+	    		mcUsers.getProfile(player).setBerserkTicks(ticks);
+	    		mcUsers.getProfile(player).setBerserkMode(true);
+	    	}
+	    	
+	    	if(!mcUsers.getProfile(player).getGigaDrillBreakerMode() && mcUsers.getProfile(player).getGigaDrillBreakerCooldown() >= 1){
+	    		player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
+	    	}
+	    }
+	}
     public void skullSplitterCheck(Player player){
     public void skullSplitterCheck(Player player){
     	if(mcm.getInstance().isAxes(player.getItemInHand())){
     	if(mcm.getInstance().isAxes(player.getItemInHand())){
     		/*
     		/*
@@ -131,7 +215,7 @@ public class mcSkills {
     	/*
     	/*
     	 * AXE PREPARATION MODE
     	 * AXE PREPARATION MODE
     	 */
     	 */
-    	if(mcPermissions.getInstance().woodcuttingability(player) && mcPermissions.getInstance().axes(player)){
+    	if(mcPermissions.getInstance().woodCuttingAbility(player) && mcPermissions.getInstance().axes(player)){
 			//Monitor the length of TreeFeller mode
 			//Monitor the length of TreeFeller mode
 			if(mcUsers.getProfile(player).getAxePreparationMode()){
 			if(mcUsers.getProfile(player).getAxePreparationMode()){
 				mcUsers.getProfile(player).decreaseAxePreparationTicks();
 				mcUsers.getProfile(player).decreaseAxePreparationTicks();
@@ -158,7 +242,7 @@ public class mcSkills {
     	/*
     	/*
 		 * WOODCUTTING ABILITY
 		 * WOODCUTTING ABILITY
 		 */
 		 */
-		if(mcPermissions.getInstance().woodcuttingability(player)){
+		if(mcPermissions.getInstance().woodCuttingAbility(player)){
 			//Monitor the length of TreeFeller mode
 			//Monitor the length of TreeFeller mode
 			if(mcUsers.getProfile(player).getTreeFellerMode()){
 			if(mcUsers.getProfile(player).getTreeFellerMode()){
 				mcUsers.getProfile(player).decreaseTreeFellerTicks();
 				mcUsers.getProfile(player).decreaseTreeFellerTicks();
@@ -172,7 +256,7 @@ public class mcSkills {
 		/*
 		/*
 		 * MINING ABILITY
 		 * MINING ABILITY
 		 */
 		 */
-		if(mcPermissions.getInstance().miningability(player)){
+		if(mcPermissions.getInstance().miningAbility(player)){
 			//Monitor the length of SuperBreaker mode
 			//Monitor the length of SuperBreaker mode
 			if(mcUsers.getProfile(player).getSuperBreakerMode()){
 			if(mcUsers.getProfile(player).getSuperBreakerMode()){
 				mcUsers.getProfile(player).decreaseSuperBreakerTicks();
 				mcUsers.getProfile(player).decreaseSuperBreakerTicks();

+ 1 - 2
mcMMO/com/gmail/nossr50/mcTimer.java

@@ -53,8 +53,7 @@ public class mcTimer extends TimerTask{
 			/*
 			/*
 			 * COOLDOWN MONITORING
 			 * COOLDOWN MONITORING
 			 */
 			 */
-			if(mcUsers.getProfile(player).hasCooldowns())
-				mcSkills.getInstance().decreaseCooldowns(player);
+			mcSkills.getInstance().decreaseCooldowns(player);
 		}
 		}
 		if(thecount < 20){
 		if(thecount < 20){
 			thecount++;
 			thecount++;

+ 33 - 2
mcMMO/com/gmail/nossr50/mcUsers.java

@@ -156,8 +156,8 @@ class PlayerList
 	    protected final Logger log = Logger.getLogger("Minecraft");
 	    protected final Logger log = Logger.getLogger("Minecraft");
 		private String playerName, gather, wgather, woodcutting, repair, mining, party, myspawn, myspawnworld, unarmed, herbalism, excavation,
 		private String playerName, gather, wgather, woodcutting, repair, mining, party, myspawn, myspawnworld, unarmed, herbalism, excavation,
 		archery, swords, axes, invite, acrobatics, repairgather, unarmedgather, herbalismgather, excavationgather, archerygather, swordsgather, axesgather, acrobaticsgather;
 		archery, swords, axes, invite, acrobatics, repairgather, unarmedgather, herbalismgather, excavationgather, archerygather, swordsgather, axesgather, acrobaticsgather;
-		private boolean dead, treeFellerMode, superBreakerMode, gigaDrillBreakerMode, serratedStrikesMode, axePreparationMode, skullSplitterMode;
-		private int recentlyhurt = 0, bleedticks = 0, gigaDrillBreaker = 0, gigaDrillBreakerCooldown = 0, gigaDrillBreakerTicks = 0, superBreakerTicks = 0, superBreakerCooldown = 0, 
+		private boolean dead, treeFellerMode, superBreakerMode, gigaDrillBreakerMode, serratedStrikesMode, axePreparationMode, skullSplitterMode, berserkMode;
+		private int recentlyhurt = 0, bleedticks = 0, gigaDrillBreakerCooldown = 0, gigaDrillBreakerTicks = 0, berserkTicks = 0, berserkCooldown = 0, superBreakerTicks = 0, superBreakerCooldown = 0, 
 		serratedStrikesTicks = 0, skullSplitterTicks = 0, skullSplitterCooldown = 0, serratedStrikesCooldown = 0, treeFellerTicks = 0, treeFellerCooldown = 0,
 		serratedStrikesTicks = 0, skullSplitterTicks = 0, skullSplitterCooldown = 0, serratedStrikesCooldown = 0, treeFellerTicks = 0, treeFellerCooldown = 0,
 		axePreparationTicks = 0;
 		axePreparationTicks = 0;
 		Player thisplayer;
 		Player thisplayer;
@@ -462,6 +462,37 @@ class PlayerList
 				axePreparationTicks--;
 				axePreparationTicks--;
 			}
 			}
 		}
 		}
+		/*
+		 * BERSERK MODE
+		 */
+		public boolean getBerserkMode(){
+			return berserkMode;
+		}
+		public void setBerserkMode(Boolean bool){
+			berserkMode = bool;
+		}
+		public Integer getBerserkTicks(){
+			return berserkTicks;
+		}
+		public void setBerserkTicks(Integer newvalue){
+			berserkTicks = newvalue;
+		}
+		public void decreaseBerserkTicks(){
+			if(berserkTicks >= 1){
+				berserkTicks--;
+			}
+		}
+		public void setBerserkCooldown(Integer newvalue){
+			berserkCooldown = newvalue;
+		}
+		public int getBerserkCooldown(){
+			return berserkCooldown;
+		}
+		public void decreaseBerserkCooldown(){
+			if(berserkCooldown >= 1){
+				berserkCooldown--;
+			}
+		}
 		/*
 		/*
 		 * SKULL SPLITTER
 		 * SKULL SPLITTER
 		 */
 		 */

+ 42 - 0
mcMMO/com/gmail/nossr50/mcm.java

@@ -294,14 +294,34 @@ public class mcm {
 			} else {
 			} else {
 				parrypercentage = "0";
 				parrypercentage = "0";
 			}
 			}
+			int ticks = 2;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 50)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 150)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 250)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 350)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 450)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 550)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 650)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getSwordsInt() >= 750)
+    			ticks++;
 			player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"SWORDS"+ChatColor.RED+"[]-----");
 			player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"SWORDS"+ChatColor.RED+"[]-----");
 			player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters");
 			player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters");
 			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
 			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
+			player.sendMessage(ChatColor.DARK_AQUA+"Serrated Strikes (ABILITY): "+ChatColor.GREEN+"25% DMG AoE, Bleed+ AoE");
+			player.sendMessage(ChatColor.DARK_GRAY+"Serrated Strikes Bleed+: "+ChatColor.GREEN+"Enemies Bleed Longer");
 			player.sendMessage(ChatColor.DARK_AQUA+"Parrying: "+ChatColor.GREEN+"Negates Damage");
 			player.sendMessage(ChatColor.DARK_AQUA+"Parrying: "+ChatColor.GREEN+"Negates Damage");
 			player.sendMessage(ChatColor.DARK_AQUA+"Bleed: "+ChatColor.GREEN+"Apply a 2 second bleed DoT to enemies");
 			player.sendMessage(ChatColor.DARK_AQUA+"Bleed: "+ChatColor.GREEN+"Apply a 2 second bleed DoT to enemies");
 			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---");
 			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---");
 			player.sendMessage(ChatColor.RED+"Bleed Chance: "+ChatColor.YELLOW+percentage+"%");
 			player.sendMessage(ChatColor.RED+"Bleed Chance: "+ChatColor.YELLOW+percentage+"%");
 			player.sendMessage(ChatColor.RED+"Parry Chance:"+ChatColor.YELLOW+parrypercentage+"%");
 			player.sendMessage(ChatColor.RED+"Parry Chance:"+ChatColor.YELLOW+parrypercentage+"%");
+			player.sendMessage(ChatColor.RED+"Serrated Strikes Length: "+ChatColor.YELLOW+(ticks * 2)+"s");
     	}
     	}
     	if(split[0].equalsIgnoreCase("/acrobatics")){
     	if(split[0].equalsIgnoreCase("/acrobatics")){
 			event.setCancelled(true);
 			event.setCancelled(true);
@@ -391,9 +411,29 @@ public class mcm {
 				rank++;
 				rank++;
 			if(mcUsers.getProfile(player).getUnarmedInt() >= 950)
 			if(mcUsers.getProfile(player).getUnarmedInt() >= 950)
 				rank++;
 				rank++;
+			
+			int ticks = 2;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 50)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 150)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 250)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 350)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 450)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 550)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 650)
+    			ticks++;
+    		if(mcUsers.getProfile(player).getUnarmedInt() >= 750)
+    			ticks++;
+    		
 			player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"UNARMED"+ChatColor.RED+"[]-----");
 			player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"UNARMED"+ChatColor.RED+"[]-----");
 			player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters");
 			player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters");
 			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
 			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
+			player.sendMessage(ChatColor.DARK_AQUA+"Berserk (ABILITY): "+ChatColor.GREEN+"+50% DMG, Breaks weak materials");
 			player.sendMessage(ChatColor.DARK_AQUA+"Disarm (Players): "+ChatColor.GREEN+"Drops the foes item held in hand");
 			player.sendMessage(ChatColor.DARK_AQUA+"Disarm (Players): "+ChatColor.GREEN+"Drops the foes item held in hand");
 			player.sendMessage(ChatColor.DARK_AQUA+"Damage+: "+ChatColor.GREEN+"Modifies Damage");
 			player.sendMessage(ChatColor.DARK_AQUA+"Damage+: "+ChatColor.GREEN+"Modifies Damage");
 			player.sendMessage(ChatColor.DARK_AQUA+"Arrow Deflect: "+ChatColor.GREEN+"Deflect arrows");
 			player.sendMessage(ChatColor.DARK_AQUA+"Arrow Deflect: "+ChatColor.GREEN+"Deflect arrows");
@@ -401,6 +441,7 @@ public class mcm {
 			player.sendMessage(ChatColor.RED+"Arrow Deflect Chance: "+ChatColor.YELLOW+arrowpercentage+"%");
 			player.sendMessage(ChatColor.RED+"Arrow Deflect Chance: "+ChatColor.YELLOW+arrowpercentage+"%");
 			player.sendMessage(ChatColor.RED+"Disarm Chance: "+ChatColor.YELLOW+percentage+"%");
 			player.sendMessage(ChatColor.RED+"Disarm Chance: "+ChatColor.YELLOW+percentage+"%");
 			player.sendMessage(ChatColor.RED+"Damage+ (Rank"+rank+"): Bonus "+rank+" damage");
 			player.sendMessage(ChatColor.RED+"Damage+ (Rank"+rank+"): Bonus "+rank+" damage");
+			player.sendMessage(ChatColor.RED+"Berserk Length: "+ChatColor.YELLOW+(ticks * 2)+"s");
     	}
     	}
     	if(split[0].equalsIgnoreCase("/herbalism")){
     	if(split[0].equalsIgnoreCase("/herbalism")){
 			event.setCancelled(true);
 			event.setCancelled(true);
@@ -457,6 +498,7 @@ public class mcm {
 			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
 			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
 			player.sendMessage(ChatColor.DARK_AQUA+"Giga Drill Breaker (ABILITY): "+ChatColor.GREEN+"3x Drop Rate, 3x EXP, +Speed");
 			player.sendMessage(ChatColor.DARK_AQUA+"Giga Drill Breaker (ABILITY): "+ChatColor.GREEN+"3x Drop Rate, 3x EXP, +Speed");
 			player.sendMessage(ChatColor.DARK_AQUA+"Treasure Hunter: "+ChatColor.GREEN+"Ability to dig for treasure");
 			player.sendMessage(ChatColor.DARK_AQUA+"Treasure Hunter: "+ChatColor.GREEN+"Ability to dig for treasure");
+			player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---");
 			player.sendMessage(ChatColor.RED+"Giga Drill Breaker Length: "+ChatColor.YELLOW+(ticks * 2)+"s");
 			player.sendMessage(ChatColor.RED+"Giga Drill Breaker Length: "+ChatColor.YELLOW+(ticks * 2)+"s");
     	}
     	}
 		if(split[0].equalsIgnoreCase("/"+mcLoadProperties.mcmmo)){
 		if(split[0].equalsIgnoreCase("/"+mcLoadProperties.mcmmo)){