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);
}
}
}
}
}
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?
}
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!
}
Aggregations