Search in sources :

Example 1 with ZLevelCondition

use of main.elements.conditions.standard.ZLevelCondition in project Eidolons by IDemiurge.

the class DC_ConditionMaster method getSelectiveTargetingTemplateConditions.

public static Conditions getSelectiveTargetingTemplateConditions(SELECTIVE_TARGETING_TEMPLATES template) {
    Conditions c = new Conditions();
    if ((template.isDependentOnZ())) {
        // source and match?
        c.add(new ZLevelCondition(true));
    }
    switch(template) {
        case ANY_ARMOR:
            {
                c.add(new ObjTypeComparison(DC_TYPE.ARMOR));
                break;
            }
        case ANY_WEAPON:
            {
                c.add(new NotCondition(new PropCondition(G_PROPS.WEAPON_TYPE, ItemEnums.WEAPON_TYPE.NATURAL.toString())));
                c.add(new OrConditions(new ObjTypeComparison(DC_TYPE.WEAPONS), new Conditions(new PropCondition(G_PROPS.STD_BOOLS, GenericEnums.STD_BOOLS.WRAPPED_ITEM), new ObjTypeComparison(DC_TYPE.ITEMS))));
                break;
            }
        case ANY_ITEM:
            {
                c.add(new ObjTypeComparison(DC_TYPE.ITEMS));
                break;
            }
        case ENEMY_ARMOR:
            {
                c.add(new ObjTypeComparison(DC_TYPE.ARMOR));
                c.add(ConditionMaster.getEnemyCondition());
                break;
            }
        case ENEMY_ITEM:
            {
                c.add(new ObjTypeComparison(DC_TYPE.ITEMS));
                c.add(ConditionMaster.getEnemyCondition());
                break;
            }
        case ENEMY_WEAPON:
            {
                c.add(new NotCondition(new PropCondition(G_PROPS.WEAPON_TYPE, ItemEnums.WEAPON_TYPE.NATURAL.toString())));
                c.add(new OrConditions(new ObjTypeComparison(DC_TYPE.ITEMS), new ObjTypeComparison(DC_TYPE.WEAPONS)));
                c.add(ConditionMaster.getEnemyCondition());
                break;
            }
        case MY_ITEM:
            {
                c.add(new ObjTypeComparison(DC_TYPE.ITEMS));
                break;
            }
        case MY_SPELLBOOK:
            c.add(ConditionMaster.getTYPECondition(DC_TYPE.SPELLS));
            c.add(new SpellCondition(SPELL_CHECK.ACTIVE));
            c.add(new RefCondition(KEYS.MATCH_SOURCE, KEYS.SOURCE));
            break;
        case MY_ARMOR:
            {
                // c.add(new ObjTypeComparison(OBJ_TYPES.ARMOR));
                c.add(new RefCondition(KEYS.ARMOR, KEYS.MATCH));
                break;
            }
        case MY_WEAPON:
            {
                c.add(new NotCondition(new PropCondition(G_PROPS.WEAPON_TYPE, ItemEnums.WEAPON_TYPE.NATURAL.toString())));
                c.add(new OrConditions(new ObjTypeComparison(DC_TYPE.WEAPONS), new Conditions(new PropCondition(G_PROPS.STD_BOOLS, GenericEnums.STD_BOOLS.WRAPPED_ITEM), new ObjTypeComparison(DC_TYPE.ITEMS))));
                // c.add(new RefCondition(KEYS.WEAPON, KEYS.MATCH));
                break;
            }
        case CELL:
            {
                c.add(ConditionMaster.getTYPECondition(DC_TYPE.TERRAIN));
                c.add(getRangeCondition());
                c.add(new CellCondition(true));
                break;
            }
        case BLAST:
            {
                c.add(ConditionMaster.getUnit_Char_BfObj_TerrainTypeCondition());
                c.add(getRangeCondition());
                c.add(new FacingCondition(UnitEnums.FACING_SINGLE.IN_FRONT));
                c.add(new NotCondition(ConditionMaster.getSelfFilterCondition()));
                break;
            }
        case BLIND_SHOT:
        case SHOT:
            c.add(ConditionMaster.getUnit_Char_BfObjTypeCondition());
            c.add(new NotCondition(ConditionMaster.getSelfFilterCondition()));
            c.add(new FacingCondition(UnitEnums.FACING_SINGLE.IN_FRONT));
            c.add(getRangeCondition());
            c.add(new OrConditions(new StdPassiveCondition(UnitEnums.STANDARD_PASSIVES.DARKVISION), new NotCondition(new VisibilityCondition(UNIT_VISION.CONCEALED))));
            // 
            c.add(getClearShotCondition(KEYS.MATCH.name()));
            // ALL SHOT LIKE THIS!
            break;
        case PRECISE_SHOT:
            c.add(new VisibilityCondition(UNIT_VISION.IN_PLAIN_SIGHT));
            break;
        case UNOBSTRUCTED_SHOT:
            c.add(new NotCondition(ConditionMaster.getSelfFilterCondition()));
            c.add(getRangeCondition());
            break;
        case RAY:
            c.add(ConditionMaster.getDistanceFilterCondition(Ref.KEYS.SOURCE.name(), 1));
            break;
        case MOVE:
            c.add(DC_ConditionMaster.getMoveFilterCondition());
            break;
        case BF_OBJ:
            c.add(ConditionMaster.getTYPECondition(DC_TYPE.BF_OBJ));
            break;
        case ANY_ALLY:
            c.add(ConditionMaster.getUnit_CharTypeCondition());
            c.add(ConditionMaster.getOwnershipFilterCondition(Ref.KEYS.SOURCE.name(), true));
            break;
        case ANY_ENEMY:
            c.add(ConditionMaster.getUnit_CharTypeCondition());
            c.add(ConditionMaster.getOwnershipFilterCondition(Ref.KEYS.SOURCE.name(), false));
            break;
        case ANY_UNIT:
            c.add(ConditionMaster.getUnit_CharTypeCondition());
            break;
        case KEY:
            c.add(new OrConditions(new PropCondition(G_PROPS.BF_OBJECT_GROUP, BF_OBJECT_GROUP.LOCK.toString(), true), new PropCondition(G_PROPS.BF_OBJECT_GROUP, BF_OBJECT_GROUP.DOOR.toString(), true)));
        case ATTACK:
            c.add(new VisibilityCondition(UNIT_VISION.IN_SIGHT));
            List<FACING_SINGLE> list = new ArrayList<>();
            list.add(UnitEnums.FACING_SINGLE.IN_FRONT);
            c.add(new OrConditions(new FacingCondition(UnitEnums.FACING_SINGLE.IN_FRONT), new Conditions(new FacingCondition(UnitEnums.FACING_SINGLE.IN_FRONT, UnitEnums.FACING_SINGLE.BEHIND), new StringComparison(StringMaster.getValueRef(KEYS.SOURCE, G_PROPS.STANDARD_PASSIVES), UnitEnums.STANDARD_PASSIVES.HIND_REACH + "", false)), new Conditions(new FacingCondition(UnitEnums.FACING_SINGLE.IN_FRONT, UnitEnums.FACING_SINGLE.TO_THE_SIDE), new StringComparison(StringMaster.getValueRef(KEYS.SOURCE, G_PROPS.STANDARD_PASSIVES), UnitEnums.STANDARD_PASSIVES.BROAD_REACH + "", false))));
            c.add(ConditionMaster.getAttackConditions());
            c.add(getClearShotCondition(KEYS.MATCH.name()));
            // c.add(AirborneRule.getMeleeAttackCondition()); TODO
            break;
        case GRAVE_CELL:
            c.add(new GraveCondition());
            break;
        case CLAIM:
            {
                c.add(new NotCondition(new StatusCheckCondition(UnitEnums.STATUS.CHANNELED)));
                c.add(new NotCondition(new OwnershipCondition(KEYS.SOURCE, KEYS.MATCH)));
                c.add(ConditionMaster.getTYPECondition(DC_TYPE.BF_OBJ));
                c.add(ConditionMaster.getDistanceFilterCondition(Ref.KEYS.SOURCE.name(), "{ACTIVE_RANGE}"));
                break;
            }
        case ENEMY_SPELLBOOK:
            break;
        default:
            break;
    }
    return c;
}
Also used : OwnershipCondition(main.elements.conditions.standard.OwnershipCondition) StatusCheckCondition(eidolons.ability.conditions.StatusCheckCondition) ArrayList(java.util.ArrayList) CellCondition(eidolons.ability.conditions.req.CellCondition) VisibilityCondition(eidolons.ability.conditions.VisibilityCondition) FACING_SINGLE(main.content.enums.entity.UnitEnums.FACING_SINGLE) ZLevelCondition(main.elements.conditions.standard.ZLevelCondition) StdPassiveCondition(eidolons.ability.conditions.shortcut.StdPassiveCondition) FacingCondition(eidolons.ability.conditions.FacingCondition)

