mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-29 16:46:46 +01:00
Another WIP update for 0.9
This commit is contained in:
parent
3812ef5bb5
commit
c83ef55714
@ -46,8 +46,6 @@ public class mcCombat {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(defender != null)
|
||||
mcUsers.getProfile(defender).setRecentlyHurt(30);
|
||||
/*
|
||||
* AXE CRITICAL CHECK
|
||||
*/
|
||||
@ -498,6 +496,29 @@ public class mcCombat {
|
||||
public int calculateDamage(EntityDamageEvent event, int dmg){
|
||||
return event.getDamage() + dmg;
|
||||
}
|
||||
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(derp instanceof Player){
|
||||
Player target = (Player)derp;
|
||||
if(mcParty.getInstance().inSameParty(attacker, target))
|
||||
continue;
|
||||
if(!target.getName().equals(attacker.getName())){
|
||||
target.damage(event.getDamage() / 2);
|
||||
target.sendMessage(ChatColor.DARK_RED+"Struck by CLEAVE!");
|
||||
}
|
||||
}
|
||||
if(derp instanceof Monster){
|
||||
Monster target = (Monster)derp;
|
||||
target.damage(event.getDamage() / 2);
|
||||
}
|
||||
if(derp instanceof Animals){
|
||||
Animals target = (Animals)derp;
|
||||
target.damage(event.getDamage() / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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){
|
||||
|
@ -69,6 +69,11 @@ public class mcEntityListener extends EntityListener {
|
||||
EntityDamageByEntityEvent eventb = (EntityDamageByEntityEvent)event;
|
||||
Entity e = eventb.getEntity(); //Defender
|
||||
Entity f = eventb.getDamager(); //Attacker
|
||||
/*
|
||||
* CHECK FOR PVP INTERACTIONS
|
||||
*/
|
||||
if(f instanceof Player && e instanceof Player && !mcLoadProperties.pvp)
|
||||
event.setCancelled(true);
|
||||
/*
|
||||
* IF DEFENDER IS PLAYER
|
||||
*/
|
||||
@ -88,6 +93,8 @@ public class mcEntityListener extends EntityListener {
|
||||
//((Player) f).sendMessage("DEBUG: EntityDamageByEntity cast correctly!");
|
||||
int typeid = ((Player) f).getItemInHand().getTypeId();
|
||||
Player attacker = (Player)f;
|
||||
if(mcUsers.getProfile(attacker).getAxePreparationMode())
|
||||
mcSkills.getInstance().skullSplitterCheck(attacker);
|
||||
/*
|
||||
* Player versus Monster checks, this handles all skill damage modifiers and any procs.
|
||||
*/
|
||||
@ -105,12 +112,13 @@ public class mcEntityListener extends EntityListener {
|
||||
* Player versus Animals checks, these checks handle any skill modifiers or procs
|
||||
*/
|
||||
mcCombat.getInstance().playerVersusAnimalsChecks(e, attacker, eventb, typeid);
|
||||
/*
|
||||
* This will do AOE damage from the axes ability
|
||||
*/
|
||||
if(!event.isCancelled() && mcUsers.getProfile(attacker).getSkullSplitterMode())
|
||||
mcCombat.getInstance().applyAoeDamage(attacker, eventb, x);
|
||||
}
|
||||
/*
|
||||
* CHECK FOR PVP INTERACTIONS
|
||||
*/
|
||||
if(f instanceof Player && e instanceof Player && !mcLoadProperties.pvp)
|
||||
event.setCancelled(true);
|
||||
|
||||
if(e instanceof Monster || e instanceof Animals){
|
||||
if(e instanceof Monster){
|
||||
Monster monster = (Monster)e;
|
||||
|
@ -153,6 +153,7 @@ public class mcMining {
|
||||
}
|
||||
}
|
||||
public void SuperBreakerBlockCheck(Player player, Block block){
|
||||
player.getItemInHand().setDurability((short) (player.getItemInHand().getDurability() + 1));
|
||||
Location loc = block.getLocation();
|
||||
Material mat = Material.getMaterial(block.getTypeId());
|
||||
byte damage = 0;
|
||||
|
@ -37,6 +37,13 @@ public class mcPermissions {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public boolean unarmedAbility(Player player){
|
||||
if (permissionsEnabled) {
|
||||
return permission(player, "mcmmo.ability.unarmed");
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public boolean chimaeraWing(Player player){
|
||||
if (permissionsEnabled) {
|
||||
return permission(player, "mcmmo.item.chimaerawing");
|
||||
|
@ -53,6 +53,12 @@ public class mcSkills {
|
||||
player.sendMessage(ChatColor.GREEN+"Your Serrated Strikes ability is refreshed!");
|
||||
}
|
||||
}
|
||||
if(mcUsers.getProfile(player).getSkullSplitterCooldown() >= 1){
|
||||
mcUsers.getProfile(player).decreaseSkullSplitterCooldown();
|
||||
if(mcUsers.getProfile(player).getSkullSplitterCooldown() == 0){
|
||||
player.sendMessage(ChatColor.GREEN+"Your Skull Splitter ability is refreshed!");
|
||||
}
|
||||
}
|
||||
}
|
||||
public void axeActivationCheck(Player player, Block block){
|
||||
if(mcPermissions.getInstance().axes(player) && mcPermissions.getInstance().woodcutting(player)){
|
||||
@ -65,7 +71,7 @@ public class mcSkills {
|
||||
mcWoodCutting.getInstance().treeFellerCheck(player, block);
|
||||
} else if (mcPermissions.getInstance().axes(player)){
|
||||
/*
|
||||
* PUT CODE RELATED TO ACTIVATING THE AXE MODE HERE
|
||||
*
|
||||
*/
|
||||
}
|
||||
}
|
||||
@ -73,6 +79,44 @@ public class mcSkills {
|
||||
if(mcPermissions.getInstance().miningability(player)){
|
||||
mcMining.getInstance().superBreakerCheck(player, block);
|
||||
}
|
||||
axeActivationCheck(player, block);
|
||||
}
|
||||
public void skullSplitterCheck(Player player){
|
||||
if(mcm.getInstance().isAxes(player.getItemInHand())){
|
||||
/*
|
||||
* CHECK FOR AXE PREP MODE
|
||||
*/
|
||||
if(mcUsers.getProfile(player).getAxePreparationMode()){
|
||||
mcUsers.getProfile(player).setAxePreparationMode(false);
|
||||
mcUsers.getProfile(player).setAxePreparationTicks(0);
|
||||
}
|
||||
int ticks = 3;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 50)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 150)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 250)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 350)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 450)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 550)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 650)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 750)
|
||||
ticks++;
|
||||
|
||||
if(!mcUsers.getProfile(player).getSkullSplitterMode() && mcUsers.getProfile(player).getSkullSplitterCooldown() == 0){
|
||||
player.sendMessage(ChatColor.GREEN+"**SKULL SPLITTER ACTIVATED**");
|
||||
mcUsers.getProfile(player).setSkullSplitterTicks(ticks);
|
||||
mcUsers.getProfile(player).setSkullSplitterMode(true);
|
||||
}
|
||||
if(!mcUsers.getProfile(player).getSkullSplitterMode() && mcUsers.getProfile(player).getSkullSplitterCooldown() >= 1){
|
||||
player.sendMessage(ChatColor.RED+"You are too tired to use that ability again.");
|
||||
}
|
||||
}
|
||||
}
|
||||
public void monitorSkills(Player player){
|
||||
/*
|
||||
@ -88,6 +132,20 @@ public class mcSkills {
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* AXES ABILITY
|
||||
*/
|
||||
if(mcPermissions.getInstance().axesAbility(player)){
|
||||
//Monitor the length of TreeFeller mode
|
||||
if(mcUsers.getProfile(player).getSkullSplitterMode()){
|
||||
mcUsers.getProfile(player).decreaseSkullSplitterTicks();
|
||||
if(mcUsers.getProfile(player).getSkullSplitterTicks() <= 0){
|
||||
mcUsers.getProfile(player).setSkullSplitterMode(false);
|
||||
mcUsers.getProfile(player).setSkullSplitterCooldown(120);
|
||||
player.sendMessage(ChatColor.GRAY+"**You feel strength leaving you**");
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* WOODCUTTING ABILITY
|
||||
*/
|
||||
|
@ -156,9 +156,9 @@ 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, serratedStrikesMode, axePreparationMode;
|
||||
private boolean dead, treeFellerMode, superbreakermode, serratedStrikesMode, axePreparationMode, skullSplitterMode;
|
||||
private int recentlyhurt = 0, bleedticks = 0, superbreakerticks = 0, superbreakercooldown = 0,
|
||||
serratedStrikesTicks = 0, serratedStrikesCooldown = 0, treeFellerTicks = 0, treeFellerCooldown = 0,
|
||||
serratedStrikesTicks = 0, skullSplitterTicks = 0, skullSplitterCooldown = 0, serratedStrikesCooldown = 0, treeFellerTicks = 0, treeFellerCooldown = 0,
|
||||
axePreparationTicks = 0;
|
||||
Player thisplayer;
|
||||
char defaultColor;
|
||||
@ -462,6 +462,37 @@ class PlayerList
|
||||
axePreparationTicks--;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* SKULL SPLITTER
|
||||
*/
|
||||
public boolean getSkullSplitterMode(){
|
||||
return skullSplitterMode;
|
||||
}
|
||||
public void setSkullSplitterMode(Boolean bool){
|
||||
skullSplitterMode = bool;
|
||||
}
|
||||
public Integer getSkullSplitterTicks(){
|
||||
return skullSplitterTicks;
|
||||
}
|
||||
public void setSkullSplitterTicks(Integer newvalue){
|
||||
skullSplitterTicks = newvalue;
|
||||
}
|
||||
public void decreaseSkullSplitterTicks(){
|
||||
if(skullSplitterTicks >= 1){
|
||||
skullSplitterTicks--;
|
||||
}
|
||||
}
|
||||
public void setSkullSplitterCooldown(Integer newvalue){
|
||||
skullSplitterCooldown = newvalue;
|
||||
}
|
||||
public int getSkullSplitterCooldown(){
|
||||
return skullSplitterCooldown;
|
||||
}
|
||||
public void decreaseSkullSplitterCooldown(){
|
||||
if(skullSplitterCooldown >= 1){
|
||||
skullSplitterCooldown--;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* SERRATED STRIKES
|
||||
*/
|
||||
|
@ -30,7 +30,7 @@ public class mcm {
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
public static double getDistance(Location loca, Location locb)
|
||||
public double getDistance(Location loca, Location locb)
|
||||
{
|
||||
return Math.sqrt(Math.pow(loca.getX() - locb.getX(), 2) + Math.pow(loca.getY() - locb.getY(), 2)
|
||||
+ Math.pow(loca.getZ() - locb.getZ(), 2));
|
||||
@ -137,70 +137,6 @@ public class mcm {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public void simulateNaturalDrops(Entity entity){
|
||||
Location loc = entity.getLocation();
|
||||
if(entity instanceof Pig){
|
||||
if(Math.random() * 3 > 2){
|
||||
if(Math.random() * 2 > 1){
|
||||
mcDropItem(loc, 319); //BACON
|
||||
}
|
||||
mcDropItem(loc, 319);
|
||||
}
|
||||
}
|
||||
if(entity instanceof Spider){
|
||||
if(Math.random() * 3 > 2){
|
||||
if(Math.random() * 2 > 1){
|
||||
mcDropItem(loc, 287); //SILK
|
||||
}
|
||||
mcDropItem(loc, 287);
|
||||
}
|
||||
}
|
||||
if(entity instanceof Skeleton){
|
||||
if(Math.random() * 3 > 2){
|
||||
if(Math.random() * 2 > 1){
|
||||
mcDropItem(loc, 262); //ARROWS
|
||||
}
|
||||
mcDropItem(loc, 262);
|
||||
}
|
||||
if(Math.random() * 3 > 2){
|
||||
if(Math.random() * 2 > 1){
|
||||
mcDropItem(loc, 352); //BONES
|
||||
}
|
||||
mcDropItem(loc, 352);
|
||||
}
|
||||
}
|
||||
if(entity instanceof Zombie){
|
||||
if(Math.random() * 3 > 2){
|
||||
if(Math.random() * 2 > 1){
|
||||
mcDropItem(loc, 288); //FEATHERS
|
||||
}
|
||||
mcDropItem(loc, 288);
|
||||
}
|
||||
}
|
||||
if(entity instanceof Cow){
|
||||
if(Math.random() * 3 > 2){
|
||||
if(Math.random() * 2 > 1){
|
||||
mcDropItem(loc, 334); //LEATHER
|
||||
}
|
||||
if(Math.random() * 2 > 1){
|
||||
mcDropItem(loc, 334);
|
||||
}
|
||||
mcDropItem(loc, 334);
|
||||
}
|
||||
}
|
||||
if(entity instanceof Squid){
|
||||
if(Math.random() * 3 > 2){
|
||||
if(Math.random() * 2 > 1){
|
||||
mcDropItem(loc, 351); //INK SACS
|
||||
}
|
||||
if(Math.random() * 2 > 1){
|
||||
mcDropItem(loc, 351);
|
||||
}
|
||||
mcDropItem(loc, 351);
|
||||
}
|
||||
}
|
||||
mcSkills.getInstance().arrowRetrievalCheck(entity);
|
||||
}
|
||||
public void mcDropItem(Location loc, int id){
|
||||
if(loc != null){
|
||||
Material mat = Material.getMaterial(id);
|
||||
@ -256,6 +192,7 @@ public class mcm {
|
||||
player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"WOODCUTTING"+ChatColor.RED+"[]-----");
|
||||
player.sendMessage(ChatColor.DARK_GRAY+"XP GAIN: "+ChatColor.WHITE+"Chopping down trees");
|
||||
player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"EFFECTS"+ChatColor.RED+"[]---");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Tree Feller (ABILITY): "+ChatColor.GREEN+"Make trees explode");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Double Drops: "+ChatColor.YELLOW+ChatColor.GREEN+"Double the normal loot");
|
||||
player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---");
|
||||
player.sendMessage(ChatColor.RED+"Double Drop Chance: "+ChatColor.YELLOW+percentage+"%");
|
||||
@ -298,9 +235,27 @@ public class mcm {
|
||||
} else {
|
||||
percentage = "75";
|
||||
}
|
||||
int ticks = 3;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 50)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 150)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 250)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 350)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 450)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 550)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 650)
|
||||
ticks++;
|
||||
if(mcUsers.getProfile(player).getAxesInt() >= 750)
|
||||
ticks++;
|
||||
player.sendMessage(ChatColor.RED+"-----[]"+ChatColor.GREEN+"AXES"+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+"Skull Splitter (ABILITY): "+ChatColor.GREEN+"Deal AoE Damage");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Critical Strikes: "+ChatColor.GREEN+"Double Damage");
|
||||
player.sendMessage(ChatColor.DARK_AQUA+"Axe Mastery (500 SKILL): "+ChatColor.GREEN+"Modifies Damage");
|
||||
player.sendMessage(ChatColor.RED+"---[]"+ChatColor.GREEN+"YOUR STATS"+ChatColor.RED+"[]---");
|
||||
@ -310,6 +265,7 @@ public class mcm {
|
||||
} else {
|
||||
player.sendMessage(ChatColor.GREEN+"Axe Mastery - Bonus 4 damage");
|
||||
}
|
||||
player.sendMessage(ChatColor.RED+"Skull Splitter Length: "+ChatColor.YELLOW+(ticks * 2)+"s");
|
||||
}
|
||||
if(split[0].equalsIgnoreCase("/swords")){
|
||||
event.setCancelled(true);
|
||||
|
Loading…
Reference in New Issue
Block a user