mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
@@ -65,27 +65,27 @@ public class DamageDealAi extends DamageAiBase {
|
|||||||
return SpecialCardAi.SarkhanTheMad.considerDig(ai, sa);
|
return SpecialCardAi.SarkhanTheMad.considerDig(ai, sa);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (damage.equals("X") && sa.getSVar(damage).equals("Count$ChosenNumber")) {
|
|
||||||
int energy = ai.getCounters(CounterEnumType.ENERGY);
|
|
||||||
for (SpellAbility s : source.getSpellAbilities()) {
|
|
||||||
if ("PayEnergy".equals(s.getParam("AILogic"))) {
|
|
||||||
energy += AbilityUtils.calculateAmount(source, s.getParam("CounterNum"), sa);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (; energy > 0; energy--) {
|
|
||||||
if (damageTargetAI(ai, sa, energy, false)) {
|
|
||||||
dmg = ComputerUtilCombat.getEnoughDamageToKill(sa.getTargetCard(), energy, source, false, false);
|
|
||||||
if (dmg > energy || dmg < 1) {
|
|
||||||
continue; // in case the calculation gets messed up somewhere
|
|
||||||
}
|
|
||||||
root.setSVar("EnergyToPay", "Number$" + dmg);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (damage.equals("X")) {
|
if (damage.equals("X")) {
|
||||||
|
if (sa.getSVar(damage).equals("Count$ChosenNumber")) {
|
||||||
|
int energy = ai.getCounters(CounterEnumType.ENERGY);
|
||||||
|
for (SpellAbility s : source.getSpellAbilities()) {
|
||||||
|
if ("PayEnergy".equals(s.getParam("AILogic"))) {
|
||||||
|
energy += AbilityUtils.calculateAmount(source, s.getParam("CounterNum"), sa);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (; energy > 0; energy--) {
|
||||||
|
if (damageTargetAI(ai, sa, energy, false)) {
|
||||||
|
dmg = ComputerUtilCombat.getEnoughDamageToKill(sa.getTargetCard(), energy, source, false, false);
|
||||||
|
if (dmg > energy || dmg < 1) {
|
||||||
|
continue; // in case the calculation gets messed up somewhere
|
||||||
|
}
|
||||||
|
root.setSVar("EnergyToPay", "Number$" + dmg);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (sa.getSVar(damage).equals("Count$xPaid")) {
|
if (sa.getSVar(damage).equals("Count$xPaid")) {
|
||||||
// Life Drain
|
// Life Drain
|
||||||
if ("XLifeDrain".equals(logic)) {
|
if ("XLifeDrain".equals(logic)) {
|
||||||
@@ -111,7 +111,7 @@ public class DamageDealAi extends DamageAiBase {
|
|||||||
final String damage = sa.getParam("NumDmg");
|
final String damage = sa.getParam("NumDmg");
|
||||||
int dmg = AbilityUtils.calculateAmount(source, damage, sa);
|
int dmg = AbilityUtils.calculateAmount(source, damage, sa);
|
||||||
|
|
||||||
if (damage.equals("X")) {
|
if (damage.equals("X") || sourceName.equals("Crater's Claws")) {
|
||||||
if (sa.getSVar(damage).equals("Count$xPaid") || sourceName.equals("Crater's Claws")) {
|
if (sa.getSVar(damage).equals("Count$xPaid") || sourceName.equals("Crater's Claws")) {
|
||||||
dmg = ComputerUtilCost.getMaxXValue(sa, ai, sa.isTrigger());
|
dmg = ComputerUtilCost.getMaxXValue(sa, ai, sa.isTrigger());
|
||||||
|
|
||||||
@@ -542,13 +542,6 @@ public class DamageDealAi extends DamageAiBase {
|
|||||||
sa.getTargets().add(enemy);
|
sa.getTargets().add(enemy);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else if ("DamageAfterPutCounter".equals(logic)
|
|
||||||
&& sa.getParent() != null
|
|
||||||
&& "P1P1".equals(sa.getParent().getParam("CounterType"))) {
|
|
||||||
// assuming the SA parent is of PutCounter type. Perhaps it's possible to predict counter multipliers here somehow?
|
|
||||||
final String amountStr = sa.getParent().getParamOrDefault("CounterNum", "1");
|
|
||||||
final int amount = AbilityUtils.calculateAmount(source, amountStr, sa);
|
|
||||||
dmg += amount;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// AssumeAtLeastOneTarget is used for cards with funky targeting implementation like Fight with Fire which would
|
// AssumeAtLeastOneTarget is used for cards with funky targeting implementation like Fight with Fire which would
|
||||||
@@ -557,11 +550,7 @@ public class DamageDealAi extends DamageAiBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
immediately = immediately || ComputerUtil.playImmediately(ai, sa);
|
sa.resetTargets();
|
||||||
|
|
||||||
if (!(sa.getParent() != null && sa.getParent().isTargetNumberValid())) {
|
|
||||||
sa.resetTargets();
|
|
||||||
}
|
|
||||||
|
|
||||||
// target loop
|
// target loop
|
||||||
TargetChoices tcs = sa.getTargets();
|
TargetChoices tcs = sa.getTargets();
|
||||||
@@ -622,6 +611,8 @@ public class DamageDealAi extends DamageAiBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
immediately = immediately || ComputerUtil.playImmediately(ai, sa);
|
||||||
|
|
||||||
int totalTargetedSoFar = -1;
|
int totalTargetedSoFar = -1;
|
||||||
while (sa.canAddMoreTarget()) {
|
while (sa.canAddMoreTarget()) {
|
||||||
if (totalTargetedSoFar == tcs.size()) {
|
if (totalTargetedSoFar == tcs.size()) {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
Name:Domri's Ambush
|
Name:Domri's Ambush
|
||||||
ManaCost:R G
|
ManaCost:R G
|
||||||
Types:Sorcery
|
Types:Sorcery
|
||||||
A:SP$ PutCounter | Cost$ R G | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | TgtPrompt$ Select target creature you control to put a +1/+1 counter | SubAbility$ DBDamage | SpellDescription$ Put a +1/+1 counter on target creature you control. Then that creature deals damage equal to its power to target creature or planeswalker you don't control.
|
A:SP$ PutCounter | Cost$ R G | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | TgtPrompt$ Select target creature you control to put a +1/+1 counter | SubAbility$ DBDamage | AILogic$ PowerDmg | SpellDescription$ Put a +1/+1 counter on target creature you control. Then that creature deals damage equal to its power to target creature or planeswalker you don't control.
|
||||||
SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature.YouDontCtrl,Planeswalker.YouDontCtrl | TgtPrompt$ Select target creature or planeswalker you don't control | NumDmg$ X | DamageSource$ ParentTarget | AILogic$ DamageAfterPutCounter
|
SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature.YouDontCtrl,Planeswalker.YouDontCtrl | TgtPrompt$ Select target creature or planeswalker you don't control | NumDmg$ X | DamageSource$ ParentTarget | AILogic$ PowerDmg
|
||||||
SVar:X:ParentTargeted$CardPower
|
SVar:X:ParentTargeted$CardPower
|
||||||
DeckHas:Ability$Counters
|
DeckHas:Ability$Counters
|
||||||
Oracle:Put a +1/+1 counter on target creature you control. Then that creature deals damage equal to its power to target creature or planeswalker you don't control.
|
Oracle:Put a +1/+1 counter on target creature you control. Then that creature deals damage equal to its power to target creature or planeswalker you don't control.
|
||||||
|
|||||||
Reference in New Issue
Block a user