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;
}
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;
}
Aggregations