mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
Merge branch 'aifix' into 'master'
Fix Pinnacle of Rage See merge request core-developers/forge!5437
This commit is contained in:
@@ -691,8 +691,7 @@ public class DamageDealAi extends DamageAiBase {
|
||||
// on the stack or from taking combat damage
|
||||
|
||||
final Cost abCost = sa.getPayCosts();
|
||||
boolean freePing = immediately || abCost == null
|
||||
|| sa.getTargets().size() > 0;
|
||||
boolean freePing = immediately || abCost == null || sa.getTargets().size() > 0;
|
||||
|
||||
if (!source.isSpell()) {
|
||||
if (phase.is(PhaseType.END_OF_TURN) && sa.isAbility() && abCost.isReusuableResource()) {
|
||||
@@ -757,22 +756,18 @@ public class DamageDealAi extends DamageAiBase {
|
||||
sa.addDividedAllocation(enemy, dmg);
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// fell through all the choices, no targets left?
|
||||
if (tcs.size() < tgt.getMinTargets(source, sa) || tcs.size() == 0) {
|
||||
if (!mandatory) {
|
||||
sa.resetTargets();
|
||||
return false;
|
||||
} else {
|
||||
if (mandatory) {
|
||||
// If the trigger is mandatory, gotta choose my own stuff now
|
||||
return this.damageChooseRequiredTargets(ai, sa, tgt, dmg);
|
||||
}
|
||||
} else {
|
||||
// TODO is this good enough? for up to amounts?
|
||||
break;
|
||||
}
|
||||
sa.resetTargets();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -334,22 +334,23 @@ public final class StaticAbilityContinuous {
|
||||
cantHaveKeyword = Keyword.setValueOf(params.get("CantHaveKeyword"));
|
||||
}
|
||||
|
||||
if ((layer == StaticAbilityLayer.RULES) && params.containsKey("AddHiddenKeyword")) {
|
||||
addHiddenKeywords.addAll(Arrays.asList(params.get("AddHiddenKeyword").split(" & ")));
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.ABILITIES && params.containsKey("RemoveKeyword")) {
|
||||
removeKeywords = Arrays.asList(params.get("RemoveKeyword").split(" & "));
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.ABILITIES && params.containsKey("RemoveAllAbilities")) {
|
||||
if ((layer == StaticAbilityLayer.RULES) && params.containsKey("AddHiddenKeyword")) {
|
||||
addHiddenKeywords.addAll(Arrays.asList(params.get("AddHiddenKeyword").split(" & ")));
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.ABILITIES) {
|
||||
if (params.containsKey("RemoveAllAbilities")) {
|
||||
removeAllAbilities = true;
|
||||
if (params.containsKey("ExceptManaAbilities")) {
|
||||
removeNonMana = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.ABILITIES && params.containsKey("AddAbility")) {
|
||||
if (params.containsKey("AddAbility")) {
|
||||
final String[] sVars = params.get("AddAbility").split(" & ");
|
||||
for (int i = 0; i < sVars.length; i++) {
|
||||
sVars[i] = AbilityUtils.getSVar(stAb, sVars[i]);
|
||||
@@ -357,7 +358,7 @@ public final class StaticAbilityContinuous {
|
||||
addAbilities = sVars;
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.ABILITIES && params.containsKey("AddReplacementEffects")) {
|
||||
if (params.containsKey("AddReplacementEffects")) {
|
||||
final String[] sVars = params.get("AddReplacementEffects").split(" & ");
|
||||
for (int i = 0; i < sVars.length; i++) {
|
||||
sVars[i] = AbilityUtils.getSVar(stAb, sVars[i]);
|
||||
@@ -365,12 +366,29 @@ public final class StaticAbilityContinuous {
|
||||
addReplacements = sVars;
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.ABILITIES && params.containsKey("AddSVar")) {
|
||||
addSVars = params.get("AddSVar").split(" & ");
|
||||
if (params.containsKey("AddTrigger")) {
|
||||
final String[] sVars = params.get("AddTrigger").split(" & ");
|
||||
for (int i = 0; i < sVars.length; i++) {
|
||||
sVars[i] = AbilityUtils.getSVar(stAb, sVars[i]);
|
||||
}
|
||||
addTriggers = sVars;
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.TYPE && params.containsKey("AddType")) {
|
||||
if (params.containsKey("AddStaticAbility")) {
|
||||
final String[] sVars = params.get("AddStaticAbility").split(" & ");
|
||||
for (int i = 0; i < sVars.length; i++) {
|
||||
sVars[i] = AbilityUtils.getSVar(stAb, sVars[i]);
|
||||
}
|
||||
addStatics = sVars;
|
||||
}
|
||||
|
||||
if (params.containsKey("AddSVar")) {
|
||||
addSVars = params.get("AddSVar").split(" & ");
|
||||
}
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.TYPE) {
|
||||
if (params.containsKey("AddType")) {
|
||||
addTypes = Lists.newArrayList(Arrays.asList(params.get("AddType").split(" & ")));
|
||||
List<String> newTypes = Lists.newArrayList();
|
||||
|
||||
@@ -413,7 +431,6 @@ public final class StaticAbilityContinuous {
|
||||
});
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.TYPE) {
|
||||
if (params.containsKey("RemoveType")) {
|
||||
removeTypes = Lists.newArrayList(Arrays.asList(params.get("RemoveType").split(" & ")));
|
||||
|
||||
@@ -475,24 +492,6 @@ public final class StaticAbilityContinuous {
|
||||
}
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.ABILITIES) {
|
||||
if (params.containsKey("AddTrigger")) {
|
||||
final String[] sVars = params.get("AddTrigger").split(" & ");
|
||||
for (int i = 0; i < sVars.length; i++) {
|
||||
sVars[i] = AbilityUtils.getSVar(stAb, sVars[i]);
|
||||
}
|
||||
addTriggers = sVars;
|
||||
}
|
||||
|
||||
if (params.containsKey("AddStaticAbility")) {
|
||||
final String[] sVars = params.get("AddStaticAbility").split(" & ");
|
||||
for (int i = 0; i < sVars.length; i++) {
|
||||
sVars[i] = AbilityUtils.getSVar(stAb, sVars[i]);
|
||||
}
|
||||
addStatics = sVars;
|
||||
}
|
||||
}
|
||||
|
||||
if (layer == StaticAbilityLayer.RULES) {
|
||||
// These fall under Rule changes, as they don't fit any other category
|
||||
if (params.containsKey("MayLookAt")) {
|
||||
@@ -528,7 +527,6 @@ public final class StaticAbilityContinuous {
|
||||
|
||||
// modify players
|
||||
for (final Player p : affectedPlayers) {
|
||||
|
||||
// add keywords
|
||||
if (addKeywords != null) {
|
||||
p.addChangedKeywords(addKeywords, removeKeywords, se.getTimestamp(), stAb.getId());
|
||||
|
||||
Reference in New Issue
Block a user