new finish power action system
This commit is contained in:
@@ -1198,6 +1198,10 @@ public enum PowersManager {
|
|||||||
|
|
||||||
public static void finishUseMobPower(PerformActionMsg msg, Mob caster, int casterLiveCounter, int targetLiveCounter) {
|
public static void finishUseMobPower(PerformActionMsg msg, Mob caster, int casterLiveCounter, int targetLiveCounter) {
|
||||||
|
|
||||||
|
if(true) {
|
||||||
|
newFinishCast(msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (caster == null || msg == null)
|
if (caster == null || msg == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -3106,6 +3110,53 @@ public enum PowersManager {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void newFinishCast(PerformActionMsg msg){
|
||||||
|
|
||||||
|
PlayerCharacter source = PlayerCharacter.getPlayerCharacter(msg.getSourceID());
|
||||||
|
|
||||||
|
if(source == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(!source.isAlive())
|
||||||
|
return;
|
||||||
|
|
||||||
|
PowersBase powerBase = PowersManager.getPowerByToken(msg.getPowerUsedID());
|
||||||
|
|
||||||
|
if(powerBase == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int trains = msg.getNumTrains();
|
||||||
|
if(source.getPowers().containsKey(msg.getPowerUsedID())){
|
||||||
|
trains = source.getPowers().get(msg.getPowerUsedID()).getTrains();
|
||||||
|
}
|
||||||
|
AbstractWorldObject target = getTarget(msg);
|
||||||
|
|
||||||
|
if(target == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for(ActionsBase action : powerBase.getActions()){
|
||||||
|
String stackType = action.stackType;
|
||||||
|
if(target.effects.containsKey(stackType)){
|
||||||
|
Effect eff = target.effects.get(stackType);
|
||||||
|
if(action.greaterThan && trains <= eff.getTrains())
|
||||||
|
continue;
|
||||||
|
if(action.greaterThanEqual && trains < eff.getTrains())
|
||||||
|
continue;
|
||||||
|
if(AbstractCharacter.IsAbstractCharacter(target)){
|
||||||
|
AbstractCharacter absTar = (AbstractCharacter) target;
|
||||||
|
if(absTar.getBonuses() != null){
|
||||||
|
SourceType sourceType = SourceType.GetSourceType(action.stackType);
|
||||||
|
if(sourceType != null && absTar.getBonuses().getBool(ModType.ImmuneTo,sourceType))
|
||||||
|
continue;
|
||||||
|
if(sourceType != null && absTar.getBonuses().getBool(ModType.NoMod,sourceType))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
action.getPowerAction().startAction(source,target,target.loc,trains,action,powerBase);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user