Another WIP update

This commit is contained in:
nossr50 2011-03-16 20:08:15 -07:00
parent a8a35ae7a9
commit d32ff935db
10 changed files with 243 additions and 17 deletions

View File

@ -3,10 +3,12 @@ Changelog:
Version 0.9
--NEW CONTENT--
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
Axes now has the "Skull Splitter" 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
Chimaera Wing Item Added

View File

@ -68,6 +68,19 @@ public class mcBlockListener extends BlockListener {
block.setType(Material.AIR);
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
*/
@ -120,7 +133,7 @@ public class mcBlockListener extends BlockListener {
/*
* 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);
for(Block blockx : mcConfig.getInstance().getTreeFeller()){
if(blockx != null){

View File

@ -498,7 +498,7 @@ public class mcCombat {
}
public void applyAoeDamage(Player attacker, EntityDamageByEntityEvent event, Entity x){
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){
Player target = (Player)derp;
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){
if(mcm.getInstance().isAxes(attacker.getItemInHand()) && mcPermissions.getInstance().axes(attacker)){
if(mcUsers.getProfile(attacker).getAxesInt() >= 750){

View File

@ -96,6 +96,11 @@ public class mcEntityListener extends EntityListener {
Player attacker = (Player)f;
if(mcUsers.getProfile(attacker).getAxePreparationMode())
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.
*/
@ -118,6 +123,8 @@ public class mcEntityListener extends EntityListener {
*/
if(!event.isCancelled() && mcUsers.getProfile(attacker).getSkullSplitterMode())
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){

View File

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

View File

@ -61,7 +61,7 @@ public class mcPlayerListener extends PlayerListener {
public void onPlayerJoin(PlayerEvent event) {
Player player = event.getPlayer();
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
@ -131,6 +131,12 @@ public class mcPlayerListener extends PlayerListener {
mcUsers.getProfile(player).setTreeFellerCooldown(0);
mcUsers.getProfile(player).setTreeFellerMode(false);
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!**");
}
@ -300,13 +306,17 @@ public class mcPlayerListener extends PlayerListener {
player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +" Insufficient permissions.");
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);
double x = player.getLocation().getX();
double y = player.getLocation().getY();
double z = player.getLocation().getZ();
String myspawnworld = player.getWorld().getName();
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

View File

@ -49,10 +49,16 @@ public class mcSkills {
}
if(mcUsers.getProfile(player).getSerratedStrikesCooldown() >= 1){
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!");
}
}
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){
mcUsers.getProfile(player).decreaseSkullSplitterCooldown();
if(mcUsers.getProfile(player).getSkullSplitterCooldown() == 0){
@ -82,14 +88,92 @@ public class mcSkills {
}
}
public void abilityActivationCheck(Player player, Block block){
if(mcPermissions.getInstance().miningability(player)){
if(mcPermissions.getInstance().miningAbility(player)){
mcMining.getInstance().superBreakerCheck(player, block);
}
if(mcPermissions.getInstance().excavationAbility(player)){
mcExcavation.getInstance().gigaDrillBreakerActivationCheck(player, block);
}
if(mcPermissions.getInstance().unarmed(player)){
berserkActivationCheck(player, block);
}
if(mcPermissions.getInstance().swords(player)){
serratedStrikesActivationCheck(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){
if(mcm.getInstance().isAxes(player.getItemInHand())){
/*
@ -131,7 +215,7 @@ public class mcSkills {
/*
* 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
if(mcUsers.getProfile(player).getAxePreparationMode()){
mcUsers.getProfile(player).decreaseAxePreparationTicks();
@ -158,7 +242,7 @@ public class mcSkills {
/*
* WOODCUTTING ABILITY
*/
if(mcPermissions.getInstance().woodcuttingability(player)){
if(mcPermissions.getInstance().woodCuttingAbility(player)){
//Monitor the length of TreeFeller mode
if(mcUsers.getProfile(player).getTreeFellerMode()){
mcUsers.getProfile(player).decreaseTreeFellerTicks();
@ -172,7 +256,7 @@ public class mcSkills {
/*
* MINING ABILITY
*/
if(mcPermissions.getInstance().miningability(player)){
if(mcPermissions.getInstance().miningAbility(player)){
//Monitor the length of SuperBreaker mode
if(mcUsers.getProfile(player).getSuperBreakerMode()){
mcUsers.getProfile(player).decreaseSuperBreakerTicks();

View File

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

View File

@ -156,8 +156,8 @@ class PlayerList
protected final Logger log = Logger.getLogger("Minecraft");
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;
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,
axePreparationTicks = 0;
Player thisplayer;
@ -462,6 +462,37 @@ class PlayerList
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
*/

View File

@ -294,14 +294,34 @@ public class mcm {
} else {
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.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters");
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+"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+"Bleed Chance: "+ChatColor.YELLOW+percentage+"%");
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")){
event.setCancelled(true);
@ -391,9 +411,29 @@ public class mcm {
rank++;
if(mcUsers.getProfile(player).getUnarmedInt() >= 950)
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.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Attacking Monsters");
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+"Damage+: "+ChatColor.GREEN+"Modifies Damage");
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+"Disarm Chance: "+ChatColor.YELLOW+percentage+"%");
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")){
event.setCancelled(true);
@ -457,6 +498,7 @@ public class mcm {
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+"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");
}
if(split[0].equalsIgnoreCase("/"+mcLoadProperties.mcmmo)){