Skip to content

Commit ccc8610

Browse files
author
GDami
committed
28 cards !!! More patches !!!
1 parent 3da6797 commit ccc8610

27 files changed

Lines changed: 383 additions & 45 deletions

src/main/java/upgradeddefectmod/UpgradedDefect.java

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@
33
import basemod.BaseMod;
44
import basemod.helpers.RelicType;
55
import basemod.interfaces.*;
6+
import com.badlogic.gdx.Gdx;
67
import com.evacipated.cardcrawl.modthespire.lib.SpireInitializer;
8+
import com.google.gson.Gson;
9+
import com.google.gson.reflect.TypeToken;
710
import com.megacrit.cardcrawl.cards.AbstractCard;
811
import com.megacrit.cardcrawl.localization.CardStrings;
12+
import com.megacrit.cardcrawl.localization.Keyword;
913
import com.megacrit.cardcrawl.localization.PowerStrings;
1014
import com.megacrit.cardcrawl.localization.RelicStrings;
1115
import com.megacrit.cardcrawl.unlock.UnlockTracker;
@@ -16,12 +20,16 @@
1620
import upgradeddefectmod.relics.Kaleidoscope;
1721
import upgradeddefectmod.relics.Stalactite;
1822

23+
import java.lang.reflect.Type;
24+
import java.nio.charset.StandardCharsets;
25+
import java.util.Map;
26+
1927
@SpireInitializer
2028
public class UpgradedDefect implements EditKeywordsSubscriber, EditRelicsSubscriber, EditCardsSubscriber, EditStringsSubscriber {
2129

2230
private static final String ASSETS_FOLDER = "img/";
2331

24-
private static final Logger logger = LogManager.getLogger(UpgradedDefect.class.getName());
32+
public static final Logger logger = LogManager.getLogger(UpgradedDefect.class.getName());
2533

2634
public UpgradedDefect() {
2735
BaseMod.subscribe(this);
@@ -59,7 +67,13 @@ public void receiveEditCards() {
5967
BaseMod.addCard(new CustomChill());
6068
BaseMod.addCard(new CustomMachineLearning());
6169
BaseMod.addCard(new Discharge());
70+
BaseMod.addCard(new ClawCounter());
71+
BaseMod.addCard(new Clawrd());
72+
BaseMod.addCard(new CleanUp());
6273

74+
UnlockTracker.unlockCard(CleanUp.ID);
75+
UnlockTracker.unlockCard(Clawrd.ID);
76+
UnlockTracker.unlockCard(ClawCounter.ID);
6377
UnlockTracker.unlockCard(Discharge.ID);
6478
UnlockTracker.unlockCard(CustomMachineLearning.ID);
6579
UnlockTracker.unlockCard(CustomChill.ID);
@@ -87,6 +101,9 @@ public void receiveEditCards() {
87101
UnlockTracker.unlockCard(IceBeam.ID);
88102

89103

104+
BaseMod.removeCard("Meteor Strike", AbstractCard.CardColor.BLUE);
105+
BaseMod.removeCard("Multi-Cast", AbstractCard.CardColor.BLUE);
106+
BaseMod.removeCard("Streamline", AbstractCard.CardColor.BLUE);
90107
BaseMod.removeCard("Melter", AbstractCard.CardColor.BLUE);
91108
BaseMod.removeCard("Machine Learning", AbstractCard.CardColor.BLUE);
92109
BaseMod.removeCard("Chill", AbstractCard.CardColor.BLUE);
@@ -160,11 +177,21 @@ public void receiveEditRelics() {
160177

161178
@Override
162179
public void receiveEditKeywords() {
163-
String[] host = {"host"};
164-
BaseMod.addKeyword(host, "The parasite eats away at the host, who loses HP every turn.");
165-
String[] claw = {"claw"};
166-
BaseMod.addKeyword(claw, "Increase the damage of ALL Claw cards by 1 this combat.");
167180

181+
Type typeToken = new TypeToken<Map<String, Keyword>>(){}.getType();
182+
Gson gson = new Gson();
183+
String strings = loadJson("localization/UpgradedDefect-keywordStrings.json");
184+
Map<String,Keyword> keywords = gson.fromJson(strings, typeToken);
185+
for (Keyword kw : keywords.values()) {
186+
BaseMod.addKeyword(kw.NAMES, kw.DESCRIPTION);
187+
}
188+
logger.info("done editing keywords");
189+
190+
191+
}
192+
193+
private static String loadJson(String jsonPath) {
194+
return Gdx.files.internal(jsonPath).readString(String.valueOf(StandardCharsets.UTF_8));
168195
}
169196

170197
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package upgradeddefectmod.cards.blue;
2+
3+
import basemod.abstracts.CustomCard;
4+
import com.megacrit.cardcrawl.actions.AbstractGameAction;
5+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
6+
import com.megacrit.cardcrawl.actions.common.DamageAction;
7+
import com.megacrit.cardcrawl.actions.unique.ApplyBulletTimeAction;
8+
import com.megacrit.cardcrawl.cards.AbstractCard;
9+
import com.megacrit.cardcrawl.cards.DamageInfo;
10+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
11+
import com.megacrit.cardcrawl.core.CardCrawlGame;
12+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
13+
import com.megacrit.cardcrawl.localization.CardStrings;
14+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
15+
import com.megacrit.cardcrawl.powers.WeakPower;
16+
import upgradeddefectmod.UpgradedDefect;
17+
import upgradeddefectmod.actions.ClawAction;
18+
import upgradeddefectmod.cards.tags.CustomCardTags;
19+
20+
public class ClawCounter extends CustomCard {
21+
22+
public static final String ID = "UpgradedDefect:ClawCounter";
23+
private static final String IMG_NAME = UpgradedDefect.makeCardPath(ID.split(":")[1]);
24+
private static final CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
25+
private static final String NAME = cardStrings.NAME;
26+
private static final String DESCRIPTION = cardStrings.DESCRIPTION;
27+
private static final int COST = 1;
28+
29+
public ClawCounter() {
30+
super(ID, NAME, IMG_NAME, COST, DESCRIPTION, AbstractCard.CardType.ATTACK, AbstractCard.CardColor.BLUE, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.ENEMY);
31+
this.baseDamage = 7;
32+
this.baseMagicNumber = 2;
33+
this.magicNumber = this.baseMagicNumber;
34+
this.tags.add(CustomCardTags.CLAW);
35+
}
36+
37+
public AbstractCard makeCopy() {
38+
return new ClawCounter();
39+
}
40+
41+
@Override
42+
public void upgrade() {
43+
if (!this.upgraded) {
44+
this.upgradeMagicNumber(1);
45+
this.upgradeDamage(2);
46+
this.upgradeName();
47+
}
48+
}
49+
50+
@Override
51+
public void use(AbstractPlayer p, AbstractMonster m) {
52+
AbstractDungeon.actionManager.addToBottom(new DamageAction(m, new DamageInfo(p, this.damage, this.damageTypeForTurn), AbstractGameAction.AttackEffect.SMASH));
53+
AbstractDungeon.actionManager.addToBottom(new ClawAction(this));
54+
if (m != null && m.getIntentBaseDmg() >= 0) {
55+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(m, p, new WeakPower(m, this.magicNumber, false), this.magicNumber));
56+
}
57+
}
58+
}

src/main/java/upgradeddefectmod/cards/blue/Clawbound.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class Clawbound extends CustomCard {
2020

2121

2222
public static final String ID = "UpgradedDefect:Clawbound";
23-
private static final String IMG_NAME = UpgradedDefect.makeCardPath("Clawbound");
23+
private static final String IMG_NAME = UpgradedDefect.makeCardPath(ID.split(":")[1]);
2424
private static final CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
2525
private static final String NAME = cardStrings.NAME;
2626
private static final String DESCRIPTION = cardStrings.DESCRIPTION;
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package upgradeddefectmod.cards.blue;
2+
3+
import basemod.abstracts.CustomCard;
4+
import com.megacrit.cardcrawl.actions.AbstractGameAction;
5+
import com.megacrit.cardcrawl.actions.common.DamageRandomEnemyAction;
6+
import com.megacrit.cardcrawl.cards.AbstractCard;
7+
import com.megacrit.cardcrawl.cards.DamageInfo;
8+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
9+
import com.megacrit.cardcrawl.core.CardCrawlGame;
10+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
11+
import com.megacrit.cardcrawl.localization.CardStrings;
12+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
13+
import upgradeddefectmod.UpgradedDefect;
14+
import upgradeddefectmod.actions.ClawAction;
15+
import upgradeddefectmod.cards.tags.CustomCardTags;
16+
17+
public class Clawrd extends CustomCard {
18+
19+
public static final String ID = "UpgradedDefect:Clawrd";
20+
private static final String IMG_NAME = UpgradedDefect.makeCardPath(ID.split(":")[1]);
21+
private static final CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
22+
private static final String NAME = cardStrings.NAME;
23+
private static final String DESCRIPTION = cardStrings.DESCRIPTION;
24+
private static final int COST = 2;
25+
26+
public Clawrd() {
27+
super(ID, NAME, IMG_NAME, COST, DESCRIPTION, AbstractCard.CardType.ATTACK, AbstractCard.CardColor.BLUE, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.NONE);
28+
this.baseDamage = 2;
29+
this.baseMagicNumber = 4;
30+
this.magicNumber = this.baseMagicNumber;
31+
this.tags.add(CustomCardTags.CLAW);
32+
}
33+
34+
public AbstractCard makeCopy() {
35+
return new Clawrd();
36+
}
37+
38+
39+
@Override
40+
public void upgrade() {
41+
if (!this.upgraded) {
42+
this.upgradeName();
43+
this.upgradeMagicNumber(2);
44+
}
45+
}
46+
47+
@Override
48+
public void use(AbstractPlayer p, AbstractMonster m) {
49+
for (int i=0; i<this.magicNumber; i++) {
50+
AbstractDungeon.actionManager.addToBottom(new DamageRandomEnemyAction(new DamageInfo(p, this.damage, DamageInfo.DamageType.NORMAL), AbstractGameAction.AttackEffect.SMASH));
51+
}
52+
AbstractDungeon.actionManager.addToBottom(new ClawAction(this));
53+
}
54+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package upgradeddefectmod.cards.blue;
2+
3+
import basemod.abstracts.CustomCard;
4+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
5+
import com.megacrit.cardcrawl.cards.AbstractCard;
6+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
7+
import com.megacrit.cardcrawl.core.CardCrawlGame;
8+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
9+
import com.megacrit.cardcrawl.localization.CardStrings;
10+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
11+
import upgradeddefectmod.UpgradedDefect;
12+
import upgradeddefectmod.powers.CleanUpPower;
13+
14+
public class CleanUp extends CustomCard {
15+
16+
17+
public static final String ID = "UpgradedDefect:CleanUp";
18+
private static final String IMG_NAME = UpgradedDefect.makeCardPath(ID.split(":")[1]);
19+
private static final CardStrings cardStrings = CardCrawlGame.languagePack.getCardStrings(ID);
20+
private static final String NAME = cardStrings.NAME;
21+
private static final String DESCRIPTION = cardStrings.DESCRIPTION;
22+
private static final String UPGRADE_DESCRIPTION = cardStrings.UPGRADE_DESCRIPTION;
23+
private static final int COST = 1;
24+
25+
public CleanUp() {
26+
super(ID, NAME, IMG_NAME, COST, DESCRIPTION, AbstractCard.CardType.POWER, AbstractCard.CardColor.BLUE, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.NONE);
27+
this.baseMagicNumber = 1;
28+
this.magicNumber = this.baseMagicNumber;
29+
}
30+
31+
public AbstractCard makeCopy() {
32+
return new CleanUp();
33+
}
34+
35+
@Override
36+
public void upgrade() {
37+
if (!this.upgraded) {
38+
this.isInnate = true;
39+
this.upgradeName();
40+
this.rawDescription = UPGRADE_DESCRIPTION;
41+
this.initializeDescription();
42+
}
43+
}
44+
45+
@Override
46+
public void use(AbstractPlayer p, AbstractMonster m) {
47+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new CleanUpPower(p, this.magicNumber), this.magicNumber));
48+
}
49+
}

src/main/java/upgradeddefectmod/cards/blue/CustomBattery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public class CustomBattery extends CustomCard {
2424

2525
public CustomBattery() {
2626
super(ID, NAME, IMG_NAME, COST, DESCRIPTION, AbstractCard.CardType.SKILL, AbstractCard.CardColor.BLUE, AbstractCard.CardRarity.COMMON, AbstractCard.CardTarget.NONE);
27-
this.baseBlock = 6;
27+
this.baseBlock = 5;
2828
this.baseMagicNumber = 1;
2929
this.magicNumber = this.baseMagicNumber;
3030
}

src/main/java/upgradeddefectmod/cards/blue/CustomMachineLearning.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class CustomMachineLearning extends CustomCard {
2222
private static final int COST = 1;
2323

2424
public CustomMachineLearning() {
25-
super(ID, NAME, IMG_NAME, COST, DESCRIPTION, AbstractCard.CardType.POWER, AbstractCard.CardColor.BLUE, AbstractCard.CardRarity.RARE, AbstractCard.CardTarget.NONE);
25+
super(ID, NAME, IMG_NAME, COST, DESCRIPTION, AbstractCard.CardType.POWER, AbstractCard.CardColor.BLUE, AbstractCard.CardRarity.UNCOMMON, AbstractCard.CardTarget.NONE);
2626
this.baseMagicNumber = 1;
2727
this.magicNumber = this.baseMagicNumber;
2828
}

src/main/java/upgradeddefectmod/cards/blue/Parasite.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class Parasite extends CustomCard {
2121
private static final int COST = 1;
2222

2323
public Parasite() {
24-
super(ID, NAME, IMG_NAME, COST, DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.RARE, CardTarget.ENEMY);
24+
super(ID, NAME, IMG_NAME, COST, DESCRIPTION, CardType.SKILL, CardColor.BLUE, CardRarity.UNCOMMON, CardTarget.ENEMY);
2525
this.baseMagicNumber = 4;
2626
this.magicNumber = this.baseMagicNumber;
2727
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package upgradeddefectmod.patches;
2+
3+
4+
import com.evacipated.cardcrawl.modthespire.lib.*;
5+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
6+
import com.megacrit.cardcrawl.monsters.MonsterGroup;
7+
import com.megacrit.cardcrawl.powers.AbstractPower;
8+
import upgradeddefectmod.powers.UpgradedDefectPower;
9+
10+
11+
// To trigger things after the end of round, after turn-based effects are triggered
12+
@SpirePatch(
13+
clz = MonsterGroup.class,
14+
method = "applyEndOfTurnPowers"
15+
)
16+
public class AfterMonstersTurnPatch {
17+
18+
public static void Postfix(MonsterGroup __instance) {
19+
for (AbstractPower p : AbstractDungeon.player.powers) {
20+
if (p instanceof UpgradedDefectPower) {
21+
((UpgradedDefectPower) p).afterMonstersTurn();
22+
}
23+
}
24+
}
25+
26+
27+
28+
29+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package upgradeddefectmod.patches;
2+
3+
4+
import com.evacipated.cardcrawl.modthespire.lib.*;
5+
import com.evacipated.cardcrawl.modthespire.patcher.PatchingException;
6+
import com.megacrit.cardcrawl.actions.AbstractGameAction;
7+
import com.megacrit.cardcrawl.actions.GameActionManager;
8+
import javassist.CannotCompileException;
9+
import javassist.CtBehavior;
10+
import upgradeddefectmod.UpgradedDefect;
11+
12+
@SpirePatch(
13+
clz = GameActionManager.class,
14+
method = "update"
15+
)
16+
public class TestPatch {
17+
18+
@SpireInsertPatch(
19+
locator = Locator.class
20+
)
21+
public static void patchName(GameActionManager __instance) {
22+
// UpgradedDefect.logger.info(__instance.currentAction.toString());
23+
}
24+
25+
private static class Locator extends SpireInsertLocator {
26+
27+
public int[] Locate(CtBehavior ctMethodToPatch) throws CannotCompileException, PatchingException {
28+
Matcher matcher = new Matcher.MethodCallMatcher(AbstractGameAction.class, "update");
29+
return new int[]{LineFinder.findInOrder(ctMethodToPatch, matcher)[0]};
30+
}
31+
}
32+
33+
}

0 commit comments

Comments
 (0)