mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
moved some duplicate methods to base class
This commit is contained in:
@@ -18,11 +18,6 @@ import forge.util.MyRandom;
|
|||||||
public class TapAi extends TapAiBase {
|
public class TapAi extends TapAiBase {
|
||||||
@Override
|
@Override
|
||||||
protected boolean canPlayAI(AIPlayer ai, SpellAbility sa) {
|
protected boolean canPlayAI(AIPlayer ai, SpellAbility sa) {
|
||||||
final Target tgt = sa.getTarget();
|
|
||||||
final Card source = sa.getSourceCard();
|
|
||||||
|
|
||||||
final Random r = MyRandom.getRandom();
|
|
||||||
boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn());
|
|
||||||
|
|
||||||
final PhaseHandler phase = Singletons.getModel().getGame().getPhaseHandler();
|
final PhaseHandler phase = Singletons.getModel().getGame().getPhaseHandler();
|
||||||
final Player turn = phase.getPlayerTurn();
|
final Player turn = phase.getPlayerTurn();
|
||||||
@@ -38,6 +33,12 @@ public class TapAi extends TapAiBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Target tgt = sa.getTarget();
|
||||||
|
final Card source = sa.getSourceCard();
|
||||||
|
|
||||||
|
final Random r = MyRandom.getRandom();
|
||||||
|
boolean randomReturn = r.nextFloat() <= Math.pow(.6667, sa.getActivationsThisTurn());
|
||||||
|
|
||||||
if (tgt == null) {
|
if (tgt == null) {
|
||||||
final List<Card> defined = AbilityUtils.getDefinedCards(source, sa.getParam("Defined"), sa);
|
final List<Card> defined = AbilityUtils.getDefinedCards(source, sa.getParam("Defined"), sa);
|
||||||
|
|
||||||
@@ -59,50 +60,4 @@ public class TapAi extends TapAiBase {
|
|||||||
return randomReturn;
|
return randomReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean doTriggerAINoCost(AIPlayer ai, SpellAbility sa, boolean mandatory) {
|
|
||||||
|
|
||||||
final Target tgt = sa.getTarget();
|
|
||||||
final Card source = sa.getSourceCard();
|
|
||||||
|
|
||||||
if (tgt == null) {
|
|
||||||
if (mandatory) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: use Defined to determine, if this is an unfavorable result
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
if (tapPrefTargeting(ai, source, tgt, sa, mandatory)) {
|
|
||||||
return true;
|
|
||||||
} else if (mandatory) {
|
|
||||||
// not enough preferred targets, but mandatory so keep going:
|
|
||||||
return tapUnpreferredTargeting(ai, sa, mandatory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean chkAIDrawback(SpellAbility sa, AIPlayer ai) {
|
|
||||||
final Target tgt = sa.getTarget();
|
|
||||||
final Card source = sa.getSourceCard();
|
|
||||||
|
|
||||||
boolean randomReturn = true;
|
|
||||||
|
|
||||||
if (tgt == null) {
|
|
||||||
// either self or defined, either way should be fine
|
|
||||||
} else {
|
|
||||||
// target section, maybe pull this out?
|
|
||||||
tgt.resetTargets();
|
|
||||||
if (!tapPrefTargeting(ai, source, tgt, sa, false)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return randomReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import forge.game.ai.ComputerUtilCard;
|
|||||||
import forge.game.phase.CombatUtil;
|
import forge.game.phase.CombatUtil;
|
||||||
import forge.game.phase.PhaseHandler;
|
import forge.game.phase.PhaseHandler;
|
||||||
import forge.game.phase.PhaseType;
|
import forge.game.phase.PhaseType;
|
||||||
|
import forge.game.player.AIPlayer;
|
||||||
import forge.game.player.Player;
|
import forge.game.player.Player;
|
||||||
import forge.game.zone.ZoneType;
|
import forge.game.zone.ZoneType;
|
||||||
|
|
||||||
@@ -269,4 +270,50 @@ public abstract class TapAiBase extends SpellAbilityAi {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean doTriggerAINoCost(AIPlayer ai, SpellAbility sa, boolean mandatory) {
|
||||||
|
|
||||||
|
final Target tgt = sa.getTarget();
|
||||||
|
final Card source = sa.getSourceCard();
|
||||||
|
|
||||||
|
if (tgt == null) {
|
||||||
|
if (mandatory) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: use Defined to determine, if this is an unfavorable result
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
if (tapPrefTargeting(ai, source, tgt, sa, mandatory)) {
|
||||||
|
return true;
|
||||||
|
} else if (mandatory) {
|
||||||
|
// not enough preferred targets, but mandatory so keep going:
|
||||||
|
return tapUnpreferredTargeting(ai, sa, mandatory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean chkAIDrawback(SpellAbility sa, AIPlayer ai) {
|
||||||
|
final Target tgt = sa.getTarget();
|
||||||
|
final Card source = sa.getSourceCard();
|
||||||
|
|
||||||
|
boolean randomReturn = true;
|
||||||
|
|
||||||
|
if (tgt == null) {
|
||||||
|
// either self or defined, either way should be fine
|
||||||
|
} else {
|
||||||
|
// target section, maybe pull this out?
|
||||||
|
tgt.resetTargets();
|
||||||
|
if (!tapPrefTargeting(ai, source, tgt, sa, false)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return randomReturn;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,49 +47,6 @@ public class TapOrUntapAi extends TapAiBase {
|
|||||||
return randomReturn;
|
return randomReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean doTriggerAINoCost(AIPlayer ai, SpellAbility sa, boolean mandatory) {
|
|
||||||
final Target tgt = sa.getTarget();
|
|
||||||
final Card source = sa.getSourceCard();
|
|
||||||
|
|
||||||
if (tgt == null) {
|
|
||||||
if (mandatory) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: use Defined to determine if this is an unfavorable result
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
if (tapPrefTargeting(ai, source, tgt, sa, mandatory)) {
|
|
||||||
return true;
|
|
||||||
} else if (mandatory) {
|
|
||||||
// not enough preferred targets, but mandatory so keep going:
|
|
||||||
return tapUnpreferredTargeting(ai, sa, mandatory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean chkAIDrawback(SpellAbility sa, AIPlayer ai) {
|
|
||||||
final Target tgt = sa.getTarget();
|
|
||||||
final Card source = sa.getSourceCard();
|
|
||||||
|
|
||||||
boolean randomReturn = true;
|
|
||||||
|
|
||||||
if (tgt == null) {
|
|
||||||
// either self or defined, either way should be fine
|
|
||||||
} else {
|
|
||||||
// target section, maybe pull this out?
|
|
||||||
tgt.resetTargets();
|
|
||||||
if (!tapPrefTargeting(ai, source, tgt, sa, false)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return randomReturn;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user