forked from MagicBane/Server
combat bug fix
This commit is contained in:
@@ -811,9 +811,9 @@ 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) && target.getObjectType().equals(GameObjectType.PlayerCharacter)){
|
//if(ac.getObjectType().equals(GameObjectType.PlayerCharacter) && target.getObjectType().equals(GameObjectType.PlayerCharacter)){
|
||||||
damage *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)target);
|
// damage *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)target);
|
||||||
}
|
//}
|
||||||
float d = 0f;
|
float d = 0f;
|
||||||
|
|
||||||
errorTrack = 12;
|
errorTrack = 12;
|
||||||
@@ -842,7 +842,9 @@ public enum CombatManager {
|
|||||||
}
|
}
|
||||||
mobTarget.handleDirectAggro(ac);
|
mobTarget.handleDirectAggro(ac);
|
||||||
}
|
}
|
||||||
|
if(ac.getObjectType().equals(GameObjectType.PlayerCharacter) && tarAc.getObjectType().equals(GameObjectType.PlayerCharacter) && tarAc.equals(ac) == false){
|
||||||
|
damage *= ZergManager.getReducedZergMultiplier(ac,tarAc);
|
||||||
|
}
|
||||||
if (tarAc.getHealth() > 0)
|
if (tarAc.getHealth() > 0)
|
||||||
d = tarAc.modifyHealth(-damage, ac, false);
|
d = tarAc.modifyHealth(-damage, ac, false);
|
||||||
subTrack = 5;
|
subTrack = 5;
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
package engine.gameManager;
|
package engine.gameManager;
|
||||||
|
|
||||||
import engine.objects.Bane;
|
import engine.Enum;
|
||||||
import engine.objects.Guild;
|
import engine.objects.*;
|
||||||
import engine.objects.Mine;
|
|
||||||
import engine.objects.PlayerCharacter;
|
|
||||||
|
|
||||||
public class ZergManager {
|
public class ZergManager {
|
||||||
public static float getMultiplier5Man(int count, PlayerCharacter pc){
|
public static float getMultiplier5Man(int count, PlayerCharacter pc){
|
||||||
@@ -232,7 +230,13 @@ public class ZergManager {
|
|||||||
return multiplier;
|
return multiplier;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float getReducedZergMultiplier(PlayerCharacter source, PlayerCharacter target){
|
public static float getReducedZergMultiplier(AbstractCharacter sourceABS, AbstractCharacter targetABS){
|
||||||
|
if(sourceABS.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) == false || targetABS.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) == false)
|
||||||
|
return 1.0f;
|
||||||
|
|
||||||
|
PlayerCharacter source = (PlayerCharacter) sourceABS;
|
||||||
|
PlayerCharacter target = (PlayerCharacter) targetABS;
|
||||||
|
|
||||||
if(source.ZergMultiplier == 0.0f) {
|
if(source.ZergMultiplier == 0.0f) {
|
||||||
if(Mine.getMine(source.mineAppliedID) != null && Mine.getMine(source.mineAppliedID)._playerMemory.contains(source.getObjectUUID()) == false ){
|
if(Mine.getMine(source.mineAppliedID) != null && Mine.getMine(source.mineAppliedID)._playerMemory.contains(source.getObjectUUID()) == false ){
|
||||||
source.ZergMultiplier = 1.0f;
|
source.ZergMultiplier = 1.0f;
|
||||||
@@ -246,19 +250,24 @@ public class ZergManager {
|
|||||||
if(source.ZergMultiplier == target.ZergMultiplier){
|
if(source.ZergMultiplier == target.ZergMultiplier){
|
||||||
return 1.0f;
|
return 1.0f;
|
||||||
}
|
}
|
||||||
|
float returnMultiplier = 1.0f;
|
||||||
if(source.ZergMultiplier > 0 && target.ZergMultiplier > 0){
|
if(source.ZergMultiplier > 0 && target.ZergMultiplier > 0){
|
||||||
if(source.ZergMultiplier > target.ZergMultiplier) {
|
if(source.ZergMultiplier > target.ZergMultiplier) {
|
||||||
return 1 + (target.ZergMultiplier - source.ZergMultiplier);
|
returnMultiplier = 1 + (target.ZergMultiplier - source.ZergMultiplier);
|
||||||
} else{
|
} else{
|
||||||
return 1.0f;
|
returnMultiplier = 1.0f;
|
||||||
}
|
}
|
||||||
}else if(source.ZergMultiplier < 0 && target.ZergMultiplier > 0){
|
}else if(source.ZergMultiplier < 0 && target.ZergMultiplier > 0){
|
||||||
return source.ZergMultiplier;
|
returnMultiplier = source.ZergMultiplier;
|
||||||
} else if(source.ZergMultiplier < 0 && target.ZergMultiplier < 0){
|
} else if(source.ZergMultiplier < 0 && target.ZergMultiplier < 0){
|
||||||
return source.ZergMultiplier;
|
returnMultiplier = source.ZergMultiplier;
|
||||||
} else if(source.ZergMultiplier > 0 && target.ZergMultiplier < 0){
|
} else if(source.ZergMultiplier > 0 && target.ZergMultiplier < 0){
|
||||||
return source.ZergMultiplier;
|
returnMultiplier = source.ZergMultiplier;
|
||||||
|
}
|
||||||
|
if(returnMultiplier == 0.0f)
|
||||||
|
return 1.0f;
|
||||||
|
else{
|
||||||
|
return returnMultiplier;
|
||||||
}
|
}
|
||||||
return 1.0f;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1211,7 +1211,7 @@ public class CharacterItemManager {
|
|||||||
//i.clearEffects();
|
//i.clearEffects();
|
||||||
for (String name : i.getEffects().keySet()) {
|
for (String name : i.getEffects().keySet()) {
|
||||||
Effect eff = i.getEffects().get(name);
|
Effect eff = i.getEffects().get(name);
|
||||||
if (eff.getDuration() < 2000)
|
if (!eff.isStatic())
|
||||||
i.endEffect(name);
|
i.endEffect(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -177,9 +177,9 @@ public class HealthEffectModifier extends AbstractEffectModifier {
|
|||||||
if (!ac.isAlive())
|
if (!ac.isAlive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(ac.getObjectType().equals(GameObjectType.PlayerCharacter) && ac.combatTarget.getObjectType().equals(GameObjectType.PlayerCharacter)){
|
//if(ac.getObjectType().equals(GameObjectType.PlayerCharacter) && ac.combatTarget.getObjectType().equals(GameObjectType.PlayerCharacter)){
|
||||||
modAmount *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)ac.combatTarget);
|
// modAmount *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)ac.combatTarget);
|
||||||
}
|
//}
|
||||||
|
|
||||||
int powerID = 0, effectID = 0;
|
int powerID = 0, effectID = 0;
|
||||||
String powerName = "";
|
String powerName = "";
|
||||||
@@ -318,6 +318,9 @@ public class HealthEffectModifier extends AbstractEffectModifier {
|
|||||||
AbstractCharacter ac = (AbstractCharacter) awo;
|
AbstractCharacter ac = (AbstractCharacter) awo;
|
||||||
if (ac.isSit())
|
if (ac.isSit())
|
||||||
damage *= 2.5f; // increase damage if sitting
|
damage *= 2.5f; // increase damage if sitting
|
||||||
|
if(ac.getObjectType().equals(GameObjectType.PlayerCharacter) && source.equals(ac) == false && ZergManager.getReducedZergMultiplier(source,ac) != 0.0f){
|
||||||
|
damage *= ZergManager.getReducedZergMultiplier(source,ac);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
|
|||||||
@@ -158,9 +158,9 @@ public class ManaEffectModifier extends AbstractEffectModifier {
|
|||||||
skipImmune = true;
|
skipImmune = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && ac.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
//if(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && ac.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
||||||
modAmount *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)ac.combatTarget);
|
// 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) {
|
||||||
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
|
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
|
||||||
@@ -207,6 +207,9 @@ public class ManaEffectModifier extends AbstractEffectModifier {
|
|||||||
AbstractCharacter ac = (AbstractCharacter) awo;
|
AbstractCharacter ac = (AbstractCharacter) awo;
|
||||||
if (ac.isSit())
|
if (ac.isSit())
|
||||||
damage *= 2.5f; // increase damage if sitting
|
damage *= 2.5f; // increase damage if sitting
|
||||||
|
if(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && source.equals(ac) == false && ZergManager.getReducedZergMultiplier(source,ac) != 0.0f){
|
||||||
|
damage *= ZergManager.getReducedZergMultiplier(source,ac);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
|
|||||||
@@ -154,9 +154,9 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
|
|||||||
skipImmune = true;
|
skipImmune = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && ac.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
//if(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && ac.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
||||||
modAmount *= ZergManager.getReducedZergMultiplier((PlayerCharacter)ac,(PlayerCharacter)ac.combatTarget);
|
// 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) {
|
||||||
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
|
ModifyHealthMsg mhm = new ModifyHealthMsg(source, ac, 0f, 0f, 0f, powerID, powerName, trains, effectID);
|
||||||
@@ -205,6 +205,9 @@ public class StaminaEffectModifier extends AbstractEffectModifier {
|
|||||||
AbstractCharacter ac = (AbstractCharacter) awo;
|
AbstractCharacter ac = (AbstractCharacter) awo;
|
||||||
if (ac.isSit())
|
if (ac.isSit())
|
||||||
damage *= 2.5f; // increase damage if sitting
|
damage *= 2.5f; // increase damage if sitting
|
||||||
|
if(ac.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && source.equals(ac) == false && ZergManager.getReducedZergMultiplier(source,ac) != 0.0f){
|
||||||
|
damage *= ZergManager.getReducedZergMultiplier(source,ac);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
|
|||||||
@@ -214,9 +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;
|
||||||
if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && source.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
//if(source.getObjectType().equals(Enum.GameObjectType.PlayerCharacter) && source.combatTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)){
|
||||||
damage *= ZergManager.getReducedZergMultiplier((PlayerCharacter)source,(PlayerCharacter)source.combatTarget);
|
// 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