Example 2 with ZLevelCondition

use of main.elements.conditions.standard.ZLevelCondition in project Eidolons by IDemiurge.

the class SpecialTargetingEffect method applyThis.

@Override
public boolean applyThis() {
    if (reductionFormula != null) {
        ref.setValue(KEYS.FORMULA, reductionFormula.toString());
    }
    initTargeting();
    if (isZLevelDependent()) {
        getFilteringConditions().add(new ZLevelCondition(true));
    }
    if (isLoggingWrapped()) {
        getGame().getLogManager().newLogEntryNode(ENTRY_TYPE.ZONE_EFFECT, ref.getActive());
    }
    this.targeting.select(ref);
    getActiveObj().getRef().setGroup(ref.getGroup());
    // if (         (coordinates == null || getActiveObj().checkBool(STD_BOOLS.APPLY_THRU))) {
    if (ref.getGroup() != null) {
        if (!ref.getGroup().getObjects().isEmpty()) {
            if (coordinates == null)
                coordinates = new LinkedHashSet();
            ref.getGroup().getObjects().forEach(o -> coordinates.add(o.getCoordinates()));
        }
    } else {
        getActiveObj().initAnimation();
    }
    // }
    getActiveObj().initAnimation();
    // if (ref.getObj(KEYS.ACTIVE) != null) {
    // ref.getObj(KEYS.ACTIVE).getRef().setGroup(ref.getGroup());
    // } //a sideeffect!
    boolean result;
    result = effects.apply(ref);
    if (isLoggingWrapped()) {
        getGame().getLogManager().doneLogEntryNode(ENTRY_TYPE.ZONE_EFFECT, ref.getActive());
    }
    return result;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) ZLevelCondition(main.elements.conditions.standard.ZLevelCondition)

Aggregations

ZLevelCondition (main.elements.conditions.standard.ZLevelCondition)2 FacingCondition (eidolons.ability.conditions.FacingCondition)1 StatusCheckCondition (eidolons.ability.conditions.StatusCheckCondition)1 VisibilityCondition (eidolons.ability.conditions.VisibilityCondition)1 CellCondition (eidolons.ability.conditions.req.CellCondition)1 StdPassiveCondition (eidolons.ability.conditions.shortcut.StdPassiveCondition)1 ArrayList (java.util.ArrayList)1 LinkedHashSet (java.util.LinkedHashSet)1 FACING_SINGLE (main.content.enums.entity.UnitEnums.FACING_SINGLE)1 OwnershipCondition (main.elements.conditions.standard.OwnershipCondition)1