Lifesteal and Regeneration Mechanic Update
+>"Regeneration" has been added. The regeneration stat can be seen in /stats. Regeneration will naturally heal your player by the amount displayed every 5 seconds if your hunger is full enough. +>The Regeneration Potion Effect now increases your Regeneration by 2 per level. +>Lifesteal now sends the stolen health amount to a Regeneration Pool. The Regeneration pool shows up in your action bar. +>Players with a Regeneration Pool will heal HP equal to your Regeneration every second, instead of every 5 seconds. This amount is then removed from your Regeneration pool. +>Barbarians will not fill their Regeneration Pool when lifestealing until they remove points from their Damage Pool first. Points from their Regeneration Pool get automatically converted to Damage Pool reduction. >Swapped the <player> and all/equip arguments for /stats when viewing other players. They are now /stats equip <player> and /stats all <player> ->The Regeneration stat from the Alikahn set has been nerfed significantly. ->Natural Regeneration Rate is no longer 2 Health + 5% of your Maximum Health. ->The Regeneration potion effect no longer increases the healing rate. ->Lifesteal no longer provides health directly to the player.
This commit is contained in:
parent
b14d73c4ac
commit
d8f2edd51e
@ -1,3 +1,4 @@
|
|||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
encoding//src/sig/plugin/TwosideKeeper/ActionBarBuffUpdater.java=UTF-8
|
encoding//src/sig/plugin/TwosideKeeper/ActionBarBuffUpdater.java=UTF-8
|
||||||
encoding//src/sig/plugin/TwosideKeeper/TwosideKeeper.java=UTF-8
|
encoding//src/sig/plugin/TwosideKeeper/TwosideKeeper.java=UTF-8
|
||||||
|
encoding/<project>=UTF-8
|
||||||
|
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
name: TwosideKeeper
|
name: TwosideKeeper
|
||||||
main: sig.plugin.TwosideKeeper.TwosideKeeper
|
main: sig.plugin.TwosideKeeper.TwosideKeeper
|
||||||
version: 3.10.6b
|
version: 3.10.7
|
||||||
loadbefore: [aPlugin]
|
loadbefore: [aPlugin]
|
||||||
commands:
|
commands:
|
||||||
money:
|
money:
|
||||||
|
@ -62,6 +62,11 @@ public class ActionBarBuffUpdater{
|
|||||||
effectString.append(AppendAmplifier((int)(GenericFunctions.getSwiftAegisAmt((Player)p)-1)));
|
effectString.append(AppendAmplifier((int)(GenericFunctions.getSwiftAegisAmt((Player)p)-1)));
|
||||||
effectString.append(" ");
|
effectString.append(" ");
|
||||||
}
|
}
|
||||||
|
if (pd.regenpool>0) {
|
||||||
|
effectString.append(ChatColor.BLUE+""+ChatColor.BOLD+"✙");
|
||||||
|
effectString.append(AppendAmplifier((int)(pd.regenpool)));
|
||||||
|
effectString.append(" ");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (effectString.length()>0) {
|
if (effectString.length()>0) {
|
||||||
return effectString.toString()+ChatColor.RESET;
|
return effectString.toString()+ChatColor.RESET;
|
||||||
|
@ -629,7 +629,7 @@ public class CustomDamage {
|
|||||||
}
|
}
|
||||||
//GenericFunctions.knockOffGreed(p);
|
//GenericFunctions.knockOffGreed(p);
|
||||||
castEruption(p,target,weapon);
|
castEruption(p,target,weapon);
|
||||||
addHealthFromLifesteal(p,damage,weapon,reason);
|
addRegenPoolFromLifesteal(p,damage,weapon,reason);
|
||||||
triggerEliteHitEvent(p,target,damage);
|
triggerEliteHitEvent(p,target,damage);
|
||||||
subtractWeaponDurability(p,weapon);
|
subtractWeaponDurability(p,weapon);
|
||||||
aPlugin.API.showDamage(target, GetHeartAmount(damage));
|
aPlugin.API.showDamage(target, GetHeartAmount(damage));
|
||||||
@ -1226,9 +1226,9 @@ public class CustomDamage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addHealthFromLifesteal(Player p, double damage, ItemStack weapon, String reason) {
|
private static void addRegenPoolFromLifesteal(Player p, double damage, ItemStack weapon, String reason) {
|
||||||
double lifestealamt = damage*calculateLifeStealAmount(p,weapon,reason);
|
double lifestealamt = damage*calculateLifeStealAmount(p,weapon,reason);
|
||||||
if ((p.getMaxHealth()-p.getHealth())<lifestealamt) {
|
/*if ((p.getMaxHealth()-p.getHealth())<lifestealamt) {
|
||||||
double remaining = lifestealamt - (p.getMaxHealth()-p.getHealth());
|
double remaining = lifestealamt - (p.getMaxHealth()-p.getHealth());
|
||||||
if (PlayerMode.getPlayerMode(p)==PlayerMode.BARBARIAN) {
|
if (PlayerMode.getPlayerMode(p)==PlayerMode.BARBARIAN) {
|
||||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
@ -1239,8 +1239,23 @@ public class CustomDamage {
|
|||||||
p.setHealth(p.getMaxHealth());
|
p.setHealth(p.getMaxHealth());
|
||||||
} else {
|
} else {
|
||||||
p.setHealth(p.getHealth()+lifestealamt);
|
p.setHealth(p.getHealth()+lifestealamt);
|
||||||
|
}*/
|
||||||
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
|
if (PlayerMode.getPlayerMode(p)==PlayerMode.BARBARIAN) {
|
||||||
|
if (pd.damagepool>0) {
|
||||||
|
double leftovers = 0;
|
||||||
|
if (pd.regenpool>pd.damagepool) {
|
||||||
|
pd.regenpool-=pd.damagepool;
|
||||||
|
}
|
||||||
|
pd.damagepool = Math.max(pd.damagepool-pd.regenpool, 0);
|
||||||
|
} else {
|
||||||
|
pd.regenpool += lifestealamt;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
pd.regenpool += lifestealamt;
|
||||||
}
|
}
|
||||||
DecimalFormat df = new DecimalFormat("0.00");
|
DecimalFormat df = new DecimalFormat("0.00");
|
||||||
|
GenericFunctions.sendActionBarMessage(p, "");
|
||||||
TwosideKeeper.log(p.getName()+" healed "+df.format(lifestealamt)+" dmg from Lifesteal.", 5);
|
TwosideKeeper.log(p.getName()+" healed "+df.format(lifestealamt)+" dmg from Lifesteal.", 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2472,36 +2487,38 @@ public class CustomDamage {
|
|||||||
Player p = (Player)entity;
|
Player p = (Player)entity;
|
||||||
LivingEntity shooter = getDamagerEntity(damager);
|
LivingEntity shooter = getDamagerEntity(damager);
|
||||||
List<Player> partymembers = TwosideKeeperAPI.getPartyMembers(p);
|
List<Player> partymembers = TwosideKeeperAPI.getPartyMembers(p);
|
||||||
for (int i=0;i<partymembers.size();i++) {
|
if (partymembers!=null) {
|
||||||
Player check = partymembers.get(i);
|
for (int i=0;i<partymembers.size();i++) {
|
||||||
if (PartyManager.IsInSameParty(p, check)) {
|
Player check = partymembers.get(i);
|
||||||
TwosideKeeper.log("In here",5);
|
if (PartyManager.IsInSameParty(p, check)) {
|
||||||
if (!PlayerMode.isDefender(p) && PlayerMode.isDefender(check) &&
|
TwosideKeeper.log("In here",5);
|
||||||
check.isBlocking() &&
|
if (!PlayerMode.isDefender(p) && PlayerMode.isDefender(check) &&
|
||||||
!p.equals(check) && (reason==null || !reason.equalsIgnoreCase("Cupid Set Tank"))) {
|
check.isBlocking() &&
|
||||||
//This is a defender. Transfer half the damage to them!
|
!p.equals(check) && (reason==null || !reason.equalsIgnoreCase("Cupid Set Tank"))) {
|
||||||
dmg = dmg/2;
|
//This is a defender. Transfer half the damage to them!
|
||||||
//Send the rest of the damage to the defender.
|
dmg = dmg/2;
|
||||||
double defenderdmg = dmg;
|
//Send the rest of the damage to the defender.
|
||||||
//defenderdmg=CalculateDamageReduction(dmg, check, entity);
|
double defenderdmg = dmg;
|
||||||
ApplyDamage(defenderdmg, shooter, check, null, "Defender Tank", IGNOREDODGE|IGNORE_DAMAGE_TICK);
|
//defenderdmg=CalculateDamageReduction(dmg, check, entity);
|
||||||
//TwosideKeeper.log("Damage was absorbed by "+check.getName()+". Took "+defenderdmg+" reduced damage. Original damage: "+dmg,0);
|
ApplyDamage(defenderdmg, shooter, check, null, "Defender Tank", IGNOREDODGE|IGNORE_DAMAGE_TICK);
|
||||||
break;
|
//TwosideKeeper.log("Damage was absorbed by "+check.getName()+". Took "+defenderdmg+" reduced damage. Original damage: "+dmg,0);
|
||||||
} else
|
break;
|
||||||
if (!isCupidTank(p) && isCupidTank(check) &&
|
} else
|
||||||
!p.equals(check) && (reason==null || !reason.equalsIgnoreCase("Defender Tank"))) {
|
if (!isCupidTank(p) && isCupidTank(check) &&
|
||||||
//This is a defender. Transfer half the damage to them!
|
!p.equals(check) && (reason==null || !reason.equalsIgnoreCase("Defender Tank"))) {
|
||||||
double origdmg = dmg;
|
//This is a defender. Transfer half the damage to them!
|
||||||
dmg = origdmg-(origdmg*(ItemSet.GetTotalBaseAmount(GenericFunctions.getEquipment(check), check, ItemSet.CUPID)/100d));
|
double origdmg = dmg;
|
||||||
//Send the rest of the damage to the defender.
|
dmg = origdmg-(origdmg*(ItemSet.GetTotalBaseAmount(GenericFunctions.getEquipment(check), check, ItemSet.CUPID)/100d));
|
||||||
double defenderdmg = origdmg*(ItemSet.GetTotalBaseAmount(GenericFunctions.getEquipment(check), check, ItemSet.CUPID)/100d);
|
//Send the rest of the damage to the defender.
|
||||||
//defenderdmg=CalculateDamageReduction(dmg, check, entity);
|
double defenderdmg = origdmg*(ItemSet.GetTotalBaseAmount(GenericFunctions.getEquipment(check), check, ItemSet.CUPID)/100d);
|
||||||
ApplyDamage(defenderdmg, shooter, check, null, "Cupid Set Tank", IGNOREDODGE|IGNORE_DAMAGE_TICK);
|
//defenderdmg=CalculateDamageReduction(dmg, check, entity);
|
||||||
//TwosideKeeper.log("Damage was absorbed by "+check.getName()+". Took "+defenderdmg+" reduced damage. Original damage: "+dmg,0);
|
ApplyDamage(defenderdmg, shooter, check, null, "Cupid Set Tank", IGNOREDODGE|IGNORE_DAMAGE_TICK);
|
||||||
break;
|
//TwosideKeeper.log("Damage was absorbed by "+check.getName()+". Took "+defenderdmg+" reduced damage. Original damage: "+dmg,0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TwosideKeeper.log("In here",5);
|
TwosideKeeper.log("In here",5);
|
||||||
}
|
}
|
||||||
return dmg;
|
return dmg;
|
||||||
@ -3143,7 +3160,15 @@ public class CustomDamage {
|
|||||||
|
|
||||||
public static double getTransferDamage(Player p) {
|
public static double getTransferDamage(Player p) {
|
||||||
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
return Math.max(0,15-GetDamageReductionFromDawntrackerPieces(p));
|
double subtracted = 0;
|
||||||
|
if (pd.regenpool>0) {
|
||||||
|
subtracted = Math.max(15-GetDamageReductionFromDawntrackerPieces(p),1);
|
||||||
|
pd.regenpool-=subtracted;
|
||||||
|
if (pd.regenpool<1) {
|
||||||
|
pd.regenpool=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Math.max(1,15-GetDamageReductionFromDawntrackerPieces(p)-subtracted);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int GetDamageReductionFromDawntrackerPieces(Player p) {
|
public static int GetDamageReductionFromDawntrackerPieces(Player p) {
|
||||||
|
@ -22,7 +22,7 @@ public enum ItemSet {
|
|||||||
LORASYS(2,2, 0,0, 0,0, 0,0),
|
LORASYS(2,2, 0,0, 0,0, 0,0),
|
||||||
JAMDAK(3,3, 5,1, 10,1, 10,2), //Graceful Dodge is in ticks.
|
JAMDAK(3,3, 5,1, 10,1, 10,2), //Graceful Dodge is in ticks.
|
||||||
DARNYS(2,1, 10,5, 20,5, 1,1),
|
DARNYS(2,1, 10,5, 20,5, 1,1),
|
||||||
ALIKAHN(3,1, 15,6, 30,10, 12,6),
|
ALIKAHN(3,1, 15,6, 30,10, 1,1),
|
||||||
LORASAADI(4,1, 4,2, 8,6, 8,3),
|
LORASAADI(4,1, 4,2, 8,6, 8,3),
|
||||||
MOONSHADOW(4,2, 1,1, 8,8, 15,7),
|
MOONSHADOW(4,2, 1,1, 8,8, 15,7),
|
||||||
GLADOMAIN(1,1, 12,10, 8,8, 1,1),
|
GLADOMAIN(1,1, 12,10, 8,8, 1,1),
|
||||||
@ -343,7 +343,7 @@ public enum ItemSet {
|
|||||||
case COMET:
|
case COMET:
|
||||||
lore.add(ChatColor.BLUE+"Holiday Gear");
|
lore.add(ChatColor.BLUE+"Holiday Gear");
|
||||||
lore.add(ChatColor.GOLD+""+ChatColor.BOLD+"T"+tier+" "+GenericFunctions.CapitalizeFirstLetters(set.name())+" Set");
|
lore.add(ChatColor.GOLD+""+ChatColor.BOLD+"T"+tier+" "+GenericFunctions.CapitalizeFirstLetters(set.name())+" Set");
|
||||||
lore.add(ChatColor.YELLOW+"+"+ItemSet.GetBaseAmount(set, tier, 1)+"% Health Regeneration to Party Members");
|
lore.add(ChatColor.YELLOW+"+"+ItemSet.GetBaseAmount(set, tier, 1)+"% Regeneration to Party Members");
|
||||||
break;
|
break;
|
||||||
case CUPID:
|
case CUPID:
|
||||||
lore.add(ChatColor.BLUE+"Holiday Gear");
|
lore.add(ChatColor.BLUE+"Holiday Gear");
|
||||||
@ -483,7 +483,7 @@ public enum ItemSet {
|
|||||||
lore.add(ChatColor.GOLD+""+ChatColor.ITALIC+"Set Bonus:");
|
lore.add(ChatColor.GOLD+""+ChatColor.ITALIC+"Set Bonus:");
|
||||||
lore.add(ChatColor.DARK_AQUA+" 2 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 2)+" Max Health");
|
lore.add(ChatColor.DARK_AQUA+" 2 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 2)+" Max Health");
|
||||||
lore.add(ChatColor.DARK_AQUA+" 3 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 3)+" Max Health");
|
lore.add(ChatColor.DARK_AQUA+" 3 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 3)+" Max Health");
|
||||||
lore.add(ChatColor.DARK_AQUA+" 4 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 4)+" Health Regen / 5 seconds");
|
lore.add(ChatColor.DARK_AQUA+" 4 - "+ChatColor.WHITE+" +"+ItemSet.GetBaseAmount(set, tier, 4)+" Regen / 5 seconds");
|
||||||
lore.add(ChatColor.DARK_AQUA+" 5 - "+ChatColor.WHITE+" Boosts All Modes of Ranger");
|
lore.add(ChatColor.DARK_AQUA+" 5 - "+ChatColor.WHITE+" Boosts All Modes of Ranger");
|
||||||
lore.add(ChatColor.WHITE+" +50% Armor Penetration");
|
lore.add(ChatColor.WHITE+" +50% Armor Penetration");
|
||||||
lore.add(ChatColor.WHITE+" +15 Damage");
|
lore.add(ChatColor.WHITE+" +15 Damage");
|
||||||
|
@ -225,6 +225,12 @@ public class PartyManager {
|
|||||||
|
|
||||||
public static List<Player> getPartyMembers(Player p) {
|
public static List<Player> getPartyMembers(Player p) {
|
||||||
int partynumb = GetCurrentParty(p);
|
int partynumb = GetCurrentParty(p);
|
||||||
return parties.get(partynumb);
|
if (parties.containsKey(partynumb)) {
|
||||||
|
return parties.get(partynumb);
|
||||||
|
} else {
|
||||||
|
List<Player> members = new ArrayList<Player>();
|
||||||
|
members.add(p);
|
||||||
|
return members;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -188,6 +188,7 @@ public class PlayerStructure {
|
|||||||
public long lastusedrocketbooster=0;
|
public long lastusedrocketbooster=0;
|
||||||
public long lastActionBarMessageTime=0;
|
public long lastActionBarMessageTime=0;
|
||||||
public long lastsantabox2;
|
public long lastsantabox2;
|
||||||
|
public double regenpool=0;
|
||||||
|
|
||||||
//Needs the instance of the player object to get all other info. Only to be called at the beginning.
|
//Needs the instance of the player object to get all other info. Only to be called at the beginning.
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
|
@ -812,6 +812,58 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final class PerformHealthRegeneration implements Runnable {
|
||||||
|
public void run(){
|
||||||
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
|
if (p!=null &&
|
||||||
|
!p.isDead() && //Um, don't heal them if they're dead...That's just weird.
|
||||||
|
(pd.regenpool>0 || pd.last_regen_time+50<=TwosideKeeper.getServerTickTime())
|
||||||
|
) {
|
||||||
|
double regenamt = GetNaturalRegen(p);
|
||||||
|
if (p.getHealth()<p.getMaxHealth() &&
|
||||||
|
p.getFoodLevel()>=16) {
|
||||||
|
GenericFunctions.HealEntity(p, regenamt);
|
||||||
|
pd.last_regen_time=TwosideKeeper.getServerTickTime();
|
||||||
|
}
|
||||||
|
if (pd.regenpool>0) {
|
||||||
|
double healamt = Math.min(pd.regenpool, regenamt);
|
||||||
|
pd.regenpool = Math.max(pd.regenpool-regenamt, 0);
|
||||||
|
GenericFunctions.HealEntity(p, healamt);
|
||||||
|
GenericFunctions.sendActionBarMessage(p, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double GetNaturalRegen(Player p) {
|
||||||
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
|
if (PlayerMode.getPlayerMode(p)==PlayerMode.SLAYER) {
|
||||||
|
pd.slayermodehp=p.getHealth();
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
double totalregen = 0;
|
||||||
|
final double baseregen = 1;
|
||||||
|
final ItemStack[] equips = GenericFunctions.getEquipment(p);
|
||||||
|
for (ItemStack equip : equips) {
|
||||||
|
if (GenericFunctions.isArtifactEquip(equip)) {
|
||||||
|
double regenamt = GenericFunctions.getAbilityValue(ArtifactAbility.HEALTH_REGEN, equip);
|
||||||
|
totalregen += regenamt;
|
||||||
|
if (ArtifactAbility.containsEnchantment(ArtifactAbility.GREED, equip)) {
|
||||||
|
totalregen /= ArtifactAbility.containsEnchantment(ArtifactAbility.GREED, equip)?2:1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
totalregen += ItemSet.TotalBaseAmountBasedOnSetBonusCount(GenericFunctions.getEquipment(p), p, ItemSet.ALIKAHN, 4, 4)/2;
|
||||||
|
totalregen += totalregen*pd.pctbonusregen;
|
||||||
|
if (p.hasPotionEffect(PotionEffectType.REGENERATION)) {
|
||||||
|
totalregen += (GenericFunctions.getPotionEffectLevel(PotionEffectType.REGENERATION, p)+1)*baseregen;
|
||||||
|
}
|
||||||
|
return totalregen+baseregen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@ -949,6 +1001,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getServer().getScheduler().scheduleSyncRepeatingTask(this, new SetupPlayerMode(),0l,10l);
|
getServer().getScheduler().scheduleSyncRepeatingTask(this, new SetupPlayerMode(),0l,10l);
|
||||||
|
getServer().getScheduler().scheduleSyncRepeatingTask(this, new PerformHealthRegeneration(),0l,10l);
|
||||||
|
|
||||||
getServer().getScheduler().scheduleSyncRepeatingTask(this, new ControlChargeZombies(), 5l, 5l);
|
getServer().getScheduler().scheduleSyncRepeatingTask(this, new ControlChargeZombies(), 5l, 5l);
|
||||||
|
|
||||||
@ -1137,29 +1190,29 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
else
|
else
|
||||||
if (cmd.getName().equalsIgnoreCase("stats")) {
|
if (cmd.getName().equalsIgnoreCase("stats")) {
|
||||||
if (args.length>=1) {
|
if (args.length>=1) {
|
||||||
if (args[0].equalsIgnoreCase("equip")) {
|
|
||||||
showPlayerStats((Player)sender,"equip");
|
|
||||||
} else
|
|
||||||
if (args[0].equalsIgnoreCase("all")) {
|
|
||||||
showPlayerStats((Player)sender,"all");
|
|
||||||
} else
|
|
||||||
if (args.length>=2) {
|
if (args.length>=2) {
|
||||||
if (Bukkit.getPlayer(args[0])!=null) {
|
if (Bukkit.getPlayer(args[1])!=null) {
|
||||||
//If we can grab their stats, then calculate it.
|
//If we can grab their stats, then calculate it.
|
||||||
Player p = Bukkit.getPlayer(args[0]);
|
Player p = Bukkit.getPlayer(args[1]);
|
||||||
sender.sendMessage("Displaying stats for "+ChatColor.YELLOW+p.getName());
|
sender.sendMessage("Displaying stats for "+ChatColor.YELLOW+p.getName());
|
||||||
if (args[1].equalsIgnoreCase("equip")) {
|
if (args[0].equalsIgnoreCase("equip")) {
|
||||||
showPlayerStats(p,sender,"equip");
|
showPlayerStats(p,sender,"equip");
|
||||||
} else
|
} else
|
||||||
if (args[1].equalsIgnoreCase("all")) {
|
if (args[0].equalsIgnoreCase("all")) {
|
||||||
showPlayerStats(p,sender,"all");
|
showPlayerStats(p,sender,"all");
|
||||||
} else {
|
} else {
|
||||||
showPlayerStats(p,sender);
|
showPlayerStats(p,sender);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage("Player "+ChatColor.YELLOW+args[0]+" is not online!");
|
sender.sendMessage("Player "+ChatColor.YELLOW+args[1]+" is not online!");
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
|
if (args[0].equalsIgnoreCase("equip")) {
|
||||||
|
showPlayerStats((Player)sender,"equip");
|
||||||
|
} else
|
||||||
|
if (args[0].equalsIgnoreCase("all")) {
|
||||||
|
showPlayerStats((Player)sender,"all");
|
||||||
|
} else
|
||||||
if (Bukkit.getPlayer(args[0])!=null) {
|
if (Bukkit.getPlayer(args[0])!=null) {
|
||||||
//If we can grab their stats, then calculate it.
|
//If we can grab their stats, then calculate it.
|
||||||
Player p = Bukkit.getPlayer(args[0]);
|
Player p = Bukkit.getPlayer(args[0]);
|
||||||
@ -1577,6 +1630,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
case "GIVEEXP":{
|
case "GIVEEXP":{
|
||||||
AwakenedArtifact.addPotentialEXP(p.getEquipment().getItemInMainHand(), 50000, p);
|
AwakenedArtifact.addPotentialEXP(p.getEquipment().getItemInMainHand(), 50000, p);
|
||||||
}break;
|
}break;
|
||||||
|
case "REGENPOOL":{
|
||||||
|
PlayerStructure pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
|
pd.regenpool += Integer.parseInt(args[1]);
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//LivingEntity m = MonsterController.convertMonster((Monster)p.getWorld().spawnEntity(p.getLocation(),EntityType.ZOMBIE), MonsterDifficulty.ELITE);
|
//LivingEntity m = MonsterController.convertMonster((Monster)p.getWorld().spawnEntity(p.getLocation(),EntityType.ZOMBIE), MonsterDifficulty.ELITE);
|
||||||
@ -2109,11 +2166,11 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void RemoveUserFromWeatherWatch(Player p) {
|
private void RemoveUserFromWeatherWatch(Player p) {
|
||||||
weather_watch_users.remove(p.getName());
|
weather_watch_users.remove(p.getUniqueId().toString());
|
||||||
}
|
}
|
||||||
private void AddUserToWeatherWatch(Player p) {
|
private void AddUserToWeatherWatch(Player p) {
|
||||||
if (!weather_watch_users.contains(p.getName())) {
|
if (!weather_watch_users.contains(p.getUniqueId().toString())) {
|
||||||
weather_watch_users.add(p.getName());
|
weather_watch_users.add(p.getUniqueId().toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4084,6 +4141,9 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
pd = PlayerStructure.GetPlayerStructure(p);
|
pd = PlayerStructure.GetPlayerStructure(p);
|
||||||
pd.hasDied=true;
|
pd.hasDied=true;
|
||||||
pd.vendetta_amt=0.0;
|
pd.vendetta_amt=0.0;
|
||||||
|
pd.regenpool=0;
|
||||||
|
pd.lifestealstacks=0;
|
||||||
|
pd.weaponcharges=0;
|
||||||
//p.getInventory().clear();
|
//p.getInventory().clear();
|
||||||
}
|
}
|
||||||
for (int i=0;i<elitemonsters.size();i++) {
|
for (int i=0;i<elitemonsters.size();i++) {
|
||||||
@ -4708,6 +4768,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
if (ev.getEntity() instanceof Player) {
|
if (ev.getEntity() instanceof Player) {
|
||||||
Player p = (Player)ev.getEntity();
|
Player p = (Player)ev.getEntity();
|
||||||
|
if (ev.getRegainReason()==RegainReason.MAGIC_REGEN) { //Disable all basic regen abilities.
|
||||||
|
ev.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (PlayerMode.getPlayerMode(p)==PlayerMode.SLAYER) {
|
if (PlayerMode.getPlayerMode(p)==PlayerMode.SLAYER) {
|
||||||
ev.setCancelled(true);
|
ev.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
@ -8425,7 +8489,7 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
worldShopDistanceSquared = getConfig().getDouble("WORLD_SHOP_DIST");
|
worldShopDistanceSquared = getConfig().getDouble("WORLD_SHOP_DIST");
|
||||||
worldShopPriceMult = getConfig().getDouble("WORLD_SHOP_MULT");
|
worldShopPriceMult = getConfig().getDouble("WORLD_SHOP_MULT");
|
||||||
LAST_DEAL = getConfig().getInt("LAST_DEAL");
|
LAST_DEAL = getConfig().getInt("LAST_DEAL");
|
||||||
weather_watch_users = getConfig().getStringList("WEATHER_WATCH_USERS");
|
weather_watch_users = (List<String>)getConfig().getList("WEATHER_WATCH_USERS");
|
||||||
if (getConfig().contains("ELITE_LOCATION_X")) {
|
if (getConfig().contains("ELITE_LOCATION_X")) {
|
||||||
int x = getConfig().getInt("ELITE_LOCATION_X");
|
int x = getConfig().getInt("ELITE_LOCATION_X");
|
||||||
int z = getConfig().getInt("ELITE_LOCATION_Z");
|
int z = getConfig().getInt("ELITE_LOCATION_Z");
|
||||||
@ -9233,6 +9297,10 @@ public class TwosideKeeper extends JavaPlugin implements Listener {
|
|||||||
} else {
|
} else {
|
||||||
receiver.sendMessage(ChatColor.GRAY+""+ChatColor.ITALIC+"Applied Damage: "+ChatColor.RESET+""+ChatColor.LIGHT_PURPLE+df.format(CustomDamage.CalculateDamage(store2,p,temporarychicken,p.getEquipment().getItemInMainHand(), "Test Damage")));
|
receiver.sendMessage(ChatColor.GRAY+""+ChatColor.ITALIC+"Applied Damage: "+ChatColor.RESET+""+ChatColor.LIGHT_PURPLE+df.format(CustomDamage.CalculateDamage(store2,p,temporarychicken,p.getEquipment().getItemInMainHand(), "Test Damage")));
|
||||||
}
|
}
|
||||||
|
double healthregen = GetNaturalRegen(p)*2;
|
||||||
|
if (all || healthregen>1) {
|
||||||
|
receiver.sendMessage(ChatColor.GRAY+""+ChatColor.ITALIC+"Regeneration: "+ChatColor.RESET+""+ChatColor.AQUA+df.format(healthregen)+" "+ChatColor.RESET+ChatColor.GRAY+"/ 5s");
|
||||||
|
}
|
||||||
pd.damagedata.actualtotaldmg=origdmg;
|
pd.damagedata.actualtotaldmg=origdmg;
|
||||||
pd.damagedata.breakdownlist=origmap;
|
pd.damagedata.breakdownlist=origmap;
|
||||||
temporarychicken.remove();
|
temporarychicken.remove();
|
||||||
|
@ -246,7 +246,7 @@ final class runServerHeartbeat implements Runnable {
|
|||||||
|
|
||||||
AdventurerModeSetExhaustion(p);
|
AdventurerModeSetExhaustion(p);
|
||||||
|
|
||||||
CalculateHealthRegeneration(serverTickTime, p, pd, equips);
|
//CalculateHealthRegeneration(serverTickTime, p, pd, equips);
|
||||||
|
|
||||||
ResetSwordCombo(serverTickTime, p, pd);
|
ResetSwordCombo(serverTickTime, p, pd);
|
||||||
|
|
||||||
@ -427,7 +427,7 @@ final class runServerHeartbeat implements Runnable {
|
|||||||
double transferdmg = CustomDamage.getTransferDamage(p)+(pd.damagepool*0.01);
|
double transferdmg = CustomDamage.getTransferDamage(p)+(pd.damagepool*0.01);
|
||||||
TwosideKeeper.log("Transfer Dmg is "+transferdmg+". Damage Pool: "+pd.damagepool, 5);
|
TwosideKeeper.log("Transfer Dmg is "+transferdmg+". Damage Pool: "+pd.damagepool, 5);
|
||||||
CustomDamage.ApplyDamage(transferdmg, null, p, null, "Damage Pool", CustomDamage.IGNORE_DAMAGE_TICK|CustomDamage.TRUEDMG|CustomDamage.IGNOREDODGE);
|
CustomDamage.ApplyDamage(transferdmg, null, p, null, "Damage Pool", CustomDamage.IGNORE_DAMAGE_TICK|CustomDamage.TRUEDMG|CustomDamage.IGNOREDODGE);
|
||||||
if (pd.damagepool-transferdmg<=0) {
|
if (pd.damagepool-transferdmg<1) {
|
||||||
pd.damagepool=0;
|
pd.damagepool=0;
|
||||||
} else {
|
} else {
|
||||||
pd.damagepool-=transferdmg;
|
pd.damagepool-=transferdmg;
|
||||||
@ -555,8 +555,8 @@ final class runServerHeartbeat implements Runnable {
|
|||||||
if (!TwosideKeeper.last_announced_storm) {
|
if (!TwosideKeeper.last_announced_storm) {
|
||||||
TwosideKeeper.last_announced_storm=true;
|
TwosideKeeper.last_announced_storm=true;
|
||||||
for (String user : TwosideKeeper.weather_watch_users) {
|
for (String user : TwosideKeeper.weather_watch_users) {
|
||||||
if (Bukkit.getPlayer(user)!=null) {
|
if (Bukkit.getPlayer(UUID.fromString(user))!=null) {
|
||||||
Player p = Bukkit.getPlayer(user);
|
Player p = Bukkit.getPlayer(UUID.fromString(user));
|
||||||
p.sendMessage(ChatColor.ITALIC+""+ChatColor.GRAY+"A storm"+((Bukkit.getWorld("world").isThundering())?" (With Thunder)":"")+" is now occuring on the server. (Day "+(int)(TwosideKeeper.getServerTickTime()/48000)+")");
|
p.sendMessage(ChatColor.ITALIC+""+ChatColor.GRAY+"A storm"+((Bukkit.getWorld("world").isThundering())?" (With Thunder)":"")+" is now occuring on the server. (Day "+(int)(TwosideKeeper.getServerTickTime()/48000)+")");
|
||||||
}
|
}
|
||||||
File config;
|
File config;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user