Search in sources :

Example 1 with CellCondition

use of eidolons.ability.conditions.req.CellCondition 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 CellCondition

use of eidolons.ability.conditions.req.CellCondition in project Eidolons by IDemiurge.

the class DC_MovementManager method getFirstAction.

public static Action getFirstAction(Unit unit, Coordinates coordinates) {
    FACING_SINGLE relative = FacingMaster.getSingleFacing(unit.getFacing(), unit.getCoordinates(), coordinates);
    if (relative == FACING_SINGLE.IN_FRONT) {
        if (new CellCondition(UNIT_DIRECTION.AHEAD).check(unit))
            return AiActionFactory.newAction("Move", unit.getAI());
    }
    boolean left = (unit.getFacing().isVertical()) ? PositionMaster.isToTheLeft(unit.getCoordinates(), coordinates) : PositionMaster.isAbove(unit.getCoordinates(), coordinates);
    if (unit.getFacing().isMirrored()) {
        left = !left;
    }
    if (!new CellCondition(left ? UNIT_DIRECTION.LEFT : UNIT_DIRECTION.RIGHT).check(unit))
        return null;
    return AiActionFactory.newAction("Move " + (left ? "Left" : "Right"), unit.getAI());
// List<ActionPath> paths = instance.buildPath(unit, coordinates);
// if (!ListMaster.isNotEmpty(paths)) {
// return  null ;
// }
// ActionPath path =paths.get(0);
// for (ActionPath portrait : paths){
// if (portrait.getActions().get(0).getActive().isTurn())
// {
// path = portrait;
// break;
// }
// }
// return path.getActions().get(0);
}
Also used : CellCondition(eidolons.ability.conditions.req.CellCondition) FACING_SINGLE(main.content.enums.entity.UnitEnums.FACING_SINGLE)

Aggregations

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