|
|
|
@ -1,7 +1,10 @@
@@ -1,7 +1,10 @@
|
|
|
|
|
package engine.wpak; |
|
|
|
|
package engine.wpakpowers; |
|
|
|
|
|
|
|
|
|
import engine.InterestManagement.WorldGrid; |
|
|
|
|
import engine.gameManager.*; |
|
|
|
|
import engine.gameManager.ChatManager; |
|
|
|
|
import engine.gameManager.DbManager; |
|
|
|
|
import engine.gameManager.DispatchManager; |
|
|
|
|
import engine.gameManager.SessionManager; |
|
|
|
|
import engine.job.JobContainer; |
|
|
|
|
import engine.job.JobScheduler; |
|
|
|
|
import engine.jobs.FinishRecycleTimeJob; |
|
|
|
@ -17,9 +20,13 @@ import engine.net.client.msg.UpdateStateMsg;
@@ -17,9 +20,13 @@ import engine.net.client.msg.UpdateStateMsg;
|
|
|
|
|
import engine.objects.*; |
|
|
|
|
import engine.server.MBServerStatics; |
|
|
|
|
import engine.util.Hasher; |
|
|
|
|
import engine.wpak.data.*; |
|
|
|
|
import engine.wpak.EffectsParser; |
|
|
|
|
import engine.wpak.PowerActionParser; |
|
|
|
|
import engine.wpak.PowersParser; |
|
|
|
|
import engine.wpak.data.Effect; |
|
|
|
|
import engine.wpak.data.*; |
|
|
|
|
import org.pmw.tinylog.Logger; |
|
|
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
|
|
import java.util.HashSet; |
|
|
|
|
|
|
|
|
@ -283,13 +290,13 @@ public class WpakPowerManager {
@@ -283,13 +290,13 @@ public class WpakPowerManager {
|
|
|
|
|
if(powerUsed == null) |
|
|
|
|
return; |
|
|
|
|
if(powerUsed.maxMobTargets > 1 || powerUsed.maxPlayerTargets > 1){ |
|
|
|
|
AoeHandler(caster, target, powerUsed); |
|
|
|
|
AoeHandler(caster, target, powerUsed, msg.getNumTrains()); |
|
|
|
|
}else{ |
|
|
|
|
applyAllPowerEffects(powerUsed, target); |
|
|
|
|
applyAllPowerEffects(powerUsed, msg.getNumTrains(), target); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static void AoeHandler(PlayerCharacter caster, AbstractWorldObject target, Power powerUsed){ |
|
|
|
|
private static void AoeHandler(PlayerCharacter caster, AbstractWorldObject target, Power powerUsed, int rank) { |
|
|
|
|
HashSet<AbstractWorldObject> mobTargets = new HashSet<>(); |
|
|
|
|
HashSet<AbstractWorldObject> pcTargets = new HashSet<>(); |
|
|
|
|
if(powerUsed.maxMobTargets > 0) |
|
|
|
@ -299,7 +306,7 @@ public class WpakPowerManager {
@@ -299,7 +306,7 @@ public class WpakPowerManager {
|
|
|
|
|
int count = 1; |
|
|
|
|
for(AbstractWorldObject mob : mobTargets){ |
|
|
|
|
if(count < powerUsed.maxMobTargets + 1){ |
|
|
|
|
applyAllPowerEffects(powerUsed,mob); |
|
|
|
|
applyAllPowerEffects(powerUsed, rank, mob); |
|
|
|
|
count ++; |
|
|
|
|
}else{ |
|
|
|
|
break; |
|
|
|
@ -308,7 +315,7 @@ public class WpakPowerManager {
@@ -308,7 +315,7 @@ public class WpakPowerManager {
|
|
|
|
|
count = 1; |
|
|
|
|
for(AbstractWorldObject pc : pcTargets){ |
|
|
|
|
if(count < powerUsed.maxPlayerTargets + 1){ |
|
|
|
|
applyAllPowerEffects(powerUsed,pc); |
|
|
|
|
applyAllPowerEffects(powerUsed, rank, pc); |
|
|
|
|
count ++; |
|
|
|
|
}else{ |
|
|
|
|
break; |
|
|
|
@ -316,11 +323,15 @@ public class WpakPowerManager {
@@ -316,11 +323,15 @@ public class WpakPowerManager {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static void applyAllPowerEffects(Power power, AbstractWorldObject target){ |
|
|
|
|
public static void applyAllPowerEffects(Power power, int rank, AbstractWorldObject target) { |
|
|
|
|
|
|
|
|
|
for(ActionEntry powerAction: power.actionEntries){ |
|
|
|
|
Effect eff = effect_data.get(Hasher.SBStringHash(powerAction.effect_id)); |
|
|
|
|
if(eff == null) |
|
|
|
|
|
|
|
|
|
Effect effect = effect_data.get(Hasher.SBStringHash(powerAction.effect_id)); |
|
|
|
|
|
|
|
|
|
if (effect == null) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
//TODO add in effect application
|
|
|
|
|
} |
|
|
|
|
} |