forked from MagicBane/Server
Zerg multiplier reduction method
This commit is contained in:
@@ -811,8 +811,8 @@ public enum CombatManager {
|
|||||||
|
|
||||||
damage = calculateDamage(ac, tarAc, minDamage, maxDamage, damageType, resists);
|
damage = calculateDamage(ac, tarAc, minDamage, maxDamage, damageType, resists);
|
||||||
|
|
||||||
if(ac.getObjectType().equals(GameObjectType.PlayerCharacter)){
|
if(ac.getObjectType().equals(GameObjectType.PlayerCharacter) && target.getObjectType().equals(GameObjectType.PlayerCharacter)){
|
||||||
damage *= ((PlayerCharacter)ac).ZergMultiplier;
|
damage *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)target);
|
||||||
}
|
}
|
||||||
float d = 0f;
|
float d = 0f;
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ public class ZergManager {
|
|||||||
else
|
else
|
||||||
return multiplier;
|
return multiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float getMultiplier10Man(int count, PlayerCharacter pc){
|
public static float getMultiplier10Man(int count, PlayerCharacter pc){
|
||||||
float multiplier = 1.0f;
|
float multiplier = 1.0f;
|
||||||
if(count <=4)
|
if(count <=4)
|
||||||
@@ -99,7 +98,6 @@ public class ZergManager {
|
|||||||
else
|
else
|
||||||
return multiplier;
|
return multiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float getMultiplier20Man(int count, PlayerCharacter pc){
|
public static float getMultiplier20Man(int count, PlayerCharacter pc){
|
||||||
float multiplier = 1.0f;
|
float multiplier = 1.0f;
|
||||||
if(count < 10){
|
if(count < 10){
|
||||||
@@ -177,7 +175,6 @@ public class ZergManager {
|
|||||||
else
|
else
|
||||||
return multiplier;
|
return multiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getBaneCapSize(Guild defender){
|
public static int getBaneCapSize(Guild defender){
|
||||||
int treesInNation = defender.getNation().getSubGuildList().size() + 1;
|
int treesInNation = defender.getNation().getSubGuildList().size() + 1;
|
||||||
int capSize;
|
int capSize;
|
||||||
@@ -233,4 +230,25 @@ public class ZergManager {
|
|||||||
else
|
else
|
||||||
return multiplier;
|
return multiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static float getReducedZergMultiplier(PlayerCharacter source, PlayerCharacter target){
|
||||||
|
if(source.ZergMultiplier == 0.0f)
|
||||||
|
source.ZergMultiplier = 1.0f;
|
||||||
|
if(target.ZergMultiplier == 0.0f)
|
||||||
|
target.ZergMultiplier = 1.0f;
|
||||||
|
if(source.ZergMultiplier > 0 && target.ZergMultiplier > 0){
|
||||||
|
if(source.ZergMultiplier > target.ZergMultiplier) {
|
||||||
|
return 1 + (target.ZergMultiplier - source.ZergMultiplier);
|
||||||
|
} else{
|
||||||
|
return 1.0f;
|
||||||
|
}
|
||||||
|
}else if(source.ZergMultiplier < 0 && target.ZergMultiplier > 0){
|
||||||
|
return source.ZergMultiplier;
|
||||||
|
} else if(source.ZergMultiplier < 0 && target.ZergMultiplier < 0){
|
||||||
|
return source.ZergMultiplier;
|
||||||
|
} else if(source.ZergMultiplier > 0 && target.ZergMultiplier < 0){
|
||||||
|
return source.ZergMultiplier;
|
||||||
|
}
|
||||||
|
return 1.0f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,16 +107,16 @@ public class Mine extends AbstractGameObject {
|
|||||||
this.production = Resource.valueOf(rs.getString("mine_resource"));
|
this.production = Resource.valueOf(rs.getString("mine_resource"));
|
||||||
this.lastClaimer = null;
|
this.lastClaimer = null;
|
||||||
|
|
||||||
int capRoll = ThreadLocalRandom.current().nextInt(0,101);
|
//int capRoll = ThreadLocalRandom.current().nextInt(0,101);
|
||||||
if(capRoll >= 0 && capRoll <= 33){
|
//if(capRoll >= 0 && capRoll <= 33){
|
||||||
this.capSize = 5;
|
this.capSize = 5;
|
||||||
}
|
//}
|
||||||
if(capRoll >= 34 && capRoll <= 66){
|
//if(capRoll >= 34 && capRoll <= 66){
|
||||||
this.capSize = 10;
|
// this.capSize = 10;
|
||||||
}
|
//}
|
||||||
if(capRoll >= 67 && capRoll <= 100){
|
//if(capRoll >= 67 && capRoll <= 100){
|
||||||
this.capSize = 20;
|
// this.capSize = 20;
|
||||||
}
|
//}
|
||||||
Building mineTower = BuildingManager.getBuilding(this.buildingID);
|
Building mineTower = BuildingManager.getBuilding(this.buildingID);
|
||||||
mineTower.setMaxHitPoints(5000 * this.capSize);
|
mineTower.setMaxHitPoints(5000 * this.capSize);
|
||||||
mineTower.setCurrentHitPoints((float)5000 * this.capSize);
|
mineTower.setCurrentHitPoints((float)5000 * this.capSize);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import engine.Enum.GameObjectType;
|
|||||||
import engine.Enum.ModType;
|
import engine.Enum.ModType;
|
||||||
import engine.Enum.SourceType;
|
import engine.Enum.SourceType;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
|
import engine.gameManager.ZergManager;
|
||||||
import engine.jobs.AbstractEffectJob;
|
import engine.jobs.AbstractEffectJob;
|
||||||
import engine.jobs.DamageOverTimeJob;
|
import engine.jobs.DamageOverTimeJob;
|
||||||
import engine.net.AbstractNetMsg;
|
import engine.net.AbstractNetMsg;
|
||||||
@@ -176,8 +177,8 @@ public class HealthEffectModifier extends AbstractEffectModifier {
|
|||||||
if (!ac.isAlive())
|
if (!ac.isAlive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(source.getObjectType().equals(GameObjectType.PlayerCharacter)){
|
if(ac.getObjectType().equals(GameObjectType.PlayerCharacter) && ac.combatTarget.getObjectType().equals(GameObjectType.PlayerCharacter)){
|
||||||
modAmount *= ((PlayerCharacter)source).ZergMultiplier;
|
modAmount *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)ac.combatTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
int powerID = 0, effectID = 0;
|
int powerID = 0, effectID = 0;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import engine.Enum.DamageType;
|
|||||||
import engine.Enum.ModType;
|
import engine.Enum.ModType;
|
||||||
import engine.Enum.SourceType;
|
import engine.Enum.SourceType;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
|
import engine.gameManager.ZergManager;
|
||||||
import engine.jobs.AbstractEffectJob;
|
import engine.jobs.AbstractEffectJob;
|
||||||
import engine.jobs.DamageOverTimeJob;
|
import engine.jobs.DamageOverTimeJob;
|
||||||
import engine.net.DispatchMessage;
|
import engine.net.DispatchMessage;
|
||||||
@@ -157,8 +158,8 @@ public class ManaEffectModifier extends AbstractEffectModifier {
|
|||||||
skipImmune = true;
|
skipImmune = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
if(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && ac.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
||||||
modAmount *= ((PlayerCharacter)source).ZergMultiplier;
|
modAmount *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)ac.combatTarget);
|
||||||
}
|
}
|
||||||
PlayerBonuses bonus = ac.getBonuses();
|
PlayerBonuses bonus = ac.getBonuses();
|
||||||
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
|
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import engine.Enum.DamageType;
|
|||||||
import engine.Enum.ModType;
|
import engine.Enum.ModType;
|
||||||
import engine.Enum.SourceType;
|
import engine.Enum.SourceType;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
|
import engine.gameManager.ZergManager;
|
||||||
import engine.jobs.AbstractEffectJob;
|
import engine.jobs.AbstractEffectJob;
|
||||||
import engine.jobs.DamageOverTimeJob;
|
import engine.jobs.DamageOverTimeJob;
|
||||||
import engine.net.DispatchMessage;
|
import engine.net.DispatchMessage;
|
||||||
@@ -153,8 +154,8 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
|
|||||||
skipImmune = true;
|
skipImmune = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
if(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && ac.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
||||||
modAmount *= ((PlayerCharacter)source).ZergMultiplier;
|
modAmount *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)ac.combatTarget);
|
||||||
}
|
}
|
||||||
PlayerBonuses bonus = ac.getBonuses();
|
PlayerBonuses bonus = ac.getBonuses();
|
||||||
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
|
if (!skipImmune && bonus.getFloat(ModType.BlackMantle, SourceType.Heal) >= trains) {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import engine.Enum.DamageType;
|
|||||||
import engine.Enum.ModType;
|
import engine.Enum.ModType;
|
||||||
import engine.Enum.SourceType;
|
import engine.Enum.SourceType;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
|
import engine.gameManager.ZergManager;
|
||||||
import engine.math.Vector3fImmutable;
|
import engine.math.Vector3fImmutable;
|
||||||
import engine.net.AbstractNetMsg;
|
import engine.net.AbstractNetMsg;
|
||||||
import engine.net.DispatchMessage;
|
import engine.net.DispatchMessage;
|
||||||
@@ -213,7 +214,9 @@ public class TransferStatPowerAction extends AbstractPowerAction {
|
|||||||
|
|
||||||
// put it back between min and max
|
// put it back between min and max
|
||||||
damage += min;
|
damage += min;
|
||||||
damage *= ((PlayerCharacter) source).ZergMultiplier;
|
if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && source.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
||||||
|
damage *= ZergManager.getReducedZergMultiplier((PlayerCharacter)source,(PlayerCharacter)source.combatTarget);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply any power effect modifiers (such as stances)
|
// Apply any power effect modifiers (such as stances)
|
||||||
|
|||||||
Reference in New Issue
Block a user