Search in sources :

Example 1 with Active

use of main.entity.obj.Active in project Eidolons by IDemiurge.

the class ActivesConstructor method setAnimForEffects.

public static void setAnimForEffects(DC_ActiveObj entity) {
    List<ActiveObj> list = new ArrayList<>(entity.getActives());
    for (Active active : list) {
        for (Ability abil : ((AbilityObj) active).getAbilities().getAbils()) {
            for (Effect effect : abil.getEffects().getEffects()) {
                if (effect instanceof EffectImpl) {
                    EffectImpl effect2 = (EffectImpl) effect;
                    effect2.setAnimationActive(entity);
                }
            }
        }
    }
}
Also used : Active(main.entity.obj.Active) DC_ActiveObj(eidolons.entity.active.DC_ActiveObj) ActiveObj(main.entity.obj.ActiveObj) EffectImpl(main.ability.effects.EffectImpl) ArrayList(java.util.ArrayList) DC_Effect(eidolons.ability.effects.DC_Effect) AddBuffEffect(eidolons.ability.effects.attachment.AddBuffEffect) RollEffect(eidolons.ability.effects.oneshot.mechanic.RollEffect) Effect(main.ability.effects.Effect) RayEffect(eidolons.ability.effects.containers.customtarget.RayEffect) WaveEffect(eidolons.ability.effects.containers.customtarget.WaveEffect) ZoneEffect(eidolons.ability.effects.containers.customtarget.ZoneEffect)

Example 2 with Active

use of main.entity.obj.Active in project Eidolons by IDemiurge.

the class ActivesConstructor method constructActive.

public static void constructActive(TARGETING_MODE mode, DC_ActiveObj entity) {
    if (mode == AbilityEnums.TARGETING_MODE.MULTI) {
        addMultiTargetingMods(entity);
        return;
    }
    if (entity.checkBool(GenericEnums.STD_BOOLS.MULTI_TARGETING)) {
        // constructMultiAbilities(entity);
        return;
    }
    if (entity.getActives() == null) {
        return;
    }
    List<ActiveObj> list = new ArrayList<>(entity.getActives());
    Effects effects = new Effects();
    for (Active active : list) {
        for (Ability abil : ((AbilityObj) active).getAbilities().getAbils()) {
            for (Effect effect : abil.getEffects().getEffects()) {
                // anything?
                if (effect instanceof DC_Effect) {
                    DC_Effect effect2 = (DC_Effect) effect;
                    effect2.setAnimationActive(entity);
                }
                effects.add(effect);
            }
        }
    }
    // TODO what if the effects should have different targetings like in
    // damage+light?
    String saveRoll = entity.getProperty(PROPS.ROLL_TYPES_TO_SAVE);
    if (!StringMaster.isEmpty(saveRoll)) {
        wrapInSaveRollEffect(effects, saveRoll);
    }
    String wrap = entity.getProperty(PROPS.EFFECTS_WRAP);
    Effect wrappedEffect;
    if (StringMaster.isEmpty(wrap)) {
        wrappedEffect = wrapEffects(mode, effects, entity);
    } else {
        EFFECTS_WRAP WRAP = new EnumMaster<EFFECTS_WRAP>().retrieveEnumConst(EFFECTS_WRAP.class, wrap);
        wrappedEffect = wrapEffects(WRAP, effects, entity);
    }
    Targeting targeting = getTargeting(mode, entity);
    if (targeting == null) {
        try {
            targeting = entity.getActives().get(0).getActives().get(0).getTargeting();
        } catch (Exception e) {
        // targeting = getDefaultSingleTargeting(entity);TODO necessary?
        }
    }
    if (targeting != null)
        entity.setTargeting(targeting);
    Abilities abilities = new Abilities();
    abilities.add(new ActiveAbility(null, wrappedEffect));
    entity.setAbilities(abilities);
// TODO wrapping in RollEffect - each single effect or the resulting
// wrapped Effects?
}
Also used : FixedTargeting(main.elements.targeting.FixedTargeting) TemplateAutoTargeting(eidolons.ability.targeting.TemplateAutoTargeting) TemplateSelectiveTargeting(eidolons.ability.targeting.TemplateSelectiveTargeting) Targeting(main.elements.targeting.Targeting) MultiTargeting(main.elements.targeting.MultiTargeting) SelectiveTargeting(main.elements.targeting.SelectiveTargeting) DC_Effect(eidolons.ability.effects.DC_Effect) ArrayList(java.util.ArrayList) Effects(main.ability.effects.Effects) Active(main.entity.obj.Active) DC_ActiveObj(eidolons.entity.active.DC_ActiveObj) ActiveObj(main.entity.obj.ActiveObj) EFFECTS_WRAP(main.content.enums.entity.AbilityEnums.EFFECTS_WRAP) DC_Effect(eidolons.ability.effects.DC_Effect) AddBuffEffect(eidolons.ability.effects.attachment.AddBuffEffect) RollEffect(eidolons.ability.effects.oneshot.mechanic.RollEffect) Effect(main.ability.effects.Effect) RayEffect(eidolons.ability.effects.containers.customtarget.RayEffect) WaveEffect(eidolons.ability.effects.containers.customtarget.WaveEffect) ZoneEffect(eidolons.ability.effects.containers.customtarget.ZoneEffect)

