Skip to content

Commit f931bba

Browse files
committed
Implement block commons
1 parent 3d56d4e commit f931bba

File tree

17 files changed

+366
-2
lines changed

17 files changed

+366
-2
lines changed

src/main/java/stsjorbsmod/JorbsMod.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,17 +344,27 @@ public void receiveEditCards() {
344344

345345
logger.info("Adding cards");
346346
// Add the cards
347+
348+
// Watcher starter deck
347349
addUnlockedCard(new Defend_Wanderer(), Defend_Wanderer.ID);
348350
addUnlockedCard(new Strike_Wanderer(), Strike_Wanderer.ID);
349351
addUnlockedCard(new FreshAdventure(), FreshAdventure.ID);
350352
addUnlockedCard(new EyeOfTheStorm(), EyeOfTheStorm.ID);
353+
// Watcher damage commons
351354
addUnlockedCard(new BlackTentacles(), BlackTentacles.ID);
352355
addUnlockedCard(new ArcaneWeapon(), ArcaneWeapon.ID);
353356
addUnlockedCard(new Firebolt(), Firebolt.ID);
354357
addUnlockedCard(new MagicMissles(), MagicMissles.ID);
355358
addUnlockedCard(new AcidSplash(), AcidSplash.ID);
356359
addUnlockedCard(new TrueStrike(), TrueStrike.ID);
357360
addUnlockedCard(new RayOfFrost(), RayOfFrost.ID);
361+
// Watcher block commons
362+
addUnlockedCard(new Counterspell(), Counterspell.ID);
363+
addUnlockedCard(new MinorIllusion(), MinorIllusion.ID);
364+
addUnlockedCard(new DisguiseSelf(), DisguiseSelf.ID);
365+
addUnlockedCard(new Loss(), Loss.ID);
366+
addUnlockedCard(new DoubleCheck(), DoubleCheck.ID);
367+
addUnlockedCard(new Channel(), Channel.ID);
358368

359369
// Don't comment out/delete these cards (yet). You need 1 of each type and rarity (technically) for your game not to crash
360370
// when generating card rewards/shop screen items.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package stsjorbsmod.actions;
2+
3+
import com.megacrit.cardcrawl.actions.AbstractGameAction;
4+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
5+
import com.megacrit.cardcrawl.core.AbstractCreature;
6+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
7+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
8+
import com.megacrit.cardcrawl.powers.ArtifactPower;
9+
10+
public class CounterspellAction extends AbstractGameAction {
11+
private AbstractCreature owner;
12+
private AbstractMonster monster;
13+
14+
public CounterspellAction(AbstractCreature owner, AbstractMonster monster, int artifactAmount) {
15+
this.owner = owner;
16+
this.actionType = ActionType.WAIT;
17+
this.amount = artifactAmount;
18+
this.monster = monster;
19+
}
20+
21+
private static boolean isDebuffIntent(AbstractMonster.Intent intent) {
22+
return
23+
intent == AbstractMonster.Intent.STRONG_DEBUFF ||
24+
intent == AbstractMonster.Intent.ATTACK_DEBUFF ||
25+
intent == AbstractMonster.Intent.DEBUFF ||
26+
intent == AbstractMonster.Intent.DEFEND_DEBUFF;
27+
}
28+
29+
public void update() {
30+
if (this.monster != null && isDebuffIntent(this.monster.intent)) {
31+
AbstractDungeon.actionManager.addToBottom(
32+
new ApplyPowerAction(this.owner, this.owner, new ArtifactPower(this.owner, this.amount), this.amount));
33+
}
34+
35+
this.isDone = true;
36+
}
37+
}

src/main/java/stsjorbsmod/actions/GainMemoryClarityAction.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,21 @@
1717

1818
// "Gain clarity of your current memory"
1919
public class GainMemoryClarityAction extends AbstractGameAction {
20+
private String specificMemoryID;
21+
2022
public GainMemoryClarityAction(AbstractCreature target, AbstractCreature source) {
2123
this.setValues(target, source);
2224
}
25+
public GainMemoryClarityAction(AbstractCreature target, AbstractCreature source, String specificMemoryID) {
26+
this.setValues(target, source);
27+
this.specificMemoryID = specificMemoryID;
28+
}
2329

2430
public void update() {
2531
for (AbstractPower oldPower : this.source.powers) {
2632
if (oldPower instanceof AbstractMemoryPower) {
2733
AbstractMemoryPower oldMemory = (AbstractMemoryPower) oldPower;
28-
if (!oldMemory.isClarified) {
34+
if (!oldMemory.isClarified && (specificMemoryID == null || specificMemoryID == oldMemory.ID)) {
2935
oldMemory.flash();
3036
oldMemory.isClarified = true;
3137
oldMemory.updateDescription(); // for memories, also updates name to "Clarity of X"

src/main/java/stsjorbsmod/cards/BlackTentacles.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import static stsjorbsmod.JorbsMod.makeCardPath;
1616

17-
// Deal 10(12) damage and apply 3(5) weak
1817
public class BlackTentacles extends AbstractDynamicCard {
1918
public static final String ID = JorbsMod.makeID(BlackTentacles.class.getSimpleName());
2019
public static final String IMG = makeCardPath("Damage_Commons/black_tentacles.png");
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package stsjorbsmod.cards;
2+
3+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
4+
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
5+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
6+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
7+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
8+
import com.megacrit.cardcrawl.powers.EnergizedBluePower;
9+
import stsjorbsmod.JorbsMod;
10+
import stsjorbsmod.characters.Wanderer;
11+
12+
import static stsjorbsmod.JorbsMod.makeCardPath;
13+
14+
public class Channel extends AbstractDynamicCard {
15+
public static final String ID = JorbsMod.makeID(Channel.class.getSimpleName());
16+
public static final String IMG = makeCardPath("Block_Commons/channel.png");
17+
18+
private static final CardRarity RARITY = CardRarity.COMMON;
19+
private static final CardTarget TARGET = CardTarget.SELF;
20+
private static final CardType TYPE = CardType.SKILL;
21+
public static final CardColor COLOR = Wanderer.Enums.COLOR_GRAY;
22+
23+
private static final int COST = 1;
24+
private static final int BLOCK = 7;
25+
private static final int ENERGY_NEXT_TURN = 1;
26+
private static final int UPGRADE_PLUS_ENERGY_NEXT_TURN = 1;
27+
28+
public Channel() {
29+
super(ID, IMG, COST, TYPE, COLOR, RARITY, TARGET);
30+
block = baseBlock = BLOCK;
31+
magicNumber = baseMagicNumber = ENERGY_NEXT_TURN;
32+
}
33+
34+
@Override
35+
public void use(AbstractPlayer p, AbstractMonster m) {
36+
AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, block));
37+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new EnergizedBluePower(p, magicNumber), magicNumber));
38+
}
39+
40+
@Override
41+
public void upgrade() {
42+
if (!upgraded) {
43+
upgradeName();
44+
upgradeMagicNumber(UPGRADE_PLUS_ENERGY_NEXT_TURN);
45+
initializeDescription();
46+
}
47+
}
48+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package stsjorbsmod.cards;
2+
3+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
4+
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
5+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
6+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
7+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
8+
import com.megacrit.cardcrawl.powers.PoisonPower;
9+
import stsjorbsmod.JorbsMod;
10+
import stsjorbsmod.actions.CounterspellAction;
11+
import stsjorbsmod.characters.Wanderer;
12+
13+
import static stsjorbsmod.JorbsMod.makeCardPath;
14+
15+
public class Counterspell extends AbstractDynamicCard {
16+
public static final String ID = JorbsMod.makeID(Counterspell.class.getSimpleName());
17+
public static final String IMG = makeCardPath("Block_Commons/counterspell.png");
18+
19+
private static final CardRarity RARITY = CardRarity.COMMON;
20+
private static final CardTarget TARGET = CardTarget.ENEMY;
21+
private static final CardType TYPE = CardType.SKILL;
22+
public static final CardColor COLOR = Wanderer.Enums.COLOR_GRAY;
23+
24+
private static final int COST = 0;
25+
private static final int BLOCK = 5;
26+
private static final int UPGRADE_PLUS_BLOCK = 2;
27+
private static final int ARTIFACT = 1;
28+
private static final int UPGRADE_PLUS_ARTIFACT = 1;
29+
30+
public Counterspell() {
31+
super(ID, IMG, COST, TYPE, COLOR, RARITY, TARGET);
32+
block = baseBlock = BLOCK;
33+
magicNumber = baseMagicNumber = ARTIFACT;
34+
}
35+
36+
@Override
37+
public void use(AbstractPlayer p, AbstractMonster m) {
38+
AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, block));
39+
AbstractDungeon.actionManager.addToBottom(new CounterspellAction(p, m, magicNumber));
40+
}
41+
42+
@Override
43+
public void upgrade() {
44+
if (!upgraded) {
45+
upgradeName();
46+
upgradeBlock(UPGRADE_PLUS_BLOCK);
47+
upgradeMagicNumber(UPGRADE_PLUS_ARTIFACT);
48+
initializeDescription();
49+
}
50+
}
51+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package stsjorbsmod.cards;
2+
3+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
4+
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
5+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
6+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
7+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
8+
import com.megacrit.cardcrawl.powers.NextTurnBlockPower;
9+
import stsjorbsmod.JorbsMod;
10+
import stsjorbsmod.characters.Wanderer;
11+
12+
import static stsjorbsmod.JorbsMod.makeCardPath;
13+
14+
public class DisguiseSelf extends AbstractDynamicCard {
15+
public static final String ID = JorbsMod.makeID(DisguiseSelf.class.getSimpleName());
16+
public static final String IMG = makeCardPath("Block_Commons/disguise_self.png");
17+
18+
private static final CardRarity RARITY = CardRarity.COMMON;
19+
private static final CardTarget TARGET = CardTarget.SELF;
20+
private static final CardType TYPE = CardType.SKILL;
21+
public static final CardColor COLOR = Wanderer.Enums.COLOR_GRAY;
22+
23+
private static final int COST = 1;
24+
private static final int BLOCK = 4;
25+
private static final int UPGRADE_PLUS_BLOCK = 2;
26+
27+
public DisguiseSelf() {
28+
super(ID, IMG, COST, TYPE, COLOR, RARITY, TARGET);
29+
block = baseBlock = BLOCK;
30+
}
31+
32+
@Override
33+
public void use(AbstractPlayer p, AbstractMonster m) {
34+
AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, block));
35+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new NextTurnBlockPower(p, this.block), this.block));
36+
}
37+
38+
@Override
39+
public void upgrade() {
40+
if (!upgraded) {
41+
upgradeName();
42+
upgradeBlock(UPGRADE_PLUS_BLOCK);
43+
initializeDescription();
44+
}
45+
}
46+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package stsjorbsmod.cards;
2+
3+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
4+
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
5+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
6+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
7+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
8+
import com.megacrit.cardcrawl.powers.WeakPower;
9+
import stsjorbsmod.JorbsMod;
10+
import stsjorbsmod.actions.GainMemoryClarityAction;
11+
import stsjorbsmod.actions.RememberSpecificMemoryAction;
12+
import stsjorbsmod.characters.Wanderer;
13+
import stsjorbsmod.powers.DiligenceMemoryPower;
14+
15+
import static stsjorbsmod.JorbsMod.makeCardPath;
16+
17+
public class DoubleCheck extends AbstractDynamicCard {
18+
public static final String ID = JorbsMod.makeID(DoubleCheck.class.getSimpleName());
19+
public static final String IMG = makeCardPath("Block_Commons/double_check.png");
20+
21+
private static final CardRarity RARITY = CardRarity.COMMON;
22+
private static final CardTarget TARGET = CardTarget.SELF;
23+
private static final CardType TYPE = CardType.SKILL;
24+
public static final CardColor COLOR = Wanderer.Enums.COLOR_GRAY;
25+
26+
private static final int COST = 1;
27+
private static final int BLOCK = 5;
28+
private static final int UPGRADE_PLUS_BLOCK = 3;
29+
30+
public DoubleCheck() {
31+
super(ID, IMG, COST, TYPE, COLOR, RARITY, TARGET);
32+
block = baseBlock = BLOCK;
33+
}
34+
35+
@Override
36+
public void use(AbstractPlayer p, AbstractMonster m) {
37+
AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, block));
38+
AbstractDungeon.actionManager.addToBottom(new GainMemoryClarityAction(p, p, DiligenceMemoryPower.POWER_ID));
39+
AbstractDungeon.actionManager.addToBottom(new RememberSpecificMemoryAction(p, p, new DiligenceMemoryPower(p, p)));
40+
}
41+
42+
@Override
43+
public void upgrade() {
44+
if (!upgraded) {
45+
upgradeName();
46+
upgradeBlock(UPGRADE_PLUS_BLOCK);
47+
initializeDescription();
48+
}
49+
}
50+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package stsjorbsmod.cards;
2+
3+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
4+
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
5+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
6+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
7+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
8+
import com.megacrit.cardcrawl.powers.NextTurnBlockPower;
9+
import com.megacrit.cardcrawl.powers.WeakPower;
10+
import stsjorbsmod.JorbsMod;
11+
import stsjorbsmod.characters.Wanderer;
12+
13+
import static stsjorbsmod.JorbsMod.makeCardPath;
14+
15+
public class Loss extends AbstractDynamicCard {
16+
public static final String ID = JorbsMod.makeID(Loss.class.getSimpleName());
17+
public static final String IMG = makeCardPath("Block_Commons/loss.png");
18+
19+
private static final CardRarity RARITY = CardRarity.COMMON;
20+
private static final CardTarget TARGET = CardTarget.SELF;
21+
private static final CardType TYPE = CardType.SKILL;
22+
public static final CardColor COLOR = Wanderer.Enums.COLOR_GRAY;
23+
24+
private static final int COST = 1;
25+
private static final int BLOCK = 10;
26+
private static final int UPGRADE_PLUS_BLOCK = 4;
27+
private static final int WEAK = 1;
28+
29+
public Loss() {
30+
super(ID, IMG, COST, TYPE, COLOR, RARITY, TARGET);
31+
block = baseBlock = BLOCK;
32+
magicNumber = baseMagicNumber = WEAK;
33+
}
34+
35+
@Override
36+
public void use(AbstractPlayer p, AbstractMonster m) {
37+
AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, block));
38+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(p, p, new WeakPower(p, this.magicNumber, false), this.magicNumber));
39+
}
40+
41+
@Override
42+
public void upgrade() {
43+
if (!upgraded) {
44+
upgradeName();
45+
upgradeBlock(UPGRADE_PLUS_BLOCK);
46+
initializeDescription();
47+
}
48+
}
49+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package stsjorbsmod.cards;
2+
3+
import com.megacrit.cardcrawl.actions.common.GainBlockAction;
4+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
5+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
6+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
7+
import stsjorbsmod.JorbsMod;
8+
import stsjorbsmod.actions.CounterspellAction;
9+
import stsjorbsmod.characters.Wanderer;
10+
11+
import static stsjorbsmod.JorbsMod.makeCardPath;
12+
13+
public class MinorIllusion extends AbstractDynamicCard {
14+
public static final String ID = JorbsMod.makeID(MinorIllusion.class.getSimpleName());
15+
public static final String IMG = makeCardPath("Block_Commons/minor_illusion.png");
16+
17+
private static final CardRarity RARITY = CardRarity.COMMON;
18+
private static final CardTarget TARGET = CardTarget.SELF;
19+
private static final CardType TYPE = CardType.SKILL;
20+
public static final CardColor COLOR = Wanderer.Enums.COLOR_GRAY;
21+
22+
private static final int COST = 0;
23+
private static final int BLOCK = 5;
24+
private static final int UPGRADE_PLUS_BLOCK = 3;
25+
26+
public MinorIllusion() {
27+
super(ID, IMG, COST, TYPE, COLOR, RARITY, TARGET);
28+
block = baseBlock = BLOCK;
29+
}
30+
31+
@Override
32+
public void use(AbstractPlayer p, AbstractMonster m) {
33+
AbstractDungeon.actionManager.addToBottom(new GainBlockAction(p, p, block));
34+
}
35+
36+
@Override
37+
public void upgrade() {
38+
if (!upgraded) {
39+
upgradeName();
40+
upgradeBlock(UPGRADE_PLUS_BLOCK);
41+
initializeDescription();
42+
}
43+
}
44+
}

0 commit comments

Comments
 (0)