Skip to content

Commit 079034d

Browse files
committed
Implement AOE commons
1 parent c0d15b8 commit 079034d

File tree

7 files changed

+164
-0
lines changed

7 files changed

+164
-0
lines changed

src/main/java/stsjorbsmod/JorbsMod.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,9 @@ public void receiveEditCards() {
365365
addUnlockedCard(new Loss(), Loss.ID);
366366
addUnlockedCard(new DoubleCheck(), DoubleCheck.ID);
367367
addUnlockedCard(new Channel(), Channel.ID);
368+
// Watcher AOE commons
369+
addUnlockedCard(new PoisonSpray(), PoisonSpray.ID);
370+
addUnlockedCard(new ChainLightning(), ChainLightning.ID);
368371

369372
// Don't comment out/delete these cards (yet). You need 1 of each type and rarity (technically) for your game not to crash
370373
// when generating card rewards/shop screen items.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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.actions.common.AttackDamageRandomEnemyAction;
6+
import com.megacrit.cardcrawl.actions.common.DamageAction;
7+
import com.megacrit.cardcrawl.cards.DamageInfo;
8+
import com.megacrit.cardcrawl.core.AbstractCreature;
9+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
10+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
11+
import com.megacrit.cardcrawl.powers.ArtifactPower;
12+
13+
import java.util.ArrayList;
14+
15+
public class ChainLightningAction extends AbstractGameAction {
16+
private AbstractCreature owner;
17+
private AbstractMonster initialTarget;
18+
ArrayList<AbstractMonster> allTargets;
19+
private int damage;
20+
private int extraDamagePerHop;
21+
22+
public ChainLightningAction(AbstractCreature owner, AbstractMonster initialTarget, ArrayList<AbstractMonster> allTargets, int damage, int extraDamagePerHop, AttackEffect attackEffect) {
23+
this.owner = owner;
24+
this.initialTarget = initialTarget;
25+
this.allTargets = allTargets;
26+
this.damage = damage;
27+
this.extraDamagePerHop = extraDamagePerHop;
28+
this.attackEffect = attackEffect;
29+
}
30+
31+
public void update() {
32+
ArrayList<AbstractMonster> remainingTargets = (ArrayList<AbstractMonster>) allTargets.clone();
33+
int nextTargetIndex = remainingTargets.indexOf(initialTarget);
34+
int currentDamage = this.damage;
35+
36+
do {
37+
AbstractMonster nextTarget = remainingTargets.remove(nextTargetIndex);
38+
39+
if (!nextTarget.halfDead && !nextTarget.isDying && !nextTarget.isEscaping) {
40+
AbstractDungeon.actionManager.addToTop(
41+
new DamageAction(nextTarget, new DamageInfo(owner, currentDamage, DamageInfo.DamageType.NORMAL), this.attackEffect));
42+
currentDamage += this.extraDamagePerHop;
43+
}
44+
45+
nextTargetIndex = AbstractDungeon.cardRandomRng.random(0, remainingTargets.size() - 1);
46+
} while (!remainingTargets.isEmpty());
47+
48+
this.isDone = true;
49+
}
50+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package stsjorbsmod.cards;
2+
3+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
4+
import com.megacrit.cardcrawl.characters.AbstractPlayer;
5+
import com.megacrit.cardcrawl.dungeons.AbstractDungeon;
6+
import com.megacrit.cardcrawl.monsters.AbstractMonster;
7+
import com.megacrit.cardcrawl.powers.PoisonPower;
8+
import stsjorbsmod.JorbsMod;
9+
import stsjorbsmod.actions.ChainLightningAction;
10+
import stsjorbsmod.characters.Wanderer;
11+
12+
import static stsjorbsmod.JorbsMod.makeCardPath;
13+
14+
public class ChainLightning extends AbstractDynamicCard {
15+
public static final String ID = JorbsMod.makeID(ChainLightning.class.getSimpleName());
16+
public static final String IMG = makeCardPath("AOE_Commons/chain_lightning.png");
17+
18+
private static final CardRarity RARITY = CardRarity.COMMON;
19+
private static final CardTarget TARGET = CardTarget.ENEMY;
20+
private static final CardType TYPE = CardType.ATTACK;
21+
public static final CardColor COLOR = Wanderer.Enums.COLOR_GRAY;
22+
23+
private static final int COST = 1;
24+
private static final int DAMAGE = 7;
25+
private static final int DAMAGE_PLUS_PER_HOP = 2;
26+
private static final int UPGRADE_PLUS_DMG = 2;
27+
28+
public ChainLightning() {
29+
super(ID, IMG, COST, TYPE, COLOR, RARITY, TARGET);
30+
damage = baseDamage = DAMAGE;
31+
magicNumber = baseMagicNumber = DAMAGE_PLUS_PER_HOP;
32+
}
33+
34+
@Override
35+
public void use(AbstractPlayer p, AbstractMonster m) {
36+
AbstractDungeon.actionManager.addToBottom(new ChainLightningAction(p, m, AbstractDungeon.getMonsters().monsters, damage, magicNumber));
37+
}
38+
39+
@Override
40+
public void upgrade() {
41+
if (!upgraded) {
42+
upgradeName();
43+
upgradeDamage(UPGRADE_PLUS_DMG);
44+
initializeDescription();
45+
}
46+
}
47+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package stsjorbsmod.cards;
2+
3+
import basemod.abstracts.cardbuilder.actionbuilder.ApplyPowerActionBuilder;
4+
import com.megacrit.cardcrawl.actions.common.ApplyPowerAction;
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 com.megacrit.cardcrawl.powers.WeakPower;
10+
import stsjorbsmod.JorbsMod;
11+
import stsjorbsmod.characters.Wanderer;
12+
13+
import java.util.Iterator;
14+
15+
import static stsjorbsmod.JorbsMod.makeCardPath;
16+
17+
public class PoisonSpray extends AbstractDynamicCard {
18+
public static final String ID = JorbsMod.makeID(PoisonSpray.class.getSimpleName());
19+
public static final String IMG = makeCardPath("AOE_Commons/poison_spray.png");
20+
21+
private static final CardRarity RARITY = CardRarity.COMMON;
22+
private static final CardTarget TARGET = CardTarget.ALL_ENEMY;
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 POISON = 4;
28+
private static final int UPGRADE_PLUS_POISON = 2;
29+
30+
public PoisonSpray() {
31+
super(ID, IMG, COST, TYPE, COLOR, RARITY, TARGET);
32+
magicNumber = baseMagicNumber = POISON;
33+
}
34+
35+
@Override
36+
public void use(AbstractPlayer p, AbstractMonster m) {
37+
if (AbstractDungeon.getMonsters().areMonstersBasicallyDead()) {
38+
return;
39+
}
40+
41+
for(AbstractMonster monster : AbstractDungeon.getMonsters().monsters) {
42+
if (!monster.isDead && !monster.isDying) {
43+
AbstractDungeon.actionManager.addToBottom(new ApplyPowerAction(monster, p, new PoisonPower(monster, p, this.magicNumber), this.magicNumber));
44+
}
45+
}
46+
}
47+
48+
@Override
49+
public void upgrade() {
50+
if (!upgraded) {
51+
upgradeName();
52+
upgradeMagicNumber(UPGRADE_PLUS_POISON);
53+
initializeDescription();
54+
}
55+
}
56+
}
7.08 KB
Loading
6.01 KB
Loading

src/main/resources/stsjorbsmodResources/localization/eng/JorbsMod-Card-Strings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,5 +93,13 @@
9393
"stsjorbsmod:Channel": {
9494
"NAME": "Channel",
9595
"DESCRIPTION": "Gain !B! Block. NL Gain !M! [E] next turn."
96+
},
97+
"stsjorbsmod:PoisonSpray": {
98+
"NAME": "PoisonSpray",
99+
"DESCRIPTION": "Apply !M! Poison to ALL enemies."
100+
},
101+
"stsjorbsmod:ChainLightning": {
102+
"NAME": "Chain Lightning",
103+
"DESCRIPTION": "Deal !D! Damage. NL Chain to ALL enemies, gaining !M! Damage per chain."
96104
}
97105
}

0 commit comments

Comments
 (0)