Search in sources :

Example 1 with AddSpecialEffects

use of eidolons.ability.AddSpecialEffects in project Eidolons by IDemiurge.

the class EnchantItemEffect method applyThis.

@Override
public boolean applyThis() {
    // TODO select spell to use!
    // perhaps it is better to invoke spell with a special effect!
    // Ref REF = ref.getCopy();
    // this should be an effect - for other things too like traps
    // add spell filter!!!
    // if (selectSpell)
    // game.getManager().infoSelect(ref.getSourceObj());
    spell = (DC_SpellObj) ref.getTargetObj();
    Effects effects = EffectFinder.getEffectsFromSpell(spell);
    effects.add(new AnimationEffect(spell));
    effects.add(new SoundEffect(SOUNDS.IMPACT, ref.getTargetObj()));
    // TODO why was only that 1st spell in SB filtered in???
    if (!new TemplateSelectiveTargeting((weapon) ? SELECTIVE_TARGETING_TEMPLATES.MY_WEAPON : SELECTIVE_TARGETING_TEMPLATES.MY_ARMOR).select(ref)) {
        return false;
    }
    // new ModifyPropertyEffect(G_PROPS.PASSIVES, MOD_PROP_TYPE.ADD,
    // passive)
    // .apply(ref);
    // 
    KEYS key;
    if (!weapon) {
        key = KEYS.ARMOR;
    } else {
        if (ref.getTargetObj() == ref.getObj(KEYS.WEAPON)) {
            key = KEYS.WEAPON;
        } else {
            key = KEYS.OFFHAND;
        }
    }
    int cost = Enchanter.calculateSpellEnergyCost(spell);
    if (case_type == null) {
        case_type = (weapon) ? SPECIAL_EFFECTS_CASE.ON_ATTACK : SPECIAL_EFFECTS_CASE.ON_HIT;
    }
    // another layer of customTargetEffect if ON SELF or so ! Some may even
    // be Zone-targeted!
    BuffType t = new BuffType(new Ref(ref.getGame(), ref.getSource()));
    t.setImage(ref.getActive().getProperty(G_PROPS.IMAGE, false));
    t.setName(buffName + " " + StringMaster.wrapInParenthesis(spell.getName()));
    t.setParam(G_PARAMS.DURATION, ref.getActive().getIntParam(G_PARAMS.DURATION, false));
    new AddBuffEffect(t, new AddSpecialEffects(case_type, new EnergyCostEffect(cost, key, effects))).apply(ref);
    ModifyValueEffect addEnergyEffect = new ModifyValueEffect(PARAMS.C_ENERGY, MOD.MODIFY_BY_CONST, energy);
    addEnergyEffect.setValueOverMax(true);
    addEnergyEffect.apply(ref);
    return true;
}
Also used : SoundEffect(eidolons.ability.effects.special.media.SoundEffect) AddBuffEffect(eidolons.ability.effects.attachment.AddBuffEffect) TemplateSelectiveTargeting(eidolons.ability.targeting.TemplateSelectiveTargeting) Ref(main.entity.Ref) AddSpecialEffects(eidolons.ability.AddSpecialEffects) KEYS(main.entity.Ref.KEYS) BuffType(main.entity.type.BuffType) EnergyCostEffect(eidolons.ability.effects.containers.EnergyCostEffect) ModifyValueEffect(eidolons.ability.effects.common.ModifyValueEffect) AnimationEffect(eidolons.ability.effects.special.media.AnimationEffect) Effects(main.ability.effects.Effects) AddSpecialEffects(eidolons.ability.AddSpecialEffects)

Example 2 with AddSpecialEffects

use of eidolons.ability.AddSpecialEffects in project Eidolons by IDemiurge.

the class DC_Obj method addSpecialEffect.

public void addSpecialEffect(SPECIAL_EFFECTS_CASE case_type, Effect effects) {
    if (effects instanceof Effects) {
        Effects effects_ = (Effects) effects;
        for (Effect e : effects_.getEffects()) {
            addSpecialEffect(case_type, e);
        }
        return;
    }
    if (effects instanceof AddSpecialEffects) {
        AddSpecialEffects addSpecialEffects = (AddSpecialEffects) effects;
        effects = addSpecialEffects.getEffects();
    }
    if (getSpecialEffects().get(case_type) != null) {
        getSpecialEffects().put(case_type, new Effects(getSpecialEffects().get(case_type), effects));
    } else {
        getSpecialEffects().put(case_type, effects);
    }
}
Also used : AddSpecialEffects(eidolons.ability.AddSpecialEffects) ModifyValueEffect(eidolons.ability.effects.common.ModifyValueEffect) Effect(main.ability.effects.Effect) Effects(main.ability.effects.Effects) AddSpecialEffects(eidolons.ability.AddSpecialEffects)

Aggregations

AddSpecialEffects (eidolons.ability.AddSpecialEffects)2 ModifyValueEffect (eidolons.ability.effects.common.ModifyValueEffect)2 Effects (main.ability.effects.Effects)2 AddBuffEffect (eidolons.ability.effects.attachment.AddBuffEffect)1 EnergyCostEffect (eidolons.ability.effects.containers.EnergyCostEffect)1 AnimationEffect (eidolons.ability.effects.special.media.AnimationEffect)1 SoundEffect (eidolons.ability.effects.special.media.SoundEffect)1 TemplateSelectiveTargeting (eidolons.ability.targeting.TemplateSelectiveTargeting)1 Effect (main.ability.effects.Effect)1 Ref (main.entity.Ref)1 KEYS (main.entity.Ref.KEYS)1 BuffType (main.entity.type.BuffType)1