mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
- Added Taste of Paradise with pseudokicker structure
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -14087,6 +14087,7 @@ forge-gui/res/cardsfolder/t/task_force.txt svneol=native#text/plain
|
|||||||
forge-gui/res/cardsfolder/t/task_mage_assembly.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/t/task_mage_assembly.txt svneol=native#text/plain
|
||||||
forge-gui/res/cardsfolder/t/taste_for_mayhem.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/t/taste_for_mayhem.txt svneol=native#text/plain
|
||||||
forge-gui/res/cardsfolder/t/taste_of_blood.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/t/taste_of_blood.txt svneol=native#text/plain
|
||||||
|
forge-gui/res/cardsfolder/t/taste_of_paradise.txt -text
|
||||||
forge-gui/res/cardsfolder/t/tatsumasa_the_dragons_fang.txt -text
|
forge-gui/res/cardsfolder/t/tatsumasa_the_dragons_fang.txt -text
|
||||||
forge-gui/res/cardsfolder/t/tattered_drake.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/t/tattered_drake.txt svneol=native#text/plain
|
||||||
forge-gui/res/cardsfolder/t/tatterkite.txt svneol=native#text/plain
|
forge-gui/res/cardsfolder/t/tatterkite.txt svneol=native#text/plain
|
||||||
|
|||||||
@@ -1785,8 +1785,7 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
|| keyword.startsWith("May be played") || keyword.startsWith("Conspire")
|
|| keyword.startsWith("May be played") || keyword.startsWith("Conspire")
|
||||||
|| keyword.startsWith("Cascade") || keyword.startsWith("Wither")
|
|| keyword.startsWith("Cascade") || keyword.startsWith("Wither")
|
||||||
|| (keyword.startsWith("Epic") && !sb.toString().contains("Epic"))
|
|| (keyword.startsWith("Epic") && !sb.toString().contains("Epic"))
|
||||||
|| (keyword.startsWith("Split second") && !sb.toString().contains("Split second"))
|
|| (keyword.startsWith("Split second") && !sb.toString().contains("Split second"))) {
|
||||||
|| (keyword.startsWith("Multikicker") && !sb.toString().contains("Multikicker"))) {
|
|
||||||
sb.append(keyword).append("\r\n");
|
sb.append(keyword).append("\r\n");
|
||||||
}
|
}
|
||||||
else if (keyword.equals("You may cast CARDNAME as though it had flash if you pay 2 more to cast it.")) {
|
else if (keyword.equals("You may cast CARDNAME as though it had flash if you pay 2 more to cast it.")) {
|
||||||
@@ -1818,6 +1817,11 @@ public class Card extends GameEntity implements Comparable<Card> {
|
|||||||
sb.append("Entwine ").append(cost.toSimpleString());
|
sb.append("Entwine ").append(cost.toSimpleString());
|
||||||
sb.append(" (Choose both if you pay the entwine cost.)");
|
sb.append(" (Choose both if you pay the entwine cost.)");
|
||||||
sb.append("\r\n");
|
sb.append("\r\n");
|
||||||
|
} else if (keyword.startsWith("Multikicker")) {
|
||||||
|
if (!keyword.endsWith("Generic")) {
|
||||||
|
final Cost cost = new Cost(keyword.substring(7), false);
|
||||||
|
sb.append("Multikicker " + cost.toSimpleString() + "\r\n");
|
||||||
|
}
|
||||||
} else if (keyword.startsWith("Kicker")) {
|
} else if (keyword.startsWith("Kicker")) {
|
||||||
if (!keyword.endsWith("Generic")) {
|
if (!keyword.endsWith("Generic")) {
|
||||||
final Cost cost = new Cost(keyword.substring(7), false);
|
final Cost cost = new Cost(keyword.substring(7), false);
|
||||||
|
|||||||
@@ -1372,6 +1372,9 @@ public class CardFactoryUtil {
|
|||||||
if (sq[0].contains("TimesKicked")) {
|
if (sq[0].contains("TimesKicked")) {
|
||||||
return doXMath(c.getKickerMagnitude(), m, c);
|
return doXMath(c.getKickerMagnitude(), m, c);
|
||||||
}
|
}
|
||||||
|
if (sq[0].contains("TimesPseudokicked")) {
|
||||||
|
return doXMath(c.getPseudoKickerMagnitude(), m, c);
|
||||||
|
}
|
||||||
|
|
||||||
// Count$IfMainPhase.<numMain>.<numNotMain> // 7/10
|
// Count$IfMainPhase.<numMain>.<numNotMain> // 7/10
|
||||||
if (sq[0].contains("IfMainPhase")) {
|
if (sq[0].contains("IfMainPhase")) {
|
||||||
@@ -2107,10 +2110,14 @@ public class CardFactoryUtil {
|
|||||||
for (String keyword : card.getKeywords()) {
|
for (String keyword : card.getKeywords()) {
|
||||||
if (keyword.startsWith("Multikicker")) {
|
if (keyword.startsWith("Multikicker")) {
|
||||||
final String[] k = keyword.split("kicker ");
|
final String[] k = keyword.split("kicker ");
|
||||||
|
String mkCost = k[1].split(":")[0];
|
||||||
final SpellAbility sa = card.getFirstSpellAbility();
|
final SpellAbility sa = card.getFirstSpellAbility();
|
||||||
sa.setMultiKickerManaCost(new ManaCost(new ManaCostParser(k[1])));
|
sa.setMultiKickerManaCost(new ManaCost(new ManaCostParser(mkCost)));
|
||||||
sa.addAnnounceVar("Multikicker");
|
if (k[1].endsWith("Generic")) {
|
||||||
|
sa.addAnnounceVar("Pseudo-multikicker");
|
||||||
|
} else {
|
||||||
|
sa.addAnnounceVar("Multikicker");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (keyword.startsWith("Replicate")) {
|
else if (keyword.startsWith("Replicate")) {
|
||||||
card.getFirstSpellAbility().addAnnounceVar("Replicate");
|
card.getFirstSpellAbility().addAnnounceVar("Replicate");
|
||||||
|
|||||||
10
forge-gui/res/cardsfolder/t/taste_of_paradise.txt
Normal file
10
forge-gui/res/cardsfolder/t/taste_of_paradise.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
Name:Taste of Paradise
|
||||||
|
ManaCost:3 G
|
||||||
|
Types:Sorcery
|
||||||
|
Text:As an additional cost to cast Taste of Paradise, you may pay {1}{G} any number of times.
|
||||||
|
K:Multikicker 1 G : Generic
|
||||||
|
A:SP$ GainLife | Cost$ 3 G | Defined$ You | LifeAmount$ Y | References$ X,Y | SpellDescription$ You gains 3 life plus an additional 3 life for each additional {1}{G} you paid.
|
||||||
|
SVar:Y:SVar$X/Plus.3
|
||||||
|
SVar:X:Count$TimesPseudokicked/Times.3
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/taste_of_paradise.jpg
|
||||||
|
Oracle:As an additional cost to cast Taste of Paradise, you may pay {1}{G} any number of times.\nYou gain 3 life plus an additional 3 life for each additional {1}{G} you paid.
|
||||||
@@ -743,6 +743,14 @@ public class HumanPlay {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int timesPseudokicked = source.getPseudoKickerMagnitude();
|
||||||
|
if (timesPseudokicked > 0 && ability.isAnnouncing("Pseudo-multikicker")) {
|
||||||
|
ManaCost mkCost = ability.getMultiKickerManaCost();
|
||||||
|
for (int i = 0; i < timesPseudokicked; i++) {
|
||||||
|
toPay.addManaCost(mkCost);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Integer replicate = ability.getSVarInt("Replicate");
|
Integer replicate = ability.getSVarInt("Replicate");
|
||||||
if (replicate != null) {
|
if (replicate != null) {
|
||||||
ManaCost rCost = source.getManaCost();
|
ManaCost rCost = source.getManaCost();
|
||||||
|
|||||||
@@ -239,6 +239,8 @@ public class HumanPlaySpellAbility {
|
|||||||
ability.setSVar(varName, value.toString());
|
ability.setSVar(varName, value.toString());
|
||||||
if ("Multikicker".equals(varName)) {
|
if ("Multikicker".equals(varName)) {
|
||||||
card.setKickerMagnitude(value);
|
card.setKickerMagnitude(value);
|
||||||
|
} else if ("Pseudo-multikicker".equals(varName)) {
|
||||||
|
card.setPseudoMultiKickerMagnitude(value);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
card.setSVar(varName, value.toString());
|
card.setSVar(varName, value.toString());
|
||||||
|
|||||||
Reference in New Issue
Block a user