use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class PriorityManagerImpl method getCounterModSpellPriority.
@Override
public int getCounterModSpellPriority(Action action) {
// preCheck immunity? find counter rule by name and preCheck....
List<Effect> effects = EffectFinder.getEffectsOfClass(action.getActive().getAbilities(), ModifyCounterEffect.class);
initRollMap(action.getActive(), effects);
for (Effect e : effects) {
if (e instanceof ModifyCounterEffect) {
ModifyCounterEffect modifyCounterEffect = (ModifyCounterEffect) e;
float mod = DC_CounterMaster.getCounterPriority(modifyCounterEffect.getCounterName(), action.getTarget());
if (rollMap.get(e) != null) {
mod = mod * 100 / getRollPriorityMod(rollMap.get(e));
}
int amount = modifyCounterEffect.getFormula().getInt(action.getRef());
setBasePriority(getUnitPriority(action.getTarget(), true));
addMultiplier(Math.round(mod * amount), modifyCounterEffect.getCounterName() + StringMaster.wrapInParenthesis(amount + ""));
}
}
applyResistPenalty(action);
return priority;
}
use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class AI_SpellMaster method getZoneLogic.
private static AI_LOGIC getZoneLogic(DC_ActiveObj spell) {
List<Effect> zoneEffects = EffectFinder.getEffectsOfClass(spell, SpecialTargetingEffect.class);
if (!zoneEffects.isEmpty()) {
for (Effect effect : zoneEffects) {
SpecialTargetingEffect zoneEffect = (SpecialTargetingEffect) effect;
if (EffectFinder.check(zoneEffect.getEffect(), DealDamageEffect.class)) {
if (zoneEffect instanceof WaveEffect) {
return AiEnums.AI_LOGIC.AUTO_DAMAGE;
}
if (zoneEffect instanceof ShapeEffect) {
return AiEnums.AI_LOGIC.AUTO_DAMAGE;
}
if (spell.getTargetingMode() == AbilityEnums.TARGETING_MODE.NOVA) {
return AiEnums.AI_LOGIC.AUTO_DAMAGE;
}
if (spell.getTargetingMode() == AbilityEnums.TARGETING_MODE.SPRAY) {
return AiEnums.AI_LOGIC.AUTO_DAMAGE;
}
if (spell.getTargetingMode() == AbilityEnums.TARGETING_MODE.WAVE) {
return AiEnums.AI_LOGIC.AUTO_DAMAGE;
}
return AiEnums.AI_LOGIC.DAMAGE_ZONE;
}
if (EffectFinder.check(zoneEffect.getEffect(), ModifyValueEffect.class)) {
if (isModifyValueEffectPositive(spell, zoneEffect)) {
return AiEnums.AI_LOGIC.RESTORE_ZONE;
} else {
return AiEnums.AI_LOGIC.DEBILITATE_ZONE;
}
}
if (EffectFinder.check(zoneEffect.getEffect(), ModifyCounterEffect.class)) {
Effect e = EffectFinder.getEffectsOfClass(zoneEffect.getEffect(), ModifyCounterEffect.class).get(0);
ModifyCounterEffect counterEffect = (ModifyCounterEffect) e;
if (isCounterEffectPositive(spell, counterEffect)) {
return AiEnums.AI_LOGIC.RESTORE_ZONE;
} else {
return AiEnums.AI_LOGIC.DEBILITATE_ZONE;
}
}
}
}
return null;
}
use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class AI_SpellMaster method getSummonedUnit.
public static ObjType getSummonedUnit(DC_ActiveObj active, Ref ref) {
ObjType type;
List<Effect> list = EffectFinder.getEffectsOfClass(active.getAbilities(), GatewayEffect.class);
if (!list.isEmpty()) {
GatewayEffect effect = (GatewayEffect) list.get(0);
return DataManager.getType(effect.getUnitType(), C_OBJ_TYPE.BF_OBJ);
}
SummonEffect effect = null;
try {
effect = (SummonEffect) EffectFinder.getEffectsOfClass(active.getAbilities(), SummonEffect.class).get(0);
} catch (Exception e) {
main.system.ExceptionMaster.printStackTrace(e);
}
if (effect instanceof RaiseEffect) {
RaiseEffect raiseEffect = (RaiseEffect) effect;
effect.setRef(ref);
return DataManager.getType(raiseEffect.getUnitType(), C_OBJ_TYPE.BF_OBJ);
}
if (effect != null) {
type = DataManager.getType(effect.getTypeName(), C_OBJ_TYPE.BF_OBJ);
return type;
}
if (effect instanceof RaiseEffect) {
RaiseEffect raiseEffect = (RaiseEffect) effect;
return DataManager.getType(raiseEffect.getUnitType(), C_OBJ_TYPE.BF_OBJ);
}
if (effect instanceof RaiseEffect) {
RaiseEffect raiseEffect = (RaiseEffect) effect;
return DataManager.getType(raiseEffect.getUnitType(), C_OBJ_TYPE.BF_OBJ);
}
return null;
}
use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class CoordinatesMaster method getZoneCoordinates.
public static Set<Coordinates> getZoneCoordinates(DC_ActiveObj entity) {
Effect effect = EffectFinder.getFirstEffectOfClass(entity, SpecialTargetingEffect.class);
Set<Coordinates> coordinates = null;
if (effect != null) {
SpecialTargetingEffect targetEffect = (SpecialTargetingEffect) effect;
coordinates = targetEffect.getCoordinates();
}
return coordinates;
}
use of main.ability.effects.Effect in project Eidolons by IDemiurge.
the class EffectFinder method getAttackFromAction.
public static Attack getAttackFromAction(DC_ActiveObj t) {
List<Effect> eff = getEffectsOfClass(t, AttackEffect.class);
AttackEffect e = (AttackEffect) eff.get(0);
return e.getAttack();
}
Aggregations