use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class AI_SpellMaster method getModValueLogic.
private static AI_LOGIC getModValueLogic(DC_ActiveObj spell) {
Abilities actives = spell.getAbilities();
List<Effect> effects = EffectFinder.getEffectsOfClass(actives, ModifyValueEffect.class);
if (effects.isEmpty()) {
effects = EffectFinder.getEffectsOfClass(actives, ModifyCounterEffect.class);
}
if (!effects.isEmpty()) {
Effect effect = effects.get(0);
if (effect instanceof ModifyCounterEffect) {
ModifyCounterEffect counterEffect = (ModifyCounterEffect) effect;
if (isCounterEffectPositive(spell, counterEffect)) {
return AiEnums.AI_LOGIC.RESTORE;
}
return AiEnums.AI_LOGIC.DEBILITATE;
}
if (effect instanceof ModifyValueEffect) {
if (isModifyValueEffectPositive(spell, effect)) {
return AiEnums.AI_LOGIC.RESTORE;
}
return AiEnums.AI_LOGIC.DEBILITATE;
}
}
return null;
}
use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class AI_SpellMaster method getLogicByTargeting.
private static AI_LOGIC getLogicByTargeting(DC_ActiveObj spell) {
Targeting t = spell.getTargeting();
TARGETING_MODE mode = spell.getTargetingMode();
if (mode == null) {
if (t instanceof TemplateSelectiveTargeting) {
mode = ((TemplateSelectiveTargeting) t).getTemplate().getMode();
}
if (t instanceof TemplateAutoTargeting) {
mode = ((TemplateAutoTargeting) t).getTemplate().getMode();
}
}
Abilities actives = spell.getAbilities();
if (mode != null) {
switch(mode) {
case ENEMY_WEAPON:
case ENEMY_ARMOR:
return AiEnums.AI_LOGIC.BUFF_NEGATIVE;
case MY_WEAPON:
case MY_ARMOR:
case SELF:
return AiEnums.AI_LOGIC.SELF;
case ANY_ALLY:
if (EffectFinder.check(actives, AddBuffEffect.class)) {
return AiEnums.AI_LOGIC.BUFF_POSITIVE;
}
if (EffectFinder.check(actives, ModifyValueEffect.class)) {
return AiEnums.AI_LOGIC.RESTORE;
}
case ANY_ENEMY:
if (EffectFinder.check(actives, DealDamageEffect.class)) {
return AiEnums.AI_LOGIC.DAMAGE;
}
if (EffectFinder.check(actives, AddBuffEffect.class)) {
return AiEnums.AI_LOGIC.BUFF_NEGATIVE;
}
if (EffectFinder.check(actives, ModifyValueEffect.class)) {
return AiEnums.AI_LOGIC.DEBILITATE;
}
if (EffectFinder.check(actives, DrainEffect.class)) {
return AiEnums.AI_LOGIC.DEBILITATE;
}
break;
case ANY_UNIT:
if (EffectFinder.check(actives, AddBuffEffect.class)) {
if (((AddBuffEffect) EffectFinder.getEffectsOfClass(actives, AddBuffEffect.class).get(0)).getEffect().getFormula().getInt(spell.getOwnerObj().getRef()) > 0) {
return AiEnums.AI_LOGIC.BUFF_POSITIVE;
} else {
return AiEnums.AI_LOGIC.BUFF_NEGATIVE;
}
}
List<Effect> effects = EffectFinder.getEffectsOfClass(actives, ModifyValueEffect.class);
if (effects.isEmpty()) {
effects = EffectFinder.getEffectsOfClass(actives, ModifyCounterEffect.class);
}
Effect effect = effects.get(0);
if (effect instanceof ModifyCounterEffect) {
ModifyCounterEffect counterEffect = (ModifyCounterEffect) effect;
boolean positive = isCounterEffectPositive(spell, counterEffect);
if (positive) {
return AiEnums.AI_LOGIC.RESTORE;
}
return AiEnums.AI_LOGIC.DEBILITATE;
}
if (effect instanceof ModifyValueEffect) {
if (isModifyValueEffectPositive(spell, effect)) {
return AiEnums.AI_LOGIC.RESTORE;
}
return AiEnums.AI_LOGIC.DEBILITATE;
}
break;
case BLAST:
break;
case CELL:
break;
case RAY:
break;
default:
break;
}
}
return null;
}
use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class Choice method getTurns.
public Boolean[] getTurns() {
if (actions.size() == 1 || turns != null) {
return turns;
}
try {
List<Boolean> list = new ArrayList<>();
for (Action a : actions) {
DC_ActiveObj active = a.getActive();
if (active.getName().contains("lockwise")) {
if (!active.isConstructed()) {
active.construct();
}
for (Effect e : active.getAbilities().getEffects()) {
if (e instanceof ChangeFacingEffect) {
list.add(((ChangeFacingEffect) e).isClockwise());
}
}
}
}
turns = list.toArray(new Boolean[list.size()]);
return turns;
} catch (Exception e) {
}
return null;
}
use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class EffectFinder method getEffectsFromAbilityType.
public static List<Effect> getEffectsFromAbilityType(AbilityType type) {
if (type.getAbilities() == null) {
type.construct();
}
Abilities abils = type.getAbilities();
List<Effect> list = new ArrayList<>();
for (Effect e : abils.getEffects()) {
list.add(e);
}
return list;
}
use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class EffectFinder method getBuffEffects.
public static List<Effect> getBuffEffects(Effect e, Class<?> CLASS) {
List<Effect> list = new ArrayList<>();
if (e instanceof AddBuffEffect) {
AddBuffEffect addBuffEffect = (AddBuffEffect) e;
Effect effect = addBuffEffect.getEffect();
if (effect == null) {
return list;
}
if (effect instanceof Effects) {
Effects effects = (Effects) effect;
for (Effect eff : effects) {
if (ClassMaster.isInstanceOf(eff, CLASS)) {
list.add(eff);
}
}
} else if (ClassMaster.isInstanceOf(effect, CLASS)) {
return new ListMaster<Effect>().getList(effect);
}
}
return list;
}
Aggregations