mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
Fix Offering being an AltCost (#8190)
This commit is contained in:
@@ -495,9 +495,11 @@ public final class GameActionUtil {
|
|||||||
String[] k = keyword.split(":");
|
String[] k = keyword.split(":");
|
||||||
final Cost cost = new Cost(k[1], false);
|
final Cost cost = new Cost(k[1], false);
|
||||||
costs.add(new OptionalCostValue(OptionalCost.Flash, cost));
|
costs.add(new OptionalCostValue(OptionalCost.Flash, cost));
|
||||||
|
} else if (keyword.endsWith(" offering")) {
|
||||||
|
final String type = keyword.split(" ")[0];
|
||||||
|
final Cost cost = new Cost("Sac<1/" + type + ">", false);
|
||||||
|
costs.add(new OptionalCostValue(OptionalCost.Offering, cost));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Surge while having OptionalCost is none of them
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset static abilities
|
// reset static abilities
|
||||||
@@ -524,7 +526,9 @@ public final class GameActionUtil {
|
|||||||
result.putParam("RaiseCost", sa.getParam("RaiseCost"));
|
result.putParam("RaiseCost", sa.getParam("RaiseCost"));
|
||||||
}
|
}
|
||||||
for (OptionalCostValue v : list) {
|
for (OptionalCostValue v : list) {
|
||||||
result.getPayCosts().add(v.getCost());
|
if (v.getType() != OptionalCost.Offering) {
|
||||||
|
result.getPayCosts().add(v.getCost());
|
||||||
|
}
|
||||||
result.addOptionalCost(v.getType());
|
result.addOptionalCost(v.getType());
|
||||||
|
|
||||||
// add some extra logic, try to move it to other parts
|
// add some extra logic, try to move it to other parts
|
||||||
@@ -534,6 +538,7 @@ public final class GameActionUtil {
|
|||||||
result.getRestrictions().setZone(ZoneType.Graveyard);
|
result.getRestrictions().setZone(ZoneType.Graveyard);
|
||||||
break;
|
break;
|
||||||
case Flash:
|
case Flash:
|
||||||
|
case Offering:
|
||||||
result.getRestrictions().setInstantSpeed(true);
|
result.getRestrictions().setInstantSpeed(true);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -31,20 +31,20 @@ public class PermanentEffect extends SpellAbilityEffect {
|
|||||||
final Card c = game.getAction().moveToPlay(host, sa, moveParams);
|
final Card c = game.getAction().moveToPlay(host, sa, moveParams);
|
||||||
sa.setHostCard(c);
|
sa.setHostCard(c);
|
||||||
|
|
||||||
|
// CR 608.3g
|
||||||
if (sa.isIntrinsic() || c.wasCast()) {
|
if (sa.isIntrinsic() || c.wasCast()) {
|
||||||
// some extra for Dashing
|
|
||||||
if (sa.isDash() && c.isInPlay()) {
|
if (sa.isDash() && c.isInPlay()) {
|
||||||
c.addChangedSVars(Collections.singletonMap("EndOfTurnLeavePlay", "Dash"), c.getGame().getNextTimestamp(), 0);
|
|
||||||
registerDelayedTrigger(sa, "Hand", Lists.newArrayList(c));
|
registerDelayedTrigger(sa, "Hand", Lists.newArrayList(c));
|
||||||
|
// add AI hint
|
||||||
|
c.addChangedSVars(Collections.singletonMap("EndOfTurnLeavePlay", "Dash"), c.getGame().getNextTimestamp(), 0);
|
||||||
}
|
}
|
||||||
// similar for Blitz keyword
|
|
||||||
if (sa.isBlitz() && c.isInPlay()) {
|
if (sa.isBlitz() && c.isInPlay()) {
|
||||||
c.addChangedSVars(Collections.singletonMap("EndOfTurnLeavePlay", "Blitz"), c.getGame().getNextTimestamp(), 0);
|
|
||||||
registerDelayedTrigger(sa, "Sacrifice", Lists.newArrayList(c));
|
registerDelayedTrigger(sa, "Sacrifice", Lists.newArrayList(c));
|
||||||
|
c.addChangedSVars(Collections.singletonMap("EndOfTurnLeavePlay", "Blitz"), c.getGame().getNextTimestamp(), 0);
|
||||||
}
|
}
|
||||||
if (sa.isWarp() && c.isInPlay()) {
|
if (sa.isWarp() && c.isInPlay()) {
|
||||||
c.addChangedSVars(Collections.singletonMap("EndOfTurnLeavePlay", "Warp"), c.getGame().getNextTimestamp(), 0);
|
|
||||||
registerDelayedTrigger(sa, "Exile", Lists.newArrayList(c));
|
registerDelayedTrigger(sa, "Exile", Lists.newArrayList(c));
|
||||||
|
c.addChangedSVars(Collections.singletonMap("EndOfTurnLeavePlay", "Warp"), c.getGame().getNextTimestamp(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3810,22 +3810,6 @@ public class CardFactoryUtil {
|
|||||||
newSA.setAlternativeCost(AlternativeCost.Warp);
|
newSA.setAlternativeCost(AlternativeCost.Warp);
|
||||||
newSA.setIntrinsic(intrinsic);
|
newSA.setIntrinsic(intrinsic);
|
||||||
inst.addSpellAbility(newSA);
|
inst.addSpellAbility(newSA);
|
||||||
} else if (keyword.endsWith(" offering")) {
|
|
||||||
final String offeringType = keyword.split(" ")[0];
|
|
||||||
final SpellAbility sa = card.getFirstSpellAbility();
|
|
||||||
|
|
||||||
final SpellAbility newSA = sa.copy();
|
|
||||||
|
|
||||||
SpellAbilityRestriction sar = newSA.getRestrictions();
|
|
||||||
sar.setIsPresent(offeringType + ".YouCtrl+CanBeSacrificedBy");
|
|
||||||
sar.setInstantSpeed(true);
|
|
||||||
|
|
||||||
newSA.putParam("Secondary", "True");
|
|
||||||
newSA.setAlternativeCost(AlternativeCost.Offering);
|
|
||||||
newSA.setPayCosts(sa.getPayCosts());
|
|
||||||
newSA.setDescription(sa.getDescription() + " (" + offeringType + " offering)");
|
|
||||||
newSA.setIntrinsic(intrinsic);
|
|
||||||
inst.addSpellAbility(newSA);
|
|
||||||
} else if (keyword.startsWith("Crew")) {
|
} else if (keyword.startsWith("Crew")) {
|
||||||
final String[] k = keyword.split(":");
|
final String[] k = keyword.split(":");
|
||||||
final String power = k[1];
|
final String power = k[1];
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ public enum AlternativeCost {
|
|||||||
Madness,
|
Madness,
|
||||||
MTMtE, // More Than Meets the Eye (Transformers Universes Beyond)
|
MTMtE, // More Than Meets the Eye (Transformers Universes Beyond)
|
||||||
Mutate,
|
Mutate,
|
||||||
Offering,
|
|
||||||
Overload,
|
Overload,
|
||||||
Prowl,
|
Prowl,
|
||||||
Plotted,
|
Plotted,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ public enum OptionalCost {
|
|||||||
PromiseGift("Promise Gift", ""),
|
PromiseGift("Promise Gift", ""),
|
||||||
Retrace("Retrace", ""),
|
Retrace("Retrace", ""),
|
||||||
Jumpstart("Jump-start", ""),
|
Jumpstart("Jump-start", ""),
|
||||||
|
Offering("Offering", ""),
|
||||||
ReduceW("(to reduce white mana)", "W"),
|
ReduceW("(to reduce white mana)", "W"),
|
||||||
ReduceU("(to reduce blue mana)", "U"),
|
ReduceU("(to reduce blue mana)", "U"),
|
||||||
ReduceB("(to reduce black mana)", "B"),
|
ReduceB("(to reduce black mana)", "B"),
|
||||||
|
|||||||
@@ -1609,10 +1609,10 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isOffering() {
|
public boolean isOffering() {
|
||||||
return isAlternativeCost(AlternativeCost.Offering);
|
return isOptionalCostPaid(OptionalCost.Offering);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Card getSacrificedAsOffering() { //for Patron offering
|
public Card getSacrificedAsOffering() {
|
||||||
return sacrificedAsOffering;
|
return sacrificedAsOffering;
|
||||||
}
|
}
|
||||||
public void setSacrificedAsOffering(final Card c) {
|
public void setSacrificedAsOffering(final Card c) {
|
||||||
|
|||||||
Reference in New Issue
Block a user