mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
- Added Drain Life
This commit is contained in:
@@ -1,11 +1,16 @@
|
||||
package forge.card.abilityfactory.effects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import forge.Card;
|
||||
import forge.card.abilityfactory.AbilityFactory;
|
||||
import forge.card.abilityfactory.SpellEffect;
|
||||
import forge.card.cardfactory.CardFactoryUtil;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
import forge.card.spellability.Target;
|
||||
|
||||
public class StoreSVarEffect extends SpellEffect {
|
||||
public class StoreSVarEffect extends SpellEffect {
|
||||
|
||||
@Override
|
||||
public void resolve(SpellAbility sa) {
|
||||
@@ -44,6 +49,42 @@ public class StoreSVarEffect extends SpellEffect {
|
||||
else if (type.equals("CountSVar")) {
|
||||
value = CardFactoryUtil.xCount(source, "SVar$" + expr);
|
||||
}
|
||||
else if (type.equals("Targeted")) {
|
||||
List<Card> list = new ArrayList<Card>();
|
||||
final Target t = sa.getTarget();
|
||||
if (null != t) {
|
||||
final ArrayList<Object> all = t.getTargets();
|
||||
list = new ArrayList<Card>();
|
||||
if (!all.isEmpty() && (all.get(0) instanceof SpellAbility)) {
|
||||
final SpellAbility saTargeting = sa.getParentTargetingSA();
|
||||
// possible NPE on next line
|
||||
final ArrayList<SpellAbility> sas = saTargeting.getTarget().getTargetSAs();
|
||||
for (final SpellAbility tgtsa : sas) {
|
||||
list.add(tgtsa.getSourceCard());
|
||||
}
|
||||
} else {
|
||||
final SpellAbility saTargeting = sa.getParentTargetingCard();
|
||||
if (null != saTargeting.getTarget()) {
|
||||
list.addAll(saTargeting.getTarget().getTargetCards());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
final SpellAbility parent = sa.getParentTargetingCard();
|
||||
if (parent.getTarget() != null) {
|
||||
final ArrayList<Object> all = parent.getTarget().getTargets();
|
||||
if (!all.isEmpty() && (all.get(0) instanceof SpellAbility)) {
|
||||
list = new ArrayList<Card>();
|
||||
final ArrayList<SpellAbility> sas = parent.getTarget().getTargetSAs();
|
||||
for (final SpellAbility tgtsa : sas) {
|
||||
list.add(tgtsa.getSourceCard());
|
||||
}
|
||||
} else {
|
||||
list = new ArrayList<Card>(parent.getTarget().getTargetCards());
|
||||
}
|
||||
}
|
||||
}
|
||||
value = CardFactoryUtil.handlePaid(list, expr, source);
|
||||
}
|
||||
//TODO For other types call a different function
|
||||
|
||||
StringBuilder numBuilder = new StringBuilder();
|
||||
@@ -51,9 +92,9 @@ public class StoreSVarEffect extends SpellEffect {
|
||||
numBuilder.append(value);
|
||||
|
||||
source.setSVar(key, numBuilder.toString());
|
||||
|
||||
|
||||
SpellAbility root = sa.getRootAbility();
|
||||
while(root != null) {
|
||||
while (root != null) {
|
||||
root.setSVar(key, numBuilder.toString());
|
||||
root = root.getSubAbility();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user