Example 3 with Active

use of main.entity.obj.Active in project Eidolons by IDemiurge.

the class Executor method resolve.

protected void resolve() {
    log(getAction() + " resolves", false);
    addStdPassives();
    ForceRule.addForceEffects(getAction());
    getAction().activatePassives();
    // setResistanceChecked(false); ??
    GuiEventManager.trigger(GuiEventType.ACTION_BEING_RESOLVED, getAction());
    getMaster().getAnimator().addResolvesPhase();
    if (getAction().getAbilities() != null) {
        try {
            setResult(getAction().getAbilities().activatedOn(// getTargeter(). TODO would this be ok?
            getRef()));
        } catch (Exception e) {
            main.system.ExceptionMaster.printStackTrace(e);
        }
    } else // for Multi-targeting when single-wrapped Abilities cannot be used
    {
        for (Active active : getAction().getActives()) {
            try {
                setResult(isResult() & active.activatedOn(getRef()));
            } catch (Exception e) {
                main.system.ExceptionMaster.printStackTrace(e);
            }
            if (!isResult()) {
                // TODO if cancelled!
                break;
            }
            if (!game.isStarted()) {
                continue;
            }
            // cancelled = null; TODO ???
            if (getAction().getActives().size() > 1) {
                // between
                game.getManager().reset();
                refreshVisuals();
            }
        }
    }
// DC_SoundMaster.playEffectSound(SOUNDS.IMPACT, this); //TODO queue on anim!
}
Also used : Active(main.entity.obj.Active)

Aggregations

Active (main.entity.obj.Active)3 DC_Effect (eidolons.ability.effects.DC_Effect)2 AddBuffEffect (eidolons.ability.effects.attachment.AddBuffEffect)2 RayEffect (eidolons.ability.effects.containers.customtarget.RayEffect)2 WaveEffect (eidolons.ability.effects.containers.customtarget.WaveEffect)2 ZoneEffect (eidolons.ability.effects.containers.customtarget.ZoneEffect)2 RollEffect (eidolons.ability.effects.oneshot.mechanic.RollEffect)2 DC_ActiveObj (eidolons.entity.active.DC_ActiveObj)2 ArrayList (java.util.ArrayList)2 Effect (main.ability.effects.Effect)2 ActiveObj (main.entity.obj.ActiveObj)2 TemplateAutoTargeting (eidolons.ability.targeting.TemplateAutoTargeting)1 TemplateSelectiveTargeting (eidolons.ability.targeting.TemplateSelectiveTargeting)1 EffectImpl (main.ability.effects.EffectImpl)1 Effects (main.ability.effects.Effects)1 EFFECTS_WRAP (main.content.enums.entity.AbilityEnums.EFFECTS_WRAP)1 FixedTargeting (main.elements.targeting.FixedTargeting)1 MultiTargeting (main.elements.targeting.MultiTargeting)1 SelectiveTargeting (main.elements.targeting.SelectiveTargeting)1 Targeting (main.elements.targeting.Targeting)1