Search in sources :

Example 16 with Effect

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;
}
Also used : ModifyCounterEffect(eidolons.ability.effects.oneshot.mechanic.ModifyCounterEffect) AddBuffEffect(eidolons.ability.effects.attachment.AddBuffEffect) RollEffect(eidolons.ability.effects.oneshot.mechanic.RollEffect) Effect(main.ability.effects.Effect) DealDamageEffect(eidolons.ability.effects.oneshot.DealDamageEffect) OwnershipChangeEffect(main.ability.effects.common.OwnershipChangeEffect) InstantDeathEffect(main.ability.effects.oneshot.InstantDeathEffect) ModifyCounterEffect(eidolons.ability.effects.oneshot.mechanic.ModifyCounterEffect) DrainEffect(eidolons.ability.effects.oneshot.mechanic.DrainEffect) AttackEffect(eidolons.ability.effects.oneshot.attack.AttackEffect) ModifyValueEffect(eidolons.ability.effects.common.ModifyValueEffect) RaiseEffect(eidolons.ability.effects.oneshot.unit.RaiseEffect) BehaviorModeEffect(eidolons.ability.effects.continuous.BehaviorModeEffect) SummonEffect(eidolons.ability.effects.oneshot.unit.SummonEffect)

Example 17 with Effect

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;
}
Also used : ModifyCounterEffect(eidolons.ability.effects.oneshot.mechanic.ModifyCounterEffect) SpecialTargetingEffect(main.ability.effects.container.SpecialTargetingEffect) WaveEffect(eidolons.ability.effects.containers.customtarget.WaveEffect) AddBuffEffect(eidolons.ability.effects.attachment.AddBuffEffect) WaveEffect(eidolons.ability.effects.containers.customtarget.WaveEffect) DrainEffect(eidolons.ability.effects.oneshot.mechanic.DrainEffect) GatewayEffect(eidolons.ability.effects.oneshot.unit.GatewayEffect) ModifyValueEffect(eidolons.ability.effects.common.ModifyValueEffect) ShapeEffect(eidolons.ability.effects.containers.customtarget.ShapeEffect) RaiseEffect(eidolons.ability.effects.oneshot.unit.RaiseEffect) BehaviorModeEffect(eidolons.ability.effects.continuous.BehaviorModeEffect) MoveEffect(eidolons.ability.effects.oneshot.move.MoveEffect) SpecialTargetingEffect(main.ability.effects.container.SpecialTargetingEffect) Effect(main.ability.effects.Effect) DealDamageEffect(eidolons.ability.effects.oneshot.DealDamageEffect) OwnershipChangeEffect(main.ability.effects.common.OwnershipChangeEffect) CreateObjectEffect(eidolons.ability.effects.oneshot.unit.CreateObjectEffect) SummonEffect(eidolons.ability.effects.oneshot.unit.SummonEffect) InstantDeathEffect(main.ability.effects.oneshot.InstantDeathEffect) ModifyCounterEffect(eidolons.ability.effects.oneshot.mechanic.ModifyCounterEffect) ShapeEffect(eidolons.ability.effects.containers.customtarget.ShapeEffect)

Example 18 with Effect

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;
}
Also used : SummonEffect(eidolons.ability.effects.oneshot.unit.SummonEffect) RaiseEffect(eidolons.ability.effects.oneshot.unit.RaiseEffect) ObjType(main.entity.type.ObjType) GatewayEffect(eidolons.ability.effects.oneshot.unit.GatewayEffect) AddBuffEffect(eidolons.ability.effects.attachment.AddBuffEffect) WaveEffect(eidolons.ability.effects.containers.customtarget.WaveEffect) DrainEffect(eidolons.ability.effects.oneshot.mechanic.DrainEffect) GatewayEffect(eidolons.ability.effects.oneshot.unit.GatewayEffect) ModifyValueEffect(eidolons.ability.effects.common.ModifyValueEffect) ShapeEffect(eidolons.ability.effects.containers.customtarget.ShapeEffect) RaiseEffect(eidolons.ability.effects.oneshot.unit.RaiseEffect) BehaviorModeEffect(eidolons.ability.effects.continuous.BehaviorModeEffect) MoveEffect(eidolons.ability.effects.oneshot.move.MoveEffect) SpecialTargetingEffect(main.ability.effects.container.SpecialTargetingEffect) Effect(main.ability.effects.Effect) DealDamageEffect(eidolons.ability.effects.oneshot.DealDamageEffect) OwnershipChangeEffect(main.ability.effects.common.OwnershipChangeEffect) CreateObjectEffect(eidolons.ability.effects.oneshot.unit.CreateObjectEffect) SummonEffect(eidolons.ability.effects.oneshot.unit.SummonEffect) InstantDeathEffect(main.ability.effects.oneshot.InstantDeathEffect) ModifyCounterEffect(eidolons.ability.effects.oneshot.mechanic.ModifyCounterEffect)

Example 19 with Effect

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;
}
Also used : SpecialTargetingEffect(main.ability.effects.container.SpecialTargetingEffect) Coordinates(main.game.bf.Coordinates) SpecialTargetingEffect(main.ability.effects.container.SpecialTargetingEffect) Effect(main.ability.effects.Effect)

Example 20 with Effect

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();
}
Also used : AttackEffect(eidolons.ability.effects.oneshot.attack.AttackEffect) AddBuffEffect(eidolons.ability.effects.attachment.AddBuffEffect) ContainerEffect(main.ability.effects.ContainerEffect) AttackEffect(eidolons.ability.effects.oneshot.attack.AttackEffect) ModifyValueEffect(eidolons.ability.effects.common.ModifyValueEffect) ModifyPropertyEffect(eidolons.ability.effects.common.ModifyPropertyEffect) RollEffect(eidolons.ability.effects.oneshot.mechanic.RollEffect) Effect(main.ability.effects.Effect)

Aggregations

Effect (main.ability.effects.Effect)55 AddBuffEffect (eidolons.ability.effects.attachment.AddBuffEffect)31 ModifyValueEffect (eidolons.ability.effects.common.ModifyValueEffect)18 Effects (main.ability.effects.Effects)17 DealDamageEffect (eidolons.ability.effects.oneshot.DealDamageEffect)16 RollEffect (eidolons.ability.effects.oneshot.mechanic.RollEffect)16 ModifyCounterEffect (eidolons.ability.effects.oneshot.mechanic.ModifyCounterEffect)15 OwnershipChangeEffect (main.ability.effects.common.OwnershipChangeEffect)14 BehaviorModeEffect (eidolons.ability.effects.continuous.BehaviorModeEffect)13 AttackEffect (eidolons.ability.effects.oneshot.attack.AttackEffect)13 InstantDeathEffect (main.ability.effects.oneshot.InstantDeathEffect)13 DrainEffect (eidolons.ability.effects.oneshot.mechanic.DrainEffect)12 RaiseEffect (eidolons.ability.effects.oneshot.unit.RaiseEffect)12 SummonEffect (eidolons.ability.effects.oneshot.unit.SummonEffect)12 ArrayList (java.util.ArrayList)10 WaveEffect (eidolons.ability.effects.containers.customtarget.WaveEffect)8 DC_Effect (eidolons.ability.effects.DC_Effect)7 Ref (main.entity.Ref)7 DC_ActiveObj (eidolons.entity.active.DC_ActiveObj)6 SpecialTargetingEffect (main.ability.effects.container.SpecialTargetingEffect)6